From 468abb8bc0dae53ce97afd871de0f589e1db4abd Mon Sep 17 00:00:00 2001 From: muerwre Date: Thu, 3 Nov 2022 12:54:16 +0000 Subject: [PATCH] commit e92e0685ed8d7a331fd961e21085ec5b445cf3aa Author: Fedor Katurov Date: Thu Nov 3 18:52:26 2022 +0600 added empty projects page --- 200.html | 4 ++-- 404.html | 4 ++-- _payload.js | 2 +- api/_content/cache.json | 2 +- api/_content/query/068glZS8Mz.json | 2 +- api/_content/query/2vMf3x3doM.json | 2 +- api/_content/query/4AUGrl0JGY.json | 2 +- api/_content/query/8cFyiEqgoq.json | 2 +- api/_content/query/CMMQ5oxSPg.json | 2 +- api/_content/query/DliR2N9mzp.json | 2 +- api/_content/query/EH6LeCIDqM.json | 2 +- api/_content/query/FLiVxDo2qK.json | 2 +- api/_content/query/KIXVn92YTN.json | 2 +- api/_content/query/LKdFxpydAG.json | 2 +- api/_content/query/Llpj9LBd4i.json | 2 +- api/_content/query/O9PBAkuWXG.json | 2 +- api/_content/query/PwERR4vHv2.json | 2 +- api/_content/query/QqziXmSF9l.json | 2 +- api/_content/query/S7L9CBleOj.json | 2 +- api/_content/query/TvYXYGXdZ0.json | 2 +- api/_content/query/UBl6xR2vxQ.json | 2 +- api/_content/query/WJQDeZ21lK.json | 2 +- api/_content/query/WO7KYRkFiw.json | 2 +- api/_content/query/WUiUHbO5Pg.json | 2 +- api/_content/query/a1s3E9iAyd.json | 2 +- api/_content/query/aP6pCxBj14.json | 2 +- api/_content/query/arOc40mIpI.json | 2 +- api/_content/query/eIcZslqPOz.json | 2 +- api/_content/query/epeSDkttbj.json | 2 +- api/_content/query/gviYR2nAXj.json | 2 +- api/_content/query/iZIUw8pCoM.json | 2 +- api/_content/query/ki2hTtdZ9z.json | 2 +- api/_content/query/kmbybMtElx.json | 2 +- api/_content/query/pVAGVLBNPu.json | 2 +- api/_content/query/pv8ckH0an3.json | 2 +- api/_content/query/rNRhET0KmZ.json | 2 +- api/_content/query/v8MG1Q8wMg.json | 2 +- bio/_payload.js | 2 +- bio/index.html | 10 ++++++++-- .../common-typescript-examples/_payload.js | 2 +- .../common-typescript-examples/index.html | 4 ++-- blockchain/smart-contracts/_payload.js | 2 +- blockchain/smart-contracts/index.html | 4 ++-- .../_payload.js | 2 +- .../index.html | 4 ++-- css/sass-nth-child-iterate-mixin/_payload.js | 2 +- css/sass-nth-child-iterate-mixin/index.html | 4 ++-- .../_payload.js | 2 +- .../index.html | 4 ++-- .../_payload.js | 2 +- .../index.html | 4 ++-- docker/drone-ci/_payload.js | 2 +- docker/drone-ci/index.html | 4 ++-- docker/github-pages-with-drone-ci/_payload.js | 2 +- docker/github-pages-with-drone-ci/index.html | 4 ++-- docker/private-docker-registry/_payload.js | 2 +- docker/private-docker-registry/index.html | 4 ++-- docker/refresh-containers-on-pull/_payload.js | 2 +- docker/refresh-containers-on-pull/index.html | 4 ++-- docker/seed-dump-inside-docker/_payload.js | 2 +- docker/seed-dump-inside-docker/index.html | 4 ++-- docker/wait-for-mysql/_payload.js | 2 +- docker/wait-for-mysql/index.html | 4 ++-- docker/wait-for-redis/_payload.js | 2 +- docker/wait-for-redis/index.html | 4 ++-- .../react-native/oauth2-login/_payload.js | 2 +- frontend/react-native/oauth2-login/index.html | 4 ++-- .../_payload.js | 2 +- .../index.html | 4 ++-- .../react-native-app-auth/_payload.js | 2 +- .../react-native-app-auth/index.html | 4 ++-- .../react-native/useful-comands/_payload.js | 2 +- .../react-native/useful-comands/index.html | 4 ++-- .../axios-refresh-token-on-react/_payload.js | 2 +- .../axios-refresh-token-on-react/index.html | 4 ++-- .../axios-with-abortcontroller/_payload.js | 2 +- .../axios-with-abortcontroller/index.html | 4 ++-- .../add-global-variable-to-window/_payload.js | 2 +- .../add-global-variable-to-window/index.html | 4 ++-- .../_payload.js | 2 +- .../index.html | 4 ++-- .../_payload.js | 2 +- .../index.html | 4 ++-- git/force-git-to-use-https/_payload.js | 2 +- git/force-git-to-use-https/index.html | 4 ++-- .../_payload.js | 2 +- .../index.html | 4 ++-- graphql/apollo-client-pagination/_payload.js | 2 +- graphql/apollo-client-pagination/index.html | 4 ++-- .../_payload.js | 2 +- .../refresh-token-in-apollo-client/index.html | 6 +++--- index.html | 4 ++-- linux/gitea-for-git-hosting/_payload.js | 2 +- linux/gitea-for-git-hosting/index.html | 4 ++-- .../_payload.js | 2 +- .../index.html | 4 ++-- .../_payload.js | 2 +- .../resume-or-start-screen-session/index.html | 4 ++-- linux/rsync-file-with-ssh/_payload.js | 2 +- linux/rsync-file-with-ssh/index.html | 4 ++-- linux/setting-up-nginx/_payload.js | 2 +- linux/setting-up-nginx/index.html | 6 +++--- linux/ssh/_payload.js | 2 +- linux/ssh/index.html | 4 ++-- ...ght.c0024fca.js => ArrowRight.d464538e.js} | 2 +- nuxt/BioCareer.5609c742.js | 1 + nuxt/BioHeading.2631b812.js | 1 + nuxt/BioHeading.c969c966.js | 1 - nuxt/BioProjectCard.d54d8b6e.js | 1 + nuxt/BioProjects.2f45c15c.js | 1 - nuxt/BioProjects.d72fc041.js | 1 + nuxt/BioSkills.696c43e3.js | 1 + nuxt/BioSkills.e52e3858.js | 1 - nuxt/BioSkillsCard.ae8b4645.js | 1 + ...st.0bd16ed1.js => ContentList.cf0afcb7.js} | 2 +- nuxt/ContentNavigation.0324933a.js | 1 - nuxt/ContentNavigation.82aba83b.css | 1 - nuxt/ContentNavigation.eba111bf.css | 1 + nuxt/ContentNavigation.f1db37c2.js | 1 + ...ot.493c190c.js => ContentSlot.4744181a.js} | 2 +- ...dde.js => DocumentDrivenEmpty.c1fa2173.js} | 2 +- ....js => DocumentDrivenNotFound.e036e24d.js} | 2 +- ...6ff1ce1.js => HomeContentList.e0ad0179.js} | 2 +- ...der.2d7392ee.js => HomeHeader.60c8d60d.js} | 2 +- ....c4305aa0.js => HomeReference.2316c826.js} | 2 +- ...nStar.3878a425.js => IconStar.339079de.js} | 2 +- nuxt/IconsCode.6140a935.js | 1 + ...r.a16d87cb.js => LayoutFooter.142f4d00.js} | 2 +- ...f0c8d2bf.js => LayoutMainMenu.ff316230.js} | 2 +- ...82.js => LayoutMainMenuToggle.2e207927.js} | 2 +- nuxt/LayoutThemeToggle.15266736.js | 1 - nuxt/LayoutThemeToggle.44c0caaa.js | 1 + ...ype_style_index_0_lang.module.1b84276d.js} | 2 +- ...kdown.3aab9649.js => Markdown.3365dbff.js} | 2 +- ...{ProseA.7e12c275.js => ProseA.51266783.js} | 2 +- ...3ea93eb.js => ProseBlockquote.c3f8360b.js} | 2 +- ...Code.344aba07.js => ProseCode.3a4bf644.js} | 2 +- ...710a525.js => ProseCodeInline.48628627.js} | 2 +- ...roseEm.8384abd2.js => ProseEm.35b844dc.js} | 2 +- ...roseH1.30a3226a.js => ProseH1.ebf7ce2a.js} | 2 +- ...roseH2.713a1428.js => ProseH2.7ef5d565.js} | 2 +- ...roseH3.d55803cb.js => ProseH3.c6034a12.js} | 2 +- ...roseH4.99c4bbf1.js => ProseH4.74105bc8.js} | 2 +- ...roseH5.3055fe9b.js => ProseH5.169298fa.js} | 2 +- ...roseH6.dd45b49c.js => ProseH6.62bf17fb.js} | 2 +- ...roseHr.a12a2694.js => ProseHr.9c93dfae.js} | 2 +- ...seImg.10476274.js => ProseImg.07f10b54.js} | 2 +- ...roseLi.4aa2c1e5.js => ProseLi.f35f697c.js} | 2 +- ...roseOl.f051d6b1.js => ProseOl.68fa8258.js} | 2 +- ...{ProseP.c8adea50.js => ProseP.9a7d03df.js} | 2 +- ...ng.fc69a1d3.js => ProseStrong.c2c2a1c5.js} | 2 +- ...ble.1153aba7.js => ProseTable.39e3be33.js} | 2 +- ...ody.3b14efe4.js => ProseTbody.a87c57af.js} | 2 +- ...roseTd.92dfa71d.js => ProseTd.54ae6f37.js} | 2 +- ...roseTh.d8019ce9.js => ProseTh.2185040d.js} | 2 +- ...ead.cbcdaf65.js => ProseThead.e0d17643.js} | 2 +- ...roseTr.20da6eb7.js => ProseTr.1b0548ab.js} | 2 +- ...roseUl.835c32e2.js => ProseUl.45cfd40a.js} | 2 +- nuxt/SkillsCard.31659d77.js | 1 - ...00b8dbe7.js => UiActionButton.14e166c9.js} | 2 +- nuxt/UiCard.2d5cc08c.js | 1 + ...opy.feb163da.js => UiIconCopy.76853494.js} | 2 +- nuxt/UiStars.1877968e.js | 1 + nuxt/UiStars.6c60e157.js | 1 - ...lug_.e695364b.js => _...slug_.e2b98af2.js} | 2 +- nuxt/bio.04cfcfb7.js | 1 + nuxt/bio.30cf74c5.js | 1 - ...t-db.9d167014.js => client-db.34509f31.js} | 2 +- ...785c8108.js => component.vue3.75c601e5.js} | 2 +- ...ontent.38fadf68.js => content.d2758fa0.js} | 2 +- ...efault.3c447965.js => default.ddb45e50.js} | 2 +- nuxt/entry.38f1b559.js | 7 ------- nuxt/entry.418f6f87.js | 13 +++++++++++++ nuxt/entry.deeb6f50.css | 1 + nuxt/entry.ec051a30.css | 1 - ...-404.711e6037.js => error-404.2ba8a802.js} | 2 +- ...-500.c3466f00.js => error-500.8165a825.js} | 2 +- ...abd1547.js => error-component.ed137aed.js} | 4 ++-- nuxt/index.11dc3764.js | 1 + nuxt/index.fa639cbe.js | 1 - ...ion.ce71bb44.js => navigation.123e305f.js} | 2 +- nuxt/obsidian-garden.39e6dff3.png | Bin 0 -> 1015012 bytes nuxt/orchid-map.2f398715.png | Bin 0 -> 4548169 bytes nuxt/vault48.40538b94.png | Bin 0 -> 3794308 bytes ...ket.3d77ee77.js => web-socket.2f691a4f.js} | 2 +- ...elcome.2e977bc0.js => welcome.652ad9d8.js} | 2 +- sql/mysql-and-mariadb-setup/_payload.js | 2 +- sql/mysql-and-mariadb-setup/index.html | 4 ++-- sql/postgress-setup/_payload.js | 2 +- sql/postgress-setup/index.html | 8 ++++---- .../add-global-variable-to-window/_payload.js | 2 +- .../add-global-variable-to-window/index.html | 4 ++-- .../flatten-object-with-periods/_payload.js | 2 +- .../flatten-object-with-periods/index.html | 4 ++-- .../_payload.js | 2 +- .../index.html | 4 ++-- typescript/type-guards/_payload.js | 2 +- typescript/type-guards/index.html | 4 ++-- 198 files changed, 248 insertions(+), 232 deletions(-) rename nuxt/{ArrowRight.c0024fca.js => ArrowRight.d464538e.js} (81%) create mode 100644 nuxt/BioCareer.5609c742.js create mode 100644 nuxt/BioHeading.2631b812.js delete mode 100644 nuxt/BioHeading.c969c966.js create mode 100644 nuxt/BioProjectCard.d54d8b6e.js delete mode 100644 nuxt/BioProjects.2f45c15c.js create mode 100644 nuxt/BioProjects.d72fc041.js create mode 100644 nuxt/BioSkills.696c43e3.js delete mode 100644 nuxt/BioSkills.e52e3858.js create mode 100644 nuxt/BioSkillsCard.ae8b4645.js rename nuxt/{ContentList.0bd16ed1.js => ContentList.cf0afcb7.js} (92%) delete mode 100644 nuxt/ContentNavigation.0324933a.js delete mode 100644 nuxt/ContentNavigation.82aba83b.css create mode 100644 nuxt/ContentNavigation.eba111bf.css create mode 100644 nuxt/ContentNavigation.f1db37c2.js rename nuxt/{ContentSlot.493c190c.js => ContentSlot.4744181a.js} (86%) rename nuxt/{DocumentDrivenEmpty.b2333dde.js => DocumentDrivenEmpty.c1fa2173.js} (77%) rename nuxt/{DocumentDrivenNotFound.3c77d0e3.js => DocumentDrivenNotFound.e036e24d.js} (59%) rename nuxt/{HomeContentList.46ff1ce1.js => HomeContentList.e0ad0179.js} (55%) rename nuxt/{HomeHeader.2d7392ee.js => HomeHeader.60c8d60d.js} (89%) rename nuxt/{HomeReference.c4305aa0.js => HomeReference.2316c826.js} (87%) rename nuxt/{IconStar.3878a425.js => IconStar.339079de.js} (82%) create mode 100644 nuxt/IconsCode.6140a935.js rename nuxt/{LayoutFooter.a16d87cb.js => LayoutFooter.142f4d00.js} (69%) rename nuxt/{LayoutMainMenu.f0c8d2bf.js => LayoutMainMenu.ff316230.js} (87%) rename nuxt/{LayoutMainMenuToggle.b8360182.js => LayoutMainMenuToggle.2e207927.js} (82%) delete mode 100644 nuxt/LayoutThemeToggle.15266736.js create mode 100644 nuxt/LayoutThemeToggle.44c0caaa.js rename nuxt/{LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js => LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js} (98%) rename nuxt/{Markdown.3aab9649.js => Markdown.3365dbff.js} (61%) rename nuxt/{ProseA.7e12c275.js => ProseA.51266783.js} (73%) rename nuxt/{ProseBlockquote.23ea93eb.js => ProseBlockquote.c3f8360b.js} (67%) rename nuxt/{ProseCode.344aba07.js => ProseCode.3a4bf644.js} (83%) rename nuxt/{ProseCodeInline.3710a525.js => ProseCodeInline.48628627.js} (65%) rename nuxt/{ProseEm.8384abd2.js => ProseEm.35b844dc.js} (64%) rename nuxt/{ProseH1.30a3226a.js => ProseH1.ebf7ce2a.js} (69%) rename nuxt/{ProseH2.713a1428.js => ProseH2.7ef5d565.js} (69%) rename nuxt/{ProseH3.d55803cb.js => ProseH3.c6034a12.js} (69%) rename nuxt/{ProseH4.99c4bbf1.js => ProseH4.74105bc8.js} (69%) rename nuxt/{ProseH5.3055fe9b.js => ProseH5.169298fa.js} (69%) rename nuxt/{ProseH6.dd45b49c.js => ProseH6.62bf17fb.js} (69%) rename nuxt/{ProseHr.a12a2694.js => ProseHr.9c93dfae.js} (57%) rename nuxt/{ProseImg.10476274.js => ProseImg.07f10b54.js} (83%) rename nuxt/{ProseLi.4aa2c1e5.js => ProseLi.f35f697c.js} (64%) rename nuxt/{ProseOl.f051d6b1.js => ProseOl.68fa8258.js} (65%) rename nuxt/{ProseP.c8adea50.js => ProseP.9a7d03df.js} (64%) rename nuxt/{ProseStrong.fc69a1d3.js => ProseStrong.c2c2a1c5.js} (65%) rename nuxt/{ProseTable.1153aba7.js => ProseTable.39e3be33.js} (65%) rename nuxt/{ProseTbody.3b14efe4.js => ProseTbody.a87c57af.js} (66%) rename nuxt/{ProseTd.92dfa71d.js => ProseTd.54ae6f37.js} (64%) rename nuxt/{ProseTh.d8019ce9.js => ProseTh.2185040d.js} (64%) rename nuxt/{ProseThead.cbcdaf65.js => ProseThead.e0d17643.js} (65%) rename nuxt/{ProseTr.20da6eb7.js => ProseTr.1b0548ab.js} (64%) rename nuxt/{ProseUl.835c32e2.js => ProseUl.45cfd40a.js} (64%) delete mode 100644 nuxt/SkillsCard.31659d77.js rename nuxt/{UiActionButton.00b8dbe7.js => UiActionButton.14e166c9.js} (92%) create mode 100644 nuxt/UiCard.2d5cc08c.js rename nuxt/{UiIconCopy.feb163da.js => UiIconCopy.76853494.js} (86%) create mode 100644 nuxt/UiStars.1877968e.js delete mode 100644 nuxt/UiStars.6c60e157.js rename nuxt/{_...slug_.e695364b.js => _...slug_.e2b98af2.js} (78%) create mode 100644 nuxt/bio.04cfcfb7.js delete mode 100644 nuxt/bio.30cf74c5.js rename nuxt/{client-db.9d167014.js => client-db.34509f31.js} (96%) rename nuxt/{component.vue3.785c8108.js => component.vue3.75c601e5.js} (73%) rename nuxt/{content.38fadf68.js => content.d2758fa0.js} (65%) rename nuxt/{default.3c447965.js => default.ddb45e50.js} (92%) delete mode 100644 nuxt/entry.38f1b559.js create mode 100644 nuxt/entry.418f6f87.js create mode 100644 nuxt/entry.deeb6f50.css delete mode 100644 nuxt/entry.ec051a30.css rename nuxt/{error-404.711e6037.js => error-404.2ba8a802.js} (88%) rename nuxt/{error-500.c3466f00.js => error-500.8165a825.js} (93%) rename nuxt/{error-component.fabd1547.js => error-component.ed137aed.js} (60%) create mode 100644 nuxt/index.11dc3764.js delete mode 100644 nuxt/index.fa639cbe.js rename nuxt/{navigation.ce71bb44.js => navigation.123e305f.js} (59%) create mode 100644 nuxt/obsidian-garden.39e6dff3.png create mode 100644 nuxt/orchid-map.2f398715.png create mode 100644 nuxt/vault48.40538b94.png rename nuxt/{web-socket.3d77ee77.js => web-socket.2f691a4f.js} (92%) rename nuxt/{welcome.2e977bc0.js => welcome.652ad9d8.js} (95%) diff --git a/200.html b/200.html index 0b05204..4584741 100644 --- a/200.html +++ b/200.html @@ -1,6 +1,6 @@ - -
+
\ No newline at end of file diff --git a/404.html b/404.html index 0b05204..4584741 100644 --- a/404.html +++ b/404.html @@ -1,6 +1,6 @@ - -
+
\ No newline at end of file diff --git a/_payload.js b/_payload.js index 8283eff..56e3a6e 100644 --- a/_payload.js +++ b/_payload.js @@ -1 +1 @@ -export default {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}]},prerenderedAt:1667469948967} \ No newline at end of file +export default {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}]},prerenderedAt:1667480025742} \ No newline at end of file diff --git a/api/_content/cache.json b/api/_content/cache.json index 9e79291..bb6435c 100644 --- a/api/_content/cache.json +++ b/api/_content/cache.json @@ -1 +1 @@ -{"generatedAt":1667469954959,"generateTime":73,"contents":[{"_path":"/blockchain/common-typescript-examples","_dir":"blockchain","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Common Typescript Examples","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple #dapp example for tests: "},{"type":"element","tag":"a","props":{"href":"https://metamask.github.io/test-dapp/","rel":["nofollow"]},"children":[{"type":"text","value":"https://metamask.github.io/test-dapp/"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interaction with smart contracts described in "},{"type":"element","tag":"a","props":{"href":"Smart%20contracts"},"children":[{"type":"text","value":"Smart contracts"}]}]}]},{"type":"element","tag":"h2","props":{"id":"connecting-to-node"},"children":[{"type":"text","value":"Connecting to node"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If #Metamask extension installed, "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Web3.givenProvider"}]},{"type":"text","value":" is available in global window. You can use "},{"type":"element","tag":"a","props":{"href":"https://infura.io","rel":["nofollow"]},"children":[{"type":"text","value":"Infura"}]},{"type":"text","value":" or your node instead:"}]},{"type":"element","tag":"code","props":{"code":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-balance"},"children":[{"type":"text","value":"Getting wallet balance"}]},{"type":"element","tag":"code","props":{"code":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-address"},"children":[{"type":"text","value":"Getting wallet address"}]},{"type":"element","tag":"code","props":{"code":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"sending-transaction"},"children":[{"type":"text","value":"Sending transaction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sending "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"value"}]},{"type":"text","value":" tokens with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"memo"}]},{"type":"text","value":" as value:"}]},{"type":"element","tag":"code","props":{"code":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"estimating-transaction-fee"},"children":[{"type":"text","value":"Estimating transaction FEE"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful to get fixed amount of tokens from user with pre-estimated fee."}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-wallet-address-change"},"children":[{"type":"text","value":"Subscribing to wallet address change"}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"watching-network-change"},"children":[{"type":"text","value":"Watching network change"}]},{"type":"element","tag":"code","props":{"code":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"adding-custom-token-to-wallet"},"children":[{"type":"text","value":"Adding custom token to wallet"}]},{"type":"element","tag":"code","props":{"code":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"changing-network-to-custom"},"children":[{"type":"text","value":"Changing network to custom"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Checking current chainId:"}]},{"type":"element","tag":"code","props":{"code":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Asking wallet to change current network:"}]},{"type":"element","tag":"code","props":{"code":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple #dapp example for tests: "},{"type":"element","tag":"a","props":{"href":"https://metamask.github.io/test-dapp/","rel":["nofollow"]},"children":[{"type":"text","value":"https://metamask.github.io/test-dapp/"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interaction with smart contracts described in "},{"type":"element","tag":"a","props":{"href":"Smart%20contracts"},"children":[{"type":"text","value":"Smart contracts"}]}]}]},{"type":"element","tag":"h2","props":{"id":"connecting-to-node"},"children":[{"type":"text","value":"Connecting to node"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If #Metamask extension installed, "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Web3.givenProvider"}]},{"type":"text","value":" is available in global window. You can use "},{"type":"element","tag":"a","props":{"href":"https://infura.io","rel":["nofollow"]},"children":[{"type":"text","value":"Infura"}]},{"type":"text","value":" or your node instead:"}]},{"type":"element","tag":"code","props":{"code":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'web3'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// URL of your node"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://...'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"givenProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-balance"},"children":[{"type":"text","value":"Getting wallet balance"}]},{"type":"element","tag":"code","props":{"code":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-29d072"},"children":[{"type":"text","value":"getBalance"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b68cca"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-5263e7"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-b68cca"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c3adee"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getBalance"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-address"},"children":[{"type":"text","value":"Getting wallet address"}]},{"type":"element","tag":"code","props":{"code":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// first we need to authorize"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'eth_requestAccounts'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// then we can get wallet address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getCurrentAddressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"selectedAddress"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"sending-transaction"},"children":[{"type":"text","value":"Sending transaction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sending "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"value"}]},{"type":"text","value":" tokens with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"memo"}]},{"type":"text","value":" as value:"}]},{"type":"element","tag":"code","props":{"code":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"transfer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ({ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"nonce"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getTransactionCount"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"rawTx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" value: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toWei"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ether'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" gasLimit: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" gasPrice: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" nonce: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"nonce"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"privateKeyBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"EthUtil"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"Transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"rawTx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"sign"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"privateKeyBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"serializedTx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"serialize"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"this"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"sendSignedTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"`0x${"}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"serializedTx"}]},{"type":"element","tag":"span","props":{"class":"ct-67aa5d"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-67aa5d"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'hex'"}]},{"type":"element","tag":"span","props":{"class":"ct-67aa5d"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"}`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"estimating-transaction-fee"},"children":[{"type":"text","value":"Estimating transaction FEE"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful to get fixed amount of tokens from user with pre-estimated fee."}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"estimateFee"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"estimateGas"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" value: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toWei"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ether'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"asciiToHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"fromWei"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7e4ae9"},"children":[{"type":"text","value":"BigInt"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"())"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"multiply"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-7e4ae9"},"children":[{"type":"text","value":"BigInt"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"()))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-wallet-address-change"},"children":[{"type":"text","value":"Subscribing to wallet address change"}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'accountsChanged'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"callback"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"watching-network-change"},"children":[{"type":"text","value":"Watching network change"}]},{"type":"element","tag":"code","props":{"code":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'chainChanged'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"handler"}]},{"type":"element","tag":"span","props":{"class":"ct-5b649c"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"adding-custom-token-to-wallet"},"children":[{"type":"text","value":"Adding custom token to wallet"}]},{"type":"element","tag":"code","props":{"code":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'wallet_watchAsset'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" params: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" type: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ERC20'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" options: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" address: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'0xb60e8dd61c5d32be8058bb8eb970870f07233155'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" symbol: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'FOO'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" decimals: "}]},{"type":"element","tag":"span","props":{"class":"ct-257ab4"},"children":[{"type":"text","value":"18"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" image: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://foo.io/token-image.svg'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-29d072"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-5263e7"},"children":[{"type":"text","value":"success"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"success"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'FOO successfully added to wallet!'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7e4ae9"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'Something went wrong.'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"changing-network-to-custom"},"children":[{"type":"text","value":"Changing network to custom"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Checking current chainId:"}]},{"type":"element","tag":"code","props":{"code":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getChainID"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'eth_chainId'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Asking wallet to change current network:"}]},{"type":"element","tag":"code","props":{"code":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'wallet_switchEthereumChain'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" params: [{ chainId: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'0x03'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }], "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// ropsten chainID (3) in hex"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"switchError"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// This error code indicates that the chain has not been added to MetaMask."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"code"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-257ab4"},"children":[{"type":"text","value":"4902"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'wallet_addEthereumChain'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" params: [{ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" chainId: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'0x03'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// ropsten chainID (3) in hex"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" chainName: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'Ropsten Test Network'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" nativeCurrency: { "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" name: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ETH'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" symbol: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ETH'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" decimals: "}]},{"type":"element","tag":"span","props":{"class":"ct-257ab4"},"children":[{"type":"text","value":"18"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }, "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" rpcUrls: ["}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"], "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" blockExplorerUrls: ["}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://ropsten.etherscan.io'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"] "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }] ,"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"addError"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// handle \"add\" error"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// handle other \"switch\" errors"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-257ab4{color:#79C0FF}.ct-5b649c{color:#C9D1D9}.ct-7e4ae9{color:#79C0FF}.ct-67aa5d{color:#A5D6FF}.ct-c3adee{color:#79C0FF}.ct-5263e7{color:#FFA657}.ct-b68cca{color:#FF7B72}.ct-29d072{color:#D2A8FF}.ct-e10e80{color:#C9D1D9}.ct-eae8ac{color:#FF7B72}.ct-54055d{color:#D2A8FF}.ct-8ae2fc{color:#79C0FF}.ct-78a5db{color:#FF7B72}.ct-8e9ae2{color:#8B949E}.ct-422a59{color:#A5D6FF}.ct-98be25{color:#C9D1D9}.ct-2a2380{color:#C9D1D9}.ct-0b52da{color:#FF7B72}.light .ct-0b52da{color:#859900}.light .ct-2a2380{color:#657B83}.light .ct-98be25{color:#268BD2}.light .ct-422a59{color:#2AA198}.light .ct-8e9ae2{color:#93A1A1}.light .ct-78a5db{color:#073642}.light .ct-8ae2fc{color:#268BD2}.light .ct-54055d{color:#268BD2}.light .ct-eae8ac{color:#073642}.light .ct-e10e80{color:#657B83}.light .ct-29d072{color:#268BD2}.light .ct-b68cca{color:#859900}.light .ct-5263e7{color:#657B83}.light .ct-c3adee{color:#859900}.light .ct-67aa5d{color:#657B83}.light .ct-7e4ae9{color:#859900}.light .ct-5b649c{color:#859900}.light .ct-257ab4{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"connecting-to-node","depth":2,"text":"Connecting to node"},{"id":"getting-wallet-balance","depth":2,"text":"Getting wallet balance"},{"id":"getting-wallet-address","depth":2,"text":"Getting wallet address"},{"id":"sending-transaction","depth":2,"text":"Sending transaction"},{"id":"estimating-transaction-fee","depth":2,"text":"Estimating transaction FEE"},{"id":"subscribing-to-wallet-address-change","depth":2,"text":"Subscribing to wallet address change"},{"id":"watching-network-change","depth":2,"text":"Watching network change"},{"id":"adding-custom-token-to-wallet","depth":2,"text":"Adding custom token to wallet"},{"id":"changing-network-to-custom","depth":2,"text":"Changing network to custom"}]}},"_type":"markdown","_id":"content:Blockchain:Common typescript examples.md","_source":"content","_file":"Blockchain/Common typescript examples.md","_extension":"md"},{"_path":"/blockchain/smart-contracts","_dir":"blockchain","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Smart Contracts","description":"For common functions see Common typescript examples.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For common functions see "},{"type":"element","tag":"a","props":{"href":"Common%20typescript%20examples"},"children":[{"type":"text","value":"Common typescript examples"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"getting-smart-contract-instance"},"children":[{"type":"text","value":"Getting smart contract instance"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for calling smart contract methods:"}]},{"type":"element","tag":"code","props":{"code":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"executing-contract-method"},"children":[{"type":"text","value":"Executing contract method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Contract has "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"write"}]},{"type":"text","value":" methods. To get a list of methods, you can paste contract address on "},{"type":"element","tag":"a","props":{"href":"https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","rel":["nofollow"]},"children":[{"type":"text","value":"https://etherscan.io/ ETH"}]},{"type":"text","value":" or any other service."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Read"}]},{"type":"text","value":" methods doesn't require spending "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":". "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Write"}]},{"type":"text","value":" methods cost some amount of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":", hence they will be executed with confirmation from user."}]},{"type":"element","tag":"h3","props":{"id":"example-for-metamask-without-private-key"},"children":[{"type":"text","value":"Example for #Metamask without private key"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"nodejs-and-react-native-example"},"children":[{"type":"text","value":"Node.js and React Native example"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"calling-a-batch-of-contracts-methods"},"children":[{"type":"text","value":"Calling a batch of contract's methods"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Function calls batch of requests, returning array of results. For example:"}]},{"type":"element","tag":"code","props":{"code":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n"}]}]}]},{"type":"element","tag":"code","props":{"code":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-smart-contract-events"},"children":[{"type":"text","value":"Subscribing to smart contract events"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There're different ways to subscribe for contract events. For all of them you will need following variables:"}]},{"type":"element","tag":"code","props":{"code":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"by-accessing-contractevents"},"children":[{"type":"text","value":"By accessing contract.events"}]},{"type":"element","tag":"code","props":{"code":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"with-filtering"},"children":[{"type":"text","value":"With filtering"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We're listening to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" event here:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"common-subscribe-method"},"children":[{"type":"text","value":"Common Subscribe method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Filtering options can also be specified:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"getting-event-history"},"children":[{"type":"text","value":"Getting event history"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Getting history for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" events for specific values. More info can be found "},{"type":"element","tag":"a","props":{"href":"https://web3js.readthedocs.io/en/v1.2.11/web3-eth-subscribe.html#","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]}]},{"type":"element","tag":"code","props":{"code":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For common functions see "},{"type":"element","tag":"a","props":{"href":"Common%20typescript%20examples"},"children":[{"type":"text","value":"Common typescript examples"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"getting-smart-contract-instance"},"children":[{"type":"text","value":"Getting smart contract instance"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for calling smart contract methods:"}]},{"type":"element","tag":"code","props":{"code":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'web3-eth-contract'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"abi"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"object"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0c16cc"},"children":[{"type":"text","value":"abiFromJson"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d924d9"},"children":[{"type":"text","value":"JSON"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0c16cc"},"children":[{"type":"text","value":"parse"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"abiFromJson"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"executing-contract-method"},"children":[{"type":"text","value":"Executing contract method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Contract has "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"write"}]},{"type":"text","value":" methods. To get a list of methods, you can paste contract address on "},{"type":"element","tag":"a","props":{"href":"https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","rel":["nofollow"]},"children":[{"type":"text","value":"https://etherscan.io/ ETH"}]},{"type":"text","value":" or any other service."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Read"}]},{"type":"text","value":" methods doesn't require spending "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":". "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Write"}]},{"type":"text","value":" methods cost some amount of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":", hence they will be executed with confirmation from user."}]},{"type":"element","tag":"h3","props":{"id":"example-for-metamask-without-private-key"},"children":[{"type":"text","value":"Example for #Metamask without private key"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// see example below"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// ABI of contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"/* ... */"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// address for contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"executeContractMethod"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ({}) "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// getting contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// Calling write method"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// authorizing with Metamask"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'eth_requestAccounts'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// getting wallet address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"addressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"selectedAddress"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// calling \"store\" store method for contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// payload should include `from` address, that matches"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// current user's wallet"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"store"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'Parameter'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"send"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" from: "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"addressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4a0f6a"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// calling read method"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// this method can return data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"retrieve"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4a0f6a"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"nodejs-and-react-native-example"},"children":[{"type":"text","value":"Node.js and React Native example"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// see example below"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// ABI контракта"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"/* ... */"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// contract address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// getting contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// account's private key"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// write-methods requires private key"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"executeContractMethod"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"val"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"store"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"val"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"account"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"accounts"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"privateKeyToAccount"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" to: "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"encodeABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" gas: "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"estimateGas"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"({ from: "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"account"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" gasPrice: "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"signed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"accounts"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"signTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"sendSignedTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"signed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"rawTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"};"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"calling-a-batch-of-contracts-methods"},"children":[{"type":"text","value":"Calling a batch of contract's methods"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Function calls batch of requests, returning array of results. For example:"}]},{"type":"element","tag":"code","props":{"code":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"requests"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"method"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"balanceOf"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"method"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getStaked"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"call"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"code","props":{"code":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"givenProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"calls"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"any"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"[]) "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getWeb3NoAccount"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"BatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"promises"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"calls"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"map"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"add"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"execute"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4a0f6a"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"all"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"promises"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-81ebef"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-smart-contract-events"},"children":[{"type":"text","value":"Subscribing to smart contract events"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There're different ways to subscribe for contract events. For all of them you will need following variables:"}]},{"type":"element","tag":"code","props":{"code":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'web3'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'YOUR_RPC_ENDPOINT_HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'YOUR ABI HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'YOUR CONTRACT ADDRESS HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"by-accessing-contractevents"},"children":[{"type":"text","value":"By accessing contract.events"}]},{"type":"element","tag":"code","props":{"code":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"referralProgramContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"events"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"RegisterUser"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-0a0823"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"subscriptionId"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"`| UserRegistered | events | ${"}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscriptionId"}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"removed"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"boolean"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"returnValues"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3cce47"},"children":[{"type":"text","value":"RegisterUserResponseInterface"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"removed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"user"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"referrer"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"returnValues"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"user"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"referrer"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"`| ONCE | ${"}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" )"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-0a0823"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3cce47"},"children":[{"type":"text","value":"ErrnoException"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"with-filtering"},"children":[{"type":"text","value":"With filtering"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We're listening to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" event here:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" filter: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" value: [],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"events"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Transfer"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'changed'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"changed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"str"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"common-subscribe-method"},"children":[{"type":"text","value":"Common Subscribe method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Filtering options can also be specified:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" address: ["}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'address-1'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'address-2'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"], "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"//Only get events from specific addresses"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" topics: [] "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"//What topics to subscribe to"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'logs'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'changed'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"changed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"nr"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"getting-event-history"},"children":[{"type":"text","value":"Getting event history"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Getting history for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" events for specific values. More info can be found "},{"type":"element","tag":"a","props":{"href":"https://web3js.readthedocs.io/en/v1.2.11/web3-eth-subscribe.html#","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]}]},{"type":"element","tag":"code","props":{"code":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"//example options(optional)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" filter: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// only get events where transfer value was 1000 or 1337"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" value: ["}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'1000'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'1337'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"] "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// number | \"earliest\" | \"pending\" | \"latest\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" toBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'latest'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getPastEvents"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'Transfer'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"results"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-3cce47{color:#FFA657}.ct-0a0823{color:#A5D6FF}.ct-81ebef{color:#79C0FF}.ct-4a0f6a{color:#79C0FF}.ct-538bd0{color:#79C0FF}.ct-047000{color:#79C0FF}.ct-307d26{color:#FF7B72}.ct-495eea{color:#8B949E}.ct-3dd077{color:#FFA657}.ct-37c069{color:#D2A8FF}.ct-d924d9{color:#79C0FF}.ct-0c16cc{color:#79C0FF}.ct-427bbc{color:#79C0FF}.ct-60e515{color:#FFA657}.ct-148471{color:#FF7B72}.ct-d6daf9{color:#D2A8FF}.ct-16c265{color:#C9D1D9}.ct-7475e8{color:#FF7B72}.ct-69a21a{color:#A5D6FF}.ct-389197{color:#C9D1D9}.ct-5f84b8{color:#C9D1D9}.ct-a00ecd{color:#FF7B72}.light .ct-a00ecd{color:#859900}.light .ct-5f84b8{color:#657B83}.light .ct-389197{color:#268BD2}.light .ct-69a21a{color:#2AA198}.light .ct-7475e8{color:#073642}.light .ct-16c265{color:#657B83}.light .ct-d6daf9{color:#268BD2}.light .ct-148471{color:#859900}.light .ct-60e515{color:#657B83}.light .ct-427bbc{color:#859900}.light .ct-0c16cc{color:#268BD2}.light .ct-d924d9{color:#657B83}.light .ct-37c069{color:#268BD2}.light .ct-3dd077{color:#657B83}.light .ct-495eea{color:#93A1A1}.light .ct-307d26{color:#073642}.light .ct-047000{color:#268BD2}.light .ct-538bd0{color:#D33682}.light .ct-4a0f6a{color:#859900}.light .ct-81ebef{color:#B58900}.light .ct-0a0823{color:#2AA198}.light .ct-3cce47{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"getting-smart-contract-instance","depth":2,"text":"Getting smart contract instance"},{"id":"executing-contract-method","depth":2,"text":"Executing contract method","children":[{"id":"example-for-metamask-without-private-key","depth":3,"text":"Example for #Metamask without private key"},{"id":"nodejs-and-react-native-example","depth":3,"text":"Node.js and React Native example"},{"id":"calling-a-batch-of-contracts-methods","depth":3,"text":"Calling a batch of contract's methods"}]},{"id":"subscribing-to-smart-contract-events","depth":2,"text":"Subscribing to smart contract events","children":[{"id":"by-accessing-contractevents","depth":3,"text":"By accessing contract.events"},{"id":"with-filtering","depth":3,"text":"With filtering"},{"id":"common-subscribe-method","depth":3,"text":"Common Subscribe method"},{"id":"getting-event-history","depth":3,"text":"Getting event history"}]}]}},"_type":"markdown","_id":"content:Blockchain:Smart contracts.md","_source":"content","_file":"Blockchain/Smart contracts.md","_extension":"md"},{"_path":"/css/automatic-grid-like-masonry-with-pure-css","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Automatic Grid Like Masonry With Pure CSS","description":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns."}]},{"type":"element","tag":"code","props":{"code":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"basic-elements-with-double-height-or-width"},"children":[{"type":"text","value":"Basic elements with double height or width"}]},{"type":"element","tag":"code","props":{"code":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"header-that-fills-all-columns"},"children":[{"type":"text","value":"Header, that fills all columns"}]},{"type":"element","tag":"code","props":{"code":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner"},"children":[{"type":"text","value":"Stamp element, that takes 3 rows in the top right corner"}]},{"type":"element","tag":"code","props":{"code":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns."}]},{"type":"element","tag":"code","props":{"code":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-405c56"},"children":[{"type":"text","value":"$cell: "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"250"}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-405c56"},"children":[{"type":"text","value":"$gap: "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"20"}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".grid"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"display"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-745b8d"},"children":[{"type":"text","value":"grid"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-template-columns"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70e714"},"children":[{"type":"text","value":"repeat"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"auto-fit"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-70e714"},"children":[{"type":"text","value":"minmax"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"$cell"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-f53f0b"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-01f19b"},"children":[{"type":"text","value":"fr"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":"));"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-auto-rows"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"256"}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-auto-flow"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-745b8d"},"children":[{"type":"text","value":"row"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-745b8d"},"children":[{"type":"text","value":"dense"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-column-gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"$gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-row-gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"$gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"basic-elements-with-double-height-or-width"},"children":[{"type":"text","value":"Basic elements with double height or width"}]},{"type":"element","tag":"code","props":{"code":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".h-2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// takes 2 columns"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-column-end"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"span"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".v-2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// takes 2 rows"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-row-end"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"span"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"header-that-fills-all-columns"},"children":[{"type":"text","value":"Header, that fills all columns"}]},{"type":"element","tag":"code","props":{"code":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".full-width"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-row"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// height: 1 row"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-column"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" / "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"-1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner"},"children":[{"type":"text","value":"Stamp element, that takes 3 rows in the top right corner"}]},{"type":"element","tag":"code","props":{"code":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".top-right"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-row"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"3"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// height here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-column"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"-2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" / "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"-1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// width here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-e36f0d{color:#8B949E}.ct-557b75{color:#79C0FF}.ct-01f19b{color:#FF7B72}.ct-f53f0b{color:#79C0FF}.ct-4998ec{color:#FFA657}.ct-70e714{color:#79C0FF}.ct-745b8d{color:#79C0FF}.ct-2873e9{color:#79C0FF}.ct-de2353{color:#C9D1D9}.ct-6459ce{color:#79C0FF}.ct-7bdc6b{color:#C9D1D9}.ct-47368f{color:#FF7B72}.ct-b0def7{color:#79C0FF}.ct-405c56{color:#FFA657}.light .ct-405c56{color:#657B83}.light .ct-b0def7{color:#D33682}.light .ct-47368f{color:#859900}.light .ct-7bdc6b{color:#657B83}.light .ct-6459ce{color:#93A1A1}.light .ct-de2353{color:#657B83}.light .ct-2873e9{color:#859900}.light .ct-745b8d{color:#657B83}.light .ct-70e714{color:#268BD2}.light .ct-4998ec{color:#657B83}.light .ct-f53f0b{color:#D33682}.light .ct-01f19b{color:#859900}.light .ct-557b75{color:#859900}.light .ct-e36f0d{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"basic-elements-with-double-height-or-width","depth":3,"text":"Basic elements with double height or width"},{"id":"header-that-fills-all-columns","depth":3,"text":"Header, that fills all columns"},{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner","depth":3,"text":"Stamp element, that takes 3 rows in the top right corner"}]}},"_type":"markdown","_id":"content:CSS:Automatic Grid like Masonry with pure CSS.md","_source":"content","_file":"CSS/Automatic Grid like Masonry with pure CSS.md","_extension":"md"},{"_path":"/css/sass-nth-child-iterate-mixin","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Sass Nth Child Iterate Mixin","description":"Say, we need to color n items by specific colors, which depend on its position. #SCSS supports iteration over lists for that purposes:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we need to color "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" items by specific colors, which depend on its position. #SCSS supports "},{"type":"element","tag":"a","props":{"href":"https://sass-lang.com/documentation/at-rules/control/each","rel":["nofollow"]},"children":[{"type":"text","value":"iteration over lists"}]},{"type":"text","value":" for that purposes:"}]},{"type":"element","tag":"code","props":{"code":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage is simple:"}]},{"type":"element","tag":"code","props":{"code":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we need to color "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" items by specific colors, which depend on its position. #SCSS supports "},{"type":"element","tag":"a","props":{"href":"https://sass-lang.com/documentation/at-rules/control/each","rel":["nofollow"]},"children":[{"type":"text","value":"iteration over lists"}]},{"type":"text","value":" for that purposes:"}]},{"type":"element","tag":"code","props":{"code":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-42be13"},"children":[{"type":"text","value":"@mixin"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-970948"},"children":[{"type":"text","value":"color-per-child"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$colors"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-42be13"},"children":[{"type":"text","value":"@each"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$color"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-42be13"},"children":[{"type":"text","value":"in"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$colors"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9944ba"},"children":[{"type":"text","value":"&"}]},{"type":"element","tag":"span","props":{"class":"ct-b1fbc0"},"children":[{"type":"text","value":":nth-child"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"#{"}]},{"type":"element","tag":"span","props":{"class":"ct-33af56"},"children":[{"type":"text","value":"index"}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"(($colors), ($color))}"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-079bc9"},"children":[{"type":"text","value":"color"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$color"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage is simple:"}]},{"type":"element","tag":"code","props":{"code":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d733bc"},"children":[{"type":"text","value":".item"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-baf813"},"children":[{"type":"text","value":"@include"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-90aa85"},"children":[{"type":"text","value":"color_per_child"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#ded187"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#dbde87"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#bade87"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#9cde87"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#87deaa"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"));"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-9ec2d3{color:#79C0FF}.ct-90aa85{color:#D2A8FF}.ct-baf813{color:#FF7B72}.ct-d733bc{color:#79C0FF}.ct-e65013{color:#C9D1D9}.ct-079bc9{color:#79C0FF}.ct-33af56{color:#79C0FF}.ct-b1fbc0{color:#79C0FF}.ct-9944ba{color:#7EE787}.ct-33b3aa{color:#FFA657}.ct-970948{color:#D2A8FF}.ct-8a61ea{color:#C9D1D9}.ct-42be13{color:#FF7B72}.light .ct-42be13{color:#859900}.light .ct-8a61ea{color:#657B83}.light .ct-970948{color:#268BD2}.light .ct-33b3aa{color:#657B83}.light .ct-9944ba{color:#268BD2}.light .ct-b1fbc0{color:#93A1A1}.light .ct-33af56{color:#268BD2}.light .ct-079bc9{color:#859900}.light .ct-e65013{color:#657B83}.light .ct-d733bc{color:#93A1A1}.light .ct-baf813{color:#859900}.light .ct-90aa85{color:#268BD2}.light .ct-9ec2d3{color:#CB4B16}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:CSS:Sass nth-child iterate mixin.md","_source":"content","_file":"CSS/Sass nth-child iterate mixin.md","_extension":"md"},{"_path":"/css/test-if-browser-supports-css-rules","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Test If Browser Supports CSS Rules","description":"To test if browser supports some #CSS rules, do following:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To test if browser supports some #CSS rules, do following:"}]},{"type":"element","tag":"code","props":{"code":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","language":"css"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"@mixin"}]},{"type":"text","value":" will only apply rule if browser support backdrop filtering:"}]},{"type":"element","tag":"code","props":{"code":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To test if browser supports some #CSS rules, do following:"}]},{"type":"element","tag":"code","props":{"code":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","language":"css"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@supports"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dc5f6f"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-76b142"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b57c26"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-147719"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":": blur(5px);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"@mixin"}]},{"type":"text","value":" will only apply rule if browser support backdrop filtering:"}]},{"type":"element","tag":"code","props":{"code":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@mixin"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ee8d8a"},"children":[{"type":"text","value":"can_backdrop"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@supports"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-34cfd3"},"children":[{"type":"text","value":"-webkit-backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4138a8"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-20b136"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-11eec6"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":")) "}]},{"type":"element","tag":"span","props":{"class":"ct-92f797"},"children":[{"type":"text","value":"or"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dc5f6f"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-76b142"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b57c26"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@content"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-92f797{color:#79C0FF}.ct-11eec6{color:#FF7B72}.ct-20b136{color:#79C0FF}.ct-4138a8{color:#79C0FF}.ct-34cfd3{color:#79C0FF}.ct-3d523b{color:#C9D1D9}.ct-ee8d8a{color:#D2A8FF}.ct-147719{color:#7EE787}.ct-b57c26{color:#79C0FF}.ct-76b142{color:#79C0FF}.ct-dc5f6f{color:#79C0FF}.ct-c068ad{color:#C9D1D9}.ct-96fe27{color:#FF7B72}.light .ct-96fe27{color:#859900}.light .ct-c068ad{color:#657B83}.light .ct-dc5f6f{color:#859900}.light .ct-76b142{color:#268BD2}.light .ct-b57c26{color:#D33682}.light .ct-147719{color:#268BD2}.light .ct-ee8d8a{color:#268BD2}.light .ct-3d523b{color:#657B83}.light .ct-34cfd3{color:#859900}.light .ct-4138a8{color:#268BD2}.light .ct-20b136{color:#D33682}.light .ct-11eec6{color:#859900}.light .ct-92f797{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:CSS:Test if browser supports CSS rules.md","_source":"content","_file":"CSS/Test if browser supports CSS rules.md","_extension":"md"},{"_path":"/docker/building-static-pages-with-docker","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Building Static Pages With Docker","description":"Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:"}]},{"type":"element","tag":"code","props":{"code":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html\n","language":"Dockerfile"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:"}]},{"type":"element","tag":"code","props":{"code":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html\n","language":"Dockerfile"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html"}]}]}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Building static pages with Docker.md","_source":"content","_file":"Docker/Building static pages with Docker.md","_extension":"md"},{"_path":"/docker/drone-ci","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Drone Ci","description":"Can be used with Private docker registry to deploy things using #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" to deploy things using #docker."}]},{"type":"element","tag":"h2","props":{"id":"pushing-to-private-docker_registry"},"children":[{"type":"text","value":"Pushing to private docker_registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should specify "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_login"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_password"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_registry"}]},{"type":"text","value":" organizations variables in your "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":". And "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker_repo"}]},{"type":"text","value":" variable for your repo as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker.yourdomain.com/your-image"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is example of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".droneci"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"private docker registry"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-for-drone-ci"},"children":[{"type":"text","value":"Docker-compose file for drone-ci"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":" service is ui itself and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone-agent"}]},{"type":"text","value":" is runner for builds, that can be started on different machine (or machines)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"secret_id"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"rpc_secret"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone.url"}]},{"type":"text","value":" to something you like."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"caching-builds"},"children":[{"type":"text","value":"Caching builds"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Haven't checked that yet, but there's a "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/the-ultimate-droneci-caching-guide","rel":["nofollow"]},"children":[{"type":"text","value":"manual"}]},{"type":"text","value":" from "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/","rel":["nofollow"]},"children":[{"type":"text","value":"Laszlo Fogas"}]},{"type":"text","value":" about that."}]},{"type":"element","tag":"h2","props":{"id":"get-user-info"},"children":[{"type":"text","value":"Get user info"}]},{"type":"element","tag":"code","props":{"code":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"mark-user-as-trusted"},"children":[{"type":"text","value":"Mark user as trusted"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"drone repo update $1 --trusted=true && drone repo info $1\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"drone repo update $1 --trusted=true && drone repo info $1\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" to deploy things using #docker."}]},{"type":"element","tag":"h2","props":{"id":"pushing-to-private-docker_registry"},"children":[{"type":"text","value":"Pushing to private docker_registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should specify "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_login"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_password"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_registry"}]},{"type":"text","value":" organizations variables in your "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":". And "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker_repo"}]},{"type":"text","value":" variable for your repo as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker.yourdomain.com/your-image"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is example of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".droneci"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"private docker registry"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"kind"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"pipeline"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"platform"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"os"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"linux"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"arch"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"amd64"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"steps"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"build-master"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"plugins/docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"when"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"branch"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"master"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"settings"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"dockerfile"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"Dockerfile"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"tag"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"${DRONE_BRANCH}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"username"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"global_docker_login"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"password"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"global_docker_password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"registry"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"global_docker_registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"repo"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"docker_repo"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-for-drone-ci"},"children":[{"type":"text","value":"Docker-compose file for drone-ci"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":" service is ui itself and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone-agent"}]},{"type":"text","value":" is runner for builds, that can be started on different machine (or machines)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"secret_id"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"rpc_secret"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone.url"}]},{"type":"text","value":" to something you like."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"drone"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone/drone:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_GITHUB_CLIENT_ID=secret_id"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_GITHUB_CLIENT_SECRET=client_secret"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_RPC_SECRET=rpc_secret"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_SERVER_HOST=drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_USER_CREATE=\"username:user,admin:true\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_SERVER_PROTO=https"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_TLS_AUTOCERT=false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_GIT_ALWAYS_AUTH=false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_LOGS_DEBUG=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_LOGS_TRACE=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"./data:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"8090:80"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"drone-agent"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone__agent"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone/agent:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"agent"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"/var/run/docker.sock:/var/run/docker.sock"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_RPC_SERVER=https://drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_RPC_SECRET=rpc_secret"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"caching-builds"},"children":[{"type":"text","value":"Caching builds"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Haven't checked that yet, but there's a "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/the-ultimate-droneci-caching-guide","rel":["nofollow"]},"children":[{"type":"text","value":"manual"}]},{"type":"text","value":" from "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/","rel":["nofollow"]},"children":[{"type":"text","value":"Laszlo Fogas"}]},{"type":"text","value":" about that."}]},{"type":"element","tag":"h2","props":{"id":"get-user-info"},"children":[{"type":"text","value":"Get user info"}]},{"type":"element","tag":"code","props":{"code":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d6b69b"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" DRONE_SERVER=https://drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d6b69b"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" DRONE_TOKEN=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":"drone info"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"mark-user-as-trusted"},"children":[{"type":"text","value":"Mark user as trusted"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"drone repo update $1 --trusted=true && drone repo info $1\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":"drone repo update "}]},{"type":"element","tag":"span","props":{"class":"ct-7833c9"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-0db3cf"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" --trusted=true "}]},{"type":"element","tag":"span","props":{"class":"ct-b2944d"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" drone repo info "}]},{"type":"element","tag":"span","props":{"class":"ct-7833c9"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-0db3cf"},"children":[{"type":"text","value":"1"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-b2944d{color:#FF7B72}.ct-0db3cf{color:#C9D1D9}.ct-7833c9{color:#C9D1D9}.ct-d6b69b{color:#FF7B72}.ct-2bd6cd{color:#A5D6FF}.ct-3abe3a{color:#C9D1D9}.ct-dd7736{color:#7EE787}.light .ct-dd7736{color:#268BD2}.light .ct-3abe3a{color:#657B83}.light .ct-2bd6cd{color:#2AA198}.light .ct-d6b69b{color:#073642}.light .ct-7833c9{color:#859900}.light .ct-0db3cf{color:#268BD2}.light .ct-b2944d{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"pushing-to-private-docker_registry","depth":2,"text":"Pushing to private docker_registry"},{"id":"docker-compose-file-for-drone-ci","depth":2,"text":"Docker-compose file for drone-ci"},{"id":"caching-builds","depth":2,"text":"Caching builds"},{"id":"get-user-info","depth":2,"text":"Get user info"},{"id":"mark-user-as-trusted","depth":2,"text":"Mark user as trusted"}]}},"_type":"markdown","_id":"content:Docker:Drone-ci.md","_source":"content","_file":"Docker/Drone-ci.md","_extension":"md"},{"_path":"/docker/github-pages-with-drone-ci","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Github Pages With Drone Ci","description":"To deploy github pages with Drone-ci you will need .drone.yml as specified below. You also should define secrets github_username and github_token (get it here) in your drone's repository setup.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deploy github pages with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" you will need "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".drone.yml"}]},{"type":"text","value":" as specified below. You also should define secrets "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_username"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_token"}]},{"type":"text","value":" (get it "},{"type":"element","tag":"a","props":{"href":"https://github.com/settings/tokens","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":") in your drone's repository setup."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Github repository should be named as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"yourname.github.io"}]},{"type":"text","value":" and it could be accessed at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/"}]},{"type":"text","value":". Otherwise it'll be available at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/repo-name/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/repo-name/"}]},{"type":"text","value":", what you might not like."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should create branch named "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" in that repo and setup GH Pages at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https://github.com//.github.io/settings/pages"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This config will update "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins."}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here we're moving "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./.output/public"}]},{"type":"text","value":" to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./docs"}]},{"type":"text","value":", because #nuxt creates symlink for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docs"}]},{"type":"text","value":" and git can't work with that."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also we create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".nojekyll"}]},{"type":"text","value":" at the root of repo, so github's internal engine won't "},{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"ignore files that start with underscore"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"additional-reading"},"children":[{"type":"text","value":"Additional reading"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://plugins.drone.io/plugins/gh-pages","rel":["nofollow"]},"children":[{"type":"text","value":"Drone Github Pages Documentation"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"Bypassing Jekyll on GitHub Pages"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deploy github pages with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" you will need "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".drone.yml"}]},{"type":"text","value":" as specified below. You also should define secrets "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_username"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_token"}]},{"type":"text","value":" (get it "},{"type":"element","tag":"a","props":{"href":"https://github.com/settings/tokens","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":") in your drone's repository setup."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Github repository should be named as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"yourname.github.io"}]},{"type":"text","value":" and it could be accessed at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/"}]},{"type":"text","value":". Otherwise it'll be available at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/repo-name/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/repo-name/"}]},{"type":"text","value":", what you might not like."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should create branch named "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" in that repo and setup GH Pages at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https://github.com//.github.io/settings/pages"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This config will update "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins."}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"kind"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"pipeline"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"platform"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"os"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"linux"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"arch"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"amd64"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"steps"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"node:16"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"commands"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"yarn"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"yarn generate"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"rm -rf ./docs"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"mv ./.output/public ./docs"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"touch ./docs/.nojekyll"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"publish"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"plugins/gh-pages"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"settings"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"target_branch"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"gh-pages"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"username"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"github_username"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"password"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"github_token"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here we're moving "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./.output/public"}]},{"type":"text","value":" to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./docs"}]},{"type":"text","value":", because #nuxt creates symlink for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docs"}]},{"type":"text","value":" and git can't work with that."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also we create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".nojekyll"}]},{"type":"text","value":" at the root of repo, so github's internal engine won't "},{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"ignore files that start with underscore"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"additional-reading"},"children":[{"type":"text","value":"Additional reading"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://plugins.drone.io/plugins/gh-pages","rel":["nofollow"]},"children":[{"type":"text","value":"Drone Github Pages Documentation"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"Bypassing Jekyll on GitHub Pages"}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-97e160{color:#A5D6FF}.ct-2ae8ba{color:#C9D1D9}.ct-f2adb2{color:#7EE787}.light .ct-f2adb2{color:#268BD2}.light .ct-2ae8ba{color:#657B83}.light .ct-97e160{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"additional-reading","depth":2,"text":"Additional reading"}]}},"_type":"markdown","_id":"content:Docker:Github pages with drone-ci.md","_source":"content","_file":"Docker/Github pages with drone-ci.md","_extension":"md"},{"_path":"/docker/private-docker-registry","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Private Docker Registry","description":"Suitable to work with Drone-ci for hosting private #docker images.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suitable to work with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" for hosting private #docker images."}]},{"type":"element","tag":"h2","props":{"id":"sample-docker-compose-for-custom-docker-registry"},"children":[{"type":"text","value":"Sample docker-compose for custom docker registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This one brings up private docker registry with ui. First you'll need to generate password for it:"}]},{"type":"element","tag":"code","props":{"code":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n"}]}]}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"squash-layers-on-registry"},"children":[{"type":"text","value":"Squash layers on registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to squash all layers in docker registry to free up disk space."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Run this command to mark oldest layers"}]}]},{"type":"element","tag":"code","props":{"code":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suitable to work with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" for hosting private #docker images."}]},{"type":"element","tag":"h2","props":{"id":"sample-docker-compose-for-custom-docker-registry"},"children":[{"type":"text","value":"Sample docker-compose for custom docker registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This one brings up private docker registry with ui. First you'll need to generate password for it:"}]},{"type":"element","tag":"code","props":{"code":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":"docker run \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" --entrypoint htpasswd registry:2 \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -Bbn user mypassword "}]},{"type":"element","tag":"span","props":{"class":"ct-411df8"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" auth/registry.password"}]}]}]}]}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"registry"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"docker__registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"registry:2"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"5000:5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_AUTH=htpasswd"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_AUTH_HTPASSWD_REALM=Registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_HTTP_SECRET=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_STORAGE_DELETE_ENABLED=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"./registry/auth:/auth"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"./registry/data:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"ui"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"docker__ui"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"parabuzzle/craneoperator:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"80:80"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_HOST=registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_PORT=5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_PROTOCOL=http"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"ALLOW_REGISTRY_LOGIN=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_ALLOW_DELETE=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"USERNAME=registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"PASSWORD=password"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"squash-layers-on-registry"},"children":[{"type":"text","value":"Squash layers on registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to squash all layers in docker registry to free up disk space."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Run this command to mark oldest layers"}]}]},{"type":"element","tag":"code","props":{"code":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-278ecf"},"children":[{"type":"text","value":"# Try this first"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":"docker run \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" --rm anoxis/registry-cli \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -r https://registry.url \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -l user:password \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" --delete \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" --num 2"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-278ecf"},"children":[{"type":"text","value":"# Then this "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":"docker run -it \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -v /path/to/registry/data:/registry \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -e REGISTRY_URL=https://registry.url \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -e DRY_RUN="}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -e REGISTRY_AUTH="}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"\"user:password\""}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" mortensrasmussen/docker-registry-manifest-cleanup"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-278ecf{color:#8B949E}.ct-95d999{color:#A5D6FF}.ct-6bd705{color:#7EE787}.ct-411df8{color:#FF7B72}.ct-bf22f1{color:#C9D1D9}.light .ct-bf22f1{color:#657B83}.light .ct-411df8{color:#859900}.light .ct-6bd705{color:#268BD2}.light .ct-95d999{color:#2AA198}.light .ct-278ecf{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"sample-docker-compose-for-custom-docker-registry","depth":2,"text":"Sample docker-compose for custom docker registry"},{"id":"squash-layers-on-registry","depth":2,"text":"Squash layers on registry"}]}},"_type":"markdown","_id":"content:Docker:Private docker registry.md","_source":"content","_file":"Docker/Private docker registry.md","_extension":"md"},{"_path":"/docker/refresh-containers-on-pull","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Refresh Containers On Pull","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"setting-up-watchtower"},"children":[{"type":"text","value":"Setting up watchtower"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://containrrr.dev/watchtower/","rel":["nofollow"]},"children":[{"type":"text","value":"Watchtower"}]},{"type":"text","value":" will automatically pull updated #docker containers. Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"setting-up-watchtower"},"children":[{"type":"text","value":"Setting up watchtower"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://containrrr.dev/watchtower/","rel":["nofollow"]},"children":[{"type":"text","value":"Watchtower"}]},{"type":"text","value":" will automatically pull updated #docker containers. Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"watchtower"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"docker__watchtower"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"v2tec/watchtower"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"/var/run/docker.sock:/var/run/docker.sock"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"/home/user/.docker/config.json:/config.json"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"--interval 60 image_1 image_2"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-f5251e{color:#A5D6FF}.ct-c68bc8{color:#C9D1D9}.ct-379eb3{color:#7EE787}.light .ct-379eb3{color:#268BD2}.light .ct-c68bc8{color:#657B83}.light .ct-f5251e{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"setting-up-watchtower","depth":2,"text":"Setting up watchtower"}]}},"_type":"markdown","_id":"content:Docker:Refresh containers on pull.md","_source":"content","_file":"Docker/Refresh containers on pull.md","_extension":"md"},{"_path":"/docker/seed-dump-inside-docker","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Seed Dump Inside Docker","description":"If you need to seed .sql dump in #docker container, just run this command. Also you can try to rsync file with SSH to get it from remote host.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to seed "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".sql"}]},{"type":"text","value":" dump in #docker container, just run this command. Also you can try to "},{"type":"element","tag":"a","props":{"href":"/linux/Rsync%20file%20with%20SSH"},"children":[{"type":"text","value":"rsync file with SSH"}]},{"type":"text","value":" to get it from remote host."}]},{"type":"element","tag":"code","props":{"code":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to seed "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".sql"}]},{"type":"text","value":" dump in #docker container, just run this command. Also you can try to "},{"type":"element","tag":"a","props":{"href":"/linux/Rsync%20file%20with%20SSH"},"children":[{"type":"text","value":"rsync file with SSH"}]},{"type":"text","value":" to get it from remote host."}]},{"type":"element","tag":"code","props":{"code":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aac0b0"},"children":[{"type":"text","value":"#####"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aac0b0"},"children":[{"type":"text","value":"# usage: ./script.sh \"/path/to/dump.sql\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aac0b0"},"children":[{"type":"text","value":"#####"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"DUMP_PATH="}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"CONTAINER="}]},{"type":"element","tag":"span","props":{"class":"ct-da7cb6"},"children":[{"type":"text","value":"\"db\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"USER=root"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"PASSWORD=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"DB=database"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"cat "}]},{"type":"element","tag":"span","props":{"class":"ct-da7cb6"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"DUMP_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-da7cb6"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-084b84"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-371fb5"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" -i "}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"CONTAINER"}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" mysql -u"}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"USER"}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" -p"}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"DB"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-371fb5{color:#79C0FF}.ct-084b84{color:#FF7B72}.ct-da7cb6{color:#A5D6FF}.ct-96c3f7{color:#C9D1D9}.ct-1ae675{color:#C9D1D9}.ct-74a2bf{color:#C9D1D9}.ct-aac0b0{color:#8B949E}.light .ct-aac0b0{color:#93A1A1}.light .ct-74a2bf{color:#657B83}.light .ct-1ae675{color:#859900}.light .ct-96c3f7{color:#268BD2}.light .ct-da7cb6{color:#2AA198}.light .ct-084b84{color:#859900}.light .ct-371fb5{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Seed dump inside docker.md","_source":"content","_file":"Docker/Seed dump inside docker.md","_extension":"md"},{"_path":"/docker/wait-for-mysql","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Wait For Mysql","description":"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful query from database or exits with non-zero status after timeout."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Don't forget to change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$query"}]},{"type":"text","value":" for the actually working one."}]},{"type":"element","tag":"code","props":{"code":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20redis"},"children":[{"type":"text","value":"Wait for redis"}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful query from database or exits with non-zero status after timeout."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Don't forget to change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$query"}]},{"type":"text","value":" for the actually working one."}]},{"type":"element","tag":"code","props":{"code":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-09c516"},"children":[{"type":"text","value":"# Waits for mysql to become actually available"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ca8f86"},"children":[{"type":"text","value":"wait_for_mysql"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":"() {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" query="}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\"SELECT count(*) FROM users\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" timeout=180 "}]},{"type":"element","tag":"span","props":{"class":"ct-09c516"},"children":[{"type":"text","value":"# 3 minutes limit"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" i=0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"while"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-9ea5d9"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" -it "}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" mysql --user="}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" -e "}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"query"}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"do"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" sleep 1"}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" i="}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"$(("}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-6aee57"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" [[ "}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"-ge"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"timeout"}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" ]]"}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":";"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9ea5d9"},"children":[{"type":"text","value":"echo"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\"[Error] can't properly query MySQL after "}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":" secs\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9ea5d9"},"children":[{"type":"text","value":"exit"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" 1"}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"fi"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"done"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-09c516"},"children":[{"type":"text","value":"# usage: wait_for_mysql miin-mysql-dev root password database"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20redis"},"children":[{"type":"text","value":"Wait for redis"}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-6aee57{color:#79C0FF}.ct-36fa5c{color:#C9D1D9}.ct-d3c17d{color:#C9D1D9}.ct-9ea5d9{color:#79C0FF}.ct-ec8705{color:#FF7B72}.ct-d554cb{color:#A5D6FF}.ct-d5194e{color:#C9D1D9}.ct-ca8f86{color:#D2A8FF}.ct-09c516{color:#8B949E}.light .ct-09c516{color:#93A1A1}.light .ct-ca8f86{color:#268BD2}.light .ct-d5194e{color:#657B83}.light .ct-d554cb{color:#2AA198}.light .ct-ec8705{color:#859900}.light .ct-9ea5d9{color:#268BD2}.light .ct-d3c17d{color:#859900}.light .ct-36fa5c{color:#268BD2}.light .ct-6aee57{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Wait for mysql.md","_source":"content","_file":"Docker/Wait for mysql.md","_extension":"md"},{"_path":"/docker/wait-for-redis","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Wait For Redis","description":"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful ping or exits with non-zero status after 3 minutes."}]},{"type":"element","tag":"code","props":{"code":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20mysql"},"children":[{"type":"text","value":"Wait for mysql"}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful ping or exits with non-zero status after 3 minutes."}]},{"type":"element","tag":"code","props":{"code":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3933ec"},"children":[{"type":"text","value":"# Waits for redis to become actually available"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-712eb8"},"children":[{"type":"text","value":"wait_for_redis"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":"() {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" timeout=180 "}]},{"type":"element","tag":"span","props":{"class":"ct-3933ec"},"children":[{"type":"text","value":"# 3 minutes"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" i=0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"while"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-3c95ff"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" -it "}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" redis-cli -h localhost -p 6379 -a "}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" ping "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" grep "}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\"PONG\""}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":"/dev/null "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"2>&1;"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"do"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" sleep 1"}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" i="}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"$(("}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-c59f22"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" [[ "}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"-ge"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"timeout"}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" ]]"}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":";"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c95ff"},"children":[{"type":"text","value":"echo"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\"[Error] can't properly ping Redis container after "}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":" secs\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c95ff"},"children":[{"type":"text","value":"exit"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" 1"}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"fi"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"done"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3933ec"},"children":[{"type":"text","value":"# usage: wait_for_redis miin-redis-dev password"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20mysql"},"children":[{"type":"text","value":"Wait for mysql"}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-c59f22{color:#79C0FF}.ct-3559ef{color:#C9D1D9}.ct-b3bdff{color:#C9D1D9}.ct-36cb98{color:#A5D6FF}.ct-3c95ff{color:#79C0FF}.ct-1d18ad{color:#FF7B72}.ct-d4fcbb{color:#C9D1D9}.ct-712eb8{color:#D2A8FF}.ct-3933ec{color:#8B949E}.light .ct-3933ec{color:#93A1A1}.light .ct-712eb8{color:#268BD2}.light .ct-d4fcbb{color:#657B83}.light .ct-1d18ad{color:#859900}.light .ct-3c95ff{color:#268BD2}.light .ct-36cb98{color:#2AA198}.light .ct-b3bdff{color:#859900}.light .ct-3559ef{color:#268BD2}.light .ct-c59f22{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Wait for redis.md","_source":"content","_file":"Docker/Wait for redis.md","_extension":"md"},{"_path":"/frontend/react-native/oauth2-login","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"OAuth2 Login","description":"Use #oauth2 login with React-Native","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Use #oauth2 login with React-Native"}]},{"type":"element","tag":"h2","props":{"id":"common-oauth2-providers"},"children":[{"type":"text","value":"Common OAuth2 providers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be handled by "},{"type":"element","tag":"a","props":{"href":"react-native-app-auth"},"children":[{"type":"text","value":"react-native-app-auth"}]},{"type":"text","value":" by redirecting to url "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"com.yourapp://oauth2provider"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"example-for-google"},"children":[{"type":"text","value":"Example for #Google"}]},{"type":"element","tag":"code","props":{"code":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"example-for-yandex"},"children":[{"type":"text","value":"Example for #Yandex"}]},{"type":"element","tag":"code","props":{"code":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"apple-id-login"},"children":[{"type":"text","value":"Apple ID login"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication","rel":["nofollow"]},"children":[{"type":"text","value":"react-native-apple-authentication"}]},{"type":"text","value":" has its own "},{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication/tree/main/docs","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":" on setting up OAuth using Apple ID."}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Use #oauth2 login with React-Native"}]},{"type":"element","tag":"h2","props":{"id":"common-oauth2-providers"},"children":[{"type":"text","value":"Common OAuth2 providers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be handled by "},{"type":"element","tag":"a","props":{"href":"react-native-app-auth"},"children":[{"type":"text","value":"react-native-app-auth"}]},{"type":"text","value":" by redirecting to url "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"com.yourapp://oauth2provider"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"example-for-google"},"children":[{"type":"text","value":"Example for #Google"}]},{"type":"element","tag":"code","props":{"code":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-cd66a6"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'react-native-app-auth'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"GOOGLE_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67fd92"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3baf75"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" issuer: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'https://accounts.google.com'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" clientId: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"GOOGLE_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}.apps.googleusercontent.com`"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" redirectUrl: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"`com.yourapp:/oauth2redirect/google`"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" scopes: ["}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'openid'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'profile'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" dangerouslyAllowInsecureHttpRequests: "}]},{"type":"element","tag":"span","props":{"class":"ct-22f6b6"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"});"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"example-for-yandex"},"children":[{"type":"text","value":"Example for #Yandex"}]},{"type":"element","tag":"code","props":{"code":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_SECRET"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-67fd92"},"children":[{"type":"text","value":"// better hide it somehow"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'com.yourapp'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3baf75"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" serviceConfiguration: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" authorizationEndpoint: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"`https://oauth.yandex.ru/authorize?response_type=code&client_id=${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}&redirect_uri=${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}:/oauth2redirect`"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-67fd92"},"children":[{"type":"text","value":"// TODO: replace it with your own backend to secure client_secret:"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" tokenEndpoint: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"`https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}&client_secret=${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_SECRET"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" clientId: "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" redirectUrl: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}:/oauth2redirect`"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" scopes: ["}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'login:info'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'login:avatar'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" dangerouslyAllowInsecureHttpRequests: "}]},{"type":"element","tag":"span","props":{"class":"ct-22f6b6"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3baf75"},"children":[{"type":"text","value":"callback"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-cd66a6"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-cd66a6"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"apple-id-login"},"children":[{"type":"text","value":"Apple ID login"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication","rel":["nofollow"]},"children":[{"type":"text","value":"react-native-apple-authentication"}]},{"type":"text","value":" has its own "},{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication/tree/main/docs","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":" on setting up OAuth using Apple ID."}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-22f6b6{color:#79C0FF}.ct-3baf75{color:#D2A8FF}.ct-67fd92{color:#8B949E}.ct-da0e1d{color:#79C0FF}.ct-f5c383{color:#FF7B72}.ct-bfdae2{color:#A5D6FF}.ct-cd66a6{color:#C9D1D9}.ct-4619c3{color:#C9D1D9}.ct-8cda25{color:#FF7B72}.light .ct-8cda25{color:#859900}.light .ct-4619c3{color:#657B83}.light .ct-cd66a6{color:#268BD2}.light .ct-bfdae2{color:#2AA198}.light .ct-f5c383{color:#073642}.light .ct-da0e1d{color:#268BD2}.light .ct-67fd92{color:#93A1A1}.light .ct-3baf75{color:#268BD2}.light .ct-22f6b6{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"common-oauth2-providers","depth":2,"text":"Common OAuth2 providers","children":[{"id":"example-for-google","depth":3,"text":"Example for #Google"},{"id":"example-for-yandex","depth":3,"text":"Example for #Yandex"}]},{"id":"apple-id-login","depth":2,"text":"Apple ID login"}]}},"_type":"markdown","_id":"content:Frontend:React Native:OAuth2 login.md","_source":"content","_file":"Frontend/React Native/OAuth2 login.md","_extension":"md"},{"_path":"/frontend/react-native/preserve-flatlist-scroll-position-in-react-native","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Preserve FlatList Scroll Position In React Native","description":"Sometimes you need to keep scroll position of FlatList in React Native after some user interactions.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to keep scroll position of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"FlatList"}]},{"type":"text","value":" in React Native after some user interactions."}]},{"type":"element","tag":"code","props":{"code":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to keep scroll position of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"FlatList"}]},{"type":"text","value":" in React Native after some user interactions."}]},{"type":"element","tag":"code","props":{"code":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-813619"},"children":[{"type":"text","value":"// interact() is doing some stuff, that changes FlatList scroll size"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b6859e"},"children":[{"type":"text","value":"Props"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-671d2d"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"; }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0d3f63"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c26930"},"children":[{"type":"text","value":"SomeList"}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d0748e"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-d0748e"},"children":[{"type":"text","value":"Props"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" ({ "}]},{"type":"element","tag":"span","props":{"class":"ct-71edb3"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-0d3f63"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b39378"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b39378"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-813619"},"children":[{"type":"text","value":"// set it to `true` before interaction and back to `false` right after"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d39361"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-71edb3"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d0748e"},"children":[{"type":"text","value":"NativeSyntheticEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-d0748e"},"children":[{"type":"text","value":"NativeScrollEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":">) "}]},{"type":"element","tag":"span","props":{"class":"ct-0d3f63"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"nativeEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"contentOffset"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"y"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" [],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d3f63"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-152aab"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c26930"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-71edb3"},"children":[{"type":"text","value":"_"}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-26fd42"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-71edb3"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-26fd42"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-0d3f63"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"scrollToOffset"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" offset: "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" animated: "}]},{"type":"element","tag":"span","props":{"class":"ct-d39361"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-813619"},"children":[{"type":"text","value":"// onInteraction wraps interaction to preserve scroll position"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"onInteraction"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d39361"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"setTimeout"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" }, "}]},{"type":"element","tag":"span","props":{"class":"ct-b39378"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"setTimeout"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d39361"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" }, "}]},{"type":"element","tag":"span","props":{"class":"ct-b39378"},"children":[{"type":"text","value":"500"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"setSelectedSubThemes"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-30a71a"},"children":[{"type":"text","value":"FlatList"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-813619"},"children":[{"type":"text","value":"// ...required FlatList options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"/>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" )"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-30a71a{color:#FFA657}.ct-26fd42{color:#79C0FF}.ct-152aab{color:#79C0FF}.ct-0d0f2a{color:#C9D1D9}.ct-d39361{color:#79C0FF}.ct-b39378{color:#79C0FF}.ct-c02abc{color:#79C0FF}.ct-71edb3{color:#FFA657}.ct-d0748e{color:#FFA657}.ct-50c268{color:#FF7B72}.ct-c26930{color:#D2A8FF}.ct-d59891{color:#C9D1D9}.ct-0d3f63{color:#FF7B72}.ct-671d2d{color:#79C0FF}.ct-852d98{color:#D2A8FF}.ct-135a94{color:#FF7B72}.ct-b6859e{color:#FFA657}.ct-854b0c{color:#C9D1D9}.ct-088cae{color:#FF7B72}.ct-813619{color:#8B949E}.light .ct-813619{color:#93A1A1}.light .ct-088cae{color:#073642}.light .ct-854b0c{color:#657B83}.light .ct-b6859e{color:#268BD2}.light .ct-135a94{color:#859900}.light .ct-852d98{color:#268BD2}.light .ct-671d2d{color:#859900}.light .ct-0d3f63{color:#073642}.light .ct-d59891{color:#657B83}.light .ct-c26930{color:#268BD2}.light .ct-50c268{color:#859900}.light .ct-d0748e{color:#268BD2}.light .ct-71edb3{color:#657B83}.light .ct-c02abc{color:#268BD2}.light .ct-b39378{color:#D33682}.light .ct-d39361{color:#B58900}.light .ct-0d0f2a{color:#268BD2}.light .ct-152aab{color:#268BD2}.light .ct-26fd42{color:#859900}.light .ct-30a71a{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React Native:Preserve FlatList scroll position in React Native.md","_source":"content","_file":"Frontend/React Native/Preserve FlatList scroll position in React Native.md","_extension":"md"},{"_path":"/frontend/react-native/useful-comands","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Useful Comands","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"show-android-logcat"},"children":[{"type":"text","value":"Show android logcat"}]},{"type":"element","tag":"code","props":{"code":"adb logcat com.application:I \"*:S\"\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"adb logcat com.application:I \"*:S\"\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"get-apks-sha-256"},"children":[{"type":"text","value":"Get .apk's SHA-256"}]},{"type":"element","tag":"code","props":{"code":"keytool -printcert -jarfile \"$1\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"keytool -printcert -jarfile \"$1\"\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"assemble-debug-release-on-android"},"children":[{"type":"text","value":"Assemble debug release on Android"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Packages release with bundled resources."}]},{"type":"element","tag":"code","props":{"code":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"send-release-to-android-device"},"children":[{"type":"text","value":"Send release to Android device"}]},{"type":"element","tag":"code","props":{"code":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"deep-links"},"children":[{"type":"text","value":"Deep links"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zarah.dev/2022/02/08/android12-deeplinks.html","rel":["nofollow"]},"children":[{"type":"text","value":"https://zarah.dev/2022/02/08/android12-deeplinks.html"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification","rel":["nofollow"]},"children":[{"type":"text","value":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls","rel":["nofollow"]},"children":[{"type":"text","value":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls"}]}]}]},{"type":"element","tag":"h3","props":{"id":"open-deep-links"},"children":[{"type":"text","value":"Open deep links"}]},{"type":"element","tag":"code","props":{"code":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"reverify-links-on-android"},"children":[{"type":"text","value":"Reverify links on Android"}]},{"type":"element","tag":"code","props":{"code":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"show-android-logcat"},"children":[{"type":"text","value":"Show android logcat"}]},{"type":"element","tag":"code","props":{"code":"adb logcat com.application:I \"*:S\"\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"adb logcat com.application:I "}]},{"type":"element","tag":"span","props":{"class":"ct-582610"},"children":[{"type":"text","value":"\"*:S\""}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"get-apks-sha-256"},"children":[{"type":"text","value":"Get .apk's SHA-256"}]},{"type":"element","tag":"code","props":{"code":"keytool -printcert -jarfile \"$1\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"keytool -printcert -jarfile "}]},{"type":"element","tag":"span","props":{"class":"ct-582610"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-880203"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-b1dec6"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-582610"},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"assemble-debug-release-on-android"},"children":[{"type":"text","value":"Assemble debug release on Android"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Packages release with bundled resources."}]},{"type":"element","tag":"code","props":{"code":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"npx react-native bundle \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" --platform android \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" --dev "}]},{"type":"element","tag":"span","props":{"class":"ct-666406"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" --entry-file index.js \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" --bundle-output android/app/src/main/assets/index.android.bundle \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" --assets-dest android/app/src/main/res/"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-666406"},"children":[{"type":"text","value":"cd"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" android "}]},{"type":"element","tag":"span","props":{"class":"ct-6129e7"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" ./gradlew assembleDebug"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-742116"},"children":[{"type":"text","value":"# do your stuff"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"./gradlew clean"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"send-release-to-android-device"},"children":[{"type":"text","value":"Send release to Android device"}]},{"type":"element","tag":"code","props":{"code":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-666406"},"children":[{"type":"text","value":"cd"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" ./android \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6129e7"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" ./gradlew assembleRelease \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6129e7"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" adb install ./app/build/outputs/apk/release/app-release.apk"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"deep-links"},"children":[{"type":"text","value":"Deep links"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zarah.dev/2022/02/08/android12-deeplinks.html","rel":["nofollow"]},"children":[{"type":"text","value":"https://zarah.dev/2022/02/08/android12-deeplinks.html"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification","rel":["nofollow"]},"children":[{"type":"text","value":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls","rel":["nofollow"]},"children":[{"type":"text","value":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls"}]}]}]},{"type":"element","tag":"h3","props":{"id":"open-deep-links"},"children":[{"type":"text","value":"Open deep links"}]},{"type":"element","tag":"code","props":{"code":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-742116"},"children":[{"type":"text","value":"# ios "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"xcrun simctl openurl booted "}]},{"type":"element","tag":"span","props":{"class":"ct-880203"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-b1dec6"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-742116"},"children":[{"type":"text","value":"# android"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"adb shell am start -W -a android.intent.action.VIEW -d "}]},{"type":"element","tag":"span","props":{"class":"ct-880203"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-b1dec6"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"com.application"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"reverify-links-on-android"},"children":[{"type":"text","value":"Reverify links on Android"}]},{"type":"element","tag":"code","props":{"code":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"PACKAGE="}]},{"type":"element","tag":"span","props":{"class":"ct-582610"},"children":[{"type":"text","value":"\"com.application\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"adb shell pm set-app-links --package "}]},{"type":"element","tag":"span","props":{"class":"ct-880203"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-b1dec6"},"children":[{"type":"text","value":"PACKAGE"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" 0 all "}]},{"type":"element","tag":"span","props":{"class":"ct-6129e7"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" adb shell pm verify-app-links --re-verify "}]},{"type":"element","tag":"span","props":{"class":"ct-880203"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-b1dec6"},"children":[{"type":"text","value":"PACKAGE"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-742116{color:#8B949E}.ct-6129e7{color:#FF7B72}.ct-666406{color:#79C0FF}.ct-b1dec6{color:#C9D1D9}.ct-880203{color:#C9D1D9}.ct-582610{color:#A5D6FF}.ct-4b992d{color:#C9D1D9}.light .ct-4b992d{color:#657B83}.light .ct-582610{color:#2AA198}.light .ct-880203{color:#859900}.light .ct-b1dec6{color:#268BD2}.light .ct-666406{color:#268BD2}.light .ct-6129e7{color:#859900}.light .ct-742116{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"show-android-logcat","depth":2,"text":"Show android logcat"},{"id":"get-apks-sha-256","depth":2,"text":"Get .apk's SHA-256"},{"id":"assemble-debug-release-on-android","depth":2,"text":"Assemble debug release on Android"},{"id":"send-release-to-android-device","depth":2,"text":"Send release to Android device"},{"id":"deep-links","depth":2,"text":"Deep links","children":[{"id":"open-deep-links","depth":3,"text":"Open deep links"},{"id":"reverify-links-on-android","depth":3,"text":"Reverify links on Android"}]}]}},"_type":"markdown","_id":"content:Frontend:React Native:Useful comands.md","_source":"content","_file":"Frontend/React Native/Useful comands.md","_extension":"md"},{"_path":"/frontend/react/axios-refresh-token-on-react","_dir":"react","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Axios Refresh Token On React","description":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":""}]},{"type":"text","value":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props."}]},{"type":"element","tag":"code","props":{"code":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":""}]},{"type":"text","value":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props."}]},{"type":"element","tag":"code","props":{"code":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"\"axios\""}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"React"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"createContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"PropsWithChildren"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"useContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"useEffect"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"\"react\""}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ee9ee3"},"children":[{"type":"text","value":"APIProviderProps"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d45585"},"children":[{"type":"text","value":"PropsWithChildren"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-7e867e"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-7e867e"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d30aee"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"refresh"}]},{"type":"element","tag":"span","props":{"class":"ct-7e867e"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d30aee"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfb75e"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"createContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" client: "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" baseURL: "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"process"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"env"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"NEXT_PUBLIC_API_ENDPOINT"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"APIProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5a9bde"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-5a9bde"},"children":[{"type":"text","value":"APIProviderProps"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" ({ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"children"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" baseURL: "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"process"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"env"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"NEXT_PUBLIC_API_ENDPOINT"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" )."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"<() "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfb75e"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":">(() "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5816b7"},"children":[{"type":"text","value":"// TODO: implement me"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfb75e"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"\"not implemented\""}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"useEffect"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5816b7"},"children":[{"type":"text","value":"// append `access` token to all requests"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"req"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"use"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" Authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"`Bearer ${"}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-26cf42"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfb75e"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5816b7"},"children":[{"type":"text","value":"// refreshing interceptor"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"resp"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"use"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"function"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"status"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-153c3c"},"children":[{"type":"text","value":"401"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"_retry"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"_retry"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-382864"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"newToken"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" Authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"\"Bearer \""}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"newToken"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfb75e"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"eject"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"req"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"eject"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"resp"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }, ["}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"refresh"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"]);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"Provider"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"{{ "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }}"}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":">"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"children"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"useAPI"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"useContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"APIProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-382864{color:#79C0FF}.ct-153c3c{color:#79C0FF}.ct-26cf42{color:#A5D6FF}.ct-5816b7{color:#8B949E}.ct-5a9bde{color:#FFA657}.ct-f5243a{color:#79C0FF}.ct-dfb75e{color:#79C0FF}.ct-3c0604{color:#FF7B72}.ct-c1cb9a{color:#D2A8FF}.ct-d30aee{color:#79C0FF}.ct-7e867e{color:#FF7B72}.ct-9ac74d{color:#FFA657}.ct-d45585{color:#79C0FF}.ct-ee9ee3{color:#FFA657}.ct-d2b589{color:#C9D1D9}.ct-ab524a{color:#FF7B72}.ct-9941db{color:#A5D6FF}.ct-507769{color:#C9D1D9}.ct-2252d3{color:#C9D1D9}.ct-c58203{color:#FF7B72}.light .ct-c58203{color:#859900}.light .ct-2252d3{color:#657B83}.light .ct-507769{color:#268BD2}.light .ct-9941db{color:#2AA198}.light .ct-ab524a{color:#073642}.light .ct-d2b589{color:#657B83}.light .ct-ee9ee3{color:#268BD2}.light .ct-d45585{color:#657B83}.light .ct-9ac74d{color:#657B83}.light .ct-7e867e{color:#859900}.light .ct-d30aee{color:#859900}.light .ct-c1cb9a{color:#268BD2}.light .ct-3c0604{color:#073642}.light .ct-dfb75e{color:#859900}.light .ct-f5243a{color:#268BD2}.light .ct-5a9bde{color:#268BD2}.light .ct-5816b7{color:#93A1A1}.light .ct-26cf42{color:#657B83}.light .ct-153c3c{color:#D33682}.light .ct-382864{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React:Axios refresh token on React.md","_source":"content","_file":"Frontend/React/Axios refresh token on React.md","_extension":"md"},{"_path":"/frontend/react/axios-with-abortcontroller","_dir":"react","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Axios With AbortController","description":"If you need to cancel some request, use axios with AbortController. Previously axios used cancellation token, but now it's deprecated.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to cancel some request, use "},{"type":"element","tag":"a","props":{"href":"https://axios-http.com/docs/cancellation","rel":["nofollow"]},"children":[{"type":"text","value":"axios with AbortController"}]},{"type":"text","value":". Previously axios used cancellation token, but now it's deprecated."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"AbortController"}]},{"type":"text","value":" can be used with a multiple requests to cancel them at once."}]},{"type":"element","tag":"code","props":{"code":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to cancel some request, use "},{"type":"element","tag":"a","props":{"href":"https://axios-http.com/docs/cancellation","rel":["nofollow"]},"children":[{"type":"text","value":"axios with AbortController"}]},{"type":"text","value":". Previously axios used cancellation token, but now it's deprecated."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"AbortController"}]},{"type":"text","value":" can be used with a multiple requests to cancel them at once."}]},{"type":"element","tag":"code","props":{"code":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ed40b5"},"children":[{"type":"text","value":"\"react\""}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ed40b5"},"children":[{"type":"text","value":"'axios'"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c45372"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"useGetUsers"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c45372"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"AbortController"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"());"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c45372"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c45372"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-ed40b5"},"children":[{"type":"text","value":"\"/\""}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d579a"},"children":[{"type":"text","value":"// params and props here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" signal: "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"signal"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"data"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c45372"},"children":[{"type":"text","value":"cancel"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"abort"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d579a"},"children":[{"type":"text","value":"// controller should be rewritten or all requests will fail"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"AbortController"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" }, ["}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"]);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"cancel"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"};"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-3d579a{color:#8B949E}.ct-91a95e{color:#D2A8FF}.ct-c45372{color:#79C0FF}.ct-1b579c{color:#FF7B72}.ct-ed40b5{color:#A5D6FF}.ct-fc57c0{color:#C9D1D9}.ct-86dcb7{color:#C9D1D9}.ct-74fa66{color:#FF7B72}.light .ct-74fa66{color:#859900}.light .ct-86dcb7{color:#657B83}.light .ct-fc57c0{color:#268BD2}.light .ct-ed40b5{color:#2AA198}.light .ct-1b579c{color:#073642}.light .ct-c45372{color:#268BD2}.light .ct-91a95e{color:#268BD2}.light .ct-3d579a{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React:Axios with AbortController.md","_source":"content","_file":"Frontend/React/Axios with AbortController.md","_extension":"md"},{"_path":"/frontend/vue/adding-global-properties-to-component","_dir":"vue","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Adding Global Properties To Component","description":"The topic's fully covered in the official documentation and in Add global variable to window.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The topic's fully covered in the "},{"type":"element","tag":"a","props":{"href":"https://vuejs.org/guide/typescript/options-api.html#augmenting-global-properties","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]},{"type":"text","value":" and in "},{"type":"element","tag":"a","props":{"href":"Add%20global%20variable%20to%20window"},"children":[{"type":"text","value":"Add global variable to window"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you want to add global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$http"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$translate"}]},{"type":"text","value":" services to all of project's components:"}]},{"type":"element","tag":"code","props":{"code":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The topic's fully covered in the "},{"type":"element","tag":"a","props":{"href":"https://vuejs.org/guide/typescript/options-api.html#augmenting-global-properties","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]},{"type":"text","value":" and in "},{"type":"element","tag":"a","props":{"href":"Add%20global%20variable%20to%20window"},"children":[{"type":"text","value":"Add global variable to window"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you want to add global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$http"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$translate"}]},{"type":"text","value":" services to all of project's components:"}]},{"type":"element","tag":"code","props":{"code":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0059ff"},"children":[{"type":"text","value":"// ~/index.d.ts or ~/custom.d.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5b31c6"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b56c55"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5b31c6"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e6de36"},"children":[{"type":"text","value":"'axios'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a26ced"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a26ced"},"children":[{"type":"text","value":"module"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e6de36"},"children":[{"type":"text","value":"'vue'"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a26ced"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b09d31"},"children":[{"type":"text","value":"ComponentCustomProperties"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dfd58b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7a01b9"},"children":[{"type":"text","value":"$translate"}]},{"type":"element","tag":"span","props":{"class":"ct-3636dc"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-dfd58b"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-7d0996"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-3636dc"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-dfd58b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0a3a8c"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-dfd58b"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-312a18"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-dfd58b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0a3a8c"},"children":[{"type":"text","value":"string"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-312a18{color:#FF7B72}.ct-0a3a8c{color:#79C0FF}.ct-7d0996{color:#FFA657}.ct-3636dc{color:#FF7B72}.ct-7a01b9{color:#D2A8FF}.ct-dfd58b{color:#C9D1D9}.ct-b09d31{color:#FFA657}.ct-a26ced{color:#FF7B72}.ct-e6de36{color:#A5D6FF}.ct-b56c55{color:#C9D1D9}.ct-4b1946{color:#C9D1D9}.ct-5b31c6{color:#FF7B72}.ct-0059ff{color:#8B949E}.light .ct-0059ff{color:#93A1A1}.light .ct-5b31c6{color:#859900}.light .ct-4b1946{color:#657B83}.light .ct-b56c55{color:#268BD2}.light .ct-e6de36{color:#2AA198}.light .ct-a26ced{color:#073642}.light .ct-b09d31{color:#268BD2}.light .ct-dfd58b{color:#657B83}.light .ct-7a01b9{color:#268BD2}.light .ct-3636dc{color:#859900}.light .ct-7d0996{color:#657B83}.light .ct-0a3a8c{color:#859900}.light .ct-312a18{color:#073642}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:Vue:Adding global properties to component.md","_source":"content","_file":"Frontend/Vue/Adding global properties to component.md","_extension":"md"},{"_path":"/frontend/vue/make-nuxt-handle-obsidian-highlights","_dir":"vue","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Make Nuxt Handle Obsidian Highlights","description":"By default Nuxt Content Plugin not handling highlight links. To fix that we will create Nitro plugin:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By default "},{"type":"element","tag":"a","props":{"href":"https://content.nuxtjs.org","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt Content Plugin"}]},{"type":"text","value":" not handling "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"highlight"}]},{"type":"text","value":" links. To fix that we will create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Nitro"}]},{"type":"text","value":" plugin:"}]},{"type":"element","tag":"code","props":{"code":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By default "},{"type":"element","tag":"a","props":{"href":"https://content.nuxtjs.org","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt Content Plugin"}]},{"type":"text","value":" not handling "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"highlight"}]},{"type":"text","value":" links. To fix that we will create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Nitro"}]},{"type":"text","value":" plugin:"}]},{"type":"element","tag":"code","props":{"code":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e451d7"},"children":[{"type":"text","value":"// ~/server/plugins/highlight.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c283c4"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-2996cc"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c283c4"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-2996cc"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4ae78b"},"children":[{"type":"text","value":"defineNitroPlugin"}]},{"type":"element","tag":"span","props":{"class":"ct-2996cc"},"children":[{"type":"text","value":"((nitroApp) "}]},{"type":"element","tag":"span","props":{"class":"ct-7162c0"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2996cc"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4029a0"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"nitroApp"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"hooks"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3d30a3"},"children":[{"type":"text","value":"hook"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d3beb1"},"children":[{"type":"text","value":"\"content:file:beforeParse\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-86fb7c"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"_id"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3d30a3"},"children":[{"type":"text","value":"endsWith"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d3beb1"},"children":[{"type":"text","value":"\".md\""}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-86fb7c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3d30a3"},"children":[{"type":"text","value":"replace"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c89929"},"children":[{"type":"text","value":"/==("}]},{"type":"element","tag":"span","props":{"class":"ct-7da03a"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-86fb7c"},"children":[{"type":"text","value":"^"}]},{"type":"element","tag":"span","props":{"class":"ct-7da03a"},"children":[{"type":"text","value":"=]"}]},{"type":"element","tag":"span","props":{"class":"ct-86fb7c"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-c89929"},"children":[{"type":"text","value":")==/"}]},{"type":"element","tag":"span","props":{"class":"ct-86fb7c"},"children":[{"type":"text","value":"gs"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d3beb1"},"children":[{"type":"text","value":"`$1`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4029a0"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-2996cc"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-4029a0"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-7da03a{color:#79C0FF}.ct-c89929{color:#A5D6FF}.ct-86fb7c{color:#FF7B72}.ct-d3beb1{color:#A5D6FF}.ct-3d30a3{color:#D2A8FF}.ct-1fb8d7{color:#C9D1D9}.ct-9ad155{color:#C9D1D9}.ct-4029a0{color:#C9D1D9}.ct-7162c0{color:#FF7B72}.ct-4ae78b{color:#D2A8FF}.ct-2996cc{color:#FFA657}.ct-c283c4{color:#FF7B72}.ct-e451d7{color:#8B949E}.light .ct-e451d7{color:#93A1A1}.light .ct-c283c4{color:#859900}.light .ct-2996cc{color:#657B83}.light .ct-4ae78b{color:#268BD2}.light .ct-7162c0{color:#073642}.light .ct-4029a0{color:#657B83}.light .ct-9ad155{color:#657B83}.light .ct-1fb8d7{color:#268BD2}.light .ct-3d30a3{color:#268BD2}.light .ct-d3beb1{color:#2AA198}.light .ct-86fb7c{color:#859900}.light .ct-c89929{color:#D30102}.light .ct-7da03a{color:#CB4B16}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:Vue:Make Nuxt handle Obsidian highlights.md","_source":"content","_file":"Frontend/Vue/Make Nuxt handle Obsidian highlights.md","_extension":"md"},{"_path":"/git/force-git-to-use-https","_dir":"git","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Force Git To Use HTTPS","description":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put this inside your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"[url \"https://github.com\"]\n insteadOf = git://github.com\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"[url \"https://github.com\"]\n insteadOf = git://github.com\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put this inside your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"[url \"https://github.com\"]\n insteadOf = git://github.com\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-887227"},"children":[{"type":"text","value":"[url "}]},{"type":"element","tag":"span","props":{"class":"ct-bb7a3a"},"children":[{"type":"text","value":"\"https://github.com\""}]},{"type":"element","tag":"span","props":{"class":"ct-887227"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-887227"},"children":[{"type":"text","value":" insteadOf "}]},{"type":"element","tag":"span","props":{"class":"ct-9648cd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-887227"},"children":[{"type":"text","value":" git:"}]},{"type":"element","tag":"span","props":{"class":"ct-b7e81b"},"children":[{"type":"text","value":"//github.com"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-b7e81b{color:#8B949E}.ct-9648cd{color:#FF7B72}.ct-bb7a3a{color:#A5D6FF}.ct-887227{color:#C9D1D9}.light .ct-887227{color:#657B83}.light .ct-bb7a3a{color:#2AA198}.light .ct-9648cd{color:#859900}.light .ct-b7e81b{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Git:Force git to use HTTPS.md","_source":"content","_file":"Git/Force git to use HTTPS.md","_extension":"md"},{"_path":"/git/git-aliases-and-useful-commands","_dir":"git","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Git Aliases And Useful Commands","description":"Shorthands for #git commands can be specified. Should be placed at ~/.gitconfig.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Shorthands for #git commands can be specified. Should be placed at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n"}]}]}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"command"}]}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"description"}]}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git flush"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"drops all branches, except master"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git lol"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"shows log"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git c"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits with message"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git cv"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits without hooks"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git p"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"pushes"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git pf"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"push with --force and additional check"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git ignore-now"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"starts ignoring file from now on"}]}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Shorthands for #git commands can be specified. Should be placed at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"[alias]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" flush "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" git clean"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"branches branch "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" grep "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"v master "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" xargs git branch "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"D"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" lol "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" log "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"oneline "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"graph"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" l "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" lol"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" c "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" commit "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"am"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" cv "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" commit "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"no"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"verify "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"am"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" p "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" push"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" pf "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" p "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"force"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"with"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"lease"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" ignore"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"now "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" update"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"index "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"skip"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"worktree"}]}]}]}]}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"command"}]}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"description"}]}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git flush"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"drops all branches, except master"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git lol"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"shows log"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git c"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits with message"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git cv"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits without hooks"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git p"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"pushes"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git pf"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"push with --force and additional check"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git ignore-now"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"starts ignoring file from now on"}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-266817{color:#FF7B72}.ct-3013c7{color:#C9D1D9}.light .ct-3013c7{color:#657B83}.light .ct-266817{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Git:Git aliases and useful commands.md","_source":"content","_file":"Git/Git aliases and useful commands.md","_extension":"md"},{"_path":"/graphql/apollo-client-pagination","_dir":"graphql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Apollo Client Pagination","description":"Say, we have gql response like this and we wan't to have pagination with it. Let's merge it as it specified in official documentation","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we have "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gql"}]},{"type":"text","value":" response like this and we wan't to have pagination with it. Let's merge it as it specified in "},{"type":"element","tag":"a","props":{"href":"https://www.apollographql.com/docs/react/caching/cache-field-behavior/#the-merge-function","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]}]},{"type":"element","tag":"code","props":{"code":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will setup "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"text","value":" with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"typePolicies"}]},{"type":"text","value":" to merge incoming data in cache:"}]},{"type":"element","tag":"code","props":{"code":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will need merge function "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"text","value":", which will join results of query and cached data for specific key:"}]},{"type":"element","tag":"code","props":{"code":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we have "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gql"}]},{"type":"text","value":" response like this and we wan't to have pagination with it. Let's merge it as it specified in "},{"type":"element","tag":"a","props":{"href":"https://www.apollographql.com/docs/react/caching/cache-field-behavior/#the-merge-function","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]}]},{"type":"element","tag":"code","props":{"code":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"query"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-938f0a"},"children":[{"type":"text","value":"listItems"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"Filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"sort"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"limit"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"Number"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"Number"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"): "}]},{"type":"element","tag":"span","props":{"class":"ct-938f0a"},"children":[{"type":"text","value":"ItemList"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"input"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e65a4c"},"children":[{"type":"text","value":"Filter"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e65a4c"},"children":[{"type":"text","value":"ItemList"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": ["}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"Item"}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":"]"}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"Int"}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will setup "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"text","value":" with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"typePolicies"}]},{"type":"text","value":" to merge incoming data in cache:"}]},{"type":"element","tag":"code","props":{"code":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"InMemoryCache"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24c886"},"children":[{"type":"text","value":"'@apollo/client'"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6b9c4d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bce347"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-938f0a"},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" cache: "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-938f0a"},"children":[{"type":"text","value":"InMemoryCache"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"({ "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"typePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6b9c4d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bce347"},"children":[{"type":"text","value":"typePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ca850d"},"children":[{"type":"text","value":"TypePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" Query: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" fields: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// query name"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" listItems: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// apollo will serialize and use keyArgs as unique"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// identifier in cache for every query"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// consider choosing the right fields, "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// i.e. limit and offset won't work here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" keyArgs: ["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24c886"},"children":[{"type":"text","value":"'sort'"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// primitive type"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24c886"},"children":[{"type":"text","value":"'filter'"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":", ["}]},{"type":"element","tag":"span","props":{"class":"ct-24c886"},"children":[{"type":"text","value":"'name'"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-24c886"},"children":[{"type":"text","value":"'type'"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"] "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// nested fields of `filter`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" ],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" merge: "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will need merge function "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"text","value":", which will join results of query and cached data for specific key:"}]},{"type":"element","tag":"code","props":{"code":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"/** merges all sources with { items: unknown[], totalCount: number } */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a041d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c2c491"},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":", { "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-8a041d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// no existing data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" [];"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// If hook was called multiple times"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" [];"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// merge cache and incoming data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6b9c4d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bce347"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// apply latest result for totalCount"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6b9c4d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bce347"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-c2c491{color:#D2A8FF}.ct-8a041d{color:#FF7B72}.ct-ca850d{color:#FFA657}.ct-84bc7a{color:#8B949E}.ct-bce347{color:#79C0FF}.ct-6b9c4d{color:#FF7B72}.ct-24c886{color:#A5D6FF}.ct-d98dbb{color:#C9D1D9}.ct-8bd8a4{color:#FF7B72}.ct-e65a4c{color:#79C0FF}.ct-3a8412{color:#79C0FF}.ct-ec611b{color:#FFA657}.ct-c8742a{color:#C9D1D9}.ct-938f0a{color:#D2A8FF}.ct-03a597{color:#C9D1D9}.ct-b51767{color:#FF7B72}.light .ct-b51767{color:#859900}.light .ct-03a597{color:#657B83}.light .ct-938f0a{color:#268BD2}.light .ct-c8742a{color:#657B83}.light .ct-ec611b{color:#657B83}.light .ct-3a8412{color:#859900}.light .ct-e65a4c{color:#859900}.light .ct-8bd8a4{color:#859900}.light .ct-d98dbb{color:#268BD2}.light .ct-24c886{color:#2AA198}.light .ct-6b9c4d{color:#073642}.light .ct-bce347{color:#268BD2}.light .ct-84bc7a{color:#93A1A1}.light .ct-ca850d{color:#268BD2}.light .ct-8a041d{color:#073642}.light .ct-c2c491{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:GraphQL:Apollo Client pagination.md","_source":"content","_file":"GraphQL/Apollo Client pagination.md","_extension":"md"},{"_path":"/graphql/refresh-token-in-apollo-client","_dir":"graphql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Refresh Token In Apollo Client","description":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client."}]},{"type":"element","tag":"code","props":{"code":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Custom fetch function for this request. You should tune "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"text","value":" and\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"text","value":" to match your api."}]},{"type":"element","tag":"code","props":{"code":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client."}]},{"type":"element","tag":"code","props":{"code":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"createApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"url"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"getAuthorizationData"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"authorization"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1e8a25"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"<"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"undefined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" >,"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"ApolloClientBase"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// ...other options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" link: "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"ApolloLink"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"(["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// ...other options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"setContext"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"_"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":", { "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"getAuthorizationData"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"HttpLink"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" uri: "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"url"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" fetch: "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"fetchWithTokenRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ]),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Custom fetch function for this request. You should tune "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"text","value":" and\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"text","value":" to match your api."}]},{"type":"element","tag":"code","props":{"code":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"/** Global singleton for refreshing promise */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1e8a25"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"/** Checks if GraphQl errors has unauthenticated error */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"<{ "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"code"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"ErrorCode"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" }>)"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"isArray"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"some"}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"status"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-02349f"},"children":[{"type":"text","value":"401"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// Distinguish unauthorized error here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"/** Detects if customFetch is sending refresh request */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"RequestInit"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a95fcd"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"operationName"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-779e2f"},"children":[{"type":"text","value":"'RefreshToken'"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a95fcd"},"children":[{"type":"text","value":"fetchWithTokenRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":": () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":": () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" { accessToken: "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"undefined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ) "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"RequestInit"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"Response"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// already refreshing token, wait for it and then use refreshed token"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// or use empty authorization if refreshing failed"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"as"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1e8a25"},"children":[{"type":"text","value":"Record"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":">)?."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a95fcd"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// refreshing token from other request failed, retry without authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-779e2f"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"async"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a95fcd"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a95fcd"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// check for unauthorized errors, if not present, just return result"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"||"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"||"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ok: "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"unknown"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":">("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":">("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// If unauthorized, refresh token and try again"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-779e2f"},"children":[{"type":"text","value":"'Session expired'"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// can't refresh token. logging out"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-779e2f"},"children":[{"type":"text","value":"'Session expired'"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// success or any non-auth error"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// wait for other request's refreshing query to finish, when retry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// refreshing token from other request failed, retry without authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-779e2f"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-779e2f{color:#A5D6FF}.ct-a95fcd{color:#79C0FF}.ct-02349f{color:#79C0FF}.ct-1fdb5c{color:#FFA657}.ct-840d6e{color:#79C0FF}.ct-c7113f{color:#C9D1D9}.ct-3c9ca1{color:#8B949E}.ct-1e8a25{color:#FFA657}.ct-9d4795{color:#FF7B72}.ct-3d67cf{color:#D2A8FF}.ct-665308{color:#79C0FF}.ct-8d2815{color:#79C0FF}.ct-f90941{color:#FF7B72}.ct-b61e12{color:#FFA657}.ct-de8287{color:#C9D1D9}.ct-78ba42{color:#D2A8FF}.ct-1a781c{color:#FF7B72}.ct-0fd30a{color:#C9D1D9}.ct-62900c{color:#FF7B72}.light .ct-62900c{color:#859900}.light .ct-0fd30a{color:#657B83}.light .ct-1a781c{color:#073642}.light .ct-78ba42{color:#268BD2}.light .ct-de8287{color:#657B83}.light .ct-b61e12{color:#657B83}.light .ct-f90941{color:#859900}.light .ct-8d2815{color:#859900}.light .ct-665308{color:#859900}.light .ct-3d67cf{color:#268BD2}.light .ct-9d4795{color:#073642}.light .ct-1e8a25{color:#268BD2}.light .ct-3c9ca1{color:#93A1A1}.light .ct-c7113f{color:#268BD2}.light .ct-840d6e{color:#B58900}.light .ct-1fdb5c{color:#268BD2}.light .ct-02349f{color:#D33682}.light .ct-a95fcd{color:#268BD2}.light .ct-779e2f{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:GraphQL:Refresh token in Apollo client.md","_source":"content","_file":"GraphQL/Refresh token in Apollo client.md","_extension":"md"},{"_path":"/linux/gitea-for-git-hosting","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Gitea For Git Hosting","description":"Self-hosted #git repositories with gitea and #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Self-hosted #git repositories with "},{"type":"element","tag":"a","props":{"href":"https://gitea.io/ru-ru/","rel":["nofollow"]},"children":[{"type":"text","value":"gitea"}]},{"type":"text","value":" and #docker."}]},{"type":"element","tag":"h2","props":{"id":"setting-up-with-docker-compose"},"children":[{"type":"text","value":"Setting up with docker-compose"}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Self-hosted #git repositories with "},{"type":"element","tag":"a","props":{"href":"https://gitea.io/ru-ru/","rel":["nofollow"]},"children":[{"type":"text","value":"gitea"}]},{"type":"text","value":" and #docker."}]},{"type":"element","tag":"h2","props":{"id":"setting-up-with-docker-compose"},"children":[{"type":"text","value":"Setting up with docker-compose"}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"networks"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"gitea"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"external"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d97ebb"},"children":[{"type":"text","value":"false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"gitea/gitea:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"USER_UID=1000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"USER_GID=1000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"networks"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"./var/lib/gitea:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"./etc/gitea:/etc/gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"/etc/timezone:/etc/timezone:ro"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"/etc/localtime:/etc/localtime:ro"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"\"3000:3000\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"\"222:22\""}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-d97ebb{color:#79C0FF}.ct-bf81c9{color:#A5D6FF}.ct-ce386f{color:#C9D1D9}.ct-c39ea1{color:#7EE787}.light .ct-c39ea1{color:#268BD2}.light .ct-ce386f{color:#657B83}.light .ct-bf81c9{color:#2AA198}.light .ct-d97ebb{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"setting-up-with-docker-compose","depth":2,"text":"Setting up with docker-compose"}]}},"_type":"markdown","_id":"content:Linux:Gitea for git hosting.md","_source":"content","_file":"Linux/Gitea for git hosting.md","_extension":"md"},{"_path":"/linux/google-photos-alternative-with-photoprism","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Google Photos Alternative With Photoprism","description":"Photo Prism is a free alternative to Google photos, can be set up with #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://photoprism.app/","rel":["nofollow"]},"children":[{"type":"text","value":"Photo Prism"}]},{"type":"text","value":" is a free alternative to Google photos, can be set up with #docker."}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-to-run-it"},"children":[{"type":"text","value":"Docker compose file to run it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out current "},{"type":"element","tag":"a","props":{"href":"https://dl.photoprism.app/docker/docker-compose.yml","rel":["nofollow"]},"children":[{"type":"text","value":"example"}]},{"type":"text","value":" at photoprism's "},{"type":"element","tag":"a","props":{"href":"https://docs.photoprism.app/getting-started/docker-compose/","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://photoprism.app/","rel":["nofollow"]},"children":[{"type":"text","value":"Photo Prism"}]},{"type":"text","value":" is a free alternative to Google photos, can be set up with #docker."}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-to-run-it"},"children":[{"type":"text","value":"Docker compose file to run it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out current "},{"type":"element","tag":"a","props":{"href":"https://dl.photoprism.app/docker/docker-compose.yml","rel":["nofollow"]},"children":[{"type":"text","value":"example"}]},{"type":"text","value":" at photoprism's "},{"type":"element","tag":"a","props":{"href":"https://docs.photoprism.app/getting-started/docker-compose/","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"'3.5'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"photoprism"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"photoprism__app"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"photoprism/photoprism:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"depends_on"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"mariadb"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"unless-stopped"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"security_opt"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"seccomp:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"apparmor:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"2342:2342"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-67dd99"},"children":[{"type":"text","value":"# HTTP port (host:container)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_ADMIN_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"password\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"https://service.url/\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_ORIGINALS_LIMIT"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-0d1cbf"},"children":[{"type":"text","value":"5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_HTTP_COMPRESSION"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"gzip\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DEBUG"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_PUBLIC"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_READONLY"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_EXPERIMENTAL"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_CHOWN"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_WEBDAV"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_SETTINGS"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_TENSORFLOW"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_FACES"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_CLASSIFICATION"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DARKTABLE_PRESETS"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DETECT_NSFW"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_UPLOAD_NSFW"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"true\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_DRIVER"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"mysql\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_SERVER"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"mariadb:3306\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_NAME"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"photoprism\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_USER"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"root\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"insecure\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_TITLE"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"PhotoPrism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_CAPTION"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"Browse Your Life\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_DESCRIPTION"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_AUTHOR"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"HOME"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"/photoprism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"working_dir"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"/photoprism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"./data/originals:/photoprism/originals\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"./data/imports:/photoprism/import\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"./data/storage:/photoprism/storage\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"  "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"mariadb"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"photoprism__db"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"unless-stopped"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"mariadb:10.6"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"security_opt"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"seccomp:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"apparmor:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"./database:/var/lib/mysql\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-67dd99"},"children":[{"type":"text","value":"# Important, don't remove"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"MYSQL_ROOT_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"insecure"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"MYSQL_DATABASE"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"photoprism"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"MYSQL_USER"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"photoprism"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"MYSQL_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"insecure"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-0d1cbf{color:#79C0FF}.ct-67dd99{color:#8B949E}.ct-d2fbc5{color:#A5D6FF}.ct-fafdca{color:#C9D1D9}.ct-f5da4b{color:#7EE787}.light .ct-f5da4b{color:#268BD2}.light .ct-fafdca{color:#657B83}.light .ct-d2fbc5{color:#2AA198}.light .ct-67dd99{color:#93A1A1}.light .ct-0d1cbf{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"docker-compose-file-to-run-it","depth":2,"text":"Docker compose file to run it"}]}},"_type":"markdown","_id":"content:Linux:Google photos alternative with Photoprism.md","_source":"content","_file":"Linux/Google photos alternative with Photoprism.md","_extension":"md"},{"_path":"/linux/resume-or-start-screen-session","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Resume Or Start Screen Session","description":"Running this script will enter currently running screen session or will start new one.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Running this script will enter currently running "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"screen"}]},{"type":"text","value":" session or will start new one."}]},{"type":"element","tag":"code","props":{"code":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Running this script will enter currently running "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"screen"}]},{"type":"text","value":" session or will start new one."}]},{"type":"element","tag":"code","props":{"code":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7286cb"},"children":[{"type":"text","value":"( screen -r bash "}]},{"type":"element","tag":"span","props":{"class":"ct-fa5ecd"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-7286cb"},"children":[{"type":"text","value":" ( screen -d bash "}]},{"type":"element","tag":"span","props":{"class":"ct-fa5ecd"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-7286cb"},"children":[{"type":"text","value":" screen -r bash "}]},{"type":"element","tag":"span","props":{"class":"ct-fa5ecd"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-7286cb"},"children":[{"type":"text","value":" screen -SAm bash bash ) )"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-fa5ecd{color:#FF7B72}.ct-7286cb{color:#C9D1D9}.light .ct-7286cb{color:#657B83}.light .ct-fa5ecd{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Linux:Resume or start screen session.md","_source":"content","_file":"Linux/Resume or start screen session.md","_extension":"md"},{"_path":"/linux/rsync-file-with-ssh","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Rsync File With SSH","description":"Downloads file from #SSH with rsync and puts it in current folder.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Downloads file from #SSH with rsync and puts it in current folder."}]},{"type":"element","tag":"code","props":{"code":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Downloads file from #SSH with rsync and puts it in current folder."}]},{"type":"element","tag":"code","props":{"code":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-06e70b"},"children":[{"type":"text","value":"#!/bin/bash"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"PORT=22"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"USER=user"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"HOST=example.com"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"REMOTE_PATH=/tmp"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"REMOTE_FILE=sample.text"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"DEST_PATH=./"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"rsync -a -e "}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\"ssh -p "}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"PORT"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":" -P -v \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"USER"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"@"}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"HOST"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"REMOTE_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"REMOTE_FILE"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"DEST_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-231d22{color:#C9D1D9}.ct-39f251{color:#C9D1D9}.ct-354ab7{color:#A5D6FF}.ct-d3a694{color:#C9D1D9}.ct-06e70b{color:#8B949E}.light .ct-06e70b{color:#93A1A1}.light .ct-d3a694{color:#657B83}.light .ct-354ab7{color:#2AA198}.light .ct-39f251{color:#859900}.light .ct-231d22{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Linux:Rsync file with SSH.md","_source":"content","_file":"Linux/Rsync file with SSH.md","_extension":"md"},{"_path":"/linux/setting-up-nginx","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Setting Up NGINX","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"fallback-url-for-spa-s"},"children":[{"type":"text","value":"Fallback url for SPA-s"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-up-for-uploads"},"children":[{"type":"text","value":"Set up for uploads"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"reverse-proxy-for-https"},"children":[{"type":"text","value":"Reverse proxy for https"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given config forwards "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https"}]},{"type":"text","value":" traffic to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"http"}]},{"type":"text","value":" on port "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"8080"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"https://next.vault48.org","rel":["nofollow"]},"children":[{"type":"text","value":"https://next.vault48.org"}]},{"type":"text","value":"\nwith http2 support if possible."}]},{"type":"element","tag":"code","props":{"code":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"fallback-url-for-spa-s"},"children":[{"type":"text","value":"Fallback url for SPA-s"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-25edfe"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab78ad"},"children":[{"type":"text","value":"location"}]},{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aff5a8"},"children":[{"type":"text","value":"/ "}]},{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# First attempt to serve request as file, then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# as directory, then fall back to displaying a 404."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e3a827"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-up-for-uploads"},"children":[{"type":"text","value":"Set up for uploads"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-25edfe"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" client_max_body_size "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"200M;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"reverse-proxy-for-https"},"children":[{"type":"text","value":"Reverse proxy for https"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given config forwards "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https"}]},{"type":"text","value":" traffic to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"http"}]},{"type":"text","value":" on port "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"8080"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"https://next.vault48.org","rel":["nofollow"]},"children":[{"type":"text","value":"https://next.vault48.org"}]},{"type":"text","value":"\nwith http2 support if possible."}]},{"type":"element","tag":"code","props":{"code":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-25edfe"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"80;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" server_name "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"next.vault48.org;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-01c24c"},"children":[{"type":"text","value":"301"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" https://next.vault48.org"}]},{"type":"element","tag":"span","props":{"class":"ct-25244f"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-04bc3c"},"children":[{"type":"text","value":"request_uri"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-25edfe"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"443 ssl http2;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"[::]:443 ssl http2;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# managed by Certbot"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" ssl_certificate "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/fullchain.pem; "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" ssl_certificate_key "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/privkey.pem; "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" ssl_trusted_certificate "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/chain.pem;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" server_name "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"next.vault48.org;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab78ad"},"children":[{"type":"text","value":"location"}]},{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aff5a8"},"children":[{"type":"text","value":"/ "}]},{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" proxy_redirect "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"off;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"Host "}]},{"type":"element","tag":"span","props":{"class":"ct-25244f"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-04bc3c"},"children":[{"type":"text","value":"host"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"X-Real-IP "}]},{"type":"element","tag":"span","props":{"class":"ct-25244f"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-04bc3c"},"children":[{"type":"text","value":"remote_addr"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"X-Forwarded-For "}]},{"type":"element","tag":"span","props":{"class":"ct-25244f"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-04bc3c"},"children":[{"type":"text","value":"proxy_add_x_forwarded_for"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" proxy_pass "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"http://127.0.0.1:8080;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-04bc3c{color:#C9D1D9}.ct-25244f{color:#C9D1D9}.ct-01c24c{color:#79C0FF}.ct-8d2cf3{color:#FF7B72}.ct-e3a827{color:#FF7B72}.ct-aff5a8{color:#FFA657}.ct-ab78ad{color:#FF7B72}.ct-4da7da{color:#C9D1D9}.ct-69e464{color:#8B949E}.ct-0bc476{color:#C9D1D9}.ct-25edfe{color:#FF7B72}.light .ct-25edfe{color:#073642}.light .ct-0bc476{color:#657B83}.light .ct-69e464{color:#93A1A1}.light .ct-4da7da{color:#657B83}.light .ct-ab78ad{color:#073642}.light .ct-aff5a8{color:#657B83}.light .ct-e3a827{color:#657B83}.light .ct-8d2cf3{color:#859900}.light .ct-01c24c{color:#D33682}.light .ct-25244f{color:#859900}.light .ct-04bc3c{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"fallback-url-for-spa-s","depth":2,"text":"Fallback url for SPA-s"},{"id":"set-up-for-uploads","depth":2,"text":"Set up for uploads"},{"id":"reverse-proxy-for-https","depth":2,"text":"Reverse proxy for https"}]}},"_type":"markdown","_id":"content:Linux:Setting up NGINX.md","_source":"content","_file":"Linux/Setting up NGINX.md","_extension":"md"},{"_path":"/linux/ssh","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"SSH","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"config-aliases-for-ssh-hosts"},"children":[{"type":"text","value":"Config aliases for #SSH hosts"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"#SSH config can be used to made aliases for different hosts. Should be put at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.ssh/config"}]},{"type":"text","value":". To simply call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ssh router"}]},{"type":"text","value":" without parameters, use this:"}]},{"type":"element","tag":"code","props":{"code":"Host router\n HostName 192.168.0.1\n IdentityFile ~/.ssh/id_rsa\n User root\n Port 22522\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"Host router\n HostName 192.168.0.1\n IdentityFile ~/.ssh/id_rsa\n User root\n Port 22522\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"config-aliases-for-ssh-hosts"},"children":[{"type":"text","value":"Config aliases for #SSH hosts"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"#SSH config can be used to made aliases for different hosts. Should be put at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.ssh/config"}]},{"type":"text","value":". To simply call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ssh router"}]},{"type":"text","value":" without parameters, use this:"}]},{"type":"element","tag":"code","props":{"code":"Host router\n HostName 192.168.0.1\n IdentityFile ~/.ssh/id_rsa\n User root\n Port 22522\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"Host router\n HostName 192.168.0.1\n IdentityFile ~/.ssh/id_rsa\n User root\n Port 22522"}]}]}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"config-aliases-for-ssh-hosts","depth":2,"text":"Config aliases for #SSH hosts"}]}},"_type":"markdown","_id":"content:Linux:SSH.md","_source":"content","_file":"Linux/SSH.md","_extension":"md"},{"_path":"/sql/mysql-and-mariadb-setup","_dir":"sql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"MySQL And MariaDB Setup","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-mariadb-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install MariaDB on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"access-database-from-outside"},"children":[{"type":"text","value":"Access Database from outside"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/mysql/mariadb.conf.d/50-server.cnf"}]},{"type":"text","value":" and change the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"bind-address"}]},{"type":"text","value":" to:"}]},{"type":"element","tag":"code","props":{"code":"...\nbind-address = 0.0.0.0\n...\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"...\nbind-address = 0.0.0.0\n...\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"create-administrative-user"},"children":[{"type":"text","value":"Create Administrative User"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create a new user "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"newuser"}]},{"type":"text","value":" for the host "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"localhost"}]},{"type":"text","value":" with a new "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"password"}]},{"type":"text","value":":"}]}]},{"type":"element","tag":"code","props":{"code":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n"}]}]}]},{"type":"element","tag":"ol","props":{"start":2},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Grant all permissions to the new user"}]}]},{"type":"element","tag":"code","props":{"code":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n"}]}]}]},{"type":"element","tag":"ol","props":{"start":3},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Update permissions"}]}]},{"type":"element","tag":"code","props":{"code":"FLUSH PRIVILEGES;\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"FLUSH PRIVILEGES;\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-mariadb-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install MariaDB on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"sudo apt update"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"sudo apt install mariadb-server"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"sudo mysql_secure_installation"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"access-database-from-outside"},"children":[{"type":"text","value":"Access Database from outside"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/mysql/mariadb.conf.d/50-server.cnf"}]},{"type":"text","value":" and change the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"bind-address"}]},{"type":"text","value":" to:"}]},{"type":"element","tag":"code","props":{"code":"...\nbind-address = 0.0.0.0\n...\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"bind-"}]},{"type":"element","tag":"span","props":{"class":"ct-bde705"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":" = 0.0.0.0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"..."}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"create-administrative-user"},"children":[{"type":"text","value":"Create Administrative User"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create a new user "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"newuser"}]},{"type":"text","value":" for the host "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"localhost"}]},{"type":"text","value":" with a new "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"password"}]},{"type":"text","value":":"}]}]},{"type":"element","tag":"code","props":{"code":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';"}]}]}]}]}]},{"type":"element","tag":"ol","props":{"start":2},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Grant all permissions to the new user"}]}]},{"type":"element","tag":"code","props":{"code":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';"}]}]}]}]}]},{"type":"element","tag":"ol","props":{"start":3},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Update permissions"}]}]},{"type":"element","tag":"code","props":{"code":"FLUSH PRIVILEGES;\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"FLUSH PRIVILEGES;"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-bde705{color:#FF7B72}.ct-c8084e{color:#C9D1D9}.light .ct-c8084e{color:#657B83}.light .ct-bde705{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"install-mariadb-on-ubuntu-2004-lts","depth":2,"text":"Install MariaDB on Ubuntu 20.04 LTS"},{"id":"access-database-from-outside","depth":2,"text":"Access Database from outside"},{"id":"create-administrative-user","depth":2,"text":"Create Administrative User"}]}},"_type":"markdown","_id":"content:SQL:MySQL and MariaDB setup.md","_source":"content","_file":"SQL/MySQL and MariaDB setup.md","_extension":"md"},{"_path":"/sql/postgress-setup","_dir":"sql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Postgress Setup","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-postgresql-12-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"initial-database-connection"},"children":[{"type":"text","value":"Initial database connection"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A local connection (from the database server) can be done by the following command:"}]},{"type":"element","tag":"code","props":{"code":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-password-for-postgres-database-user"},"children":[{"type":"text","value":"Set password for postgres database user"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The password for the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user can be set the the quick command "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"\\password"}]},{"type":"text","value":"\nor by "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"alter user postgres password 'Supersecret'"}]},{"type":"text","value":". A connection using the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" user\nis still not possible from the \"outside\" hence to the default settings in the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password"},"children":[{"type":"text","value":"Update pg_hba.conf to allow postgres user connections with password"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In order to allow connections of the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user not using OS user\nauthentication, you have to update the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":" which can be found under\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/postgresql/12/main/pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change the last section of the above line to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"md5"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"local all postgres md5\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"local all postgres md5\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A restart is required in order to apply the new configuration:"}]},{"type":"element","tag":"code","props":{"code":"sudo systemctl restart postgresql\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo systemctl restart postgresql\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now a connection from outside the database host is possible e.g."}]},{"type":"element","tag":"code","props":{"code":"psql -U postgres -d postgres -h databasehostname\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"psql -U postgres -d postgres -h databasehostname\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-database-users"},"children":[{"type":"text","value":"Creation of additional database users"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A database user can be created by the following command:"}]},{"type":"element","tag":"code","props":{"code":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-databases"},"children":[{"type":"text","value":"Creation of additional databases"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One can create new Postgres databases within an instance. Therefore you can use the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"psql"}]},{"type":"text","value":"\ncommand to login (see above)."}]},{"type":"element","tag":"code","props":{"code":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can leave the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"OWNER"}]},{"type":"text","value":" section of the command, when doing so, the current user will become\nowner of the newly created database."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To change the owner of an existing database later, you can use the following command:"}]},{"type":"element","tag":"code","props":{"code":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-postgresql-12-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo apt update"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo apt install -y postgresql postgresql-contrib postgresql-client"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo systemctl status postgresql.service"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"initial-database-connection"},"children":[{"type":"text","value":"Initial database connection"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A local connection (from the database server) can be done by the following command:"}]},{"type":"element","tag":"code","props":{"code":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo -u postgres psql"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"Type "}]},{"type":"element","tag":"span","props":{"class":"ct-ccb54b"},"children":[{"type":"text","value":"\"help\""}]},{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6a5d2b"},"children":[{"type":"text","value":"for"}]},{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":" help."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"postgres="}]},{"type":"element","tag":"span","props":{"class":"ct-158649"},"children":[{"type":"text","value":"#"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-password-for-postgres-database-user"},"children":[{"type":"text","value":"Set password for postgres database user"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The password for the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user can be set the the quick command "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"\\password"}]},{"type":"text","value":"\nor by "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"alter user postgres password 'Supersecret'"}]},{"type":"text","value":". A connection using the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" user\nis still not possible from the \"outside\" hence to the default settings in the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password"},"children":[{"type":"text","value":"Update pg_hba.conf to allow postgres user connections with password"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In order to allow connections of the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user not using OS user\nauthentication, you have to update the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":" which can be found under\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/postgresql/12/main/pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo vi /etc/postgresql/12/main/pg_hba.conf"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-614fd0"},"children":[{"type":"text","value":"local"}]},{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":" all postgres peer"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"..."}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change the last section of the above line to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"md5"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"local all postgres md5\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"local all postgres md5"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A restart is required in order to apply the new configuration:"}]},{"type":"element","tag":"code","props":{"code":"sudo systemctl restart postgresql\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo systemctl restart postgresql"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now a connection from outside the database host is possible e.g."}]},{"type":"element","tag":"code","props":{"code":"psql -U postgres -d postgres -h databasehostname\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"psql -U postgres -d postgres -h databasehostname"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-database-users"},"children":[{"type":"text","value":"Creation of additional database users"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A database user can be created by the following command:"}]},{"type":"element","tag":"code","props":{"code":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-databases"},"children":[{"type":"text","value":"Creation of additional databases"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One can create new Postgres databases within an instance. Therefore you can use the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"psql"}]},{"type":"text","value":"\ncommand to login (see above)."}]},{"type":"element","tag":"code","props":{"code":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can leave the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"OWNER"}]},{"type":"text","value":" section of the command, when doing so, the current user will become\nowner of the newly created database."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To change the owner of an existing database later, you can use the following command:"}]},{"type":"element","tag":"code","props":{"code":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-614fd0{color:#FF7B72}.ct-158649{color:#8B949E}.ct-6a5d2b{color:#FF7B72}.ct-ccb54b{color:#A5D6FF}.ct-2afb88{color:#C9D1D9}.light .ct-2afb88{color:#657B83}.light .ct-ccb54b{color:#2AA198}.light .ct-6a5d2b{color:#859900}.light .ct-158649{color:#93A1A1}.light .ct-614fd0{color:#073642}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"install-postgresql-12-on-ubuntu-2004-lts","depth":2,"text":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"},{"id":"initial-database-connection","depth":2,"text":"Initial database connection"},{"id":"set-password-for-postgres-database-user","depth":2,"text":"Set password for postgres database user","children":[{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password","depth":3,"text":"Update pg_hba.conf to allow postgres user connections with password"}]},{"id":"creation-of-additional-database-users","depth":2,"text":"Creation of additional database users"},{"id":"creation-of-additional-databases","depth":2,"text":"Creation of additional databases"}]}},"_type":"markdown","_id":"content:SQL:Postgress setup.md","_source":"content","_file":"SQL/Postgress setup.md","_extension":"md"},{"_path":"/typescript/add-global-variable-to-window","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Add Global Variable To Window","description":"Sometimes you want to add global variable to your window. That thing's called global module augmentation.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you want to add global variable to your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":". That thing's called "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"global module augmentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say you need to call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.doFancyThings()"}]},{"type":"text","value":". For that you should augment global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":" interface in "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"*.d.ts"}]},{"type":"text","value":" file:"}]},{"type":"element","tag":"code","props":{"code":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is useful for declaring global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.ethereum"}]},{"type":"text","value":" (or "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.web3"}]},{"type":"text","value":") in "},{"type":"element","tag":"a","props":{"href":"/blockchain/Common%20typescript%20examples"},"children":[{"type":"text","value":"blockchain"}]},{"type":"text","value":" projects with typescript, which use wallet browser extensions."}]},{"type":"element","tag":"h2","props":{"id":"augmenting-existing-interface"},"children":[{"type":"text","value":"Augmenting existing interface"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you have class "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Sample"}]},{"type":"text","value":" without any functionality:"}]},{"type":"element","tag":"code","props":{"code":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then you want extend it with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"doFancyThings()"}]},{"type":"text","value":" method. That can be achieved with said "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"module augmentation"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now you can call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"sample.doFancyThings()"}]},{"type":"text","value":" by importing both "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".ts"}]},{"type":"text","value":" files:"}]},{"type":"element","tag":"code","props":{"code":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This example is useful for "},{"type":"element","tag":"a","props":{"href":"./Frontend/Vue/Adding%20global%20properties%20to%20component"},"children":[{"type":"text","value":"adding global properties to component"}]},{"type":"text","value":" in vue.js."}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you want to add global variable to your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":". That thing's called "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"global module augmentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say you need to call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.doFancyThings()"}]},{"type":"text","value":". For that you should augment global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":" interface in "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"*.d.ts"}]},{"type":"text","value":" file:"}]},{"type":"element","tag":"code","props":{"code":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6d07e8"},"children":[{"type":"text","value":"global"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-683640"},"children":[{"type":"text","value":"Window"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6e853e"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b1b3e1"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is useful for declaring global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.ethereum"}]},{"type":"text","value":" (or "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.web3"}]},{"type":"text","value":") in "},{"type":"element","tag":"a","props":{"href":"/blockchain/Common%20typescript%20examples"},"children":[{"type":"text","value":"blockchain"}]},{"type":"text","value":" projects with typescript, which use wallet browser extensions."}]},{"type":"element","tag":"h2","props":{"id":"augmenting-existing-interface"},"children":[{"type":"text","value":"Augmenting existing interface"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you have class "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Sample"}]},{"type":"text","value":" without any functionality:"}]},{"type":"element","tag":"code","props":{"code":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a7eca"},"children":[{"type":"text","value":"// Sample.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"class"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-683640"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a7eca"},"children":[{"type":"text","value":"// nothing :-)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then you want extend it with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"doFancyThings()"}]},{"type":"text","value":" method. That can be achieved with said "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"module augmentation"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a7eca"},"children":[{"type":"text","value":"// fancyThings.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-6d07e8"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ac84f7"},"children":[{"type":"text","value":"\"./Sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"module"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ac84f7"},"children":[{"type":"text","value":"\"./Sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-683640"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6e853e"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b1b3e1"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now you can call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"sample.doFancyThings()"}]},{"type":"text","value":" by importing both "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".ts"}]},{"type":"text","value":" files:"}]},{"type":"element","tag":"code","props":{"code":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-6d07e8"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ac84f7"},"children":[{"type":"text","value":"\"./sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ac84f7"},"children":[{"type":"text","value":"\"./fancyThings\""}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bd47e1"},"children":[{"type":"text","value":"sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6e853e"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6d07e8"},"children":[{"type":"text","value":"sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-6e853e"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"(); "}]},{"type":"element","tag":"span","props":{"class":"ct-8a7eca"},"children":[{"type":"text","value":"// ok"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This example is useful for "},{"type":"element","tag":"a","props":{"href":"./Frontend/Vue/Adding%20global%20properties%20to%20component"},"children":[{"type":"text","value":"adding global properties to component"}]},{"type":"text","value":" in vue.js."}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-bd47e1{color:#79C0FF}.ct-ac84f7{color:#A5D6FF}.ct-8a7eca{color:#8B949E}.ct-b1b3e1{color:#79C0FF}.ct-035a60{color:#FF7B72}.ct-6e853e{color:#D2A8FF}.ct-683640{color:#FFA657}.ct-6d07e8{color:#C9D1D9}.ct-284857{color:#C9D1D9}.ct-1eca3e{color:#FF7B72}.light .ct-1eca3e{color:#073642}.light .ct-284857{color:#657B83}.light .ct-6d07e8{color:#268BD2}.light .ct-683640{color:#268BD2}.light .ct-6e853e{color:#268BD2}.light .ct-035a60{color:#859900}.light .ct-b1b3e1{color:#859900}.light .ct-8a7eca{color:#93A1A1}.light .ct-ac84f7{color:#2AA198}.light .ct-bd47e1{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"augmenting-existing-interface","depth":2,"text":"Augmenting existing interface"}]}},"_type":"markdown","_id":"content:Typescript:Add global variable to window.md","_source":"content","_file":"Typescript/Add global variable to window.md","_extension":"md"},{"_path":"/typescript/flatten-object-with-periods","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Flatten Object With Periods","description":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Used for typing "},{"type":"element","tag":"a","props":{"href":"https://www.npmjs.com/package/i18n-js","rel":["nofollow"]},"children":[{"type":"text","value":"i18n.js"}]},{"type":"text","value":" dictionaries;"}]},{"type":"element","tag":"code","props":{"code":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flatten type defined here:"}]},{"type":"element","tag":"code","props":{"code":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Used for typing "},{"type":"element","tag":"a","props":{"href":"https://www.npmjs.com/package/i18n-js","rel":["nofollow"]},"children":[{"type":"text","value":"i18n.js"}]},{"type":"text","value":" dictionaries;"}]},{"type":"element","tag":"code","props":{"code":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-17f2f0"},"children":[{"type":"text","value":"en"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"'./en.json'"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"TranslationPath"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"typeof"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-17f2f0"},"children":[{"type":"text","value":"en"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":">;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4c8dc"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9106a4"},"children":[{"type":"text","value":"t"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eb2458"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-f472b9"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-eb2458"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-db1e37"},"children":[{"type":"text","value":"TranslationPath"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-f472b9"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-eb2458"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-db1e37"},"children":[{"type":"text","value":"TranslateOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-c4c8dc"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-17f2f0"},"children":[{"type":"text","value":"I18nLib"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-827a3b"},"children":[{"type":"text","value":"t"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-17f2f0"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-17f2f0"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flatten type defined here:"}]},{"type":"element","tag":"code","props":{"code":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113d4c"},"children":[{"type":"text","value":"// This one based on answer from StackOverflow:"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113d4c"},"children":[{"type":"text","value":"// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"] "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"never"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"PluralForm"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-113d4c"},"children":[{"type":"text","value":"// plural object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"''"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" { ["}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"in"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"keyof"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"]"}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"-?:"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Join"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"], "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Prev"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"]>> }["}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"keyof"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113d4c"},"children":[{"type":"text","value":"// Fix it for you plural form"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"PluralForm"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Record"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"'one'"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"'few'"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"'many'"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":">;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Join"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"number"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"number"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"}${''"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"'.'}${"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"}`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"never"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Prev"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"3"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"4"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":">];"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-4fd83d{color:#A5D6FF}.ct-47e9f7{color:#79C0FF}.ct-8a1f02{color:#79C0FF}.ct-113d4c{color:#8B949E}.ct-827a3b{color:#D2A8FF}.ct-db1e37{color:#FFA657}.ct-f472b9{color:#FFA657}.ct-eb2458{color:#FF7B72}.ct-9106a4{color:#D2A8FF}.ct-07eddd{color:#C9D1D9}.ct-c4c8dc{color:#FF7B72}.ct-37d3c5{color:#FFA657}.ct-da5227{color:#FF7B72}.ct-1fbe6c{color:#A5D6FF}.ct-17f2f0{color:#C9D1D9}.ct-5edddd{color:#C9D1D9}.ct-55b392{color:#FF7B72}.light .ct-55b392{color:#859900}.light .ct-5edddd{color:#657B83}.light .ct-17f2f0{color:#268BD2}.light .ct-1fbe6c{color:#2AA198}.light .ct-da5227{color:#073642}.light .ct-37d3c5{color:#268BD2}.light .ct-c4c8dc{color:#073642}.light .ct-07eddd{color:#657B83}.light .ct-9106a4{color:#268BD2}.light .ct-eb2458{color:#859900}.light .ct-f472b9{color:#657B83}.light .ct-db1e37{color:#268BD2}.light .ct-827a3b{color:#268BD2}.light .ct-113d4c{color:#93A1A1}.light .ct-8a1f02{color:#859900}.light .ct-47e9f7{color:#D33682}.light .ct-4fd83d{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Typescript:Flatten object with periods.md","_source":"content","_file":"Typescript/Flatten object with periods.md","_extension":"md"},{"_path":"/typescript/type-guards","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Type Guards","description":"Useful for type checking at compile and run time:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for type checking at compile and run time:"}]},{"type":"element","tag":"code","props":{"code":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage:"}]},{"type":"element","tag":"code","props":{"code":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for type checking at compile and run time:"}]},{"type":"element","tag":"code","props":{"code":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3e88fe"},"children":[{"type":"text","value":"function"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96a544"},"children":[{"type":"text","value":"isFish"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-f31f3b"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-96df25"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-851fa7"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96df25"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-851fa7"},"children":[{"type":"text","value":"Bird"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-96df25"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f31f3b"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96df25"},"children":[{"type":"text","value":"is"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-851fa7"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-50f970"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"as"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d7879"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-50f970"},"children":[{"type":"text","value":"swim"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"!=="}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af6a"},"children":[{"type":"text","value":"undefined"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage:"}]},{"type":"element","tag":"code","props":{"code":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-01bcf2"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3fd1a6"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c215b1"},"children":[{"type":"text","value":"getSmallPet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c215b1"},"children":[{"type":"text","value":"isFish"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-50f970"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-50f970"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c215b1"},"children":[{"type":"text","value":"swim"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-50f970"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c215b1"},"children":[{"type":"text","value":"fly"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-c215b1{color:#D2A8FF}.ct-3fd1a6{color:#79C0FF}.ct-01bcf2{color:#FF7B72}.ct-38af6a{color:#79C0FF}.ct-0d7879{color:#FFA657}.ct-50f970{color:#C9D1D9}.ct-dfad5f{color:#FF7B72}.ct-f91a65{color:#C9D1D9}.ct-851fa7{color:#FFA657}.ct-96df25{color:#FF7B72}.ct-f31f3b{color:#FFA657}.ct-96a544{color:#D2A8FF}.ct-f1d349{color:#C9D1D9}.ct-3e88fe{color:#FF7B72}.light .ct-3e88fe{color:#073642}.light .ct-f1d349{color:#657B83}.light .ct-96a544{color:#268BD2}.light .ct-f31f3b{color:#657B83}.light .ct-96df25{color:#859900}.light .ct-851fa7{color:#268BD2}.light .ct-f91a65{color:#657B83}.light .ct-dfad5f{color:#859900}.light .ct-50f970{color:#268BD2}.light .ct-0d7879{color:#268BD2}.light .ct-38af6a{color:#B58900}.light .ct-01bcf2{color:#073642}.light .ct-3fd1a6{color:#268BD2}.light .ct-c215b1{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Typescript:Type guards.md","_source":"content","_file":"Typescript/Type guards.md","_extension":"md"}],"navigation":[{"title":"Blockchain","_path":"/blockchain","children":[{"title":"Common Typescript Examples","_path":"/blockchain/common-typescript-examples"},{"title":"Smart Contracts","_path":"/blockchain/smart-contracts"}]},{"title":"Css","_path":"/css","children":[{"title":"Automatic Grid Like Masonry With Pure CSS","_path":"/css/automatic-grid-like-masonry-with-pure-css"},{"title":"Sass Nth Child Iterate Mixin","_path":"/css/sass-nth-child-iterate-mixin"},{"title":"Test If Browser Supports CSS Rules","_path":"/css/test-if-browser-supports-css-rules"}]},{"title":"Docker","_path":"/docker","children":[{"title":"Building Static Pages With Docker","_path":"/docker/building-static-pages-with-docker"},{"title":"Drone Ci","_path":"/docker/drone-ci"},{"title":"Github Pages With Drone Ci","_path":"/docker/github-pages-with-drone-ci"},{"title":"Private Docker Registry","_path":"/docker/private-docker-registry"},{"title":"Refresh Containers On Pull","_path":"/docker/refresh-containers-on-pull"},{"title":"Seed Dump Inside Docker","_path":"/docker/seed-dump-inside-docker"},{"title":"Wait For Mysql","_path":"/docker/wait-for-mysql"},{"title":"Wait For Redis","_path":"/docker/wait-for-redis"}]},{"title":"Frontend","_path":"/frontend","children":[{"title":"React Native","_path":"/frontend/react-native","children":[{"title":"OAuth2 Login","_path":"/frontend/react-native/oauth2-login"},{"title":"Preserve FlatList Scroll Position In React Native","_path":"/frontend/react-native/preserve-flatlist-scroll-position-in-react-native"},{"title":"Useful Comands","_path":"/frontend/react-native/useful-comands"}]},{"title":"React","_path":"/frontend/react","children":[{"title":"Axios Refresh Token On React","_path":"/frontend/react/axios-refresh-token-on-react"},{"title":"Axios With AbortController","_path":"/frontend/react/axios-with-abortcontroller"}]},{"title":"Vue","_path":"/frontend/vue","children":[{"title":"Adding Global Properties To Component","_path":"/frontend/vue/adding-global-properties-to-component"},{"title":"Make Nuxt Handle Obsidian Highlights","_path":"/frontend/vue/make-nuxt-handle-obsidian-highlights"}]}]},{"title":"Git","_path":"/git","children":[{"title":"Force Git To Use HTTPS","_path":"/git/force-git-to-use-https"},{"title":"Git Aliases And Useful Commands","_path":"/git/git-aliases-and-useful-commands"}]},{"title":"Graphql","_path":"/graphql","children":[{"title":"Apollo Client Pagination","_path":"/graphql/apollo-client-pagination"},{"title":"Refresh Token In Apollo Client","_path":"/graphql/refresh-token-in-apollo-client"}]},{"title":"Linux","_path":"/linux","children":[{"title":"Gitea For Git Hosting","_path":"/linux/gitea-for-git-hosting"},{"title":"Google Photos Alternative With Photoprism","_path":"/linux/google-photos-alternative-with-photoprism"},{"title":"Resume Or Start Screen Session","_path":"/linux/resume-or-start-screen-session"},{"title":"Rsync File With SSH","_path":"/linux/rsync-file-with-ssh"},{"title":"Setting Up NGINX","_path":"/linux/setting-up-nginx"},{"title":"SSH","_path":"/linux/ssh"}]},{"title":"Sql","_path":"/sql","children":[{"title":"MySQL And MariaDB Setup","_path":"/sql/mysql-and-mariadb-setup"},{"title":"Postgress Setup","_path":"/sql/postgress-setup"}]},{"title":"Typescript","_path":"/typescript","children":[{"title":"Add Global Variable To Window","_path":"/typescript/add-global-variable-to-window"},{"title":"Flatten Object With Periods","_path":"/typescript/flatten-object-with-periods"},{"title":"Type Guards","_path":"/typescript/type-guards"}]}]} \ No newline at end of file +{"generatedAt":1667480031384,"generateTime":80,"contents":[{"_path":"/blockchain/common-typescript-examples","_dir":"blockchain","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Common Typescript Examples","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple #dapp example for tests: "},{"type":"element","tag":"a","props":{"href":"https://metamask.github.io/test-dapp/","rel":["nofollow"]},"children":[{"type":"text","value":"https://metamask.github.io/test-dapp/"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interaction with smart contracts described in "},{"type":"element","tag":"a","props":{"href":"Smart%20contracts"},"children":[{"type":"text","value":"Smart contracts"}]}]}]},{"type":"element","tag":"h2","props":{"id":"connecting-to-node"},"children":[{"type":"text","value":"Connecting to node"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If #Metamask extension installed, "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Web3.givenProvider"}]},{"type":"text","value":" is available in global window. You can use "},{"type":"element","tag":"a","props":{"href":"https://infura.io","rel":["nofollow"]},"children":[{"type":"text","value":"Infura"}]},{"type":"text","value":" or your node instead:"}]},{"type":"element","tag":"code","props":{"code":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-balance"},"children":[{"type":"text","value":"Getting wallet balance"}]},{"type":"element","tag":"code","props":{"code":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-address"},"children":[{"type":"text","value":"Getting wallet address"}]},{"type":"element","tag":"code","props":{"code":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"sending-transaction"},"children":[{"type":"text","value":"Sending transaction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sending "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"value"}]},{"type":"text","value":" tokens with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"memo"}]},{"type":"text","value":" as value:"}]},{"type":"element","tag":"code","props":{"code":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"estimating-transaction-fee"},"children":[{"type":"text","value":"Estimating transaction FEE"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful to get fixed amount of tokens from user with pre-estimated fee."}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-wallet-address-change"},"children":[{"type":"text","value":"Subscribing to wallet address change"}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"watching-network-change"},"children":[{"type":"text","value":"Watching network change"}]},{"type":"element","tag":"code","props":{"code":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"adding-custom-token-to-wallet"},"children":[{"type":"text","value":"Adding custom token to wallet"}]},{"type":"element","tag":"code","props":{"code":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"changing-network-to-custom"},"children":[{"type":"text","value":"Changing network to custom"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Checking current chainId:"}]},{"type":"element","tag":"code","props":{"code":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Asking wallet to change current network:"}]},{"type":"element","tag":"code","props":{"code":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple #dapp example for tests: "},{"type":"element","tag":"a","props":{"href":"https://metamask.github.io/test-dapp/","rel":["nofollow"]},"children":[{"type":"text","value":"https://metamask.github.io/test-dapp/"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interaction with smart contracts described in "},{"type":"element","tag":"a","props":{"href":"Smart%20contracts"},"children":[{"type":"text","value":"Smart contracts"}]}]}]},{"type":"element","tag":"h2","props":{"id":"connecting-to-node"},"children":[{"type":"text","value":"Connecting to node"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If #Metamask extension installed, "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Web3.givenProvider"}]},{"type":"text","value":" is available in global window. You can use "},{"type":"element","tag":"a","props":{"href":"https://infura.io","rel":["nofollow"]},"children":[{"type":"text","value":"Infura"}]},{"type":"text","value":" or your node instead:"}]},{"type":"element","tag":"code","props":{"code":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'web3'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// URL of your node"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'https://...'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"givenProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-balance"},"children":[{"type":"text","value":"Getting wallet balance"}]},{"type":"element","tag":"code","props":{"code":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4f206d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-63eb51"},"children":[{"type":"text","value":"getBalance"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e57fac"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f206d"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-194e55"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-e57fac"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d54e3e"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-4f206d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getBalance"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-address"},"children":[{"type":"text","value":"Getting wallet address"}]},{"type":"element","tag":"code","props":{"code":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// first we need to authorize"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'eth_requestAccounts'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// then we can get wallet address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getCurrentAddressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"selectedAddress"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"sending-transaction"},"children":[{"type":"text","value":"Sending transaction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sending "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"value"}]},{"type":"text","value":" tokens with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"memo"}]},{"type":"text","value":" as value:"}]},{"type":"element","tag":"code","props":{"code":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"transfer"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ({ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"nonce"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getTransactionCount"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"rawTx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" value: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toWei"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'ether'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":")),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" gasLimit: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" gasPrice: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" nonce: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"nonce"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"privateKeyBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"EthUtil"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"Transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"rawTx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"sign"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"privateKeyBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"serializedTx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"serialize"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"this"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"sendSignedTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"`0x${"}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"serializedTx"}]},{"type":"element","tag":"span","props":{"class":"ct-f4b88e"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-f4b88e"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'hex'"}]},{"type":"element","tag":"span","props":{"class":"ct-f4b88e"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"}`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"estimating-transaction-fee"},"children":[{"type":"text","value":"Estimating transaction FEE"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful to get fixed amount of tokens from user with pre-estimated fee."}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"estimateFee"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"estimateGas"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" value: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toWei"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'ether'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":")),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"asciiToHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" })."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"fromWei"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-60c772"},"children":[{"type":"text","value":"BigInt"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"())"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"multiply"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-60c772"},"children":[{"type":"text","value":"BigInt"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"()))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-wallet-address-change"},"children":[{"type":"text","value":"Subscribing to wallet address change"}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'accountsChanged'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"callback"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"watching-network-change"},"children":[{"type":"text","value":"Watching network change"}]},{"type":"element","tag":"code","props":{"code":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'chainChanged'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"handler"}]},{"type":"element","tag":"span","props":{"class":"ct-ee59bc"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"adding-custom-token-to-wallet"},"children":[{"type":"text","value":"Adding custom token to wallet"}]},{"type":"element","tag":"code","props":{"code":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"ethereum"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'wallet_watchAsset'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" params: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" type: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'ERC20'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" options: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" address: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'0xb60e8dd61c5d32be8058bb8eb970870f07233155'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" symbol: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'FOO'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" decimals: "}]},{"type":"element","tag":"span","props":{"class":"ct-bc9ce6"},"children":[{"type":"text","value":"18"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" image: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'https://foo.io/token-image.svg'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-63eb51"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-194e55"},"children":[{"type":"text","value":"success"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-4f206d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"success"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'FOO successfully added to wallet!'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-60c772"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'Something went wrong.'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"changing-network-to-custom"},"children":[{"type":"text","value":"Changing network to custom"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Checking current chainId:"}]},{"type":"element","tag":"code","props":{"code":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getChainID"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'eth_chainId'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Asking wallet to change current network:"}]},{"type":"element","tag":"code","props":{"code":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'wallet_switchEthereumChain'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" params: [{ chainId: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'0x03'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }], "}]},{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// ropsten chainID (3) in hex"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"switchError"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// This error code indicates that the chain has not been added to MetaMask."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"code"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc9ce6"},"children":[{"type":"text","value":"4902"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'wallet_addEthereumChain'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" params: [{ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" chainId: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'0x03'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// ropsten chainID (3) in hex"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" chainName: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'Ropsten Test Network'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" nativeCurrency: { "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" name: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'ETH'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" symbol: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'ETH'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" decimals: "}]},{"type":"element","tag":"span","props":{"class":"ct-bc9ce6"},"children":[{"type":"text","value":"18"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }, "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" rpcUrls: ["}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"], "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" blockExplorerUrls: ["}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'https://ropsten.etherscan.io'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"] "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }] ,"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"addError"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// handle \"add\" error"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// handle other \"switch\" errors"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-bc9ce6{color:#79C0FF}.ct-ee59bc{color:#C9D1D9}.ct-60c772{color:#79C0FF}.ct-f4b88e{color:#A5D6FF}.ct-d54e3e{color:#79C0FF}.ct-194e55{color:#FFA657}.ct-e57fac{color:#FF7B72}.ct-63eb51{color:#D2A8FF}.ct-c114df{color:#C9D1D9}.ct-4f206d{color:#FF7B72}.ct-72dc80{color:#D2A8FF}.ct-eff62d{color:#79C0FF}.ct-c4f869{color:#FF7B72}.ct-b33b32{color:#8B949E}.ct-a4c2c3{color:#A5D6FF}.ct-650166{color:#C9D1D9}.ct-11b678{color:#C9D1D9}.ct-0fbe3e{color:#FF7B72}.light .ct-0fbe3e{color:#859900}.light .ct-11b678{color:#657B83}.light .ct-650166{color:#268BD2}.light .ct-a4c2c3{color:#2AA198}.light .ct-b33b32{color:#93A1A1}.light .ct-c4f869{color:#073642}.light .ct-eff62d{color:#268BD2}.light .ct-72dc80{color:#268BD2}.light .ct-4f206d{color:#073642}.light .ct-c114df{color:#657B83}.light .ct-63eb51{color:#268BD2}.light .ct-e57fac{color:#859900}.light .ct-194e55{color:#657B83}.light .ct-d54e3e{color:#859900}.light .ct-f4b88e{color:#657B83}.light .ct-60c772{color:#859900}.light .ct-ee59bc{color:#859900}.light .ct-bc9ce6{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"connecting-to-node","depth":2,"text":"Connecting to node"},{"id":"getting-wallet-balance","depth":2,"text":"Getting wallet balance"},{"id":"getting-wallet-address","depth":2,"text":"Getting wallet address"},{"id":"sending-transaction","depth":2,"text":"Sending transaction"},{"id":"estimating-transaction-fee","depth":2,"text":"Estimating transaction FEE"},{"id":"subscribing-to-wallet-address-change","depth":2,"text":"Subscribing to wallet address change"},{"id":"watching-network-change","depth":2,"text":"Watching network change"},{"id":"adding-custom-token-to-wallet","depth":2,"text":"Adding custom token to wallet"},{"id":"changing-network-to-custom","depth":2,"text":"Changing network to custom"}]}},"_type":"markdown","_id":"content:Blockchain:Common typescript examples.md","_source":"content","_file":"Blockchain/Common typescript examples.md","_extension":"md"},{"_path":"/blockchain/smart-contracts","_dir":"blockchain","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Smart Contracts","description":"For common functions see Common typescript examples.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For common functions see "},{"type":"element","tag":"a","props":{"href":"Common%20typescript%20examples"},"children":[{"type":"text","value":"Common typescript examples"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"getting-smart-contract-instance"},"children":[{"type":"text","value":"Getting smart contract instance"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for calling smart contract methods:"}]},{"type":"element","tag":"code","props":{"code":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"executing-contract-method"},"children":[{"type":"text","value":"Executing contract method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Contract has "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"write"}]},{"type":"text","value":" methods. To get a list of methods, you can paste contract address on "},{"type":"element","tag":"a","props":{"href":"https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","rel":["nofollow"]},"children":[{"type":"text","value":"https://etherscan.io/ ETH"}]},{"type":"text","value":" or any other service."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Read"}]},{"type":"text","value":" methods doesn't require spending "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":". "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Write"}]},{"type":"text","value":" methods cost some amount of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":", hence they will be executed with confirmation from user."}]},{"type":"element","tag":"h3","props":{"id":"example-for-metamask-without-private-key"},"children":[{"type":"text","value":"Example for #Metamask without private key"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"nodejs-and-react-native-example"},"children":[{"type":"text","value":"Node.js and React Native example"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"calling-a-batch-of-contracts-methods"},"children":[{"type":"text","value":"Calling a batch of contract's methods"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Function calls batch of requests, returning array of results. For example:"}]},{"type":"element","tag":"code","props":{"code":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n"}]}]}]},{"type":"element","tag":"code","props":{"code":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-smart-contract-events"},"children":[{"type":"text","value":"Subscribing to smart contract events"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There're different ways to subscribe for contract events. For all of them you will need following variables:"}]},{"type":"element","tag":"code","props":{"code":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"by-accessing-contractevents"},"children":[{"type":"text","value":"By accessing contract.events"}]},{"type":"element","tag":"code","props":{"code":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"with-filtering"},"children":[{"type":"text","value":"With filtering"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We're listening to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" event here:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"common-subscribe-method"},"children":[{"type":"text","value":"Common Subscribe method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Filtering options can also be specified:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"getting-event-history"},"children":[{"type":"text","value":"Getting event history"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Getting history for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" events for specific values. More info can be found "},{"type":"element","tag":"a","props":{"href":"https://web3js.readthedocs.io/en/v1.2.11/web3-eth-subscribe.html#","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]}]},{"type":"element","tag":"code","props":{"code":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For common functions see "},{"type":"element","tag":"a","props":{"href":"Common%20typescript%20examples"},"children":[{"type":"text","value":"Common typescript examples"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"getting-smart-contract-instance"},"children":[{"type":"text","value":"Getting smart contract instance"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for calling smart contract methods:"}]},{"type":"element","tag":"code","props":{"code":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'web3-eth-contract'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d7a62"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"abi"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"object"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1ed0c7"},"children":[{"type":"text","value":"abiFromJson"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561f21"},"children":[{"type":"text","value":"JSON"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-1ed0c7"},"children":[{"type":"text","value":"parse"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"abiFromJson"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-a644f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-a644f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"executing-contract-method"},"children":[{"type":"text","value":"Executing contract method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Contract has "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"write"}]},{"type":"text","value":" methods. To get a list of methods, you can paste contract address on "},{"type":"element","tag":"a","props":{"href":"https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","rel":["nofollow"]},"children":[{"type":"text","value":"https://etherscan.io/ ETH"}]},{"type":"text","value":" or any other service."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Read"}]},{"type":"text","value":" methods doesn't require spending "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":". "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Write"}]},{"type":"text","value":" methods cost some amount of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":", hence they will be executed with confirmation from user."}]},{"type":"element","tag":"h3","props":{"id":"example-for-metamask-without-private-key"},"children":[{"type":"text","value":"Example for #Metamask without private key"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// see example below"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// ABI of contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"/* ... */"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// address for contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"executeContractMethod"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ({}) "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// getting contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// Calling write method"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// authorizing with Metamask"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'eth_requestAccounts'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// getting wallet address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"addressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"selectedAddress"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// calling \"store\" store method for contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// payload should include `from` address, that matches"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// current user's wallet"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"store"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9a1d7b"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'Parameter'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"send"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" from: "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"addressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-612ba8"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// calling read method"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// this method can return data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"retrieve"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-612ba8"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"nodejs-and-react-native-example"},"children":[{"type":"text","value":"Node.js and React Native example"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// see example below"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// ABI контракта"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"/* ... */"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// contract address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// getting contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// account's private key"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// write-methods requires private key"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d7a62"},"children":[{"type":"text","value":"executeContractMethod"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"val"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"store"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"val"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"account"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"accounts"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"privateKeyToAccount"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" to: "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"encodeABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" gas: "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"estimateGas"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"({ from: "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"account"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" gasPrice: "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"signed"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"accounts"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"signTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"sendSignedTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"signed"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"rawTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"};"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"calling-a-batch-of-contracts-methods"},"children":[{"type":"text","value":"Calling a batch of contract's methods"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Function calls batch of requests, returning array of results. For example:"}]},{"type":"element","tag":"code","props":{"code":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"requests"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"method"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"balanceOf"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"method"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getStaked"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"call"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"code","props":{"code":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"givenProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d7a62"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"calls"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"any"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"[]) "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getWeb3NoAccount"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"BatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"promises"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"calls"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"map"}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"add"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"execute"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-612ba8"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"all"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"promises"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3659c7"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-a644f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-a644f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-smart-contract-events"},"children":[{"type":"text","value":"Subscribing to smart contract events"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There're different ways to subscribe for contract events. For all of them you will need following variables:"}]},{"type":"element","tag":"code","props":{"code":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'web3'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'YOUR_RPC_ENDPOINT_HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'YOUR ABI HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'YOUR CONTRACT ADDRESS HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"by-accessing-contractevents"},"children":[{"type":"text","value":"By accessing contract.events"}]},{"type":"element","tag":"code","props":{"code":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"referralProgramContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"events"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"RegisterUser"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-1d7a62"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-43fe40"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":", ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"subscriptionId"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"`| UserRegistered | events | ${"}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscriptionId"}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"removed"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"boolean"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"returnValues"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d5c04"},"children":[{"type":"text","value":"RegisterUserResponseInterface"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"removed"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"user"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"referrer"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"returnValues"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"user"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"referrer"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"`| ONCE | ${"}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" )"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-1d7a62"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-43fe40"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":", ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d5c04"},"children":[{"type":"text","value":"ErrnoException"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"with-filtering"},"children":[{"type":"text","value":"With filtering"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We're listening to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" event here:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" filter: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" value: [],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1d7b"},"children":[{"type":"text","value":"0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"events"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"Transfer"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'changed'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"changed"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"str"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"common-subscribe-method"},"children":[{"type":"text","value":"Common Subscribe method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Filtering options can also be specified:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1d7b"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" address: ["}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'address-1'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'address-2'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"], "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"//Only get events from specific addresses"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" topics: [] "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"//What topics to subscribe to"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'logs'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'changed'"}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"changed"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"nr"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"getting-event-history"},"children":[{"type":"text","value":"Getting event history"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Getting history for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" events for specific values. More info can be found "},{"type":"element","tag":"a","props":{"href":"https://web3js.readthedocs.io/en/v1.2.11/web3-eth-subscribe.html#","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]}]},{"type":"element","tag":"code","props":{"code":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"//example options(optional)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" filter: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// only get events where transfer value was 1000 or 1337"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" value: ["}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'1000'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'1337'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"] "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// number | \"earliest\" | \"pending\" | \"latest\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1d7b"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" toBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'latest'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getPastEvents"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'Transfer'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"results"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-4d5c04{color:#FFA657}.ct-43fe40{color:#A5D6FF}.ct-3659c7{color:#79C0FF}.ct-612ba8{color:#79C0FF}.ct-9a1d7b{color:#79C0FF}.ct-8024fd{color:#79C0FF}.ct-8b86e9{color:#FF7B72}.ct-92b574{color:#8B949E}.ct-a644f1{color:#FFA657}.ct-3eaeba{color:#D2A8FF}.ct-561f21{color:#79C0FF}.ct-1ed0c7{color:#79C0FF}.ct-f51dd2{color:#79C0FF}.ct-05b505{color:#FFA657}.ct-cc0b53{color:#FF7B72}.ct-1d7a62{color:#D2A8FF}.ct-109f96{color:#C9D1D9}.ct-3552ef{color:#FF7B72}.ct-561e74{color:#A5D6FF}.ct-dae887{color:#C9D1D9}.ct-aa3fd5{color:#C9D1D9}.ct-c38b7d{color:#FF7B72}.light .ct-c38b7d{color:#859900}.light .ct-aa3fd5{color:#657B83}.light .ct-dae887{color:#268BD2}.light .ct-561e74{color:#2AA198}.light .ct-3552ef{color:#073642}.light .ct-109f96{color:#657B83}.light .ct-1d7a62{color:#268BD2}.light .ct-cc0b53{color:#859900}.light .ct-05b505{color:#657B83}.light .ct-f51dd2{color:#859900}.light .ct-1ed0c7{color:#268BD2}.light .ct-561f21{color:#657B83}.light .ct-3eaeba{color:#268BD2}.light .ct-a644f1{color:#657B83}.light .ct-92b574{color:#93A1A1}.light .ct-8b86e9{color:#073642}.light .ct-8024fd{color:#268BD2}.light .ct-9a1d7b{color:#D33682}.light .ct-612ba8{color:#859900}.light .ct-3659c7{color:#B58900}.light .ct-43fe40{color:#2AA198}.light .ct-4d5c04{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"getting-smart-contract-instance","depth":2,"text":"Getting smart contract instance"},{"id":"executing-contract-method","depth":2,"text":"Executing contract method","children":[{"id":"example-for-metamask-without-private-key","depth":3,"text":"Example for #Metamask without private key"},{"id":"nodejs-and-react-native-example","depth":3,"text":"Node.js and React Native example"},{"id":"calling-a-batch-of-contracts-methods","depth":3,"text":"Calling a batch of contract's methods"}]},{"id":"subscribing-to-smart-contract-events","depth":2,"text":"Subscribing to smart contract events","children":[{"id":"by-accessing-contractevents","depth":3,"text":"By accessing contract.events"},{"id":"with-filtering","depth":3,"text":"With filtering"},{"id":"common-subscribe-method","depth":3,"text":"Common Subscribe method"},{"id":"getting-event-history","depth":3,"text":"Getting event history"}]}]}},"_type":"markdown","_id":"content:Blockchain:Smart contracts.md","_source":"content","_file":"Blockchain/Smart contracts.md","_extension":"md"},{"_path":"/css/automatic-grid-like-masonry-with-pure-css","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Automatic Grid Like Masonry With Pure CSS","description":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns."}]},{"type":"element","tag":"code","props":{"code":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"basic-elements-with-double-height-or-width"},"children":[{"type":"text","value":"Basic elements with double height or width"}]},{"type":"element","tag":"code","props":{"code":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"header-that-fills-all-columns"},"children":[{"type":"text","value":"Header, that fills all columns"}]},{"type":"element","tag":"code","props":{"code":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner"},"children":[{"type":"text","value":"Stamp element, that takes 3 rows in the top right corner"}]},{"type":"element","tag":"code","props":{"code":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns."}]},{"type":"element","tag":"code","props":{"code":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6fec38"},"children":[{"type":"text","value":"$cell: "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"250"}]},{"type":"element","tag":"span","props":{"class":"ct-00ac1e"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6fec38"},"children":[{"type":"text","value":"$gap: "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"20"}]},{"type":"element","tag":"span","props":{"class":"ct-00ac1e"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0beef3"},"children":[{"type":"text","value":".grid"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-278f2a"},"children":[{"type":"text","value":"display"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-139d60"},"children":[{"type":"text","value":"grid"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-278f2a"},"children":[{"type":"text","value":"grid-template-columns"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-6ed2f6"},"children":[{"type":"text","value":"repeat"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-74d4bc"},"children":[{"type":"text","value":"auto-fit"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-6ed2f6"},"children":[{"type":"text","value":"minmax"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-74d4bc"},"children":[{"type":"text","value":"$cell"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-700d8c"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-f46071"},"children":[{"type":"text","value":"fr"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":"));"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-auto-rows"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"256"}]},{"type":"element","tag":"span","props":{"class":"ct-00ac1e"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-278f2a"},"children":[{"type":"text","value":"grid-auto-flow"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-139d60"},"children":[{"type":"text","value":"row"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-139d60"},"children":[{"type":"text","value":"dense"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-278f2a"},"children":[{"type":"text","value":"grid-column-gap"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-74d4bc"},"children":[{"type":"text","value":"$gap"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-278f2a"},"children":[{"type":"text","value":"grid-row-gap"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-74d4bc"},"children":[{"type":"text","value":"$gap"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"basic-elements-with-double-height-or-width"},"children":[{"type":"text","value":"Basic elements with double height or width"}]},{"type":"element","tag":"code","props":{"code":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0beef3"},"children":[{"type":"text","value":".h-2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-a68783"},"children":[{"type":"text","value":"// takes 2 columns"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-column-end"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"span"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0beef3"},"children":[{"type":"text","value":".v-2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-a68783"},"children":[{"type":"text","value":"// takes 2 rows"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-row-end"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"span"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"header-that-fills-all-columns"},"children":[{"type":"text","value":"Header, that fills all columns"}]},{"type":"element","tag":"code","props":{"code":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0beef3"},"children":[{"type":"text","value":".full-width"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-row"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-00ac1e"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-a68783"},"children":[{"type":"text","value":"// height: 1 row"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-column"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" / "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"-1"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner"},"children":[{"type":"text","value":"Stamp element, that takes 3 rows in the top right corner"}]},{"type":"element","tag":"code","props":{"code":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0beef3"},"children":[{"type":"text","value":".top-right"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-row"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-00ac1e"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"3"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-a68783"},"children":[{"type":"text","value":"// height here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-column"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"-2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" / "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"-1"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-a68783"},"children":[{"type":"text","value":"// width here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-a68783{color:#8B949E}.ct-cc4636{color:#79C0FF}.ct-f46071{color:#FF7B72}.ct-700d8c{color:#79C0FF}.ct-74d4bc{color:#FFA657}.ct-6ed2f6{color:#79C0FF}.ct-139d60{color:#79C0FF}.ct-278f2a{color:#79C0FF}.ct-1e77ad{color:#C9D1D9}.ct-0beef3{color:#79C0FF}.ct-da7a15{color:#C9D1D9}.ct-00ac1e{color:#FF7B72}.ct-2a9e54{color:#79C0FF}.ct-6fec38{color:#FFA657}.light .ct-6fec38{color:#657B83}.light .ct-2a9e54{color:#D33682}.light .ct-00ac1e{color:#859900}.light .ct-da7a15{color:#657B83}.light .ct-0beef3{color:#93A1A1}.light .ct-1e77ad{color:#657B83}.light .ct-278f2a{color:#859900}.light .ct-139d60{color:#657B83}.light .ct-6ed2f6{color:#268BD2}.light .ct-74d4bc{color:#657B83}.light .ct-700d8c{color:#D33682}.light .ct-f46071{color:#859900}.light .ct-cc4636{color:#859900}.light .ct-a68783{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"basic-elements-with-double-height-or-width","depth":3,"text":"Basic elements with double height or width"},{"id":"header-that-fills-all-columns","depth":3,"text":"Header, that fills all columns"},{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner","depth":3,"text":"Stamp element, that takes 3 rows in the top right corner"}]}},"_type":"markdown","_id":"content:CSS:Automatic Grid like Masonry with pure CSS.md","_source":"content","_file":"CSS/Automatic Grid like Masonry with pure CSS.md","_extension":"md"},{"_path":"/css/sass-nth-child-iterate-mixin","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Sass Nth Child Iterate Mixin","description":"Say, we need to color n items by specific colors, which depend on its position. #SCSS supports iteration over lists for that purposes:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we need to color "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" items by specific colors, which depend on its position. #SCSS supports "},{"type":"element","tag":"a","props":{"href":"https://sass-lang.com/documentation/at-rules/control/each","rel":["nofollow"]},"children":[{"type":"text","value":"iteration over lists"}]},{"type":"text","value":" for that purposes:"}]},{"type":"element","tag":"code","props":{"code":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage is simple:"}]},{"type":"element","tag":"code","props":{"code":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we need to color "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" items by specific colors, which depend on its position. #SCSS supports "},{"type":"element","tag":"a","props":{"href":"https://sass-lang.com/documentation/at-rules/control/each","rel":["nofollow"]},"children":[{"type":"text","value":"iteration over lists"}]},{"type":"text","value":" for that purposes:"}]},{"type":"element","tag":"code","props":{"code":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-44ded8"},"children":[{"type":"text","value":"@mixin"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3e86e3"},"children":[{"type":"text","value":"color-per-child"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"$colors"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-44ded8"},"children":[{"type":"text","value":"@each"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"$color"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-44ded8"},"children":[{"type":"text","value":"in"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"$colors"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7ceaa8"},"children":[{"type":"text","value":"&"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2245"},"children":[{"type":"text","value":":nth-child"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"#{"}]},{"type":"element","tag":"span","props":{"class":"ct-ca9252"},"children":[{"type":"text","value":"index"}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"(($colors), ($color))}"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47277e"},"children":[{"type":"text","value":"color"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"$color"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage is simple:"}]},{"type":"element","tag":"code","props":{"code":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b0858e"},"children":[{"type":"text","value":".item"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0604d7"},"children":[{"type":"text","value":"@include"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-543fff"},"children":[{"type":"text","value":"color_per_child"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-cd960d"},"children":[{"type":"text","value":"#ded187"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-cd960d"},"children":[{"type":"text","value":"#dbde87"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-cd960d"},"children":[{"type":"text","value":"#bade87"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-cd960d"},"children":[{"type":"text","value":"#9cde87"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-cd960d"},"children":[{"type":"text","value":"#87deaa"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":"));"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-cd960d{color:#79C0FF}.ct-543fff{color:#D2A8FF}.ct-0604d7{color:#FF7B72}.ct-b0858e{color:#79C0FF}.ct-683c67{color:#C9D1D9}.ct-47277e{color:#79C0FF}.ct-ca9252{color:#79C0FF}.ct-8c2245{color:#79C0FF}.ct-7ceaa8{color:#7EE787}.ct-123e2b{color:#FFA657}.ct-3e86e3{color:#D2A8FF}.ct-b80ee6{color:#C9D1D9}.ct-44ded8{color:#FF7B72}.light .ct-44ded8{color:#859900}.light .ct-b80ee6{color:#657B83}.light .ct-3e86e3{color:#268BD2}.light .ct-123e2b{color:#657B83}.light .ct-7ceaa8{color:#268BD2}.light .ct-8c2245{color:#93A1A1}.light .ct-ca9252{color:#268BD2}.light .ct-47277e{color:#859900}.light .ct-683c67{color:#657B83}.light .ct-b0858e{color:#93A1A1}.light .ct-0604d7{color:#859900}.light .ct-543fff{color:#268BD2}.light .ct-cd960d{color:#CB4B16}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:CSS:Sass nth-child iterate mixin.md","_source":"content","_file":"CSS/Sass nth-child iterate mixin.md","_extension":"md"},{"_path":"/css/test-if-browser-supports-css-rules","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Test If Browser Supports CSS Rules","description":"To test if browser supports some #CSS rules, do following:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To test if browser supports some #CSS rules, do following:"}]},{"type":"element","tag":"code","props":{"code":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","language":"css"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"@mixin"}]},{"type":"text","value":" will only apply rule if browser support backdrop filtering:"}]},{"type":"element","tag":"code","props":{"code":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To test if browser supports some #CSS rules, do following:"}]},{"type":"element","tag":"code","props":{"code":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","language":"css"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"@supports"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-4b23d2"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-189c40"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b01425"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-670d07"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":": blur(5px);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"@mixin"}]},{"type":"text","value":" will only apply rule if browser support backdrop filtering:"}]},{"type":"element","tag":"code","props":{"code":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"@mixin"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-af03f2"},"children":[{"type":"text","value":"can_backdrop"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"@supports"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-eb53f2"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a75c6d"},"children":[{"type":"text","value":"-webkit-backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-eb53f2"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-a1a7f3"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-eb53f2"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-0906b4"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-7f4dc3"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-eb53f2"},"children":[{"type":"text","value":")) "}]},{"type":"element","tag":"span","props":{"class":"ct-f4126f"},"children":[{"type":"text","value":"or"}]},{"type":"element","tag":"span","props":{"class":"ct-eb53f2"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-4b23d2"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-189c40"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b01425"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"@content"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-f4126f{color:#79C0FF}.ct-7f4dc3{color:#FF7B72}.ct-0906b4{color:#79C0FF}.ct-a1a7f3{color:#79C0FF}.ct-a75c6d{color:#79C0FF}.ct-eb53f2{color:#C9D1D9}.ct-af03f2{color:#D2A8FF}.ct-670d07{color:#7EE787}.ct-b01425{color:#79C0FF}.ct-189c40{color:#79C0FF}.ct-4b23d2{color:#79C0FF}.ct-0e7559{color:#C9D1D9}.ct-120989{color:#FF7B72}.light .ct-120989{color:#859900}.light .ct-0e7559{color:#657B83}.light .ct-4b23d2{color:#859900}.light .ct-189c40{color:#268BD2}.light .ct-b01425{color:#D33682}.light .ct-670d07{color:#268BD2}.light .ct-af03f2{color:#268BD2}.light .ct-eb53f2{color:#657B83}.light .ct-a75c6d{color:#859900}.light .ct-a1a7f3{color:#268BD2}.light .ct-0906b4{color:#D33682}.light .ct-7f4dc3{color:#859900}.light .ct-f4126f{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:CSS:Test if browser supports CSS rules.md","_source":"content","_file":"CSS/Test if browser supports CSS rules.md","_extension":"md"},{"_path":"/docker/building-static-pages-with-docker","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Building Static Pages With Docker","description":"Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:"}]},{"type":"element","tag":"code","props":{"code":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html\n","language":"Dockerfile"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:"}]},{"type":"element","tag":"code","props":{"code":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html\n","language":"Dockerfile"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"FROM node:16-alpine as builder\nWORKDIR /app\nCOPY package.json yarn.lock ./\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder /app/dist /usr/share/nginx/html"}]}]}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Building static pages with Docker.md","_source":"content","_file":"Docker/Building static pages with Docker.md","_extension":"md"},{"_path":"/docker/drone-ci","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Drone Ci","description":"Can be used with Private docker registry to deploy things using #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" to deploy things using #docker."}]},{"type":"element","tag":"h2","props":{"id":"pushing-to-private-docker_registry"},"children":[{"type":"text","value":"Pushing to private docker_registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should specify "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_login"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_password"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_registry"}]},{"type":"text","value":" organizations variables in your "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":". And "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker_repo"}]},{"type":"text","value":" variable for your repo as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker.yourdomain.com/your-image"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is example of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".droneci"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"private docker registry"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-for-drone-ci"},"children":[{"type":"text","value":"Docker-compose file for drone-ci"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":" service is ui itself and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone-agent"}]},{"type":"text","value":" is runner for builds, that can be started on different machine (or machines)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"secret_id"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"rpc_secret"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone.url"}]},{"type":"text","value":" to something you like."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"caching-builds"},"children":[{"type":"text","value":"Caching builds"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Haven't checked that yet, but there's a "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/the-ultimate-droneci-caching-guide","rel":["nofollow"]},"children":[{"type":"text","value":"manual"}]},{"type":"text","value":" from "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/","rel":["nofollow"]},"children":[{"type":"text","value":"Laszlo Fogas"}]},{"type":"text","value":" about that."}]},{"type":"element","tag":"h2","props":{"id":"get-user-info"},"children":[{"type":"text","value":"Get user info"}]},{"type":"element","tag":"code","props":{"code":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"mark-user-as-trusted"},"children":[{"type":"text","value":"Mark user as trusted"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"drone repo update $1 --trusted=true && drone repo info $1\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"drone repo update $1 --trusted=true && drone repo info $1\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" to deploy things using #docker."}]},{"type":"element","tag":"h2","props":{"id":"pushing-to-private-docker_registry"},"children":[{"type":"text","value":"Pushing to private docker_registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should specify "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_login"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_password"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_registry"}]},{"type":"text","value":" organizations variables in your "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":". And "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker_repo"}]},{"type":"text","value":" variable for your repo as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker.yourdomain.com/your-image"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is example of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".droneci"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"private docker registry"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"kind"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"pipeline"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"platform"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"os"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"linux"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"arch"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"amd64"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"steps"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"build-master"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"plugins/docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"when"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"branch"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"master"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"settings"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"dockerfile"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"Dockerfile"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"tag"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"${DRONE_BRANCH}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"username"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"global_docker_login"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"password"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"global_docker_password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"registry"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"global_docker_registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"repo"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"docker_repo"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-for-drone-ci"},"children":[{"type":"text","value":"Docker-compose file for drone-ci"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":" service is ui itself and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone-agent"}]},{"type":"text","value":" is runner for builds, that can be started on different machine (or machines)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"secret_id"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"rpc_secret"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone.url"}]},{"type":"text","value":" to something you like."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"drone"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"drone"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"drone/drone:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_GITHUB_CLIENT_ID=secret_id"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_GITHUB_CLIENT_SECRET=client_secret"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_RPC_SECRET=rpc_secret"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_SERVER_HOST=drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_USER_CREATE=\"username:user,admin:true\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_SERVER_PROTO=https"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_TLS_AUTOCERT=false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_GIT_ALWAYS_AUTH=false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_LOGS_DEBUG=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_LOGS_TRACE=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"./data:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"8090:80"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"drone-agent"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"drone__agent"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"drone/agent:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"agent"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"/var/run/docker.sock:/var/run/docker.sock"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_RPC_SERVER=https://drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_RPC_SECRET=rpc_secret"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"caching-builds"},"children":[{"type":"text","value":"Caching builds"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Haven't checked that yet, but there's a "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/the-ultimate-droneci-caching-guide","rel":["nofollow"]},"children":[{"type":"text","value":"manual"}]},{"type":"text","value":" from "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/","rel":["nofollow"]},"children":[{"type":"text","value":"Laszlo Fogas"}]},{"type":"text","value":" about that."}]},{"type":"element","tag":"h2","props":{"id":"get-user-info"},"children":[{"type":"text","value":"Get user info"}]},{"type":"element","tag":"code","props":{"code":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f7ec05"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" DRONE_SERVER=https://drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f7ec05"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" DRONE_TOKEN=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":"drone info"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"mark-user-as-trusted"},"children":[{"type":"text","value":"Mark user as trusted"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"drone repo update $1 --trusted=true && drone repo info $1\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":"drone repo update "}]},{"type":"element","tag":"span","props":{"class":"ct-533bdf"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-be3582"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" --trusted=true "}]},{"type":"element","tag":"span","props":{"class":"ct-77901b"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" drone repo info "}]},{"type":"element","tag":"span","props":{"class":"ct-533bdf"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-be3582"},"children":[{"type":"text","value":"1"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-77901b{color:#FF7B72}.ct-be3582{color:#C9D1D9}.ct-533bdf{color:#C9D1D9}.ct-f7ec05{color:#FF7B72}.ct-17515e{color:#A5D6FF}.ct-024d63{color:#C9D1D9}.ct-0f0ad9{color:#7EE787}.light .ct-0f0ad9{color:#268BD2}.light .ct-024d63{color:#657B83}.light .ct-17515e{color:#2AA198}.light .ct-f7ec05{color:#073642}.light .ct-533bdf{color:#859900}.light .ct-be3582{color:#268BD2}.light .ct-77901b{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"pushing-to-private-docker_registry","depth":2,"text":"Pushing to private docker_registry"},{"id":"docker-compose-file-for-drone-ci","depth":2,"text":"Docker-compose file for drone-ci"},{"id":"caching-builds","depth":2,"text":"Caching builds"},{"id":"get-user-info","depth":2,"text":"Get user info"},{"id":"mark-user-as-trusted","depth":2,"text":"Mark user as trusted"}]}},"_type":"markdown","_id":"content:Docker:Drone-ci.md","_source":"content","_file":"Docker/Drone-ci.md","_extension":"md"},{"_path":"/docker/github-pages-with-drone-ci","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Github Pages With Drone Ci","description":"To deploy github pages with Drone-ci you will need .drone.yml as specified below. You also should define secrets github_username and github_token (get it here) in your drone's repository setup.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deploy github pages with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" you will need "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".drone.yml"}]},{"type":"text","value":" as specified below. You also should define secrets "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_username"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_token"}]},{"type":"text","value":" (get it "},{"type":"element","tag":"a","props":{"href":"https://github.com/settings/tokens","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":") in your drone's repository setup."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Github repository should be named as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"yourname.github.io"}]},{"type":"text","value":" and it could be accessed at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/"}]},{"type":"text","value":". Otherwise it'll be available at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/repo-name/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/repo-name/"}]},{"type":"text","value":", what you might not like."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should create branch named "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" in that repo and setup GH Pages at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https://github.com//.github.io/settings/pages"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This config will update "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins."}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here we're moving "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./.output/public"}]},{"type":"text","value":" to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./docs"}]},{"type":"text","value":", because #nuxt creates symlink for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docs"}]},{"type":"text","value":" and git can't work with that."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also we create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".nojekyll"}]},{"type":"text","value":" at the root of repo, so github's internal engine won't "},{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"ignore files that start with underscore"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"additional-reading"},"children":[{"type":"text","value":"Additional reading"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://plugins.drone.io/plugins/gh-pages","rel":["nofollow"]},"children":[{"type":"text","value":"Drone Github Pages Documentation"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"Bypassing Jekyll on GitHub Pages"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deploy github pages with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" you will need "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".drone.yml"}]},{"type":"text","value":" as specified below. You also should define secrets "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_username"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_token"}]},{"type":"text","value":" (get it "},{"type":"element","tag":"a","props":{"href":"https://github.com/settings/tokens","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":") in your drone's repository setup."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Github repository should be named as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"yourname.github.io"}]},{"type":"text","value":" and it could be accessed at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/"}]},{"type":"text","value":". Otherwise it'll be available at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/repo-name/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/repo-name/"}]},{"type":"text","value":", what you might not like."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should create branch named "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" in that repo and setup GH Pages at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https://github.com//.github.io/settings/pages"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This config will update "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins."}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"kind"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"pipeline"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"platform"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"os"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"linux"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"arch"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"amd64"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"steps"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"node:16"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"commands"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"yarn"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"yarn generate"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"rm -rf ./docs"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"mv ./.output/public ./docs"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"touch ./docs/.nojekyll"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"publish"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"plugins/gh-pages"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"settings"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"target_branch"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"gh-pages"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"username"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"github_username"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"password"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"github_token"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here we're moving "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./.output/public"}]},{"type":"text","value":" to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./docs"}]},{"type":"text","value":", because #nuxt creates symlink for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docs"}]},{"type":"text","value":" and git can't work with that."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also we create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".nojekyll"}]},{"type":"text","value":" at the root of repo, so github's internal engine won't "},{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"ignore files that start with underscore"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"additional-reading"},"children":[{"type":"text","value":"Additional reading"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://plugins.drone.io/plugins/gh-pages","rel":["nofollow"]},"children":[{"type":"text","value":"Drone Github Pages Documentation"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"Bypassing Jekyll on GitHub Pages"}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-9a1e3a{color:#A5D6FF}.ct-f503f1{color:#C9D1D9}.ct-72f2f7{color:#7EE787}.light .ct-72f2f7{color:#268BD2}.light .ct-f503f1{color:#657B83}.light .ct-9a1e3a{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"additional-reading","depth":2,"text":"Additional reading"}]}},"_type":"markdown","_id":"content:Docker:Github pages with drone-ci.md","_source":"content","_file":"Docker/Github pages with drone-ci.md","_extension":"md"},{"_path":"/docker/private-docker-registry","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Private Docker Registry","description":"Suitable to work with Drone-ci for hosting private #docker images.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suitable to work with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" for hosting private #docker images."}]},{"type":"element","tag":"h2","props":{"id":"sample-docker-compose-for-custom-docker-registry"},"children":[{"type":"text","value":"Sample docker-compose for custom docker registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This one brings up private docker registry with ui. First you'll need to generate password for it:"}]},{"type":"element","tag":"code","props":{"code":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n"}]}]}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"squash-layers-on-registry"},"children":[{"type":"text","value":"Squash layers on registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to squash all layers in docker registry to free up disk space."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Run this command to mark oldest layers"}]}]},{"type":"element","tag":"code","props":{"code":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suitable to work with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" for hosting private #docker images."}]},{"type":"element","tag":"h2","props":{"id":"sample-docker-compose-for-custom-docker-registry"},"children":[{"type":"text","value":"Sample docker-compose for custom docker registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This one brings up private docker registry with ui. First you'll need to generate password for it:"}]},{"type":"element","tag":"code","props":{"code":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":"docker run \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" --entrypoint htpasswd registry:2 \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -Bbn user mypassword "}]},{"type":"element","tag":"span","props":{"class":"ct-dee827"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" auth/registry.password"}]}]}]}]}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"registry"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"docker__registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"registry:2"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"5000:5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_AUTH=htpasswd"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_AUTH_HTPASSWD_REALM=Registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_HTTP_SECRET=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_STORAGE_DELETE_ENABLED=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"./registry/auth:/auth"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"./registry/data:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"ui"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"docker__ui"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"parabuzzle/craneoperator:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"80:80"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_HOST=registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_PORT=5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_PROTOCOL=http"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"ALLOW_REGISTRY_LOGIN=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_ALLOW_DELETE=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"USERNAME=registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"PASSWORD=password"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"squash-layers-on-registry"},"children":[{"type":"text","value":"Squash layers on registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to squash all layers in docker registry to free up disk space."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Run this command to mark oldest layers"}]}]},{"type":"element","tag":"code","props":{"code":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-07355f"},"children":[{"type":"text","value":"# Try this first"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":"docker run \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" --rm anoxis/registry-cli \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -r https://registry.url \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -l user:password \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" --delete \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" --num 2"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-07355f"},"children":[{"type":"text","value":"# Then this "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":"docker run -it \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -v /path/to/registry/data:/registry \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -e REGISTRY_URL=https://registry.url \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -e DRY_RUN="}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -e REGISTRY_AUTH="}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"\"user:password\""}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" mortensrasmussen/docker-registry-manifest-cleanup"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-07355f{color:#8B949E}.ct-70f4bc{color:#A5D6FF}.ct-cb7cf9{color:#7EE787}.ct-dee827{color:#FF7B72}.ct-aad9c7{color:#C9D1D9}.light .ct-aad9c7{color:#657B83}.light .ct-dee827{color:#859900}.light .ct-cb7cf9{color:#268BD2}.light .ct-70f4bc{color:#2AA198}.light .ct-07355f{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"sample-docker-compose-for-custom-docker-registry","depth":2,"text":"Sample docker-compose for custom docker registry"},{"id":"squash-layers-on-registry","depth":2,"text":"Squash layers on registry"}]}},"_type":"markdown","_id":"content:Docker:Private docker registry.md","_source":"content","_file":"Docker/Private docker registry.md","_extension":"md"},{"_path":"/docker/refresh-containers-on-pull","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Refresh Containers On Pull","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"setting-up-watchtower"},"children":[{"type":"text","value":"Setting up watchtower"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://containrrr.dev/watchtower/","rel":["nofollow"]},"children":[{"type":"text","value":"Watchtower"}]},{"type":"text","value":" will automatically pull updated #docker containers. Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"setting-up-watchtower"},"children":[{"type":"text","value":"Setting up watchtower"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://containrrr.dev/watchtower/","rel":["nofollow"]},"children":[{"type":"text","value":"Watchtower"}]},{"type":"text","value":" will automatically pull updated #docker containers. Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"watchtower"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"docker__watchtower"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"v2tec/watchtower"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"/var/run/docker.sock:/var/run/docker.sock"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"/home/user/.docker/config.json:/config.json"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"--interval 60 image_1 image_2"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-4ffa29{color:#A5D6FF}.ct-d995bf{color:#C9D1D9}.ct-38af48{color:#7EE787}.light .ct-38af48{color:#268BD2}.light .ct-d995bf{color:#657B83}.light .ct-4ffa29{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"setting-up-watchtower","depth":2,"text":"Setting up watchtower"}]}},"_type":"markdown","_id":"content:Docker:Refresh containers on pull.md","_source":"content","_file":"Docker/Refresh containers on pull.md","_extension":"md"},{"_path":"/docker/seed-dump-inside-docker","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Seed Dump Inside Docker","description":"If you need to seed .sql dump in #docker container, just run this command. Also you can try to rsync file with SSH to get it from remote host.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to seed "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".sql"}]},{"type":"text","value":" dump in #docker container, just run this command. Also you can try to "},{"type":"element","tag":"a","props":{"href":"/linux/Rsync%20file%20with%20SSH"},"children":[{"type":"text","value":"rsync file with SSH"}]},{"type":"text","value":" to get it from remote host."}]},{"type":"element","tag":"code","props":{"code":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to seed "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".sql"}]},{"type":"text","value":" dump in #docker container, just run this command. Also you can try to "},{"type":"element","tag":"a","props":{"href":"/linux/Rsync%20file%20with%20SSH"},"children":[{"type":"text","value":"rsync file with SSH"}]},{"type":"text","value":" to get it from remote host."}]},{"type":"element","tag":"code","props":{"code":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cec5ec"},"children":[{"type":"text","value":"#####"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cec5ec"},"children":[{"type":"text","value":"# usage: ./script.sh \"/path/to/dump.sql\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cec5ec"},"children":[{"type":"text","value":"#####"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"DUMP_PATH="}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"CONTAINER="}]},{"type":"element","tag":"span","props":{"class":"ct-464a66"},"children":[{"type":"text","value":"\"db\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"USER=root"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"PASSWORD=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"DB=database"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"cat "}]},{"type":"element","tag":"span","props":{"class":"ct-464a66"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"DUMP_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-464a66"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-912b98"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-c90fb8"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" -i "}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"CONTAINER"}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" mysql -u"}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"USER"}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" -p"}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"DB"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-c90fb8{color:#79C0FF}.ct-912b98{color:#FF7B72}.ct-464a66{color:#A5D6FF}.ct-a801ae{color:#C9D1D9}.ct-bfeec8{color:#C9D1D9}.ct-2efaf7{color:#C9D1D9}.ct-cec5ec{color:#8B949E}.light .ct-cec5ec{color:#93A1A1}.light .ct-2efaf7{color:#657B83}.light .ct-bfeec8{color:#859900}.light .ct-a801ae{color:#268BD2}.light .ct-464a66{color:#2AA198}.light .ct-912b98{color:#859900}.light .ct-c90fb8{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Seed dump inside docker.md","_source":"content","_file":"Docker/Seed dump inside docker.md","_extension":"md"},{"_path":"/docker/wait-for-mysql","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Wait For Mysql","description":"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful query from database or exits with non-zero status after timeout."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Don't forget to change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$query"}]},{"type":"text","value":" for the actually working one."}]},{"type":"element","tag":"code","props":{"code":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20redis"},"children":[{"type":"text","value":"Wait for redis"}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful query from database or exits with non-zero status after timeout."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Don't forget to change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$query"}]},{"type":"text","value":" for the actually working one."}]},{"type":"element","tag":"code","props":{"code":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-96e909"},"children":[{"type":"text","value":"# Waits for mysql to become actually available"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4e894a"},"children":[{"type":"text","value":"wait_for_mysql"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":"() {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" query="}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\"SELECT count(*) FROM users\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" timeout=180 "}]},{"type":"element","tag":"span","props":{"class":"ct-96e909"},"children":[{"type":"text","value":"# 3 minutes limit"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" i=0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"while"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-6f15dd"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" -it "}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" mysql --user="}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" -e "}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"query"}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"do"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" sleep 1"}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" i="}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"$(("}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-82e697"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" [[ "}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"-ge"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"timeout"}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" ]]"}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":";"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6f15dd"},"children":[{"type":"text","value":"echo"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\"[Error] can't properly query MySQL after "}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":" secs\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6f15dd"},"children":[{"type":"text","value":"exit"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" 1"}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"fi"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"done"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-96e909"},"children":[{"type":"text","value":"# usage: wait_for_mysql miin-mysql-dev root password database"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20redis"},"children":[{"type":"text","value":"Wait for redis"}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-82e697{color:#79C0FF}.ct-1e03f6{color:#C9D1D9}.ct-6132de{color:#C9D1D9}.ct-6f15dd{color:#79C0FF}.ct-170fd0{color:#FF7B72}.ct-cdfdb2{color:#A5D6FF}.ct-bf65b0{color:#C9D1D9}.ct-4e894a{color:#D2A8FF}.ct-96e909{color:#8B949E}.light .ct-96e909{color:#93A1A1}.light .ct-4e894a{color:#268BD2}.light .ct-bf65b0{color:#657B83}.light .ct-cdfdb2{color:#2AA198}.light .ct-170fd0{color:#859900}.light .ct-6f15dd{color:#268BD2}.light .ct-6132de{color:#859900}.light .ct-1e03f6{color:#268BD2}.light .ct-82e697{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Wait for mysql.md","_source":"content","_file":"Docker/Wait for mysql.md","_extension":"md"},{"_path":"/docker/wait-for-redis","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Wait For Redis","description":"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful ping or exits with non-zero status after 3 minutes."}]},{"type":"element","tag":"code","props":{"code":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20mysql"},"children":[{"type":"text","value":"Wait for mysql"}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful ping or exits with non-zero status after 3 minutes."}]},{"type":"element","tag":"code","props":{"code":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1cf9ad"},"children":[{"type":"text","value":"# Waits for redis to become actually available"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa61be"},"children":[{"type":"text","value":"wait_for_redis"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":"() {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" timeout=180 "}]},{"type":"element","tag":"span","props":{"class":"ct-1cf9ad"},"children":[{"type":"text","value":"# 3 minutes"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" i=0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"while"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-b696db"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" -it "}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" redis-cli -h localhost -p 6379 -a "}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" ping "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" grep "}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\"PONG\""}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":"/dev/null "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"2>&1;"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"do"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" sleep 1"}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" i="}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"$(("}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-4c6ed7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" [[ "}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"-ge"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"timeout"}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" ]]"}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":";"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b696db"},"children":[{"type":"text","value":"echo"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\"[Error] can't properly ping Redis container after "}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":" secs\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b696db"},"children":[{"type":"text","value":"exit"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" 1"}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"fi"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"done"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1cf9ad"},"children":[{"type":"text","value":"# usage: wait_for_redis miin-redis-dev password"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20mysql"},"children":[{"type":"text","value":"Wait for mysql"}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-4c6ed7{color:#79C0FF}.ct-6155df{color:#C9D1D9}.ct-e15e70{color:#C9D1D9}.ct-72164b{color:#A5D6FF}.ct-b696db{color:#79C0FF}.ct-1a537d{color:#FF7B72}.ct-113bf5{color:#C9D1D9}.ct-aa61be{color:#D2A8FF}.ct-1cf9ad{color:#8B949E}.light .ct-1cf9ad{color:#93A1A1}.light .ct-aa61be{color:#268BD2}.light .ct-113bf5{color:#657B83}.light .ct-1a537d{color:#859900}.light .ct-b696db{color:#268BD2}.light .ct-72164b{color:#2AA198}.light .ct-e15e70{color:#859900}.light .ct-6155df{color:#268BD2}.light .ct-4c6ed7{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Wait for redis.md","_source":"content","_file":"Docker/Wait for redis.md","_extension":"md"},{"_path":"/frontend/react-native/oauth2-login","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"OAuth2 Login","description":"Use #oauth2 login with React-Native","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Use #oauth2 login with React-Native"}]},{"type":"element","tag":"h2","props":{"id":"common-oauth2-providers"},"children":[{"type":"text","value":"Common OAuth2 providers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be handled by "},{"type":"element","tag":"a","props":{"href":"react-native-app-auth"},"children":[{"type":"text","value":"react-native-app-auth"}]},{"type":"text","value":" by redirecting to url "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"com.yourapp://oauth2provider"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"example-for-google"},"children":[{"type":"text","value":"Example for #Google"}]},{"type":"element","tag":"code","props":{"code":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"example-for-yandex"},"children":[{"type":"text","value":"Example for #Yandex"}]},{"type":"element","tag":"code","props":{"code":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"apple-id-login"},"children":[{"type":"text","value":"Apple ID login"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication","rel":["nofollow"]},"children":[{"type":"text","value":"react-native-apple-authentication"}]},{"type":"text","value":" has its own "},{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication/tree/main/docs","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":" on setting up OAuth using Apple ID."}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Use #oauth2 login with React-Native"}]},{"type":"element","tag":"h2","props":{"id":"common-oauth2-providers"},"children":[{"type":"text","value":"Common OAuth2 providers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be handled by "},{"type":"element","tag":"a","props":{"href":"react-native-app-auth"},"children":[{"type":"text","value":"react-native-app-auth"}]},{"type":"text","value":" by redirecting to url "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"com.yourapp://oauth2provider"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"example-for-google"},"children":[{"type":"text","value":"Example for #Google"}]},{"type":"element","tag":"code","props":{"code":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-09167a"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'react-native-app-auth'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"GOOGLE_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-94fecd"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-035d5a"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" issuer: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'https://accounts.google.com'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" clientId: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"GOOGLE_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}.apps.googleusercontent.com`"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" redirectUrl: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"`com.yourapp:/oauth2redirect/google`"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" scopes: ["}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'openid'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'profile'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" dangerouslyAllowInsecureHttpRequests: "}]},{"type":"element","tag":"span","props":{"class":"ct-68f8f5"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"});"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"example-for-yandex"},"children":[{"type":"text","value":"Example for #Yandex"}]},{"type":"element","tag":"code","props":{"code":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_SECRET"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-94fecd"},"children":[{"type":"text","value":"// better hide it somehow"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'com.yourapp'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-035d5a"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" serviceConfiguration: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" authorizationEndpoint: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"`https://oauth.yandex.ru/authorize?response_type=code&client_id=${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}&redirect_uri=${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}:/oauth2redirect`"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-94fecd"},"children":[{"type":"text","value":"// TODO: replace it with your own backend to secure client_secret:"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" tokenEndpoint: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"`https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}&client_secret=${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_SECRET"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" clientId: "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" redirectUrl: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}:/oauth2redirect`"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" scopes: ["}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'login:info'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'login:avatar'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" dangerouslyAllowInsecureHttpRequests: "}]},{"type":"element","tag":"span","props":{"class":"ct-68f8f5"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-035d5a"},"children":[{"type":"text","value":"callback"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-09167a"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-09167a"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"apple-id-login"},"children":[{"type":"text","value":"Apple ID login"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication","rel":["nofollow"]},"children":[{"type":"text","value":"react-native-apple-authentication"}]},{"type":"text","value":" has its own "},{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication/tree/main/docs","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":" on setting up OAuth using Apple ID."}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-68f8f5{color:#79C0FF}.ct-035d5a{color:#D2A8FF}.ct-94fecd{color:#8B949E}.ct-c0142e{color:#79C0FF}.ct-9cdce7{color:#FF7B72}.ct-259179{color:#A5D6FF}.ct-09167a{color:#C9D1D9}.ct-c906eb{color:#C9D1D9}.ct-d6abe0{color:#FF7B72}.light .ct-d6abe0{color:#859900}.light .ct-c906eb{color:#657B83}.light .ct-09167a{color:#268BD2}.light .ct-259179{color:#2AA198}.light .ct-9cdce7{color:#073642}.light .ct-c0142e{color:#268BD2}.light .ct-94fecd{color:#93A1A1}.light .ct-035d5a{color:#268BD2}.light .ct-68f8f5{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"common-oauth2-providers","depth":2,"text":"Common OAuth2 providers","children":[{"id":"example-for-google","depth":3,"text":"Example for #Google"},{"id":"example-for-yandex","depth":3,"text":"Example for #Yandex"}]},{"id":"apple-id-login","depth":2,"text":"Apple ID login"}]}},"_type":"markdown","_id":"content:Frontend:React Native:OAuth2 login.md","_source":"content","_file":"Frontend/React Native/OAuth2 login.md","_extension":"md"},{"_path":"/frontend/react-native/preserve-flatlist-scroll-position-in-react-native","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Preserve FlatList Scroll Position In React Native","description":"Sometimes you need to keep scroll position of FlatList in React Native after some user interactions.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to keep scroll position of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"FlatList"}]},{"type":"text","value":" in React Native after some user interactions."}]},{"type":"element","tag":"code","props":{"code":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to keep scroll position of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"FlatList"}]},{"type":"text","value":" in React Native after some user interactions."}]},{"type":"element","tag":"code","props":{"code":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1b2898"},"children":[{"type":"text","value":"// interact() is doing some stuff, that changes FlatList scroll size"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-56a237"},"children":[{"type":"text","value":"Props"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-27e8c9"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"; }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5e0832"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6a1d68"},"children":[{"type":"text","value":"SomeList"}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-173810"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-173810"},"children":[{"type":"text","value":"Props"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" ({ "}]},{"type":"element","tag":"span","props":{"class":"ct-81988b"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-5e0832"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9d2c22"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9d2c22"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b2898"},"children":[{"type":"text","value":"// set it to `true` before interaction and back to `false` right after"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-ea1c0a"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-81988b"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-173810"},"children":[{"type":"text","value":"NativeSyntheticEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-173810"},"children":[{"type":"text","value":"NativeScrollEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":">) "}]},{"type":"element","tag":"span","props":{"class":"ct-5e0832"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"nativeEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"contentOffset"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"y"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" [],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e0832"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-846e70"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6a1d68"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-81988b"},"children":[{"type":"text","value":"_"}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a41202"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-81988b"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a41202"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-5e0832"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"scrollToOffset"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" offset: "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" animated: "}]},{"type":"element","tag":"span","props":{"class":"ct-ea1c0a"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b2898"},"children":[{"type":"text","value":"// onInteraction wraps interaction to preserve scroll position"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"onInteraction"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ea1c0a"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"setTimeout"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" }, "}]},{"type":"element","tag":"span","props":{"class":"ct-9d2c22"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"setTimeout"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ea1c0a"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" }, "}]},{"type":"element","tag":"span","props":{"class":"ct-9d2c22"},"children":[{"type":"text","value":"500"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"setSelectedSubThemes"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-b6e4ff"},"children":[{"type":"text","value":"FlatList"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b2898"},"children":[{"type":"text","value":"// ...required FlatList options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"/>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" )"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-b6e4ff{color:#FFA657}.ct-a41202{color:#79C0FF}.ct-846e70{color:#79C0FF}.ct-715b00{color:#C9D1D9}.ct-ea1c0a{color:#79C0FF}.ct-9d2c22{color:#79C0FF}.ct-383d75{color:#79C0FF}.ct-81988b{color:#FFA657}.ct-173810{color:#FFA657}.ct-459bf0{color:#FF7B72}.ct-6a1d68{color:#D2A8FF}.ct-03eaac{color:#C9D1D9}.ct-5e0832{color:#FF7B72}.ct-27e8c9{color:#79C0FF}.ct-3285b3{color:#D2A8FF}.ct-ecea9a{color:#FF7B72}.ct-56a237{color:#FFA657}.ct-e5f3ab{color:#C9D1D9}.ct-18b8d0{color:#FF7B72}.ct-1b2898{color:#8B949E}.light .ct-1b2898{color:#93A1A1}.light .ct-18b8d0{color:#073642}.light .ct-e5f3ab{color:#657B83}.light .ct-56a237{color:#268BD2}.light .ct-ecea9a{color:#859900}.light .ct-3285b3{color:#268BD2}.light .ct-27e8c9{color:#859900}.light .ct-5e0832{color:#073642}.light .ct-03eaac{color:#657B83}.light .ct-6a1d68{color:#268BD2}.light .ct-459bf0{color:#859900}.light .ct-173810{color:#268BD2}.light .ct-81988b{color:#657B83}.light .ct-383d75{color:#268BD2}.light .ct-9d2c22{color:#D33682}.light .ct-ea1c0a{color:#B58900}.light .ct-715b00{color:#268BD2}.light .ct-846e70{color:#268BD2}.light .ct-a41202{color:#859900}.light .ct-b6e4ff{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React Native:Preserve FlatList scroll position in React Native.md","_source":"content","_file":"Frontend/React Native/Preserve FlatList scroll position in React Native.md","_extension":"md"},{"_path":"/frontend/react-native/useful-comands","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Useful Comands","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"show-android-logcat"},"children":[{"type":"text","value":"Show android logcat"}]},{"type":"element","tag":"code","props":{"code":"adb logcat com.application:I \"*:S\"\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"adb logcat com.application:I \"*:S\"\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"get-apks-sha-256"},"children":[{"type":"text","value":"Get .apk's SHA-256"}]},{"type":"element","tag":"code","props":{"code":"keytool -printcert -jarfile \"$1\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"keytool -printcert -jarfile \"$1\"\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"assemble-debug-release-on-android"},"children":[{"type":"text","value":"Assemble debug release on Android"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Packages release with bundled resources."}]},{"type":"element","tag":"code","props":{"code":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"send-release-to-android-device"},"children":[{"type":"text","value":"Send release to Android device"}]},{"type":"element","tag":"code","props":{"code":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"deep-links"},"children":[{"type":"text","value":"Deep links"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zarah.dev/2022/02/08/android12-deeplinks.html","rel":["nofollow"]},"children":[{"type":"text","value":"https://zarah.dev/2022/02/08/android12-deeplinks.html"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification","rel":["nofollow"]},"children":[{"type":"text","value":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls","rel":["nofollow"]},"children":[{"type":"text","value":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls"}]}]}]},{"type":"element","tag":"h3","props":{"id":"open-deep-links"},"children":[{"type":"text","value":"Open deep links"}]},{"type":"element","tag":"code","props":{"code":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"reverify-links-on-android"},"children":[{"type":"text","value":"Reverify links on Android"}]},{"type":"element","tag":"code","props":{"code":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"show-android-logcat"},"children":[{"type":"text","value":"Show android logcat"}]},{"type":"element","tag":"code","props":{"code":"adb logcat com.application:I \"*:S\"\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"adb logcat com.application:I "}]},{"type":"element","tag":"span","props":{"class":"ct-492fb7"},"children":[{"type":"text","value":"\"*:S\""}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"get-apks-sha-256"},"children":[{"type":"text","value":"Get .apk's SHA-256"}]},{"type":"element","tag":"code","props":{"code":"keytool -printcert -jarfile \"$1\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"keytool -printcert -jarfile "}]},{"type":"element","tag":"span","props":{"class":"ct-492fb7"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-f5de27"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-7a7a1d"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-492fb7"},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"assemble-debug-release-on-android"},"children":[{"type":"text","value":"Assemble debug release on Android"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Packages release with bundled resources."}]},{"type":"element","tag":"code","props":{"code":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"npx react-native bundle \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" --platform android \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" --dev "}]},{"type":"element","tag":"span","props":{"class":"ct-75be1f"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" --entry-file index.js \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" --bundle-output android/app/src/main/assets/index.android.bundle \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" --assets-dest android/app/src/main/res/"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-75be1f"},"children":[{"type":"text","value":"cd"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" android "}]},{"type":"element","tag":"span","props":{"class":"ct-46ff56"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" ./gradlew assembleDebug"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4a89fe"},"children":[{"type":"text","value":"# do your stuff"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"./gradlew clean"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"send-release-to-android-device"},"children":[{"type":"text","value":"Send release to Android device"}]},{"type":"element","tag":"code","props":{"code":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-75be1f"},"children":[{"type":"text","value":"cd"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" ./android \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-46ff56"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" ./gradlew assembleRelease \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-46ff56"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" adb install ./app/build/outputs/apk/release/app-release.apk"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"deep-links"},"children":[{"type":"text","value":"Deep links"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zarah.dev/2022/02/08/android12-deeplinks.html","rel":["nofollow"]},"children":[{"type":"text","value":"https://zarah.dev/2022/02/08/android12-deeplinks.html"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification","rel":["nofollow"]},"children":[{"type":"text","value":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls","rel":["nofollow"]},"children":[{"type":"text","value":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls"}]}]}]},{"type":"element","tag":"h3","props":{"id":"open-deep-links"},"children":[{"type":"text","value":"Open deep links"}]},{"type":"element","tag":"code","props":{"code":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4a89fe"},"children":[{"type":"text","value":"# ios "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"xcrun simctl openurl booted "}]},{"type":"element","tag":"span","props":{"class":"ct-f5de27"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-7a7a1d"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4a89fe"},"children":[{"type":"text","value":"# android"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"adb shell am start -W -a android.intent.action.VIEW -d "}]},{"type":"element","tag":"span","props":{"class":"ct-f5de27"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-7a7a1d"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"com.application"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"reverify-links-on-android"},"children":[{"type":"text","value":"Reverify links on Android"}]},{"type":"element","tag":"code","props":{"code":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"PACKAGE="}]},{"type":"element","tag":"span","props":{"class":"ct-492fb7"},"children":[{"type":"text","value":"\"com.application\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"adb shell pm set-app-links --package "}]},{"type":"element","tag":"span","props":{"class":"ct-f5de27"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-7a7a1d"},"children":[{"type":"text","value":"PACKAGE"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" 0 all "}]},{"type":"element","tag":"span","props":{"class":"ct-46ff56"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" adb shell pm verify-app-links --re-verify "}]},{"type":"element","tag":"span","props":{"class":"ct-f5de27"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-7a7a1d"},"children":[{"type":"text","value":"PACKAGE"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-4a89fe{color:#8B949E}.ct-46ff56{color:#FF7B72}.ct-75be1f{color:#79C0FF}.ct-7a7a1d{color:#C9D1D9}.ct-f5de27{color:#C9D1D9}.ct-492fb7{color:#A5D6FF}.ct-7dd2c8{color:#C9D1D9}.light .ct-7dd2c8{color:#657B83}.light .ct-492fb7{color:#2AA198}.light .ct-f5de27{color:#859900}.light .ct-7a7a1d{color:#268BD2}.light .ct-75be1f{color:#268BD2}.light .ct-46ff56{color:#859900}.light .ct-4a89fe{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"show-android-logcat","depth":2,"text":"Show android logcat"},{"id":"get-apks-sha-256","depth":2,"text":"Get .apk's SHA-256"},{"id":"assemble-debug-release-on-android","depth":2,"text":"Assemble debug release on Android"},{"id":"send-release-to-android-device","depth":2,"text":"Send release to Android device"},{"id":"deep-links","depth":2,"text":"Deep links","children":[{"id":"open-deep-links","depth":3,"text":"Open deep links"},{"id":"reverify-links-on-android","depth":3,"text":"Reverify links on Android"}]}]}},"_type":"markdown","_id":"content:Frontend:React Native:Useful comands.md","_source":"content","_file":"Frontend/React Native/Useful comands.md","_extension":"md"},{"_path":"/frontend/react/axios-refresh-token-on-react","_dir":"react","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Axios Refresh Token On React","description":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":""}]},{"type":"text","value":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props."}]},{"type":"element","tag":"code","props":{"code":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":""}]},{"type":"text","value":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props."}]},{"type":"element","tag":"code","props":{"code":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"\"axios\""}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"React"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"createContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"PropsWithChildren"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"useContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"useEffect"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"\"react\""}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-79a62b"},"children":[{"type":"text","value":"APIProviderProps"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f483ca"},"children":[{"type":"text","value":"PropsWithChildren"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-12a4da"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-12a4da"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d927c0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"refresh"}]},{"type":"element","tag":"span","props":{"class":"ct-12a4da"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d927c0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a350b2"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"createContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" client: "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" baseURL: "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"process"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"env"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"NEXT_PUBLIC_API_ENDPOINT"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"APIProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8bf0d3"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-8bf0d3"},"children":[{"type":"text","value":"APIProviderProps"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" ({ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"children"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" baseURL: "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"process"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"env"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"NEXT_PUBLIC_API_ENDPOINT"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" )."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"<() "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a350b2"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":">(() "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfac5d"},"children":[{"type":"text","value":"// TODO: implement me"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a350b2"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"\"not implemented\""}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"useEffect"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfac5d"},"children":[{"type":"text","value":"// append `access` token to all requests"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"req"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"use"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" Authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"`Bearer ${"}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-419752"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a350b2"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfac5d"},"children":[{"type":"text","value":"// refreshing interceptor"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"resp"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"use"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"function"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"status"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f205aa"},"children":[{"type":"text","value":"401"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"_retry"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"_retry"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2dfdaf"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"newToken"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" Authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"\"Bearer \""}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"newToken"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a350b2"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"eject"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"req"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"eject"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"resp"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }, ["}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"refresh"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"]);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"Provider"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"{{ "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }}"}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":">"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"children"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"useAPI"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"useContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"APIProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-2dfdaf{color:#79C0FF}.ct-f205aa{color:#79C0FF}.ct-419752{color:#A5D6FF}.ct-dfac5d{color:#8B949E}.ct-8bf0d3{color:#FFA657}.ct-dc0893{color:#79C0FF}.ct-a350b2{color:#79C0FF}.ct-dddbde{color:#FF7B72}.ct-4f8495{color:#D2A8FF}.ct-d927c0{color:#79C0FF}.ct-12a4da{color:#FF7B72}.ct-adcb9c{color:#FFA657}.ct-f483ca{color:#79C0FF}.ct-79a62b{color:#FFA657}.ct-bc1340{color:#C9D1D9}.ct-47b4a5{color:#FF7B72}.ct-a880fe{color:#A5D6FF}.ct-13a8d9{color:#C9D1D9}.ct-e48648{color:#C9D1D9}.ct-10bccc{color:#FF7B72}.light .ct-10bccc{color:#859900}.light .ct-e48648{color:#657B83}.light .ct-13a8d9{color:#268BD2}.light .ct-a880fe{color:#2AA198}.light .ct-47b4a5{color:#073642}.light .ct-bc1340{color:#657B83}.light .ct-79a62b{color:#268BD2}.light .ct-f483ca{color:#657B83}.light .ct-adcb9c{color:#657B83}.light .ct-12a4da{color:#859900}.light .ct-d927c0{color:#859900}.light .ct-4f8495{color:#268BD2}.light .ct-dddbde{color:#073642}.light .ct-a350b2{color:#859900}.light .ct-dc0893{color:#268BD2}.light .ct-8bf0d3{color:#268BD2}.light .ct-dfac5d{color:#93A1A1}.light .ct-419752{color:#657B83}.light .ct-f205aa{color:#D33682}.light .ct-2dfdaf{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React:Axios refresh token on React.md","_source":"content","_file":"Frontend/React/Axios refresh token on React.md","_extension":"md"},{"_path":"/frontend/react/axios-with-abortcontroller","_dir":"react","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Axios With AbortController","description":"If you need to cancel some request, use axios with AbortController. Previously axios used cancellation token, but now it's deprecated.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to cancel some request, use "},{"type":"element","tag":"a","props":{"href":"https://axios-http.com/docs/cancellation","rel":["nofollow"]},"children":[{"type":"text","value":"axios with AbortController"}]},{"type":"text","value":". Previously axios used cancellation token, but now it's deprecated."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"AbortController"}]},{"type":"text","value":" can be used with a multiple requests to cancel them at once."}]},{"type":"element","tag":"code","props":{"code":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to cancel some request, use "},{"type":"element","tag":"a","props":{"href":"https://axios-http.com/docs/cancellation","rel":["nofollow"]},"children":[{"type":"text","value":"axios with AbortController"}]},{"type":"text","value":". Previously axios used cancellation token, but now it's deprecated."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"AbortController"}]},{"type":"text","value":" can be used with a multiple requests to cancel them at once."}]},{"type":"element","tag":"code","props":{"code":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-552880"},"children":[{"type":"text","value":"\"react\""}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-552880"},"children":[{"type":"text","value":"'axios'"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a5a4"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"useGetUsers"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a5a4"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"AbortController"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"());"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a5a4"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a5a4"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-552880"},"children":[{"type":"text","value":"\"/\""}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d9a7df"},"children":[{"type":"text","value":"// params and props here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" signal: "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"signal"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"data"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a5a4"},"children":[{"type":"text","value":"cancel"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"abort"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d9a7df"},"children":[{"type":"text","value":"// controller should be rewritten or all requests will fail"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"AbortController"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" }, ["}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"]);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"cancel"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"};"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-d9a7df{color:#8B949E}.ct-74387e{color:#D2A8FF}.ct-69a5a4{color:#79C0FF}.ct-486fdb{color:#FF7B72}.ct-552880{color:#A5D6FF}.ct-e1d7ee{color:#C9D1D9}.ct-98aef3{color:#C9D1D9}.ct-7bcc7f{color:#FF7B72}.light .ct-7bcc7f{color:#859900}.light .ct-98aef3{color:#657B83}.light .ct-e1d7ee{color:#268BD2}.light .ct-552880{color:#2AA198}.light .ct-486fdb{color:#073642}.light .ct-69a5a4{color:#268BD2}.light .ct-74387e{color:#268BD2}.light .ct-d9a7df{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React:Axios with AbortController.md","_source":"content","_file":"Frontend/React/Axios with AbortController.md","_extension":"md"},{"_path":"/frontend/vue/adding-global-properties-to-component","_dir":"vue","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Adding Global Properties To Component","description":"The topic's fully covered in the official documentation and in Add global variable to window.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The topic's fully covered in the "},{"type":"element","tag":"a","props":{"href":"https://vuejs.org/guide/typescript/options-api.html#augmenting-global-properties","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]},{"type":"text","value":" and in "},{"type":"element","tag":"a","props":{"href":"Add%20global%20variable%20to%20window"},"children":[{"type":"text","value":"Add global variable to window"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you want to add global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$http"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$translate"}]},{"type":"text","value":" services to all of project's components:"}]},{"type":"element","tag":"code","props":{"code":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The topic's fully covered in the "},{"type":"element","tag":"a","props":{"href":"https://vuejs.org/guide/typescript/options-api.html#augmenting-global-properties","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]},{"type":"text","value":" and in "},{"type":"element","tag":"a","props":{"href":"Add%20global%20variable%20to%20window"},"children":[{"type":"text","value":"Add global variable to window"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you want to add global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$http"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$translate"}]},{"type":"text","value":" services to all of project's components:"}]},{"type":"element","tag":"code","props":{"code":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5d6cfe"},"children":[{"type":"text","value":"// ~/index.d.ts or ~/custom.d.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cfe987"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8348df"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cfe987"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f10d9f"},"children":[{"type":"text","value":"'axios'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1fe06c"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fe06c"},"children":[{"type":"text","value":"module"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f10d9f"},"children":[{"type":"text","value":"'vue'"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fe06c"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e97f4a"},"children":[{"type":"text","value":"ComponentCustomProperties"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f59c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-203129"},"children":[{"type":"text","value":"$translate"}]},{"type":"element","tag":"span","props":{"class":"ct-b51be1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-0f59c7"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-544231"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-b51be1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-0f59c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bae14e"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0f59c7"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-ee4f6e"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0f59c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bae14e"},"children":[{"type":"text","value":"string"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-ee4f6e{color:#FF7B72}.ct-bae14e{color:#79C0FF}.ct-544231{color:#FFA657}.ct-b51be1{color:#FF7B72}.ct-203129{color:#D2A8FF}.ct-0f59c7{color:#C9D1D9}.ct-e97f4a{color:#FFA657}.ct-1fe06c{color:#FF7B72}.ct-f10d9f{color:#A5D6FF}.ct-8348df{color:#C9D1D9}.ct-c6fc44{color:#C9D1D9}.ct-cfe987{color:#FF7B72}.ct-5d6cfe{color:#8B949E}.light .ct-5d6cfe{color:#93A1A1}.light .ct-cfe987{color:#859900}.light .ct-c6fc44{color:#657B83}.light .ct-8348df{color:#268BD2}.light .ct-f10d9f{color:#2AA198}.light .ct-1fe06c{color:#073642}.light .ct-e97f4a{color:#268BD2}.light .ct-0f59c7{color:#657B83}.light .ct-203129{color:#268BD2}.light .ct-b51be1{color:#859900}.light .ct-544231{color:#657B83}.light .ct-bae14e{color:#859900}.light .ct-ee4f6e{color:#073642}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:Vue:Adding global properties to component.md","_source":"content","_file":"Frontend/Vue/Adding global properties to component.md","_extension":"md"},{"_path":"/frontend/vue/make-nuxt-handle-obsidian-highlights","_dir":"vue","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Make Nuxt Handle Obsidian Highlights","description":"By default Nuxt Content Plugin not handling highlight links. To fix that we will create Nitro plugin:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By default "},{"type":"element","tag":"a","props":{"href":"https://content.nuxtjs.org","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt Content Plugin"}]},{"type":"text","value":" not handling "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"highlight"}]},{"type":"text","value":" links. To fix that we will create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Nitro"}]},{"type":"text","value":" plugin:"}]},{"type":"element","tag":"code","props":{"code":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By default "},{"type":"element","tag":"a","props":{"href":"https://content.nuxtjs.org","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt Content Plugin"}]},{"type":"text","value":" not handling "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"highlight"}]},{"type":"text","value":" links. To fix that we will create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Nitro"}]},{"type":"text","value":" plugin:"}]},{"type":"element","tag":"code","props":{"code":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e7b999"},"children":[{"type":"text","value":"// ~/server/plugins/highlight.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1a859c"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-c61dc2"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a859c"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-c61dc2"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-90a102"},"children":[{"type":"text","value":"defineNitroPlugin"}]},{"type":"element","tag":"span","props":{"class":"ct-c61dc2"},"children":[{"type":"text","value":"((nitroApp) "}]},{"type":"element","tag":"span","props":{"class":"ct-bd9257"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-c61dc2"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ed11fd"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"nitroApp"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"hooks"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e84e69"},"children":[{"type":"text","value":"hook"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-11706c"},"children":[{"type":"text","value":"\"content:file:beforeParse\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7385d1"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"_id"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e84e69"},"children":[{"type":"text","value":"endsWith"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-11706c"},"children":[{"type":"text","value":"\".md\""}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7385d1"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e84e69"},"children":[{"type":"text","value":"replace"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-14315a"},"children":[{"type":"text","value":"/==("}]},{"type":"element","tag":"span","props":{"class":"ct-773264"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-7385d1"},"children":[{"type":"text","value":"^"}]},{"type":"element","tag":"span","props":{"class":"ct-773264"},"children":[{"type":"text","value":"=]"}]},{"type":"element","tag":"span","props":{"class":"ct-7385d1"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-14315a"},"children":[{"type":"text","value":")==/"}]},{"type":"element","tag":"span","props":{"class":"ct-7385d1"},"children":[{"type":"text","value":"gs"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-11706c"},"children":[{"type":"text","value":"`$1`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ed11fd"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-c61dc2"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ed11fd"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-773264{color:#79C0FF}.ct-14315a{color:#A5D6FF}.ct-7385d1{color:#FF7B72}.ct-11706c{color:#A5D6FF}.ct-e84e69{color:#D2A8FF}.ct-9e7555{color:#C9D1D9}.ct-a60213{color:#C9D1D9}.ct-ed11fd{color:#C9D1D9}.ct-bd9257{color:#FF7B72}.ct-90a102{color:#D2A8FF}.ct-c61dc2{color:#FFA657}.ct-1a859c{color:#FF7B72}.ct-e7b999{color:#8B949E}.light .ct-e7b999{color:#93A1A1}.light .ct-1a859c{color:#859900}.light .ct-c61dc2{color:#657B83}.light .ct-90a102{color:#268BD2}.light .ct-bd9257{color:#073642}.light .ct-ed11fd{color:#657B83}.light .ct-a60213{color:#657B83}.light .ct-9e7555{color:#268BD2}.light .ct-e84e69{color:#268BD2}.light .ct-11706c{color:#2AA198}.light .ct-7385d1{color:#859900}.light .ct-14315a{color:#D30102}.light .ct-773264{color:#CB4B16}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:Vue:Make Nuxt handle Obsidian highlights.md","_source":"content","_file":"Frontend/Vue/Make Nuxt handle Obsidian highlights.md","_extension":"md"},{"_path":"/git/force-git-to-use-https","_dir":"git","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Force Git To Use HTTPS","description":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put this inside your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"[url \"https://github.com\"]\n insteadOf = git://github.com\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"[url \"https://github.com\"]\n insteadOf = git://github.com\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put this inside your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"[url \"https://github.com\"]\n insteadOf = git://github.com\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b3692d"},"children":[{"type":"text","value":"[url "}]},{"type":"element","tag":"span","props":{"class":"ct-35ba29"},"children":[{"type":"text","value":"\"https://github.com\""}]},{"type":"element","tag":"span","props":{"class":"ct-b3692d"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b3692d"},"children":[{"type":"text","value":" insteadOf "}]},{"type":"element","tag":"span","props":{"class":"ct-f321ae"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-b3692d"},"children":[{"type":"text","value":" git:"}]},{"type":"element","tag":"span","props":{"class":"ct-071617"},"children":[{"type":"text","value":"//github.com"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-071617{color:#8B949E}.ct-f321ae{color:#FF7B72}.ct-35ba29{color:#A5D6FF}.ct-b3692d{color:#C9D1D9}.light .ct-b3692d{color:#657B83}.light .ct-35ba29{color:#2AA198}.light .ct-f321ae{color:#859900}.light .ct-071617{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Git:Force git to use HTTPS.md","_source":"content","_file":"Git/Force git to use HTTPS.md","_extension":"md"},{"_path":"/git/git-aliases-and-useful-commands","_dir":"git","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Git Aliases And Useful Commands","description":"Shorthands for #git commands can be specified. Should be placed at ~/.gitconfig.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Shorthands for #git commands can be specified. Should be placed at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n"}]}]}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"command"}]}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"description"}]}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git flush"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"drops all branches, except master"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git lol"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"shows log"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git c"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits with message"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git cv"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits without hooks"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git p"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"pushes"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git pf"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"push with --force and additional check"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git ignore-now"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"starts ignoring file from now on"}]}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Shorthands for #git commands can be specified. Should be placed at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"[alias]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" flush "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" git clean"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"branches branch "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" grep "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"v master "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" xargs git branch "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"D"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" lol "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" log "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"oneline "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"graph"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" l "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" lol"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" c "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" commit "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"am"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" cv "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" commit "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"no"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"verify "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"am"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" p "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" push"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" pf "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" p "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"force"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"with"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"lease"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" ignore"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"now "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" update"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"index "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"skip"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"worktree"}]}]}]}]}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"command"}]}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"description"}]}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git flush"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"drops all branches, except master"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git lol"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"shows log"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git c"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits with message"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git cv"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits without hooks"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git p"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"pushes"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git pf"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"push with --force and additional check"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git ignore-now"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"starts ignoring file from now on"}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-b9ecb8{color:#FF7B72}.ct-473820{color:#C9D1D9}.light .ct-473820{color:#657B83}.light .ct-b9ecb8{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Git:Git aliases and useful commands.md","_source":"content","_file":"Git/Git aliases and useful commands.md","_extension":"md"},{"_path":"/graphql/apollo-client-pagination","_dir":"graphql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Apollo Client Pagination","description":"Say, we have gql response like this and we wan't to have pagination with it. Let's merge it as it specified in official documentation","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we have "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gql"}]},{"type":"text","value":" response like this and we wan't to have pagination with it. Let's merge it as it specified in "},{"type":"element","tag":"a","props":{"href":"https://www.apollographql.com/docs/react/caching/cache-field-behavior/#the-merge-function","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]}]},{"type":"element","tag":"code","props":{"code":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will setup "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"text","value":" with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"typePolicies"}]},{"type":"text","value":" to merge incoming data in cache:"}]},{"type":"element","tag":"code","props":{"code":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will need merge function "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"text","value":", which will join results of query and cached data for specific key:"}]},{"type":"element","tag":"code","props":{"code":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we have "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gql"}]},{"type":"text","value":" response like this and we wan't to have pagination with it. Let's merge it as it specified in "},{"type":"element","tag":"a","props":{"href":"https://www.apollographql.com/docs/react/caching/cache-field-behavior/#the-merge-function","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]}]},{"type":"element","tag":"code","props":{"code":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"query"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a7f3fe"},"children":[{"type":"text","value":"listItems"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"filter"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"Filter"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"sort"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"limit"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"Number"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"Number"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"): "}]},{"type":"element","tag":"span","props":{"class":"ct-a7f3fe"},"children":[{"type":"text","value":"ItemList"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"input"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d60f88"},"children":[{"type":"text","value":"Filter"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d60f88"},"children":[{"type":"text","value":"ItemList"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": ["}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"Item"}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":"]"}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"Int"}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will setup "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"text","value":" with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"typePolicies"}]},{"type":"text","value":" to merge incoming data in cache:"}]},{"type":"element","tag":"code","props":{"code":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"InMemoryCache"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-81d2a2"},"children":[{"type":"text","value":"'@apollo/client'"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c33669"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b6b3a1"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a7f3fe"},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" cache: "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a7f3fe"},"children":[{"type":"text","value":"InMemoryCache"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"({ "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"typePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c33669"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b6b3a1"},"children":[{"type":"text","value":"typePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-597759"},"children":[{"type":"text","value":"TypePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" Query: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" fields: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// query name"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" listItems: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// apollo will serialize and use keyArgs as unique"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// identifier in cache for every query"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// consider choosing the right fields, "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// i.e. limit and offset won't work here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" keyArgs: ["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-81d2a2"},"children":[{"type":"text","value":"'sort'"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// primitive type"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-81d2a2"},"children":[{"type":"text","value":"'filter'"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":", ["}]},{"type":"element","tag":"span","props":{"class":"ct-81d2a2"},"children":[{"type":"text","value":"'name'"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-81d2a2"},"children":[{"type":"text","value":"'type'"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"] "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// nested fields of `filter`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" ],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" merge: "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will need merge function "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"text","value":", which will join results of query and cached data for specific key:"}]},{"type":"element","tag":"code","props":{"code":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"/** merges all sources with { items: unknown[], totalCount: number } */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-239e82"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f40db7"},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":", { "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-239e82"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// no existing data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" [];"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// If hook was called multiple times"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" [];"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// merge cache and incoming data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c33669"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b6b3a1"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// apply latest result for totalCount"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c33669"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b6b3a1"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-f40db7{color:#D2A8FF}.ct-239e82{color:#FF7B72}.ct-597759{color:#FFA657}.ct-37e996{color:#8B949E}.ct-b6b3a1{color:#79C0FF}.ct-c33669{color:#FF7B72}.ct-81d2a2{color:#A5D6FF}.ct-e9b930{color:#C9D1D9}.ct-3c31de{color:#FF7B72}.ct-d60f88{color:#79C0FF}.ct-9d23e5{color:#79C0FF}.ct-770547{color:#FFA657}.ct-0cf362{color:#C9D1D9}.ct-a7f3fe{color:#D2A8FF}.ct-ce3c96{color:#C9D1D9}.ct-4d95b5{color:#FF7B72}.light .ct-4d95b5{color:#859900}.light .ct-ce3c96{color:#657B83}.light .ct-a7f3fe{color:#268BD2}.light .ct-0cf362{color:#657B83}.light .ct-770547{color:#657B83}.light .ct-9d23e5{color:#859900}.light .ct-d60f88{color:#859900}.light .ct-3c31de{color:#859900}.light .ct-e9b930{color:#268BD2}.light .ct-81d2a2{color:#2AA198}.light .ct-c33669{color:#073642}.light .ct-b6b3a1{color:#268BD2}.light .ct-37e996{color:#93A1A1}.light .ct-597759{color:#268BD2}.light .ct-239e82{color:#073642}.light .ct-f40db7{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:GraphQL:Apollo Client pagination.md","_source":"content","_file":"GraphQL/Apollo Client pagination.md","_extension":"md"},{"_path":"/graphql/refresh-token-in-apollo-client","_dir":"graphql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Refresh Token In Apollo Client","description":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client."}]},{"type":"element","tag":"code","props":{"code":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Custom fetch function for this request. You should tune "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"text","value":" and\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"text","value":" to match your api."}]},{"type":"element","tag":"code","props":{"code":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client."}]},{"type":"element","tag":"code","props":{"code":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"createApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"url"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"getAuthorizationData"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"authorization"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caad5f"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"<"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"undefined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" >,"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"ApolloClientBase"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// ...other options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" link: "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"ApolloLink"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"(["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// ...other options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"setContext"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"_"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":", { "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"getAuthorizationData"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"HttpLink"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" uri: "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"url"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" fetch: "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"fetchWithTokenRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ]),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Custom fetch function for this request. You should tune "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"text","value":" and\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"text","value":" to match your api."}]},{"type":"element","tag":"code","props":{"code":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"/** Global singleton for refreshing promise */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caad5f"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"/** Checks if GraphQl errors has unauthenticated error */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"<{ "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"code"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"ErrorCode"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" }>)"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"isArray"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"some"}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"status"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f935d9"},"children":[{"type":"text","value":"401"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// Distinguish unauthorized error here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"/** Detects if customFetch is sending refresh request */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"RequestInit"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9586d0"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"operationName"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e3b437"},"children":[{"type":"text","value":"'RefreshToken'"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9586d0"},"children":[{"type":"text","value":"fetchWithTokenRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":": () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":": () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" { accessToken: "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"undefined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ) "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"RequestInit"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"Response"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// already refreshing token, wait for it and then use refreshed token"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// or use empty authorization if refreshing failed"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"as"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caad5f"},"children":[{"type":"text","value":"Record"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":">)?."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9586d0"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// refreshing token from other request failed, retry without authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e3b437"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"async"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9586d0"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9586d0"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// check for unauthorized errors, if not present, just return result"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"||"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"||"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ok: "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"unknown"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":">("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":">("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// If unauthorized, refresh token and try again"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e3b437"},"children":[{"type":"text","value":"'Session expired'"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// can't refresh token. logging out"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e3b437"},"children":[{"type":"text","value":"'Session expired'"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// success or any non-auth error"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// wait for other request's refreshing query to finish, when retry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// refreshing token from other request failed, retry without authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-e3b437"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-e3b437{color:#A5D6FF}.ct-9586d0{color:#79C0FF}.ct-f935d9{color:#79C0FF}.ct-5e6318{color:#FFA657}.ct-70d1ab{color:#79C0FF}.ct-41ca16{color:#C9D1D9}.ct-f65bc2{color:#8B949E}.ct-caad5f{color:#FFA657}.ct-756d5d{color:#FF7B72}.ct-315120{color:#D2A8FF}.ct-bc5ac0{color:#79C0FF}.ct-844354{color:#79C0FF}.ct-394a5b{color:#FF7B72}.ct-944ca4{color:#FFA657}.ct-64c2d8{color:#C9D1D9}.ct-aad558{color:#D2A8FF}.ct-f19b0f{color:#FF7B72}.ct-288d63{color:#C9D1D9}.ct-2d6f1f{color:#FF7B72}.light .ct-2d6f1f{color:#859900}.light .ct-288d63{color:#657B83}.light .ct-f19b0f{color:#073642}.light .ct-aad558{color:#268BD2}.light .ct-64c2d8{color:#657B83}.light .ct-944ca4{color:#657B83}.light .ct-394a5b{color:#859900}.light .ct-844354{color:#859900}.light .ct-bc5ac0{color:#859900}.light .ct-315120{color:#268BD2}.light .ct-756d5d{color:#073642}.light .ct-caad5f{color:#268BD2}.light .ct-f65bc2{color:#93A1A1}.light .ct-41ca16{color:#268BD2}.light .ct-70d1ab{color:#B58900}.light .ct-5e6318{color:#268BD2}.light .ct-f935d9{color:#D33682}.light .ct-9586d0{color:#268BD2}.light .ct-e3b437{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:GraphQL:Refresh token in Apollo client.md","_source":"content","_file":"GraphQL/Refresh token in Apollo client.md","_extension":"md"},{"_path":"/linux/gitea-for-git-hosting","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Gitea For Git Hosting","description":"Self-hosted #git repositories with gitea and #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Self-hosted #git repositories with "},{"type":"element","tag":"a","props":{"href":"https://gitea.io/ru-ru/","rel":["nofollow"]},"children":[{"type":"text","value":"gitea"}]},{"type":"text","value":" and #docker."}]},{"type":"element","tag":"h2","props":{"id":"setting-up-with-docker-compose"},"children":[{"type":"text","value":"Setting up with docker-compose"}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Self-hosted #git repositories with "},{"type":"element","tag":"a","props":{"href":"https://gitea.io/ru-ru/","rel":["nofollow"]},"children":[{"type":"text","value":"gitea"}]},{"type":"text","value":" and #docker."}]},{"type":"element","tag":"h2","props":{"id":"setting-up-with-docker-compose"},"children":[{"type":"text","value":"Setting up with docker-compose"}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"networks"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"gitea"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"external"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-bb8b11"},"children":[{"type":"text","value":"false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"gitea/gitea:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"USER_UID=1000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"USER_GID=1000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"networks"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"./var/lib/gitea:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"./etc/gitea:/etc/gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"/etc/timezone:/etc/timezone:ro"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"/etc/localtime:/etc/localtime:ro"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"\"3000:3000\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"\"222:22\""}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-bb8b11{color:#79C0FF}.ct-7df5b4{color:#A5D6FF}.ct-348279{color:#C9D1D9}.ct-7bf0c6{color:#7EE787}.light .ct-7bf0c6{color:#268BD2}.light .ct-348279{color:#657B83}.light .ct-7df5b4{color:#2AA198}.light .ct-bb8b11{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"setting-up-with-docker-compose","depth":2,"text":"Setting up with docker-compose"}]}},"_type":"markdown","_id":"content:Linux:Gitea for git hosting.md","_source":"content","_file":"Linux/Gitea for git hosting.md","_extension":"md"},{"_path":"/linux/google-photos-alternative-with-photoprism","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Google Photos Alternative With Photoprism","description":"Photo Prism is a free alternative to Google photos, can be set up with #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://photoprism.app/","rel":["nofollow"]},"children":[{"type":"text","value":"Photo Prism"}]},{"type":"text","value":" is a free alternative to Google photos, can be set up with #docker."}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-to-run-it"},"children":[{"type":"text","value":"Docker compose file to run it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out current "},{"type":"element","tag":"a","props":{"href":"https://dl.photoprism.app/docker/docker-compose.yml","rel":["nofollow"]},"children":[{"type":"text","value":"example"}]},{"type":"text","value":" at photoprism's "},{"type":"element","tag":"a","props":{"href":"https://docs.photoprism.app/getting-started/docker-compose/","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://photoprism.app/","rel":["nofollow"]},"children":[{"type":"text","value":"Photo Prism"}]},{"type":"text","value":" is a free alternative to Google photos, can be set up with #docker."}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-to-run-it"},"children":[{"type":"text","value":"Docker compose file to run it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out current "},{"type":"element","tag":"a","props":{"href":"https://dl.photoprism.app/docker/docker-compose.yml","rel":["nofollow"]},"children":[{"type":"text","value":"example"}]},{"type":"text","value":" at photoprism's "},{"type":"element","tag":"a","props":{"href":"https://docs.photoprism.app/getting-started/docker-compose/","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"'3.5'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"photoprism"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"photoprism__app"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"photoprism/photoprism:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"depends_on"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"mariadb"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"unless-stopped"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"security_opt"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"seccomp:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"apparmor:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"2342:2342"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35ae50"},"children":[{"type":"text","value":"# HTTP port (host:container)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_ADMIN_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"password\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"https://service.url/\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_ORIGINALS_LIMIT"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2abf7f"},"children":[{"type":"text","value":"5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_HTTP_COMPRESSION"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"gzip\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DEBUG"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_PUBLIC"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_READONLY"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_EXPERIMENTAL"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_CHOWN"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_WEBDAV"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_SETTINGS"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_TENSORFLOW"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_FACES"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_CLASSIFICATION"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DARKTABLE_PRESETS"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DETECT_NSFW"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_UPLOAD_NSFW"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"true\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_DRIVER"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"mysql\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_SERVER"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"mariadb:3306\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_NAME"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"photoprism\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_USER"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"root\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"insecure\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_TITLE"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"PhotoPrism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_CAPTION"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"Browse Your Life\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_DESCRIPTION"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_AUTHOR"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"HOME"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"/photoprism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"working_dir"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"/photoprism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"./data/originals:/photoprism/originals\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"./data/imports:/photoprism/import\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"./data/storage:/photoprism/storage\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"  "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"mariadb"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"photoprism__db"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"unless-stopped"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"mariadb:10.6"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"security_opt"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"seccomp:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"apparmor:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"./database:/var/lib/mysql\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35ae50"},"children":[{"type":"text","value":"# Important, don't remove"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"MYSQL_ROOT_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"insecure"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"MYSQL_DATABASE"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"photoprism"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"MYSQL_USER"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"photoprism"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"MYSQL_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"insecure"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-2abf7f{color:#79C0FF}.ct-35ae50{color:#8B949E}.ct-cc2293{color:#A5D6FF}.ct-bff125{color:#C9D1D9}.ct-c91294{color:#7EE787}.light .ct-c91294{color:#268BD2}.light .ct-bff125{color:#657B83}.light .ct-cc2293{color:#2AA198}.light .ct-35ae50{color:#93A1A1}.light .ct-2abf7f{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"docker-compose-file-to-run-it","depth":2,"text":"Docker compose file to run it"}]}},"_type":"markdown","_id":"content:Linux:Google photos alternative with Photoprism.md","_source":"content","_file":"Linux/Google photos alternative with Photoprism.md","_extension":"md"},{"_path":"/linux/resume-or-start-screen-session","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Resume Or Start Screen Session","description":"Running this script will enter currently running screen session or will start new one.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Running this script will enter currently running "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"screen"}]},{"type":"text","value":" session or will start new one."}]},{"type":"element","tag":"code","props":{"code":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Running this script will enter currently running "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"screen"}]},{"type":"text","value":" session or will start new one."}]},{"type":"element","tag":"code","props":{"code":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-33f6fa"},"children":[{"type":"text","value":"( screen -r bash "}]},{"type":"element","tag":"span","props":{"class":"ct-d79ad9"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-33f6fa"},"children":[{"type":"text","value":" ( screen -d bash "}]},{"type":"element","tag":"span","props":{"class":"ct-d79ad9"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-33f6fa"},"children":[{"type":"text","value":" screen -r bash "}]},{"type":"element","tag":"span","props":{"class":"ct-d79ad9"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-33f6fa"},"children":[{"type":"text","value":" screen -SAm bash bash ) )"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-d79ad9{color:#FF7B72}.ct-33f6fa{color:#C9D1D9}.light .ct-33f6fa{color:#657B83}.light .ct-d79ad9{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Linux:Resume or start screen session.md","_source":"content","_file":"Linux/Resume or start screen session.md","_extension":"md"},{"_path":"/linux/rsync-file-with-ssh","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Rsync File With SSH","description":"Downloads file from #SSH with rsync and puts it in current folder.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Downloads file from #SSH with rsync and puts it in current folder."}]},{"type":"element","tag":"code","props":{"code":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Downloads file from #SSH with rsync and puts it in current folder."}]},{"type":"element","tag":"code","props":{"code":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-772071"},"children":[{"type":"text","value":"#!/bin/bash"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"PORT=22"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"USER=user"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"HOST=example.com"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"REMOTE_PATH=/tmp"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"REMOTE_FILE=sample.text"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"DEST_PATH=./"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"rsync -a -e "}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\"ssh -p "}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"PORT"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":" -P -v \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"USER"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"@"}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"HOST"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"REMOTE_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"REMOTE_FILE"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"DEST_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-bccbfa{color:#C9D1D9}.ct-5fce1c{color:#C9D1D9}.ct-9b3752{color:#A5D6FF}.ct-abc278{color:#C9D1D9}.ct-772071{color:#8B949E}.light .ct-772071{color:#93A1A1}.light .ct-abc278{color:#657B83}.light .ct-9b3752{color:#2AA198}.light .ct-5fce1c{color:#859900}.light .ct-bccbfa{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Linux:Rsync file with SSH.md","_source":"content","_file":"Linux/Rsync file with SSH.md","_extension":"md"},{"_path":"/linux/setting-up-nginx","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Setting Up NGINX","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"fallback-url-for-spa-s"},"children":[{"type":"text","value":"Fallback url for SPA-s"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-up-for-uploads"},"children":[{"type":"text","value":"Set up for uploads"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"reverse-proxy-for-https"},"children":[{"type":"text","value":"Reverse proxy for https"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given config forwards "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https"}]},{"type":"text","value":" traffic to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"http"}]},{"type":"text","value":" on port "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"8080"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"https://next.vault48.org","rel":["nofollow"]},"children":[{"type":"text","value":"https://next.vault48.org"}]},{"type":"text","value":"\nwith http2 support if possible."}]},{"type":"element","tag":"code","props":{"code":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"fallback-url-for-spa-s"},"children":[{"type":"text","value":"Fallback url for SPA-s"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-987db0"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d15a59"},"children":[{"type":"text","value":"location"}]},{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-689b80"},"children":[{"type":"text","value":"/ "}]},{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# First attempt to serve request as file, then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# as directory, then fall back to displaying a 404."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a1d2b8"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-up-for-uploads"},"children":[{"type":"text","value":"Set up for uploads"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-987db0"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" client_max_body_size "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"200M;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"reverse-proxy-for-https"},"children":[{"type":"text","value":"Reverse proxy for https"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given config forwards "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https"}]},{"type":"text","value":" traffic to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"http"}]},{"type":"text","value":" on port "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"8080"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"https://next.vault48.org","rel":["nofollow"]},"children":[{"type":"text","value":"https://next.vault48.org"}]},{"type":"text","value":"\nwith http2 support if possible."}]},{"type":"element","tag":"code","props":{"code":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-987db0"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"80;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" server_name "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"next.vault48.org;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-20379f"},"children":[{"type":"text","value":"301"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" https://next.vault48.org"}]},{"type":"element","tag":"span","props":{"class":"ct-f8f6bb"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-162f27"},"children":[{"type":"text","value":"request_uri"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-987db0"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"443 ssl http2;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"[::]:443 ssl http2;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# managed by Certbot"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" ssl_certificate "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/fullchain.pem; "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" ssl_certificate_key "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/privkey.pem; "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" ssl_trusted_certificate "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/chain.pem;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" server_name "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"next.vault48.org;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d15a59"},"children":[{"type":"text","value":"location"}]},{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-689b80"},"children":[{"type":"text","value":"/ "}]},{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" proxy_redirect "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"off;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"Host "}]},{"type":"element","tag":"span","props":{"class":"ct-f8f6bb"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-162f27"},"children":[{"type":"text","value":"host"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"X-Real-IP "}]},{"type":"element","tag":"span","props":{"class":"ct-f8f6bb"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-162f27"},"children":[{"type":"text","value":"remote_addr"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"X-Forwarded-For "}]},{"type":"element","tag":"span","props":{"class":"ct-f8f6bb"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-162f27"},"children":[{"type":"text","value":"proxy_add_x_forwarded_for"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" proxy_pass "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"http://127.0.0.1:8080;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-162f27{color:#C9D1D9}.ct-f8f6bb{color:#C9D1D9}.ct-20379f{color:#79C0FF}.ct-24380b{color:#FF7B72}.ct-a1d2b8{color:#FF7B72}.ct-689b80{color:#FFA657}.ct-d15a59{color:#FF7B72}.ct-b09c3f{color:#C9D1D9}.ct-f2c9af{color:#8B949E}.ct-bd3f01{color:#C9D1D9}.ct-987db0{color:#FF7B72}.light .ct-987db0{color:#073642}.light .ct-bd3f01{color:#657B83}.light .ct-f2c9af{color:#93A1A1}.light .ct-b09c3f{color:#657B83}.light .ct-d15a59{color:#073642}.light .ct-689b80{color:#657B83}.light .ct-a1d2b8{color:#657B83}.light .ct-24380b{color:#859900}.light .ct-20379f{color:#D33682}.light .ct-f8f6bb{color:#859900}.light .ct-162f27{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"fallback-url-for-spa-s","depth":2,"text":"Fallback url for SPA-s"},{"id":"set-up-for-uploads","depth":2,"text":"Set up for uploads"},{"id":"reverse-proxy-for-https","depth":2,"text":"Reverse proxy for https"}]}},"_type":"markdown","_id":"content:Linux:Setting up NGINX.md","_source":"content","_file":"Linux/Setting up NGINX.md","_extension":"md"},{"_path":"/linux/ssh","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"SSH","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"config-aliases-for-ssh-hosts"},"children":[{"type":"text","value":"Config aliases for #SSH hosts"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"#SSH config can be used to made aliases for different hosts. Should be put at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.ssh/config"}]},{"type":"text","value":". To simply call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ssh router"}]},{"type":"text","value":" without parameters, use this:"}]},{"type":"element","tag":"code","props":{"code":"Host router\n HostName 192.168.0.1\n IdentityFile ~/.ssh/id_rsa\n User root\n Port 22522\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"Host router\n HostName 192.168.0.1\n IdentityFile ~/.ssh/id_rsa\n User root\n Port 22522\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"config-aliases-for-ssh-hosts"},"children":[{"type":"text","value":"Config aliases for #SSH hosts"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"#SSH config can be used to made aliases for different hosts. Should be put at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.ssh/config"}]},{"type":"text","value":". To simply call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ssh router"}]},{"type":"text","value":" without parameters, use this:"}]},{"type":"element","tag":"code","props":{"code":"Host router\n HostName 192.168.0.1\n IdentityFile ~/.ssh/id_rsa\n User root\n Port 22522\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"Host router\n HostName 192.168.0.1\n IdentityFile ~/.ssh/id_rsa\n User root\n Port 22522"}]}]}]}]}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"config-aliases-for-ssh-hosts","depth":2,"text":"Config aliases for #SSH hosts"}]}},"_type":"markdown","_id":"content:Linux:SSH.md","_source":"content","_file":"Linux/SSH.md","_extension":"md"},{"_path":"/sql/mysql-and-mariadb-setup","_dir":"sql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"MySQL And MariaDB Setup","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-mariadb-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install MariaDB on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"access-database-from-outside"},"children":[{"type":"text","value":"Access Database from outside"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/mysql/mariadb.conf.d/50-server.cnf"}]},{"type":"text","value":" and change the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"bind-address"}]},{"type":"text","value":" to:"}]},{"type":"element","tag":"code","props":{"code":"...\nbind-address = 0.0.0.0\n...\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"...\nbind-address = 0.0.0.0\n...\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"create-administrative-user"},"children":[{"type":"text","value":"Create Administrative User"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create a new user "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"newuser"}]},{"type":"text","value":" for the host "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"localhost"}]},{"type":"text","value":" with a new "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"password"}]},{"type":"text","value":":"}]}]},{"type":"element","tag":"code","props":{"code":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n"}]}]}]},{"type":"element","tag":"ol","props":{"start":2},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Grant all permissions to the new user"}]}]},{"type":"element","tag":"code","props":{"code":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n"}]}]}]},{"type":"element","tag":"ol","props":{"start":3},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Update permissions"}]}]},{"type":"element","tag":"code","props":{"code":"FLUSH PRIVILEGES;\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"FLUSH PRIVILEGES;\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-mariadb-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install MariaDB on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"sudo apt update"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"sudo apt install mariadb-server"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"sudo mysql_secure_installation"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"access-database-from-outside"},"children":[{"type":"text","value":"Access Database from outside"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/mysql/mariadb.conf.d/50-server.cnf"}]},{"type":"text","value":" and change the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"bind-address"}]},{"type":"text","value":" to:"}]},{"type":"element","tag":"code","props":{"code":"...\nbind-address = 0.0.0.0\n...\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"bind-"}]},{"type":"element","tag":"span","props":{"class":"ct-68eb49"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":" = 0.0.0.0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"..."}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"create-administrative-user"},"children":[{"type":"text","value":"Create Administrative User"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create a new user "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"newuser"}]},{"type":"text","value":" for the host "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"localhost"}]},{"type":"text","value":" with a new "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"password"}]},{"type":"text","value":":"}]}]},{"type":"element","tag":"code","props":{"code":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';"}]}]}]}]}]},{"type":"element","tag":"ol","props":{"start":2},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Grant all permissions to the new user"}]}]},{"type":"element","tag":"code","props":{"code":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';"}]}]}]}]}]},{"type":"element","tag":"ol","props":{"start":3},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Update permissions"}]}]},{"type":"element","tag":"code","props":{"code":"FLUSH PRIVILEGES;\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"FLUSH PRIVILEGES;"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-68eb49{color:#FF7B72}.ct-5cf055{color:#C9D1D9}.light .ct-5cf055{color:#657B83}.light .ct-68eb49{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"install-mariadb-on-ubuntu-2004-lts","depth":2,"text":"Install MariaDB on Ubuntu 20.04 LTS"},{"id":"access-database-from-outside","depth":2,"text":"Access Database from outside"},{"id":"create-administrative-user","depth":2,"text":"Create Administrative User"}]}},"_type":"markdown","_id":"content:SQL:MySQL and MariaDB setup.md","_source":"content","_file":"SQL/MySQL and MariaDB setup.md","_extension":"md"},{"_path":"/sql/postgress-setup","_dir":"sql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Postgress Setup","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-postgresql-12-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"initial-database-connection"},"children":[{"type":"text","value":"Initial database connection"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A local connection (from the database server) can be done by the following command:"}]},{"type":"element","tag":"code","props":{"code":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-password-for-postgres-database-user"},"children":[{"type":"text","value":"Set password for postgres database user"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The password for the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user can be set the the quick command "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"\\password"}]},{"type":"text","value":"\nor by "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"alter user postgres password 'Supersecret'"}]},{"type":"text","value":". A connection using the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" user\nis still not possible from the \"outside\" hence to the default settings in the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password"},"children":[{"type":"text","value":"Update pg_hba.conf to allow postgres user connections with password"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In order to allow connections of the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user not using OS user\nauthentication, you have to update the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":" which can be found under\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/postgresql/12/main/pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change the last section of the above line to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"md5"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"local all postgres md5\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"local all postgres md5\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A restart is required in order to apply the new configuration:"}]},{"type":"element","tag":"code","props":{"code":"sudo systemctl restart postgresql\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo systemctl restart postgresql\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now a connection from outside the database host is possible e.g."}]},{"type":"element","tag":"code","props":{"code":"psql -U postgres -d postgres -h databasehostname\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"psql -U postgres -d postgres -h databasehostname\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-database-users"},"children":[{"type":"text","value":"Creation of additional database users"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A database user can be created by the following command:"}]},{"type":"element","tag":"code","props":{"code":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-databases"},"children":[{"type":"text","value":"Creation of additional databases"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One can create new Postgres databases within an instance. Therefore you can use the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"psql"}]},{"type":"text","value":"\ncommand to login (see above)."}]},{"type":"element","tag":"code","props":{"code":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can leave the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"OWNER"}]},{"type":"text","value":" section of the command, when doing so, the current user will become\nowner of the newly created database."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To change the owner of an existing database later, you can use the following command:"}]},{"type":"element","tag":"code","props":{"code":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-postgresql-12-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo apt update"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo apt install -y postgresql postgresql-contrib postgresql-client"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo systemctl status postgresql.service"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"initial-database-connection"},"children":[{"type":"text","value":"Initial database connection"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A local connection (from the database server) can be done by the following command:"}]},{"type":"element","tag":"code","props":{"code":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo -u postgres psql"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"Type "}]},{"type":"element","tag":"span","props":{"class":"ct-3f70a1"},"children":[{"type":"text","value":"\"help\""}]},{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-43adcf"},"children":[{"type":"text","value":"for"}]},{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":" help."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"postgres="}]},{"type":"element","tag":"span","props":{"class":"ct-2110ce"},"children":[{"type":"text","value":"#"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-password-for-postgres-database-user"},"children":[{"type":"text","value":"Set password for postgres database user"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The password for the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user can be set the the quick command "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"\\password"}]},{"type":"text","value":"\nor by "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"alter user postgres password 'Supersecret'"}]},{"type":"text","value":". A connection using the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" user\nis still not possible from the \"outside\" hence to the default settings in the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password"},"children":[{"type":"text","value":"Update pg_hba.conf to allow postgres user connections with password"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In order to allow connections of the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user not using OS user\nauthentication, you have to update the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":" which can be found under\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/postgresql/12/main/pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo vi /etc/postgresql/12/main/pg_hba.conf"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11fa66"},"children":[{"type":"text","value":"local"}]},{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":" all postgres peer"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"..."}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change the last section of the above line to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"md5"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"local all postgres md5\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"local all postgres md5"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A restart is required in order to apply the new configuration:"}]},{"type":"element","tag":"code","props":{"code":"sudo systemctl restart postgresql\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo systemctl restart postgresql"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now a connection from outside the database host is possible e.g."}]},{"type":"element","tag":"code","props":{"code":"psql -U postgres -d postgres -h databasehostname\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"psql -U postgres -d postgres -h databasehostname"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-database-users"},"children":[{"type":"text","value":"Creation of additional database users"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A database user can be created by the following command:"}]},{"type":"element","tag":"code","props":{"code":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-databases"},"children":[{"type":"text","value":"Creation of additional databases"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One can create new Postgres databases within an instance. Therefore you can use the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"psql"}]},{"type":"text","value":"\ncommand to login (see above)."}]},{"type":"element","tag":"code","props":{"code":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can leave the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"OWNER"}]},{"type":"text","value":" section of the command, when doing so, the current user will become\nowner of the newly created database."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To change the owner of an existing database later, you can use the following command:"}]},{"type":"element","tag":"code","props":{"code":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-11fa66{color:#FF7B72}.ct-2110ce{color:#8B949E}.ct-43adcf{color:#FF7B72}.ct-3f70a1{color:#A5D6FF}.ct-d033e5{color:#C9D1D9}.light .ct-d033e5{color:#657B83}.light .ct-3f70a1{color:#2AA198}.light .ct-43adcf{color:#859900}.light .ct-2110ce{color:#93A1A1}.light .ct-11fa66{color:#073642}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"install-postgresql-12-on-ubuntu-2004-lts","depth":2,"text":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"},{"id":"initial-database-connection","depth":2,"text":"Initial database connection"},{"id":"set-password-for-postgres-database-user","depth":2,"text":"Set password for postgres database user","children":[{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password","depth":3,"text":"Update pg_hba.conf to allow postgres user connections with password"}]},{"id":"creation-of-additional-database-users","depth":2,"text":"Creation of additional database users"},{"id":"creation-of-additional-databases","depth":2,"text":"Creation of additional databases"}]}},"_type":"markdown","_id":"content:SQL:Postgress setup.md","_source":"content","_file":"SQL/Postgress setup.md","_extension":"md"},{"_path":"/typescript/add-global-variable-to-window","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Add Global Variable To Window","description":"Sometimes you want to add global variable to your window. That thing's called global module augmentation.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you want to add global variable to your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":". That thing's called "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"global module augmentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say you need to call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.doFancyThings()"}]},{"type":"text","value":". For that you should augment global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":" interface in "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"*.d.ts"}]},{"type":"text","value":" file:"}]},{"type":"element","tag":"code","props":{"code":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is useful for declaring global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.ethereum"}]},{"type":"text","value":" (or "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.web3"}]},{"type":"text","value":") in "},{"type":"element","tag":"a","props":{"href":"/blockchain/Common%20typescript%20examples"},"children":[{"type":"text","value":"blockchain"}]},{"type":"text","value":" projects with typescript, which use wallet browser extensions."}]},{"type":"element","tag":"h2","props":{"id":"augmenting-existing-interface"},"children":[{"type":"text","value":"Augmenting existing interface"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you have class "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Sample"}]},{"type":"text","value":" without any functionality:"}]},{"type":"element","tag":"code","props":{"code":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then you want extend it with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"doFancyThings()"}]},{"type":"text","value":" method. That can be achieved with said "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"module augmentation"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now you can call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"sample.doFancyThings()"}]},{"type":"text","value":" by importing both "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".ts"}]},{"type":"text","value":" files:"}]},{"type":"element","tag":"code","props":{"code":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This example is useful for "},{"type":"element","tag":"a","props":{"href":"./Frontend/Vue/Adding%20global%20properties%20to%20component"},"children":[{"type":"text","value":"adding global properties to component"}]},{"type":"text","value":" in vue.js."}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you want to add global variable to your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":". That thing's called "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"global module augmentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say you need to call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.doFancyThings()"}]},{"type":"text","value":". For that you should augment global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":" interface in "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"*.d.ts"}]},{"type":"text","value":" file:"}]},{"type":"element","tag":"code","props":{"code":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5a1180"},"children":[{"type":"text","value":"global"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ea6546"},"children":[{"type":"text","value":"Window"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7ae017"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d883c"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is useful for declaring global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.ethereum"}]},{"type":"text","value":" (or "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.web3"}]},{"type":"text","value":") in "},{"type":"element","tag":"a","props":{"href":"/blockchain/Common%20typescript%20examples"},"children":[{"type":"text","value":"blockchain"}]},{"type":"text","value":" projects with typescript, which use wallet browser extensions."}]},{"type":"element","tag":"h2","props":{"id":"augmenting-existing-interface"},"children":[{"type":"text","value":"Augmenting existing interface"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you have class "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Sample"}]},{"type":"text","value":" without any functionality:"}]},{"type":"element","tag":"code","props":{"code":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ded3d9"},"children":[{"type":"text","value":"// Sample.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"class"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ea6546"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ded3d9"},"children":[{"type":"text","value":"// nothing :-)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then you want extend it with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"doFancyThings()"}]},{"type":"text","value":" method. That can be achieved with said "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"module augmentation"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ded3d9"},"children":[{"type":"text","value":"// fancyThings.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-5a1180"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d93ef6"},"children":[{"type":"text","value":"\"./Sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"module"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d93ef6"},"children":[{"type":"text","value":"\"./Sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ea6546"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7ae017"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d883c"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now you can call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"sample.doFancyThings()"}]},{"type":"text","value":" by importing both "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".ts"}]},{"type":"text","value":" files:"}]},{"type":"element","tag":"code","props":{"code":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-5a1180"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d93ef6"},"children":[{"type":"text","value":"\"./sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d93ef6"},"children":[{"type":"text","value":"\"./fancyThings\""}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3f0ca4"},"children":[{"type":"text","value":"sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7ae017"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5a1180"},"children":[{"type":"text","value":"sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-7ae017"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"(); "}]},{"type":"element","tag":"span","props":{"class":"ct-ded3d9"},"children":[{"type":"text","value":"// ok"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This example is useful for "},{"type":"element","tag":"a","props":{"href":"./Frontend/Vue/Adding%20global%20properties%20to%20component"},"children":[{"type":"text","value":"adding global properties to component"}]},{"type":"text","value":" in vue.js."}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-3f0ca4{color:#79C0FF}.ct-d93ef6{color:#A5D6FF}.ct-ded3d9{color:#8B949E}.ct-0d883c{color:#79C0FF}.ct-79d053{color:#FF7B72}.ct-7ae017{color:#D2A8FF}.ct-ea6546{color:#FFA657}.ct-5a1180{color:#C9D1D9}.ct-dabb00{color:#C9D1D9}.ct-ae58bf{color:#FF7B72}.light .ct-ae58bf{color:#073642}.light .ct-dabb00{color:#657B83}.light .ct-5a1180{color:#268BD2}.light .ct-ea6546{color:#268BD2}.light .ct-7ae017{color:#268BD2}.light .ct-79d053{color:#859900}.light .ct-0d883c{color:#859900}.light .ct-ded3d9{color:#93A1A1}.light .ct-d93ef6{color:#2AA198}.light .ct-3f0ca4{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"augmenting-existing-interface","depth":2,"text":"Augmenting existing interface"}]}},"_type":"markdown","_id":"content:Typescript:Add global variable to window.md","_source":"content","_file":"Typescript/Add global variable to window.md","_extension":"md"},{"_path":"/typescript/flatten-object-with-periods","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Flatten Object With Periods","description":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Used for typing "},{"type":"element","tag":"a","props":{"href":"https://www.npmjs.com/package/i18n-js","rel":["nofollow"]},"children":[{"type":"text","value":"i18n.js"}]},{"type":"text","value":" dictionaries;"}]},{"type":"element","tag":"code","props":{"code":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flatten type defined here:"}]},{"type":"element","tag":"code","props":{"code":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Used for typing "},{"type":"element","tag":"a","props":{"href":"https://www.npmjs.com/package/i18n-js","rel":["nofollow"]},"children":[{"type":"text","value":"i18n.js"}]},{"type":"text","value":" dictionaries;"}]},{"type":"element","tag":"code","props":{"code":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-376e38"},"children":[{"type":"text","value":"en"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"'./en.json'"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"TranslationPath"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"typeof"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-376e38"},"children":[{"type":"text","value":"en"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":">;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86bd56"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7e4a5"},"children":[{"type":"text","value":"t"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c2b323"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-926c31"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-c2b323"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3a2c1c"},"children":[{"type":"text","value":"TranslationPath"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-926c31"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-c2b323"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3a2c1c"},"children":[{"type":"text","value":"TranslateOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-86bd56"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-376e38"},"children":[{"type":"text","value":"I18nLib"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-ad45dc"},"children":[{"type":"text","value":"t"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-376e38"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-376e38"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flatten type defined here:"}]},{"type":"element","tag":"code","props":{"code":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fca63"},"children":[{"type":"text","value":"// This one based on answer from StackOverflow:"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fca63"},"children":[{"type":"text","value":"// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"] "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"never"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"PluralForm"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fca63"},"children":[{"type":"text","value":"// plural object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"''"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" { ["}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"in"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"keyof"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"]"}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"-?:"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Join"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"], "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Prev"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"]>> }["}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"keyof"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fca63"},"children":[{"type":"text","value":"// Fix it for you plural form"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"PluralForm"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Record"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"'one'"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"'few'"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"'many'"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":">;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Join"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"number"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"number"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"}${''"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"'.'}${"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"}`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"never"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Prev"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"3"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"4"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":">];"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-aae1b4{color:#A5D6FF}.ct-58da23{color:#79C0FF}.ct-901170{color:#79C0FF}.ct-0fca63{color:#8B949E}.ct-ad45dc{color:#D2A8FF}.ct-3a2c1c{color:#FFA657}.ct-926c31{color:#FFA657}.ct-c2b323{color:#FF7B72}.ct-c7e4a5{color:#D2A8FF}.ct-c58f6b{color:#C9D1D9}.ct-86bd56{color:#FF7B72}.ct-89dc1d{color:#FFA657}.ct-5154b4{color:#FF7B72}.ct-1162b8{color:#A5D6FF}.ct-376e38{color:#C9D1D9}.ct-642830{color:#C9D1D9}.ct-7881db{color:#FF7B72}.light .ct-7881db{color:#859900}.light .ct-642830{color:#657B83}.light .ct-376e38{color:#268BD2}.light .ct-1162b8{color:#2AA198}.light .ct-5154b4{color:#073642}.light .ct-89dc1d{color:#268BD2}.light .ct-86bd56{color:#073642}.light .ct-c58f6b{color:#657B83}.light .ct-c7e4a5{color:#268BD2}.light .ct-c2b323{color:#859900}.light .ct-926c31{color:#657B83}.light .ct-3a2c1c{color:#268BD2}.light .ct-ad45dc{color:#268BD2}.light .ct-0fca63{color:#93A1A1}.light .ct-901170{color:#859900}.light .ct-58da23{color:#D33682}.light .ct-aae1b4{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Typescript:Flatten object with periods.md","_source":"content","_file":"Typescript/Flatten object with periods.md","_extension":"md"},{"_path":"/typescript/type-guards","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Type Guards","description":"Useful for type checking at compile and run time:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for type checking at compile and run time:"}]},{"type":"element","tag":"code","props":{"code":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage:"}]},{"type":"element","tag":"code","props":{"code":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for type checking at compile and run time:"}]},{"type":"element","tag":"code","props":{"code":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-046d7b"},"children":[{"type":"text","value":"function"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-527549"},"children":[{"type":"text","value":"isFish"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d96e74"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-a37712"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f189e5"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a37712"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f189e5"},"children":[{"type":"text","value":"Bird"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-a37712"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d96e74"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a37712"},"children":[{"type":"text","value":"is"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f189e5"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-5a0e09"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"as"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-606086"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-5a0e09"},"children":[{"type":"text","value":"swim"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"!=="}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8c8025"},"children":[{"type":"text","value":"undefined"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage:"}]},{"type":"element","tag":"code","props":{"code":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b7a6b6"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-efc9d5"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7c789"},"children":[{"type":"text","value":"getSmallPet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c7c789"},"children":[{"type":"text","value":"isFish"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-5a0e09"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5a0e09"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7c789"},"children":[{"type":"text","value":"swim"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5a0e09"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7c789"},"children":[{"type":"text","value":"fly"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-c7c789{color:#D2A8FF}.ct-efc9d5{color:#79C0FF}.ct-b7a6b6{color:#FF7B72}.ct-8c8025{color:#79C0FF}.ct-606086{color:#FFA657}.ct-5a0e09{color:#C9D1D9}.ct-3434a0{color:#FF7B72}.ct-b9efb7{color:#C9D1D9}.ct-f189e5{color:#FFA657}.ct-a37712{color:#FF7B72}.ct-d96e74{color:#FFA657}.ct-527549{color:#D2A8FF}.ct-b4c07a{color:#C9D1D9}.ct-046d7b{color:#FF7B72}.light .ct-046d7b{color:#073642}.light .ct-b4c07a{color:#657B83}.light .ct-527549{color:#268BD2}.light .ct-d96e74{color:#657B83}.light .ct-a37712{color:#859900}.light .ct-f189e5{color:#268BD2}.light .ct-b9efb7{color:#657B83}.light .ct-3434a0{color:#859900}.light .ct-5a0e09{color:#268BD2}.light .ct-606086{color:#268BD2}.light .ct-8c8025{color:#B58900}.light .ct-b7a6b6{color:#073642}.light .ct-efc9d5{color:#268BD2}.light .ct-c7c789{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Typescript:Type guards.md","_source":"content","_file":"Typescript/Type guards.md","_extension":"md"}],"navigation":[{"title":"Blockchain","_path":"/blockchain","children":[{"title":"Common Typescript Examples","_path":"/blockchain/common-typescript-examples"},{"title":"Smart Contracts","_path":"/blockchain/smart-contracts"}]},{"title":"Css","_path":"/css","children":[{"title":"Automatic Grid Like Masonry With Pure CSS","_path":"/css/automatic-grid-like-masonry-with-pure-css"},{"title":"Sass Nth Child Iterate Mixin","_path":"/css/sass-nth-child-iterate-mixin"},{"title":"Test If Browser Supports CSS Rules","_path":"/css/test-if-browser-supports-css-rules"}]},{"title":"Docker","_path":"/docker","children":[{"title":"Building Static Pages With Docker","_path":"/docker/building-static-pages-with-docker"},{"title":"Drone Ci","_path":"/docker/drone-ci"},{"title":"Github Pages With Drone Ci","_path":"/docker/github-pages-with-drone-ci"},{"title":"Private Docker Registry","_path":"/docker/private-docker-registry"},{"title":"Refresh Containers On Pull","_path":"/docker/refresh-containers-on-pull"},{"title":"Seed Dump Inside Docker","_path":"/docker/seed-dump-inside-docker"},{"title":"Wait For Mysql","_path":"/docker/wait-for-mysql"},{"title":"Wait For Redis","_path":"/docker/wait-for-redis"}]},{"title":"Frontend","_path":"/frontend","children":[{"title":"React Native","_path":"/frontend/react-native","children":[{"title":"OAuth2 Login","_path":"/frontend/react-native/oauth2-login"},{"title":"Preserve FlatList Scroll Position In React Native","_path":"/frontend/react-native/preserve-flatlist-scroll-position-in-react-native"},{"title":"Useful Comands","_path":"/frontend/react-native/useful-comands"}]},{"title":"React","_path":"/frontend/react","children":[{"title":"Axios Refresh Token On React","_path":"/frontend/react/axios-refresh-token-on-react"},{"title":"Axios With AbortController","_path":"/frontend/react/axios-with-abortcontroller"}]},{"title":"Vue","_path":"/frontend/vue","children":[{"title":"Adding Global Properties To Component","_path":"/frontend/vue/adding-global-properties-to-component"},{"title":"Make Nuxt Handle Obsidian Highlights","_path":"/frontend/vue/make-nuxt-handle-obsidian-highlights"}]}]},{"title":"Git","_path":"/git","children":[{"title":"Force Git To Use HTTPS","_path":"/git/force-git-to-use-https"},{"title":"Git Aliases And Useful Commands","_path":"/git/git-aliases-and-useful-commands"}]},{"title":"Graphql","_path":"/graphql","children":[{"title":"Apollo Client Pagination","_path":"/graphql/apollo-client-pagination"},{"title":"Refresh Token In Apollo Client","_path":"/graphql/refresh-token-in-apollo-client"}]},{"title":"Linux","_path":"/linux","children":[{"title":"Gitea For Git Hosting","_path":"/linux/gitea-for-git-hosting"},{"title":"Google Photos Alternative With Photoprism","_path":"/linux/google-photos-alternative-with-photoprism"},{"title":"Resume Or Start Screen Session","_path":"/linux/resume-or-start-screen-session"},{"title":"Rsync File With SSH","_path":"/linux/rsync-file-with-ssh"},{"title":"Setting Up NGINX","_path":"/linux/setting-up-nginx"},{"title":"SSH","_path":"/linux/ssh"}]},{"title":"Sql","_path":"/sql","children":[{"title":"MySQL And MariaDB Setup","_path":"/sql/mysql-and-mariadb-setup"},{"title":"Postgress Setup","_path":"/sql/postgress-setup"}]},{"title":"Typescript","_path":"/typescript","children":[{"title":"Add Global Variable To Window","_path":"/typescript/add-global-variable-to-window"},{"title":"Flatten Object With Periods","_path":"/typescript/flatten-object-with-periods"},{"title":"Type Guards","_path":"/typescript/type-guards"}]}]} \ No newline at end of file diff --git a/api/_content/query/068glZS8Mz.json b/api/_content/query/068glZS8Mz.json index 144157e..f5e30ee 100644 --- a/api/_content/query/068glZS8Mz.json +++ b/api/_content/query/068glZS8Mz.json @@ -1 +1 @@ -{"_path":"/css/automatic-grid-like-masonry-with-pure-css","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Automatic Grid Like Masonry With Pure CSS","description":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns."}]},{"type":"element","tag":"code","props":{"code":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"basic-elements-with-double-height-or-width"},"children":[{"type":"text","value":"Basic elements with double height or width"}]},{"type":"element","tag":"code","props":{"code":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"header-that-fills-all-columns"},"children":[{"type":"text","value":"Header, that fills all columns"}]},{"type":"element","tag":"code","props":{"code":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner"},"children":[{"type":"text","value":"Stamp element, that takes 3 rows in the top right corner"}]},{"type":"element","tag":"code","props":{"code":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns."}]},{"type":"element","tag":"code","props":{"code":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-405c56"},"children":[{"type":"text","value":"$cell: "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"250"}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-405c56"},"children":[{"type":"text","value":"$gap: "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"20"}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".grid"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"display"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-745b8d"},"children":[{"type":"text","value":"grid"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-template-columns"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70e714"},"children":[{"type":"text","value":"repeat"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"auto-fit"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-70e714"},"children":[{"type":"text","value":"minmax"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"$cell"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-f53f0b"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-01f19b"},"children":[{"type":"text","value":"fr"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":"));"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-auto-rows"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"256"}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-auto-flow"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-745b8d"},"children":[{"type":"text","value":"row"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-745b8d"},"children":[{"type":"text","value":"dense"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-column-gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"$gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2873e9"},"children":[{"type":"text","value":"grid-row-gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4998ec"},"children":[{"type":"text","value":"$gap"}]},{"type":"element","tag":"span","props":{"class":"ct-de2353"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"basic-elements-with-double-height-or-width"},"children":[{"type":"text","value":"Basic elements with double height or width"}]},{"type":"element","tag":"code","props":{"code":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".h-2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// takes 2 columns"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-column-end"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"span"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".v-2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// takes 2 rows"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-row-end"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"span"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"header-that-fills-all-columns"},"children":[{"type":"text","value":"Header, that fills all columns"}]},{"type":"element","tag":"code","props":{"code":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".full-width"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-row"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// height: 1 row"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-column"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" / "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"-1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner"},"children":[{"type":"text","value":"Stamp element, that takes 3 rows in the top right corner"}]},{"type":"element","tag":"code","props":{"code":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6459ce"},"children":[{"type":"text","value":".top-right"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-row"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47368f"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"3"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// height here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-557b75"},"children":[{"type":"text","value":"grid-column"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"-2"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":" / "}]},{"type":"element","tag":"span","props":{"class":"ct-b0def7"},"children":[{"type":"text","value":"-1"}]},{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-e36f0d"},"children":[{"type":"text","value":"// width here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bdc6b"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-e36f0d{color:#8B949E}.ct-557b75{color:#79C0FF}.ct-01f19b{color:#FF7B72}.ct-f53f0b{color:#79C0FF}.ct-4998ec{color:#FFA657}.ct-70e714{color:#79C0FF}.ct-745b8d{color:#79C0FF}.ct-2873e9{color:#79C0FF}.ct-de2353{color:#C9D1D9}.ct-6459ce{color:#79C0FF}.ct-7bdc6b{color:#C9D1D9}.ct-47368f{color:#FF7B72}.ct-b0def7{color:#79C0FF}.ct-405c56{color:#FFA657}.light .ct-405c56{color:#657B83}.light .ct-b0def7{color:#D33682}.light .ct-47368f{color:#859900}.light .ct-7bdc6b{color:#657B83}.light .ct-6459ce{color:#93A1A1}.light .ct-de2353{color:#657B83}.light .ct-2873e9{color:#859900}.light .ct-745b8d{color:#657B83}.light .ct-70e714{color:#268BD2}.light .ct-4998ec{color:#657B83}.light .ct-f53f0b{color:#D33682}.light .ct-01f19b{color:#859900}.light .ct-557b75{color:#859900}.light .ct-e36f0d{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"basic-elements-with-double-height-or-width","depth":3,"text":"Basic elements with double height or width"},{"id":"header-that-fills-all-columns","depth":3,"text":"Header, that fills all columns"},{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner","depth":3,"text":"Stamp element, that takes 3 rows in the top right corner"}]}},"_type":"markdown","_id":"content:CSS:Automatic Grid like Masonry with pure CSS.md","_source":"content","_file":"CSS/Automatic Grid like Masonry with pure CSS.md","_extension":"md"} \ No newline at end of file +{"_path":"/css/automatic-grid-like-masonry-with-pure-css","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Automatic Grid Like Masonry With Pure CSS","description":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns."}]},{"type":"element","tag":"code","props":{"code":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"basic-elements-with-double-height-or-width"},"children":[{"type":"text","value":"Basic elements with double height or width"}]},{"type":"element","tag":"code","props":{"code":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"header-that-fills-all-columns"},"children":[{"type":"text","value":"Header, that fills all columns"}]},{"type":"element","tag":"code","props":{"code":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner"},"children":[{"type":"text","value":"Stamp element, that takes 3 rows in the top right corner"}]},{"type":"element","tag":"code","props":{"code":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns."}]},{"type":"element","tag":"code","props":{"code":"$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6fec38"},"children":[{"type":"text","value":"$cell: "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"250"}]},{"type":"element","tag":"span","props":{"class":"ct-00ac1e"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6fec38"},"children":[{"type":"text","value":"$gap: "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"20"}]},{"type":"element","tag":"span","props":{"class":"ct-00ac1e"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0beef3"},"children":[{"type":"text","value":".grid"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-278f2a"},"children":[{"type":"text","value":"display"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-139d60"},"children":[{"type":"text","value":"grid"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-278f2a"},"children":[{"type":"text","value":"grid-template-columns"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-6ed2f6"},"children":[{"type":"text","value":"repeat"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-74d4bc"},"children":[{"type":"text","value":"auto-fit"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-6ed2f6"},"children":[{"type":"text","value":"minmax"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-74d4bc"},"children":[{"type":"text","value":"$cell"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-700d8c"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-f46071"},"children":[{"type":"text","value":"fr"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":"));"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-auto-rows"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"256"}]},{"type":"element","tag":"span","props":{"class":"ct-00ac1e"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-278f2a"},"children":[{"type":"text","value":"grid-auto-flow"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-139d60"},"children":[{"type":"text","value":"row"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-139d60"},"children":[{"type":"text","value":"dense"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-278f2a"},"children":[{"type":"text","value":"grid-column-gap"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-74d4bc"},"children":[{"type":"text","value":"$gap"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-278f2a"},"children":[{"type":"text","value":"grid-row-gap"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-74d4bc"},"children":[{"type":"text","value":"$gap"}]},{"type":"element","tag":"span","props":{"class":"ct-1e77ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"basic-elements-with-double-height-or-width"},"children":[{"type":"text","value":"Basic elements with double height or width"}]},{"type":"element","tag":"code","props":{"code":".h-2 { // takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { // takes 2 rows\n grid-row-end: span 2;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0beef3"},"children":[{"type":"text","value":".h-2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-a68783"},"children":[{"type":"text","value":"// takes 2 columns"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-column-end"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"span"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0beef3"},"children":[{"type":"text","value":".v-2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-a68783"},"children":[{"type":"text","value":"// takes 2 rows"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-row-end"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"span"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"header-that-fills-all-columns"},"children":[{"type":"text","value":"Header, that fills all columns"}]},{"type":"element","tag":"code","props":{"code":".full-width {\n grid-row: 1 / 2; // height: 1 row\n grid-column: 1 / -1;\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0beef3"},"children":[{"type":"text","value":".full-width"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-row"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-00ac1e"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-a68783"},"children":[{"type":"text","value":"// height: 1 row"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-column"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" / "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"-1"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner"},"children":[{"type":"text","value":"Stamp element, that takes 3 rows in the top right corner"}]},{"type":"element","tag":"code","props":{"code":".top-right {\n grid-row: 1 / 3; // height here\n grid-column: -2 / -1; // width here\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0beef3"},"children":[{"type":"text","value":".top-right"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-row"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-00ac1e"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"3"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-a68783"},"children":[{"type":"text","value":"// height here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc4636"},"children":[{"type":"text","value":"grid-column"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"-2"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":" / "}]},{"type":"element","tag":"span","props":{"class":"ct-2a9e54"},"children":[{"type":"text","value":"-1"}]},{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-a68783"},"children":[{"type":"text","value":"// width here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da7a15"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-a68783{color:#8B949E}.ct-cc4636{color:#79C0FF}.ct-f46071{color:#FF7B72}.ct-700d8c{color:#79C0FF}.ct-74d4bc{color:#FFA657}.ct-6ed2f6{color:#79C0FF}.ct-139d60{color:#79C0FF}.ct-278f2a{color:#79C0FF}.ct-1e77ad{color:#C9D1D9}.ct-0beef3{color:#79C0FF}.ct-da7a15{color:#C9D1D9}.ct-00ac1e{color:#FF7B72}.ct-2a9e54{color:#79C0FF}.ct-6fec38{color:#FFA657}.light .ct-6fec38{color:#657B83}.light .ct-2a9e54{color:#D33682}.light .ct-00ac1e{color:#859900}.light .ct-da7a15{color:#657B83}.light .ct-0beef3{color:#93A1A1}.light .ct-1e77ad{color:#657B83}.light .ct-278f2a{color:#859900}.light .ct-139d60{color:#657B83}.light .ct-6ed2f6{color:#268BD2}.light .ct-74d4bc{color:#657B83}.light .ct-700d8c{color:#D33682}.light .ct-f46071{color:#859900}.light .ct-cc4636{color:#859900}.light .ct-a68783{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"basic-elements-with-double-height-or-width","depth":3,"text":"Basic elements with double height or width"},{"id":"header-that-fills-all-columns","depth":3,"text":"Header, that fills all columns"},{"id":"stamp-element-that-takes-3-rows-in-the-top-right-corner","depth":3,"text":"Stamp element, that takes 3 rows in the top right corner"}]}},"_type":"markdown","_id":"content:CSS:Automatic Grid like Masonry with pure CSS.md","_source":"content","_file":"CSS/Automatic Grid like Masonry with pure CSS.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/2vMf3x3doM.json b/api/_content/query/2vMf3x3doM.json index 63640f3..4752818 100644 --- a/api/_content/query/2vMf3x3doM.json +++ b/api/_content/query/2vMf3x3doM.json @@ -1 +1 @@ -{"_path":"/graphql/apollo-client-pagination","_dir":"graphql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Apollo Client Pagination","description":"Say, we have gql response like this and we wan't to have pagination with it. Let's merge it as it specified in official documentation","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we have "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gql"}]},{"type":"text","value":" response like this and we wan't to have pagination with it. Let's merge it as it specified in "},{"type":"element","tag":"a","props":{"href":"https://www.apollographql.com/docs/react/caching/cache-field-behavior/#the-merge-function","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]}]},{"type":"element","tag":"code","props":{"code":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will setup "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"text","value":" with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"typePolicies"}]},{"type":"text","value":" to merge incoming data in cache:"}]},{"type":"element","tag":"code","props":{"code":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will need merge function "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"text","value":", which will join results of query and cached data for specific key:"}]},{"type":"element","tag":"code","props":{"code":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we have "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gql"}]},{"type":"text","value":" response like this and we wan't to have pagination with it. Let's merge it as it specified in "},{"type":"element","tag":"a","props":{"href":"https://www.apollographql.com/docs/react/caching/cache-field-behavior/#the-merge-function","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]}]},{"type":"element","tag":"code","props":{"code":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"query"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-938f0a"},"children":[{"type":"text","value":"listItems"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"Filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"sort"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"limit"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"Number"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"Number"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"): "}]},{"type":"element","tag":"span","props":{"class":"ct-938f0a"},"children":[{"type":"text","value":"ItemList"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"input"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e65a4c"},"children":[{"type":"text","value":"Filter"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e65a4c"},"children":[{"type":"text","value":"ItemList"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": ["}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"Item"}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":"]"}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-3a8412"},"children":[{"type":"text","value":"Int"}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will setup "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"text","value":" with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"typePolicies"}]},{"type":"text","value":" to merge incoming data in cache:"}]},{"type":"element","tag":"code","props":{"code":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"InMemoryCache"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24c886"},"children":[{"type":"text","value":"'@apollo/client'"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6b9c4d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bce347"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-938f0a"},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" cache: "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-938f0a"},"children":[{"type":"text","value":"InMemoryCache"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"({ "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"typePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6b9c4d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bce347"},"children":[{"type":"text","value":"typePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ca850d"},"children":[{"type":"text","value":"TypePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" Query: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" fields: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// query name"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" listItems: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// apollo will serialize and use keyArgs as unique"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// identifier in cache for every query"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// consider choosing the right fields, "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// i.e. limit and offset won't work here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" keyArgs: ["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24c886"},"children":[{"type":"text","value":"'sort'"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// primitive type"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24c886"},"children":[{"type":"text","value":"'filter'"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":", ["}]},{"type":"element","tag":"span","props":{"class":"ct-24c886"},"children":[{"type":"text","value":"'name'"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-24c886"},"children":[{"type":"text","value":"'type'"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"] "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// nested fields of `filter`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" ],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" merge: "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will need merge function "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"text","value":", which will join results of query and cached data for specific key:"}]},{"type":"element","tag":"code","props":{"code":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"/** merges all sources with { items: unknown[], totalCount: number } */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a041d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c2c491"},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8bd8a4"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":", { "}]},{"type":"element","tag":"span","props":{"class":"ct-ec611b"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-8a041d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-c8742a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// no existing data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" [];"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// If hook was called multiple times"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" [];"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// merge cache and incoming data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6b9c4d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bce347"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-84bc7a"},"children":[{"type":"text","value":"// apply latest result for totalCount"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6b9c4d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bce347"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b51767"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d98dbb"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03a597"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-c2c491{color:#D2A8FF}.ct-8a041d{color:#FF7B72}.ct-ca850d{color:#FFA657}.ct-84bc7a{color:#8B949E}.ct-bce347{color:#79C0FF}.ct-6b9c4d{color:#FF7B72}.ct-24c886{color:#A5D6FF}.ct-d98dbb{color:#C9D1D9}.ct-8bd8a4{color:#FF7B72}.ct-e65a4c{color:#79C0FF}.ct-3a8412{color:#79C0FF}.ct-ec611b{color:#FFA657}.ct-c8742a{color:#C9D1D9}.ct-938f0a{color:#D2A8FF}.ct-03a597{color:#C9D1D9}.ct-b51767{color:#FF7B72}.light .ct-b51767{color:#859900}.light .ct-03a597{color:#657B83}.light .ct-938f0a{color:#268BD2}.light .ct-c8742a{color:#657B83}.light .ct-ec611b{color:#657B83}.light .ct-3a8412{color:#859900}.light .ct-e65a4c{color:#859900}.light .ct-8bd8a4{color:#859900}.light .ct-d98dbb{color:#268BD2}.light .ct-24c886{color:#2AA198}.light .ct-6b9c4d{color:#073642}.light .ct-bce347{color:#268BD2}.light .ct-84bc7a{color:#93A1A1}.light .ct-ca850d{color:#268BD2}.light .ct-8a041d{color:#073642}.light .ct-c2c491{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:GraphQL:Apollo Client pagination.md","_source":"content","_file":"GraphQL/Apollo Client pagination.md","_extension":"md"} \ No newline at end of file +{"_path":"/graphql/apollo-client-pagination","_dir":"graphql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Apollo Client Pagination","description":"Say, we have gql response like this and we wan't to have pagination with it. Let's merge it as it specified in official documentation","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we have "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gql"}]},{"type":"text","value":" response like this and we wan't to have pagination with it. Let's merge it as it specified in "},{"type":"element","tag":"a","props":{"href":"https://www.apollographql.com/docs/react/caching/cache-field-behavior/#the-merge-function","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]}]},{"type":"element","tag":"code","props":{"code":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will setup "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"text","value":" with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"typePolicies"}]},{"type":"text","value":" to merge incoming data in cache:"}]},{"type":"element","tag":"code","props":{"code":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will need merge function "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"text","value":", which will join results of query and cached data for specific key:"}]},{"type":"element","tag":"code","props":{"code":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we have "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gql"}]},{"type":"text","value":" response like this and we wan't to have pagination with it. Let's merge it as it specified in "},{"type":"element","tag":"a","props":{"href":"https://www.apollographql.com/docs/react/caching/cache-field-behavior/#the-merge-function","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]}]},{"type":"element","tag":"code","props":{"code":"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"query"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a7f3fe"},"children":[{"type":"text","value":"listItems"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"filter"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"Filter"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"sort"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"limit"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"Number"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"Number"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"): "}]},{"type":"element","tag":"span","props":{"class":"ct-a7f3fe"},"children":[{"type":"text","value":"ItemList"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"input"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d60f88"},"children":[{"type":"text","value":"Filter"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"String"}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d60f88"},"children":[{"type":"text","value":"ItemList"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": ["}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"Item"}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":"]"}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9d23e5"},"children":[{"type":"text","value":"Int"}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"!"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will setup "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"text","value":" with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"typePolicies"}]},{"type":"text","value":" to merge incoming data in cache:"}]},{"type":"element","tag":"code","props":{"code":"import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n // ...\n cache: new InMemoryCache({ typePolicies }),\n // ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n // query name\n listItems: {\n // apollo will serialize and use keyArgs as unique\n // identifier in cache for every query\n // consider choosing the right fields, \n // i.e. limit and offset won't work here\n keyArgs: [\n 'sort', // primitive type\n 'filter', ['name', 'type'] // nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"InMemoryCache"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-81d2a2"},"children":[{"type":"text","value":"'@apollo/client'"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c33669"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b6b3a1"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a7f3fe"},"children":[{"type":"text","value":"ApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" cache: "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a7f3fe"},"children":[{"type":"text","value":"InMemoryCache"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"({ "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"typePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c33669"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b6b3a1"},"children":[{"type":"text","value":"typePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-597759"},"children":[{"type":"text","value":"TypePolicies"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" Query: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" fields: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// query name"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" listItems: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// apollo will serialize and use keyArgs as unique"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// identifier in cache for every query"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// consider choosing the right fields, "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// i.e. limit and offset won't work here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" keyArgs: ["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-81d2a2"},"children":[{"type":"text","value":"'sort'"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// primitive type"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-81d2a2"},"children":[{"type":"text","value":"'filter'"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":", ["}]},{"type":"element","tag":"span","props":{"class":"ct-81d2a2"},"children":[{"type":"text","value":"'name'"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-81d2a2"},"children":[{"type":"text","value":"'type'"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"] "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// nested fields of `filter`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" ],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" merge: "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We will need merge function "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"text","value":", which will join results of query and cached data for specific key:"}]},{"type":"element","tag":"code","props":{"code":"/** merges all sources with { items: unknown[], totalCount: number } */\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) => {\n // no existing data\n if (!existing || !args?.offset || args.offset < existing.length) {\n return incoming || [];\n }\n\n // If hook was called multiple times\n if (existing?.items?.length && args?.offset < existing.items.length) {\n return existing || [];\n }\n\n // merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n // apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"/** merges all sources with { items: unknown[], totalCount: number } */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-239e82"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f40db7"},"children":[{"type":"text","value":"mergeItemsWithTotalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c31de"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":", { "}]},{"type":"element","tag":"span","props":{"class":"ct-770547"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-239e82"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0cf362"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// no existing data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"args"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"offset"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" [];"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// If hook was called multiple times"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" [];"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// merge cache and incoming data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c33669"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b6b3a1"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37e996"},"children":[{"type":"text","value":"// apply latest result for totalCount"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c33669"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b6b3a1"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"existing"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"incoming"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d95b5"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"items"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e9b930"},"children":[{"type":"text","value":"totalCount"}]},{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce3c96"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-f40db7{color:#D2A8FF}.ct-239e82{color:#FF7B72}.ct-597759{color:#FFA657}.ct-37e996{color:#8B949E}.ct-b6b3a1{color:#79C0FF}.ct-c33669{color:#FF7B72}.ct-81d2a2{color:#A5D6FF}.ct-e9b930{color:#C9D1D9}.ct-3c31de{color:#FF7B72}.ct-d60f88{color:#79C0FF}.ct-9d23e5{color:#79C0FF}.ct-770547{color:#FFA657}.ct-0cf362{color:#C9D1D9}.ct-a7f3fe{color:#D2A8FF}.ct-ce3c96{color:#C9D1D9}.ct-4d95b5{color:#FF7B72}.light .ct-4d95b5{color:#859900}.light .ct-ce3c96{color:#657B83}.light .ct-a7f3fe{color:#268BD2}.light .ct-0cf362{color:#657B83}.light .ct-770547{color:#657B83}.light .ct-9d23e5{color:#859900}.light .ct-d60f88{color:#859900}.light .ct-3c31de{color:#859900}.light .ct-e9b930{color:#268BD2}.light .ct-81d2a2{color:#2AA198}.light .ct-c33669{color:#073642}.light .ct-b6b3a1{color:#268BD2}.light .ct-37e996{color:#93A1A1}.light .ct-597759{color:#268BD2}.light .ct-239e82{color:#073642}.light .ct-f40db7{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:GraphQL:Apollo Client pagination.md","_source":"content","_file":"GraphQL/Apollo Client pagination.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/4AUGrl0JGY.json b/api/_content/query/4AUGrl0JGY.json index 8af369f..7346572 100644 --- a/api/_content/query/4AUGrl0JGY.json +++ b/api/_content/query/4AUGrl0JGY.json @@ -1 +1 @@ -{"_path":"/docker/wait-for-redis","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Wait For Redis","description":"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful ping or exits with non-zero status after 3 minutes."}]},{"type":"element","tag":"code","props":{"code":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20mysql"},"children":[{"type":"text","value":"Wait for mysql"}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful ping or exits with non-zero status after 3 minutes."}]},{"type":"element","tag":"code","props":{"code":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3933ec"},"children":[{"type":"text","value":"# Waits for redis to become actually available"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-712eb8"},"children":[{"type":"text","value":"wait_for_redis"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":"() {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" timeout=180 "}]},{"type":"element","tag":"span","props":{"class":"ct-3933ec"},"children":[{"type":"text","value":"# 3 minutes"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" i=0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"while"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-3c95ff"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" -it "}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" redis-cli -h localhost -p 6379 -a "}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" ping "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" grep "}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\"PONG\""}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":"/dev/null "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"2>&1;"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"do"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" sleep 1"}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" i="}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"$(("}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-c59f22"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" [[ "}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"-ge"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"timeout"}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" ]]"}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":";"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c95ff"},"children":[{"type":"text","value":"echo"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":"\"[Error] can't properly ping Redis container after "}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-3559ef"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-b3bdff"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-36cb98"},"children":[{"type":"text","value":" secs\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c95ff"},"children":[{"type":"text","value":"exit"}]},{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" 1"}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"fi"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d18ad"},"children":[{"type":"text","value":"done"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d4fcbb"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3933ec"},"children":[{"type":"text","value":"# usage: wait_for_redis miin-redis-dev password"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20mysql"},"children":[{"type":"text","value":"Wait for mysql"}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-c59f22{color:#79C0FF}.ct-3559ef{color:#C9D1D9}.ct-b3bdff{color:#C9D1D9}.ct-36cb98{color:#A5D6FF}.ct-3c95ff{color:#79C0FF}.ct-1d18ad{color:#FF7B72}.ct-d4fcbb{color:#C9D1D9}.ct-712eb8{color:#D2A8FF}.ct-3933ec{color:#8B949E}.light .ct-3933ec{color:#93A1A1}.light .ct-712eb8{color:#268BD2}.light .ct-d4fcbb{color:#657B83}.light .ct-1d18ad{color:#859900}.light .ct-3c95ff{color:#268BD2}.light .ct-36cb98{color:#2AA198}.light .ct-b3bdff{color:#859900}.light .ct-3559ef{color:#268BD2}.light .ct-c59f22{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Wait for redis.md","_source":"content","_file":"Docker/Wait for redis.md","_extension":"md"} \ No newline at end of file +{"_path":"/docker/wait-for-redis","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Wait For Redis","description":"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful ping or exits with non-zero status after 3 minutes."}]},{"type":"element","tag":"code","props":{"code":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20mysql"},"children":[{"type":"text","value":"Wait for mysql"}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful ping or exits with non-zero status after 3 minutes."}]},{"type":"element","tag":"code","props":{"code":"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1cf9ad"},"children":[{"type":"text","value":"# Waits for redis to become actually available"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa61be"},"children":[{"type":"text","value":"wait_for_redis"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":"() {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" timeout=180 "}]},{"type":"element","tag":"span","props":{"class":"ct-1cf9ad"},"children":[{"type":"text","value":"# 3 minutes"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" i=0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"while"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-b696db"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" -it "}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" redis-cli -h localhost -p 6379 -a "}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" ping "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" grep "}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\"PONG\""}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":"/dev/null "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"2>&1;"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"do"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" sleep 1"}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" i="}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"$(("}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-4c6ed7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" [[ "}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"-ge"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"timeout"}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" ]]"}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":";"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b696db"},"children":[{"type":"text","value":"echo"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":"\"[Error] can't properly ping Redis container after "}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-6155df"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-e15e70"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-72164b"},"children":[{"type":"text","value":" secs\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b696db"},"children":[{"type":"text","value":"exit"}]},{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" 1"}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"fi"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a537d"},"children":[{"type":"text","value":"done"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113bf5"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1cf9ad"},"children":[{"type":"text","value":"# usage: wait_for_redis miin-redis-dev password"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20mysql"},"children":[{"type":"text","value":"Wait for mysql"}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-4c6ed7{color:#79C0FF}.ct-6155df{color:#C9D1D9}.ct-e15e70{color:#C9D1D9}.ct-72164b{color:#A5D6FF}.ct-b696db{color:#79C0FF}.ct-1a537d{color:#FF7B72}.ct-113bf5{color:#C9D1D9}.ct-aa61be{color:#D2A8FF}.ct-1cf9ad{color:#8B949E}.light .ct-1cf9ad{color:#93A1A1}.light .ct-aa61be{color:#268BD2}.light .ct-113bf5{color:#657B83}.light .ct-1a537d{color:#859900}.light .ct-b696db{color:#268BD2}.light .ct-72164b{color:#2AA198}.light .ct-e15e70{color:#859900}.light .ct-6155df{color:#268BD2}.light .ct-4c6ed7{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Wait for redis.md","_source":"content","_file":"Docker/Wait for redis.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/8cFyiEqgoq.json b/api/_content/query/8cFyiEqgoq.json index 88587f4..b1ca441 100644 --- a/api/_content/query/8cFyiEqgoq.json +++ b/api/_content/query/8cFyiEqgoq.json @@ -1 +1 @@ -{"_path":"/blockchain/common-typescript-examples","_dir":"blockchain","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Common Typescript Examples","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple #dapp example for tests: "},{"type":"element","tag":"a","props":{"href":"https://metamask.github.io/test-dapp/","rel":["nofollow"]},"children":[{"type":"text","value":"https://metamask.github.io/test-dapp/"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interaction with smart contracts described in "},{"type":"element","tag":"a","props":{"href":"Smart%20contracts"},"children":[{"type":"text","value":"Smart contracts"}]}]}]},{"type":"element","tag":"h2","props":{"id":"connecting-to-node"},"children":[{"type":"text","value":"Connecting to node"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If #Metamask extension installed, "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Web3.givenProvider"}]},{"type":"text","value":" is available in global window. You can use "},{"type":"element","tag":"a","props":{"href":"https://infura.io","rel":["nofollow"]},"children":[{"type":"text","value":"Infura"}]},{"type":"text","value":" or your node instead:"}]},{"type":"element","tag":"code","props":{"code":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-balance"},"children":[{"type":"text","value":"Getting wallet balance"}]},{"type":"element","tag":"code","props":{"code":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-address"},"children":[{"type":"text","value":"Getting wallet address"}]},{"type":"element","tag":"code","props":{"code":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"sending-transaction"},"children":[{"type":"text","value":"Sending transaction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sending "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"value"}]},{"type":"text","value":" tokens with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"memo"}]},{"type":"text","value":" as value:"}]},{"type":"element","tag":"code","props":{"code":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"estimating-transaction-fee"},"children":[{"type":"text","value":"Estimating transaction FEE"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful to get fixed amount of tokens from user with pre-estimated fee."}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-wallet-address-change"},"children":[{"type":"text","value":"Subscribing to wallet address change"}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"watching-network-change"},"children":[{"type":"text","value":"Watching network change"}]},{"type":"element","tag":"code","props":{"code":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"adding-custom-token-to-wallet"},"children":[{"type":"text","value":"Adding custom token to wallet"}]},{"type":"element","tag":"code","props":{"code":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"changing-network-to-custom"},"children":[{"type":"text","value":"Changing network to custom"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Checking current chainId:"}]},{"type":"element","tag":"code","props":{"code":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Asking wallet to change current network:"}]},{"type":"element","tag":"code","props":{"code":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple #dapp example for tests: "},{"type":"element","tag":"a","props":{"href":"https://metamask.github.io/test-dapp/","rel":["nofollow"]},"children":[{"type":"text","value":"https://metamask.github.io/test-dapp/"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interaction with smart contracts described in "},{"type":"element","tag":"a","props":{"href":"Smart%20contracts"},"children":[{"type":"text","value":"Smart contracts"}]}]}]},{"type":"element","tag":"h2","props":{"id":"connecting-to-node"},"children":[{"type":"text","value":"Connecting to node"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If #Metamask extension installed, "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Web3.givenProvider"}]},{"type":"text","value":" is available in global window. You can use "},{"type":"element","tag":"a","props":{"href":"https://infura.io","rel":["nofollow"]},"children":[{"type":"text","value":"Infura"}]},{"type":"text","value":" or your node instead:"}]},{"type":"element","tag":"code","props":{"code":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'web3'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// URL of your node"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://...'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"givenProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-balance"},"children":[{"type":"text","value":"Getting wallet balance"}]},{"type":"element","tag":"code","props":{"code":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-29d072"},"children":[{"type":"text","value":"getBalance"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b68cca"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-5263e7"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-b68cca"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c3adee"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getBalance"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-address"},"children":[{"type":"text","value":"Getting wallet address"}]},{"type":"element","tag":"code","props":{"code":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// first we need to authorize"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'eth_requestAccounts'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// then we can get wallet address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getCurrentAddressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"selectedAddress"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"sending-transaction"},"children":[{"type":"text","value":"Sending transaction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sending "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"value"}]},{"type":"text","value":" tokens with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"memo"}]},{"type":"text","value":" as value:"}]},{"type":"element","tag":"code","props":{"code":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"transfer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ({ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"nonce"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getTransactionCount"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"rawTx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" value: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toWei"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ether'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" gasLimit: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" gasPrice: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" nonce: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"nonce"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"privateKeyBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"EthUtil"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"Transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"rawTx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"sign"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"privateKeyBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"serializedTx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"serialize"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"this"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"sendSignedTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"`0x${"}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"serializedTx"}]},{"type":"element","tag":"span","props":{"class":"ct-67aa5d"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-67aa5d"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'hex'"}]},{"type":"element","tag":"span","props":{"class":"ct-67aa5d"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"}`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"estimating-transaction-fee"},"children":[{"type":"text","value":"Estimating transaction FEE"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful to get fixed amount of tokens from user with pre-estimated fee."}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"estimateFee"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8ae2fc"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"estimateGas"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" value: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toWei"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ether'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"asciiToHex"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"fromWei"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7e4ae9"},"children":[{"type":"text","value":"BigInt"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"())"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"multiply"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-7e4ae9"},"children":[{"type":"text","value":"BigInt"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"()))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-wallet-address-change"},"children":[{"type":"text","value":"Subscribing to wallet address change"}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'accountsChanged'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"callback"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"watching-network-change"},"children":[{"type":"text","value":"Watching network change"}]},{"type":"element","tag":"code","props":{"code":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'chainChanged'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"handler"}]},{"type":"element","tag":"span","props":{"class":"ct-5b649c"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"adding-custom-token-to-wallet"},"children":[{"type":"text","value":"Adding custom token to wallet"}]},{"type":"element","tag":"code","props":{"code":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'wallet_watchAsset'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" params: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" type: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ERC20'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" options: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" address: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'0xb60e8dd61c5d32be8058bb8eb970870f07233155'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" symbol: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'FOO'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" decimals: "}]},{"type":"element","tag":"span","props":{"class":"ct-257ab4"},"children":[{"type":"text","value":"18"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" image: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://foo.io/token-image.svg'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-29d072"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-5263e7"},"children":[{"type":"text","value":"success"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-eae8ac"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e10e80"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"success"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'FOO successfully added to wallet!'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7e4ae9"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'Something went wrong.'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"changing-network-to-custom"},"children":[{"type":"text","value":"Changing network to custom"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Checking current chainId:"}]},{"type":"element","tag":"code","props":{"code":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"getChainID"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-78a5db"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'eth_chainId'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Asking wallet to change current network:"}]},{"type":"element","tag":"code","props":{"code":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'wallet_switchEthereumChain'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" params: [{ chainId: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'0x03'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }], "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// ropsten chainID (3) in hex"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"switchError"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// This error code indicates that the chain has not been added to MetaMask."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"code"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-257ab4"},"children":[{"type":"text","value":"4902"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-54055d"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'wallet_addEthereumChain'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" params: [{ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" chainId: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'0x03'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// ropsten chainID (3) in hex"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" chainName: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'Ropsten Test Network'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" nativeCurrency: { "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" name: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ETH'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" symbol: "}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'ETH'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" decimals: "}]},{"type":"element","tag":"span","props":{"class":"ct-257ab4"},"children":[{"type":"text","value":"18"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }, "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" rpcUrls: ["}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"], "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" blockExplorerUrls: ["}]},{"type":"element","tag":"span","props":{"class":"ct-422a59"},"children":[{"type":"text","value":"'https://ropsten.etherscan.io'"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"] "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }] ,"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0b52da"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-98be25"},"children":[{"type":"text","value":"addError"}]},{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// handle \"add\" error"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8e9ae2"},"children":[{"type":"text","value":"// handle other \"switch\" errors"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2a2380"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-257ab4{color:#79C0FF}.ct-5b649c{color:#C9D1D9}.ct-7e4ae9{color:#79C0FF}.ct-67aa5d{color:#A5D6FF}.ct-c3adee{color:#79C0FF}.ct-5263e7{color:#FFA657}.ct-b68cca{color:#FF7B72}.ct-29d072{color:#D2A8FF}.ct-e10e80{color:#C9D1D9}.ct-eae8ac{color:#FF7B72}.ct-54055d{color:#D2A8FF}.ct-8ae2fc{color:#79C0FF}.ct-78a5db{color:#FF7B72}.ct-8e9ae2{color:#8B949E}.ct-422a59{color:#A5D6FF}.ct-98be25{color:#C9D1D9}.ct-2a2380{color:#C9D1D9}.ct-0b52da{color:#FF7B72}.light .ct-0b52da{color:#859900}.light .ct-2a2380{color:#657B83}.light .ct-98be25{color:#268BD2}.light .ct-422a59{color:#2AA198}.light .ct-8e9ae2{color:#93A1A1}.light .ct-78a5db{color:#073642}.light .ct-8ae2fc{color:#268BD2}.light .ct-54055d{color:#268BD2}.light .ct-eae8ac{color:#073642}.light .ct-e10e80{color:#657B83}.light .ct-29d072{color:#268BD2}.light .ct-b68cca{color:#859900}.light .ct-5263e7{color:#657B83}.light .ct-c3adee{color:#859900}.light .ct-67aa5d{color:#657B83}.light .ct-7e4ae9{color:#859900}.light .ct-5b649c{color:#859900}.light .ct-257ab4{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"connecting-to-node","depth":2,"text":"Connecting to node"},{"id":"getting-wallet-balance","depth":2,"text":"Getting wallet balance"},{"id":"getting-wallet-address","depth":2,"text":"Getting wallet address"},{"id":"sending-transaction","depth":2,"text":"Sending transaction"},{"id":"estimating-transaction-fee","depth":2,"text":"Estimating transaction FEE"},{"id":"subscribing-to-wallet-address-change","depth":2,"text":"Subscribing to wallet address change"},{"id":"watching-network-change","depth":2,"text":"Watching network change"},{"id":"adding-custom-token-to-wallet","depth":2,"text":"Adding custom token to wallet"},{"id":"changing-network-to-custom","depth":2,"text":"Changing network to custom"}]}},"_type":"markdown","_id":"content:Blockchain:Common typescript examples.md","_source":"content","_file":"Blockchain/Common typescript examples.md","_extension":"md"} \ No newline at end of file +{"_path":"/blockchain/common-typescript-examples","_dir":"blockchain","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Common Typescript Examples","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple #dapp example for tests: "},{"type":"element","tag":"a","props":{"href":"https://metamask.github.io/test-dapp/","rel":["nofollow"]},"children":[{"type":"text","value":"https://metamask.github.io/test-dapp/"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interaction with smart contracts described in "},{"type":"element","tag":"a","props":{"href":"Smart%20contracts"},"children":[{"type":"text","value":"Smart contracts"}]}]}]},{"type":"element","tag":"h2","props":{"id":"connecting-to-node"},"children":[{"type":"text","value":"Connecting to node"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If #Metamask extension installed, "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Web3.givenProvider"}]},{"type":"text","value":" is available in global window. You can use "},{"type":"element","tag":"a","props":{"href":"https://infura.io","rel":["nofollow"]},"children":[{"type":"text","value":"Infura"}]},{"type":"text","value":" or your node instead:"}]},{"type":"element","tag":"code","props":{"code":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-balance"},"children":[{"type":"text","value":"Getting wallet balance"}]},{"type":"element","tag":"code","props":{"code":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-address"},"children":[{"type":"text","value":"Getting wallet address"}]},{"type":"element","tag":"code","props":{"code":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"sending-transaction"},"children":[{"type":"text","value":"Sending transaction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sending "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"value"}]},{"type":"text","value":" tokens with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"memo"}]},{"type":"text","value":" as value:"}]},{"type":"element","tag":"code","props":{"code":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"estimating-transaction-fee"},"children":[{"type":"text","value":"Estimating transaction FEE"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful to get fixed amount of tokens from user with pre-estimated fee."}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-wallet-address-change"},"children":[{"type":"text","value":"Subscribing to wallet address change"}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"watching-network-change"},"children":[{"type":"text","value":"Watching network change"}]},{"type":"element","tag":"code","props":{"code":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"adding-custom-token-to-wallet"},"children":[{"type":"text","value":"Adding custom token to wallet"}]},{"type":"element","tag":"code","props":{"code":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"changing-network-to-custom"},"children":[{"type":"text","value":"Changing network to custom"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Checking current chainId:"}]},{"type":"element","tag":"code","props":{"code":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Asking wallet to change current network:"}]},{"type":"element","tag":"code","props":{"code":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Simple #dapp example for tests: "},{"type":"element","tag":"a","props":{"href":"https://metamask.github.io/test-dapp/","rel":["nofollow"]},"children":[{"type":"text","value":"https://metamask.github.io/test-dapp/"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Interaction with smart contracts described in "},{"type":"element","tag":"a","props":{"href":"Smart%20contracts"},"children":[{"type":"text","value":"Smart contracts"}]}]}]},{"type":"element","tag":"h2","props":{"id":"connecting-to-node"},"children":[{"type":"text","value":"Connecting to node"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If #Metamask extension installed, "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Web3.givenProvider"}]},{"type":"text","value":" is available in global window. You can use "},{"type":"element","tag":"a","props":{"href":"https://infura.io","rel":["nofollow"]},"children":[{"type":"text","value":"Infura"}]},{"type":"text","value":" or your node instead:"}]},{"type":"element","tag":"code","props":{"code":"import Web3 from 'web3';\n\n// URL of your node\nconst PROVIDER_URL = 'https://...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'web3'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// URL of your node"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'https://...'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"givenProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-balance"},"children":[{"type":"text","value":"Getting wallet balance"}]},{"type":"element","tag":"code","props":{"code":"const getBalance = async (address: string) => {\n return await web3.eth.getBalance(address);\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4f206d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-63eb51"},"children":[{"type":"text","value":"getBalance"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e57fac"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f206d"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-194e55"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-e57fac"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d54e3e"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-4f206d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getBalance"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"getting-wallet-address"},"children":[{"type":"text","value":"Getting wallet address"}]},{"type":"element","tag":"code","props":{"code":"// first we need to authorize\nconst authorize = async () => {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n// then we can get wallet address\nconst getCurrentAddressUser = () => {\n return web3.currentProvider.selectedAddress;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// first we need to authorize"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'eth_requestAccounts'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// then we can get wallet address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getCurrentAddressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"selectedAddress"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"sending-transaction"},"children":[{"type":"text","value":"Sending transaction"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sending "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"value"}]},{"type":"text","value":" tokens with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"memo"}]},{"type":"text","value":" as value:"}]},{"type":"element","tag":"code","props":{"code":"\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) => {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"transfer"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ({ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"nonce"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getTransactionCount"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"rawTx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" value: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toWei"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'ether'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":")),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" gasLimit: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" gasPrice: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" nonce: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"nonce"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"privateKeyBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"EthUtil"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"Transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"rawTx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"sign"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"privateKeyBuffer"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"serializedTx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"tx"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"serialize"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"this"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"sendSignedTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"`0x${"}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"serializedTx"}]},{"type":"element","tag":"span","props":{"class":"ct-f4b88e"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-f4b88e"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'hex'"}]},{"type":"element","tag":"span","props":{"class":"ct-f4b88e"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"}`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"estimating-transaction-fee"},"children":[{"type":"text","value":"Estimating transaction FEE"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful to get fixed amount of tokens from user with pre-estimated fee."}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) => {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"estimateFee"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eff62d"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"estimateGas"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"to"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" value: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toWei"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'ether'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":")),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"asciiToHex"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"memo"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" })."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"utils"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"fromWei"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-60c772"},"children":[{"type":"text","value":"BigInt"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"gasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"())"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"multiply"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-60c772"},"children":[{"type":"text","value":"BigInt"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"gasLimit"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"()))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"toString"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-wallet-address-change"},"children":[{"type":"text","value":"Subscribing to wallet address change"}]},{"type":"element","tag":"code","props":{"code":"import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'accountsChanged'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"callback"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"watching-network-change"},"children":[{"type":"text","value":"Watching network change"}]},{"type":"element","tag":"code","props":{"code":"ethereum.on('chainChanged', handler: (chainId: string) => void);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'chainChanged'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"handler"}]},{"type":"element","tag":"span","props":{"class":"ct-ee59bc"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"adding-custom-token-to-wallet"},"children":[{"type":"text","value":"Adding custom token to wallet"}]},{"type":"element","tag":"code","props":{"code":"window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https://foo.io/token-image.svg',\n },\n },\n })\n .then((success) => {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"ethereum"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'wallet_watchAsset'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" params: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" type: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'ERC20'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" options: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" address: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'0xb60e8dd61c5d32be8058bb8eb970870f07233155'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" symbol: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'FOO'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" decimals: "}]},{"type":"element","tag":"span","props":{"class":"ct-bc9ce6"},"children":[{"type":"text","value":"18"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" image: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'https://foo.io/token-image.svg'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-63eb51"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-194e55"},"children":[{"type":"text","value":"success"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-4f206d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-c114df"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"success"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'FOO successfully added to wallet!'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-60c772"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'Something went wrong.'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"changing-network-to-custom"},"children":[{"type":"text","value":"Changing network to custom"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Checking current chainId:"}]},{"type":"element","tag":"code","props":{"code":"const getChainID = async () => {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"getChainID"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-c4f869"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'eth_chainId'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Asking wallet to change current network:"}]},{"type":"element","tag":"code","props":{"code":"try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex\n });\n} catch (switchError) {\n // This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', // ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https://ropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n // handle \"add\" error\n }\n }\n // handle other \"switch\" errors\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'wallet_switchEthereumChain'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" params: [{ chainId: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'0x03'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }], "}]},{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// ropsten chainID (3) in hex"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"switchError"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// This error code indicates that the chain has not been added to MetaMask."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"code"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc9ce6"},"children":[{"type":"text","value":"4902"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"window"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"ethereum"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-72dc80"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" method: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'wallet_addEthereumChain'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" params: [{ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" chainId: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'0x03'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// ropsten chainID (3) in hex"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" chainName: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'Ropsten Test Network'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" nativeCurrency: { "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" name: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'ETH'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" symbol: "}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'ETH'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" decimals: "}]},{"type":"element","tag":"span","props":{"class":"ct-bc9ce6"},"children":[{"type":"text","value":"18"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }, "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" rpcUrls: ["}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"], "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" blockExplorerUrls: ["}]},{"type":"element","tag":"span","props":{"class":"ct-a4c2c3"},"children":[{"type":"text","value":"'https://ropsten.etherscan.io'"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"] "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }] ,"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-0fbe3e"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-650166"},"children":[{"type":"text","value":"addError"}]},{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// handle \"add\" error"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b33b32"},"children":[{"type":"text","value":"// handle other \"switch\" errors"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11b678"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-bc9ce6{color:#79C0FF}.ct-ee59bc{color:#C9D1D9}.ct-60c772{color:#79C0FF}.ct-f4b88e{color:#A5D6FF}.ct-d54e3e{color:#79C0FF}.ct-194e55{color:#FFA657}.ct-e57fac{color:#FF7B72}.ct-63eb51{color:#D2A8FF}.ct-c114df{color:#C9D1D9}.ct-4f206d{color:#FF7B72}.ct-72dc80{color:#D2A8FF}.ct-eff62d{color:#79C0FF}.ct-c4f869{color:#FF7B72}.ct-b33b32{color:#8B949E}.ct-a4c2c3{color:#A5D6FF}.ct-650166{color:#C9D1D9}.ct-11b678{color:#C9D1D9}.ct-0fbe3e{color:#FF7B72}.light .ct-0fbe3e{color:#859900}.light .ct-11b678{color:#657B83}.light .ct-650166{color:#268BD2}.light .ct-a4c2c3{color:#2AA198}.light .ct-b33b32{color:#93A1A1}.light .ct-c4f869{color:#073642}.light .ct-eff62d{color:#268BD2}.light .ct-72dc80{color:#268BD2}.light .ct-4f206d{color:#073642}.light .ct-c114df{color:#657B83}.light .ct-63eb51{color:#268BD2}.light .ct-e57fac{color:#859900}.light .ct-194e55{color:#657B83}.light .ct-d54e3e{color:#859900}.light .ct-f4b88e{color:#657B83}.light .ct-60c772{color:#859900}.light .ct-ee59bc{color:#859900}.light .ct-bc9ce6{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"connecting-to-node","depth":2,"text":"Connecting to node"},{"id":"getting-wallet-balance","depth":2,"text":"Getting wallet balance"},{"id":"getting-wallet-address","depth":2,"text":"Getting wallet address"},{"id":"sending-transaction","depth":2,"text":"Sending transaction"},{"id":"estimating-transaction-fee","depth":2,"text":"Estimating transaction FEE"},{"id":"subscribing-to-wallet-address-change","depth":2,"text":"Subscribing to wallet address change"},{"id":"watching-network-change","depth":2,"text":"Watching network change"},{"id":"adding-custom-token-to-wallet","depth":2,"text":"Adding custom token to wallet"},{"id":"changing-network-to-custom","depth":2,"text":"Changing network to custom"}]}},"_type":"markdown","_id":"content:Blockchain:Common typescript examples.md","_source":"content","_file":"Blockchain/Common typescript examples.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/CMMQ5oxSPg.json b/api/_content/query/CMMQ5oxSPg.json index 510b888..32ac03c 100644 --- a/api/_content/query/CMMQ5oxSPg.json +++ b/api/_content/query/CMMQ5oxSPg.json @@ -1 +1 @@ -{"_path":"/frontend/react/axios-with-abortcontroller","_dir":"react","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Axios With AbortController","description":"If you need to cancel some request, use axios with AbortController. Previously axios used cancellation token, but now it's deprecated.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to cancel some request, use "},{"type":"element","tag":"a","props":{"href":"https://axios-http.com/docs/cancellation","rel":["nofollow"]},"children":[{"type":"text","value":"axios with AbortController"}]},{"type":"text","value":". Previously axios used cancellation token, but now it's deprecated."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"AbortController"}]},{"type":"text","value":" can be used with a multiple requests to cancel them at once."}]},{"type":"element","tag":"code","props":{"code":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to cancel some request, use "},{"type":"element","tag":"a","props":{"href":"https://axios-http.com/docs/cancellation","rel":["nofollow"]},"children":[{"type":"text","value":"axios with AbortController"}]},{"type":"text","value":". Previously axios used cancellation token, but now it's deprecated."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"AbortController"}]},{"type":"text","value":" can be used with a multiple requests to cancel them at once."}]},{"type":"element","tag":"code","props":{"code":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ed40b5"},"children":[{"type":"text","value":"\"react\""}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ed40b5"},"children":[{"type":"text","value":"'axios'"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c45372"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"useGetUsers"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c45372"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"AbortController"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"());"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c45372"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c45372"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-ed40b5"},"children":[{"type":"text","value":"\"/\""}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d579a"},"children":[{"type":"text","value":"// params and props here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" signal: "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"signal"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"data"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c45372"},"children":[{"type":"text","value":"cancel"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-1b579c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"abort"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d579a"},"children":[{"type":"text","value":"// controller should be rewritten or all requests will fail"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-91a95e"},"children":[{"type":"text","value":"AbortController"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" }, ["}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"]);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74fa66"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-fc57c0"},"children":[{"type":"text","value":"cancel"}]},{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86dcb7"},"children":[{"type":"text","value":"};"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-3d579a{color:#8B949E}.ct-91a95e{color:#D2A8FF}.ct-c45372{color:#79C0FF}.ct-1b579c{color:#FF7B72}.ct-ed40b5{color:#A5D6FF}.ct-fc57c0{color:#C9D1D9}.ct-86dcb7{color:#C9D1D9}.ct-74fa66{color:#FF7B72}.light .ct-74fa66{color:#859900}.light .ct-86dcb7{color:#657B83}.light .ct-fc57c0{color:#268BD2}.light .ct-ed40b5{color:#2AA198}.light .ct-1b579c{color:#073642}.light .ct-c45372{color:#268BD2}.light .ct-91a95e{color:#268BD2}.light .ct-3d579a{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React:Axios with AbortController.md","_source":"content","_file":"Frontend/React/Axios with AbortController.md","_extension":"md"} \ No newline at end of file +{"_path":"/frontend/react/axios-with-abortcontroller","_dir":"react","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Axios With AbortController","description":"If you need to cancel some request, use axios with AbortController. Previously axios used cancellation token, but now it's deprecated.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to cancel some request, use "},{"type":"element","tag":"a","props":{"href":"https://axios-http.com/docs/cancellation","rel":["nofollow"]},"children":[{"type":"text","value":"axios with AbortController"}]},{"type":"text","value":". Previously axios used cancellation token, but now it's deprecated."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"AbortController"}]},{"type":"text","value":" can be used with a multiple requests to cancel them at once."}]},{"type":"element","tag":"code","props":{"code":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to cancel some request, use "},{"type":"element","tag":"a","props":{"href":"https://axios-http.com/docs/cancellation","rel":["nofollow"]},"children":[{"type":"text","value":"axios with AbortController"}]},{"type":"text","value":". Previously axios used cancellation token, but now it's deprecated."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"AbortController"}]},{"type":"text","value":" can be used with a multiple requests to cancel them at once."}]},{"type":"element","tag":"code","props":{"code":"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () => {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () => {\n const result = await client.get(\"/\", {\n // params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() => {\n controller.current.abort();\n \n // controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-552880"},"children":[{"type":"text","value":"\"react\""}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-552880"},"children":[{"type":"text","value":"'axios'"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a5a4"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"useGetUsers"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a5a4"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"AbortController"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"());"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a5a4"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a5a4"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-552880"},"children":[{"type":"text","value":"\"/\""}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d9a7df"},"children":[{"type":"text","value":"// params and props here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" signal: "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"signal"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"data"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a5a4"},"children":[{"type":"text","value":"cancel"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-486fdb"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"abort"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d9a7df"},"children":[{"type":"text","value":"// controller should be rewritten or all requests will fail"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-74387e"},"children":[{"type":"text","value":"AbortController"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" }, ["}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"controller"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"]);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bcc7f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"get"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-e1d7ee"},"children":[{"type":"text","value":"cancel"}]},{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-98aef3"},"children":[{"type":"text","value":"};"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-d9a7df{color:#8B949E}.ct-74387e{color:#D2A8FF}.ct-69a5a4{color:#79C0FF}.ct-486fdb{color:#FF7B72}.ct-552880{color:#A5D6FF}.ct-e1d7ee{color:#C9D1D9}.ct-98aef3{color:#C9D1D9}.ct-7bcc7f{color:#FF7B72}.light .ct-7bcc7f{color:#859900}.light .ct-98aef3{color:#657B83}.light .ct-e1d7ee{color:#268BD2}.light .ct-552880{color:#2AA198}.light .ct-486fdb{color:#073642}.light .ct-69a5a4{color:#268BD2}.light .ct-74387e{color:#268BD2}.light .ct-d9a7df{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React:Axios with AbortController.md","_source":"content","_file":"Frontend/React/Axios with AbortController.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/DliR2N9mzp.json b/api/_content/query/DliR2N9mzp.json index 9866fc9..162145d 100644 --- a/api/_content/query/DliR2N9mzp.json +++ b/api/_content/query/DliR2N9mzp.json @@ -1 +1 @@ -{"_path":"/linux/setting-up-nginx","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Setting Up NGINX","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"fallback-url-for-spa-s"},"children":[{"type":"text","value":"Fallback url for SPA-s"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-up-for-uploads"},"children":[{"type":"text","value":"Set up for uploads"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"reverse-proxy-for-https"},"children":[{"type":"text","value":"Reverse proxy for https"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given config forwards "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https"}]},{"type":"text","value":" traffic to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"http"}]},{"type":"text","value":" on port "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"8080"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"https://next.vault48.org","rel":["nofollow"]},"children":[{"type":"text","value":"https://next.vault48.org"}]},{"type":"text","value":"\nwith http2 support if possible."}]},{"type":"element","tag":"code","props":{"code":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"fallback-url-for-spa-s"},"children":[{"type":"text","value":"Fallback url for SPA-s"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-25edfe"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab78ad"},"children":[{"type":"text","value":"location"}]},{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aff5a8"},"children":[{"type":"text","value":"/ "}]},{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# First attempt to serve request as file, then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# as directory, then fall back to displaying a 404."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e3a827"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-up-for-uploads"},"children":[{"type":"text","value":"Set up for uploads"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-25edfe"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" client_max_body_size "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"200M;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"reverse-proxy-for-https"},"children":[{"type":"text","value":"Reverse proxy for https"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given config forwards "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https"}]},{"type":"text","value":" traffic to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"http"}]},{"type":"text","value":" on port "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"8080"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"https://next.vault48.org","rel":["nofollow"]},"children":[{"type":"text","value":"https://next.vault48.org"}]},{"type":"text","value":"\nwith http2 support if possible."}]},{"type":"element","tag":"code","props":{"code":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-25edfe"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"80;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" server_name "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"next.vault48.org;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-01c24c"},"children":[{"type":"text","value":"301"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" https://next.vault48.org"}]},{"type":"element","tag":"span","props":{"class":"ct-25244f"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-04bc3c"},"children":[{"type":"text","value":"request_uri"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-25edfe"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"443 ssl http2;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"[::]:443 ssl http2;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69e464"},"children":[{"type":"text","value":"# managed by Certbot"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" ssl_certificate "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/fullchain.pem; "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" ssl_certificate_key "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/privkey.pem; "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" ssl_trusted_certificate "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/chain.pem;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" server_name "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"next.vault48.org;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab78ad"},"children":[{"type":"text","value":"location"}]},{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aff5a8"},"children":[{"type":"text","value":"/ "}]},{"type":"element","tag":"span","props":{"class":"ct-4da7da"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" proxy_redirect "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"off;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"Host "}]},{"type":"element","tag":"span","props":{"class":"ct-25244f"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-04bc3c"},"children":[{"type":"text","value":"host"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"X-Real-IP "}]},{"type":"element","tag":"span","props":{"class":"ct-25244f"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-04bc3c"},"children":[{"type":"text","value":"remote_addr"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"X-Forwarded-For "}]},{"type":"element","tag":"span","props":{"class":"ct-25244f"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-04bc3c"},"children":[{"type":"text","value":"proxy_add_x_forwarded_for"}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2cf3"},"children":[{"type":"text","value":" proxy_pass "}]},{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"http://127.0.0.1:8080;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0bc476"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-04bc3c{color:#C9D1D9}.ct-25244f{color:#C9D1D9}.ct-01c24c{color:#79C0FF}.ct-8d2cf3{color:#FF7B72}.ct-e3a827{color:#FF7B72}.ct-aff5a8{color:#FFA657}.ct-ab78ad{color:#FF7B72}.ct-4da7da{color:#C9D1D9}.ct-69e464{color:#8B949E}.ct-0bc476{color:#C9D1D9}.ct-25edfe{color:#FF7B72}.light .ct-25edfe{color:#073642}.light .ct-0bc476{color:#657B83}.light .ct-69e464{color:#93A1A1}.light .ct-4da7da{color:#657B83}.light .ct-ab78ad{color:#073642}.light .ct-aff5a8{color:#657B83}.light .ct-e3a827{color:#657B83}.light .ct-8d2cf3{color:#859900}.light .ct-01c24c{color:#D33682}.light .ct-25244f{color:#859900}.light .ct-04bc3c{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"fallback-url-for-spa-s","depth":2,"text":"Fallback url for SPA-s"},{"id":"set-up-for-uploads","depth":2,"text":"Set up for uploads"},{"id":"reverse-proxy-for-https","depth":2,"text":"Reverse proxy for https"}]}},"_type":"markdown","_id":"content:Linux:Setting up NGINX.md","_source":"content","_file":"Linux/Setting up NGINX.md","_extension":"md"} \ No newline at end of file +{"_path":"/linux/setting-up-nginx","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Setting Up NGINX","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"fallback-url-for-spa-s"},"children":[{"type":"text","value":"Fallback url for SPA-s"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-up-for-uploads"},"children":[{"type":"text","value":"Set up for uploads"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"reverse-proxy-for-https"},"children":[{"type":"text","value":"Reverse proxy for https"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given config forwards "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https"}]},{"type":"text","value":" traffic to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"http"}]},{"type":"text","value":" on port "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"8080"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"https://next.vault48.org","rel":["nofollow"]},"children":[{"type":"text","value":"https://next.vault48.org"}]},{"type":"text","value":"\nwith http2 support if possible."}]},{"type":"element","tag":"code","props":{"code":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"fallback-url-for-spa-s"},"children":[{"type":"text","value":"Fallback url for SPA-s"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n location / {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri/ =404;\n }\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-987db0"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d15a59"},"children":[{"type":"text","value":"location"}]},{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-689b80"},"children":[{"type":"text","value":"/ "}]},{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# First attempt to serve request as file, then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# as directory, then fall back to displaying a 404."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a1d2b8"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-up-for-uploads"},"children":[{"type":"text","value":"Set up for uploads"}]},{"type":"element","tag":"code","props":{"code":"server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-987db0"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" client_max_body_size "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"200M;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"reverse-proxy-for-https"},"children":[{"type":"text","value":"Reverse proxy for https"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Given config forwards "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https"}]},{"type":"text","value":" traffic to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"http"}]},{"type":"text","value":" on port "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"8080"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"https://next.vault48.org","rel":["nofollow"]},"children":[{"type":"text","value":"https://next.vault48.org"}]},{"type":"text","value":"\nwith http2 support if possible."}]},{"type":"element","tag":"code","props":{"code":"server {\n listen 80;\n server_name next.vault48.org;\n return 301 https://next.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem; \n ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem; \n ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;\n \n server_name next.vault48.org;\n \n location / {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http://127.0.0.1:8080;\n }\n}\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-987db0"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"80;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" server_name "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"next.vault48.org;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-20379f"},"children":[{"type":"text","value":"301"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" https://next.vault48.org"}]},{"type":"element","tag":"span","props":{"class":"ct-f8f6bb"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-162f27"},"children":[{"type":"text","value":"request_uri"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-987db0"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"443 ssl http2;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" listen "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"[::]:443 ssl http2;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2c9af"},"children":[{"type":"text","value":"# managed by Certbot"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" ssl_certificate "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/fullchain.pem; "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" ssl_certificate_key "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/privkey.pem; "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" ssl_trusted_certificate "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"/etc/letsencrypt/live/vault48.org/chain.pem;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" server_name "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"next.vault48.org;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d15a59"},"children":[{"type":"text","value":"location"}]},{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-689b80"},"children":[{"type":"text","value":"/ "}]},{"type":"element","tag":"span","props":{"class":"ct-b09c3f"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" proxy_redirect "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"off;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"Host "}]},{"type":"element","tag":"span","props":{"class":"ct-f8f6bb"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-162f27"},"children":[{"type":"text","value":"host"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"X-Real-IP "}]},{"type":"element","tag":"span","props":{"class":"ct-f8f6bb"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-162f27"},"children":[{"type":"text","value":"remote_addr"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" proxy_set_header "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"X-Forwarded-For "}]},{"type":"element","tag":"span","props":{"class":"ct-f8f6bb"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-162f27"},"children":[{"type":"text","value":"proxy_add_x_forwarded_for"}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-24380b"},"children":[{"type":"text","value":" proxy_pass "}]},{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"http://127.0.0.1:8080;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bd3f01"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-162f27{color:#C9D1D9}.ct-f8f6bb{color:#C9D1D9}.ct-20379f{color:#79C0FF}.ct-24380b{color:#FF7B72}.ct-a1d2b8{color:#FF7B72}.ct-689b80{color:#FFA657}.ct-d15a59{color:#FF7B72}.ct-b09c3f{color:#C9D1D9}.ct-f2c9af{color:#8B949E}.ct-bd3f01{color:#C9D1D9}.ct-987db0{color:#FF7B72}.light .ct-987db0{color:#073642}.light .ct-bd3f01{color:#657B83}.light .ct-f2c9af{color:#93A1A1}.light .ct-b09c3f{color:#657B83}.light .ct-d15a59{color:#073642}.light .ct-689b80{color:#657B83}.light .ct-a1d2b8{color:#657B83}.light .ct-24380b{color:#859900}.light .ct-20379f{color:#D33682}.light .ct-f8f6bb{color:#859900}.light .ct-162f27{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"fallback-url-for-spa-s","depth":2,"text":"Fallback url for SPA-s"},{"id":"set-up-for-uploads","depth":2,"text":"Set up for uploads"},{"id":"reverse-proxy-for-https","depth":2,"text":"Reverse proxy for https"}]}},"_type":"markdown","_id":"content:Linux:Setting up NGINX.md","_source":"content","_file":"Linux/Setting up NGINX.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/EH6LeCIDqM.json b/api/_content/query/EH6LeCIDqM.json index 4d4eb7f..4837789 100644 --- a/api/_content/query/EH6LeCIDqM.json +++ b/api/_content/query/EH6LeCIDqM.json @@ -1 +1 @@ -{"_path":"/docker/private-docker-registry","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Private Docker Registry","description":"Suitable to work with Drone-ci for hosting private #docker images.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suitable to work with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" for hosting private #docker images."}]},{"type":"element","tag":"h2","props":{"id":"sample-docker-compose-for-custom-docker-registry"},"children":[{"type":"text","value":"Sample docker-compose for custom docker registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This one brings up private docker registry with ui. First you'll need to generate password for it:"}]},{"type":"element","tag":"code","props":{"code":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n"}]}]}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"squash-layers-on-registry"},"children":[{"type":"text","value":"Squash layers on registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to squash all layers in docker registry to free up disk space."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Run this command to mark oldest layers"}]}]},{"type":"element","tag":"code","props":{"code":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suitable to work with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" for hosting private #docker images."}]},{"type":"element","tag":"h2","props":{"id":"sample-docker-compose-for-custom-docker-registry"},"children":[{"type":"text","value":"Sample docker-compose for custom docker registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This one brings up private docker registry with ui. First you'll need to generate password for it:"}]},{"type":"element","tag":"code","props":{"code":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":"docker run \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" --entrypoint htpasswd registry:2 \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -Bbn user mypassword "}]},{"type":"element","tag":"span","props":{"class":"ct-411df8"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" auth/registry.password"}]}]}]}]}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"registry"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"docker__registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"registry:2"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"5000:5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_AUTH=htpasswd"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_AUTH_HTPASSWD_REALM=Registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_HTTP_SECRET=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_STORAGE_DELETE_ENABLED=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"./registry/auth:/auth"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"./registry/data:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"ui"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"docker__ui"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"parabuzzle/craneoperator:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"80:80"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6bd705"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_HOST=registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_PORT=5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_PROTOCOL=http"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"ALLOW_REGISTRY_LOGIN=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"REGISTRY_ALLOW_DELETE=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"USERNAME=registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"PASSWORD=password"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"squash-layers-on-registry"},"children":[{"type":"text","value":"Squash layers on registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to squash all layers in docker registry to free up disk space."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Run this command to mark oldest layers"}]}]},{"type":"element","tag":"code","props":{"code":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-278ecf"},"children":[{"type":"text","value":"# Try this first"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":"docker run \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" --rm anoxis/registry-cli \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -r https://registry.url \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -l user:password \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" --delete \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" --num 2"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-278ecf"},"children":[{"type":"text","value":"# Then this "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":"docker run -it \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -v /path/to/registry/data:/registry \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -e REGISTRY_URL=https://registry.url \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -e DRY_RUN="}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" -e REGISTRY_AUTH="}]},{"type":"element","tag":"span","props":{"class":"ct-95d999"},"children":[{"type":"text","value":"\"user:password\""}]},{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf22f1"},"children":[{"type":"text","value":" mortensrasmussen/docker-registry-manifest-cleanup"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-278ecf{color:#8B949E}.ct-95d999{color:#A5D6FF}.ct-6bd705{color:#7EE787}.ct-411df8{color:#FF7B72}.ct-bf22f1{color:#C9D1D9}.light .ct-bf22f1{color:#657B83}.light .ct-411df8{color:#859900}.light .ct-6bd705{color:#268BD2}.light .ct-95d999{color:#2AA198}.light .ct-278ecf{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"sample-docker-compose-for-custom-docker-registry","depth":2,"text":"Sample docker-compose for custom docker registry"},{"id":"squash-layers-on-registry","depth":2,"text":"Squash layers on registry"}]}},"_type":"markdown","_id":"content:Docker:Private docker registry.md","_source":"content","_file":"Docker/Private docker registry.md","_extension":"md"} \ No newline at end of file +{"_path":"/docker/private-docker-registry","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Private Docker Registry","description":"Suitable to work with Drone-ci for hosting private #docker images.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suitable to work with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" for hosting private #docker images."}]},{"type":"element","tag":"h2","props":{"id":"sample-docker-compose-for-custom-docker-registry"},"children":[{"type":"text","value":"Sample docker-compose for custom docker registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This one brings up private docker registry with ui. First you'll need to generate password for it:"}]},{"type":"element","tag":"code","props":{"code":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n"}]}]}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"squash-layers-on-registry"},"children":[{"type":"text","value":"Squash layers on registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to squash all layers in docker registry to free up disk space."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Run this command to mark oldest layers"}]}]},{"type":"element","tag":"code","props":{"code":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Suitable to work with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" for hosting private #docker images."}]},{"type":"element","tag":"h2","props":{"id":"sample-docker-compose-for-custom-docker-registry"},"children":[{"type":"text","value":"Sample docker-compose for custom docker registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This one brings up private docker registry with ui. First you'll need to generate password for it:"}]},{"type":"element","tag":"code","props":{"code":"docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword > auth/registry.password\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":"docker run \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" --entrypoint htpasswd registry:2 \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -Bbn user mypassword "}]},{"type":"element","tag":"span","props":{"class":"ct-dee827"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" auth/registry.password"}]}]}]}]}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - ./registry/auth:/auth\n - ./registry/data:/data\n ui:\n container_name: docker__ui\n image: parabuzzle/craneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"registry"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"docker__registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"registry:2"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"5000:5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_AUTH=htpasswd"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_AUTH_HTPASSWD_REALM=Registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_HTTP_SECRET=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_STORAGE_DELETE_ENABLED=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"./registry/auth:/auth"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"./registry/data:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"ui"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"docker__ui"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"parabuzzle/craneoperator:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"80:80"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cb7cf9"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_HOST=registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_PORT=5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_PROTOCOL=http"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"ALLOW_REGISTRY_LOGIN=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"REGISTRY_ALLOW_DELETE=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"USERNAME=registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"PASSWORD=password"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"squash-layers-on-registry"},"children":[{"type":"text","value":"Squash layers on registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to squash all layers in docker registry to free up disk space."}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Run this command to mark oldest layers"}]}]},{"type":"element","tag":"code","props":{"code":"# Try this first\ndocker run \\\n --rm anoxis/registry-cli \\\n -r https://registry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v /path/to/registry/data:/registry \\\n -e REGISTRY_URL=https://registry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen/docker-registry-manifest-cleanup\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-07355f"},"children":[{"type":"text","value":"# Try this first"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":"docker run \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" --rm anoxis/registry-cli \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -r https://registry.url \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -l user:password \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" --delete \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" --num 2"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-07355f"},"children":[{"type":"text","value":"# Then this "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":"docker run -it \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -v /path/to/registry/data:/registry \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -e REGISTRY_URL=https://registry.url \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -e DRY_RUN="}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" -e REGISTRY_AUTH="}]},{"type":"element","tag":"span","props":{"class":"ct-70f4bc"},"children":[{"type":"text","value":"\"user:password\""}]},{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aad9c7"},"children":[{"type":"text","value":" mortensrasmussen/docker-registry-manifest-cleanup"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-07355f{color:#8B949E}.ct-70f4bc{color:#A5D6FF}.ct-cb7cf9{color:#7EE787}.ct-dee827{color:#FF7B72}.ct-aad9c7{color:#C9D1D9}.light .ct-aad9c7{color:#657B83}.light .ct-dee827{color:#859900}.light .ct-cb7cf9{color:#268BD2}.light .ct-70f4bc{color:#2AA198}.light .ct-07355f{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"sample-docker-compose-for-custom-docker-registry","depth":2,"text":"Sample docker-compose for custom docker registry"},{"id":"squash-layers-on-registry","depth":2,"text":"Squash layers on registry"}]}},"_type":"markdown","_id":"content:Docker:Private docker registry.md","_source":"content","_file":"Docker/Private docker registry.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/FLiVxDo2qK.json b/api/_content/query/FLiVxDo2qK.json index 6b11982..d862b71 100644 --- a/api/_content/query/FLiVxDo2qK.json +++ b/api/_content/query/FLiVxDo2qK.json @@ -1 +1 @@ -{"_path":"/typescript/add-global-variable-to-window","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Add Global Variable To Window","description":"Sometimes you want to add global variable to your window. That thing's called global module augmentation.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you want to add global variable to your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":". That thing's called "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"global module augmentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say you need to call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.doFancyThings()"}]},{"type":"text","value":". For that you should augment global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":" interface in "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"*.d.ts"}]},{"type":"text","value":" file:"}]},{"type":"element","tag":"code","props":{"code":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is useful for declaring global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.ethereum"}]},{"type":"text","value":" (or "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.web3"}]},{"type":"text","value":") in "},{"type":"element","tag":"a","props":{"href":"/blockchain/Common%20typescript%20examples"},"children":[{"type":"text","value":"blockchain"}]},{"type":"text","value":" projects with typescript, which use wallet browser extensions."}]},{"type":"element","tag":"h2","props":{"id":"augmenting-existing-interface"},"children":[{"type":"text","value":"Augmenting existing interface"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you have class "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Sample"}]},{"type":"text","value":" without any functionality:"}]},{"type":"element","tag":"code","props":{"code":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then you want extend it with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"doFancyThings()"}]},{"type":"text","value":" method. That can be achieved with said "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"module augmentation"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now you can call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"sample.doFancyThings()"}]},{"type":"text","value":" by importing both "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".ts"}]},{"type":"text","value":" files:"}]},{"type":"element","tag":"code","props":{"code":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This example is useful for "},{"type":"element","tag":"a","props":{"href":"./Frontend/Vue/Adding%20global%20properties%20to%20component"},"children":[{"type":"text","value":"adding global properties to component"}]},{"type":"text","value":" in vue.js."}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you want to add global variable to your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":". That thing's called "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"global module augmentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say you need to call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.doFancyThings()"}]},{"type":"text","value":". For that you should augment global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":" interface in "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"*.d.ts"}]},{"type":"text","value":" file:"}]},{"type":"element","tag":"code","props":{"code":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6d07e8"},"children":[{"type":"text","value":"global"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-683640"},"children":[{"type":"text","value":"Window"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6e853e"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b1b3e1"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is useful for declaring global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.ethereum"}]},{"type":"text","value":" (or "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.web3"}]},{"type":"text","value":") in "},{"type":"element","tag":"a","props":{"href":"/blockchain/Common%20typescript%20examples"},"children":[{"type":"text","value":"blockchain"}]},{"type":"text","value":" projects with typescript, which use wallet browser extensions."}]},{"type":"element","tag":"h2","props":{"id":"augmenting-existing-interface"},"children":[{"type":"text","value":"Augmenting existing interface"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you have class "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Sample"}]},{"type":"text","value":" without any functionality:"}]},{"type":"element","tag":"code","props":{"code":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a7eca"},"children":[{"type":"text","value":"// Sample.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"class"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-683640"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a7eca"},"children":[{"type":"text","value":"// nothing :-)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then you want extend it with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"doFancyThings()"}]},{"type":"text","value":" method. That can be achieved with said "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"module augmentation"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a7eca"},"children":[{"type":"text","value":"// fancyThings.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-6d07e8"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ac84f7"},"children":[{"type":"text","value":"\"./Sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"module"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ac84f7"},"children":[{"type":"text","value":"\"./Sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-683640"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6e853e"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b1b3e1"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now you can call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"sample.doFancyThings()"}]},{"type":"text","value":" by importing both "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".ts"}]},{"type":"text","value":" files:"}]},{"type":"element","tag":"code","props":{"code":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-6d07e8"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ac84f7"},"children":[{"type":"text","value":"\"./sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ac84f7"},"children":[{"type":"text","value":"\"./fancyThings\""}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1eca3e"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bd47e1"},"children":[{"type":"text","value":"sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-035a60"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6e853e"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-6d07e8"},"children":[{"type":"text","value":"sample"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-6e853e"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-284857"},"children":[{"type":"text","value":"(); "}]},{"type":"element","tag":"span","props":{"class":"ct-8a7eca"},"children":[{"type":"text","value":"// ok"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This example is useful for "},{"type":"element","tag":"a","props":{"href":"./Frontend/Vue/Adding%20global%20properties%20to%20component"},"children":[{"type":"text","value":"adding global properties to component"}]},{"type":"text","value":" in vue.js."}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-bd47e1{color:#79C0FF}.ct-ac84f7{color:#A5D6FF}.ct-8a7eca{color:#8B949E}.ct-b1b3e1{color:#79C0FF}.ct-035a60{color:#FF7B72}.ct-6e853e{color:#D2A8FF}.ct-683640{color:#FFA657}.ct-6d07e8{color:#C9D1D9}.ct-284857{color:#C9D1D9}.ct-1eca3e{color:#FF7B72}.light .ct-1eca3e{color:#073642}.light .ct-284857{color:#657B83}.light .ct-6d07e8{color:#268BD2}.light .ct-683640{color:#268BD2}.light .ct-6e853e{color:#268BD2}.light .ct-035a60{color:#859900}.light .ct-b1b3e1{color:#859900}.light .ct-8a7eca{color:#93A1A1}.light .ct-ac84f7{color:#2AA198}.light .ct-bd47e1{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"augmenting-existing-interface","depth":2,"text":"Augmenting existing interface"}]}},"_type":"markdown","_id":"content:Typescript:Add global variable to window.md","_source":"content","_file":"Typescript/Add global variable to window.md","_extension":"md"} \ No newline at end of file +{"_path":"/typescript/add-global-variable-to-window","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Add Global Variable To Window","description":"Sometimes you want to add global variable to your window. That thing's called global module augmentation.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you want to add global variable to your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":". That thing's called "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"global module augmentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say you need to call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.doFancyThings()"}]},{"type":"text","value":". For that you should augment global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":" interface in "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"*.d.ts"}]},{"type":"text","value":" file:"}]},{"type":"element","tag":"code","props":{"code":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is useful for declaring global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.ethereum"}]},{"type":"text","value":" (or "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.web3"}]},{"type":"text","value":") in "},{"type":"element","tag":"a","props":{"href":"/blockchain/Common%20typescript%20examples"},"children":[{"type":"text","value":"blockchain"}]},{"type":"text","value":" projects with typescript, which use wallet browser extensions."}]},{"type":"element","tag":"h2","props":{"id":"augmenting-existing-interface"},"children":[{"type":"text","value":"Augmenting existing interface"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you have class "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Sample"}]},{"type":"text","value":" without any functionality:"}]},{"type":"element","tag":"code","props":{"code":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then you want extend it with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"doFancyThings()"}]},{"type":"text","value":" method. That can be achieved with said "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"module augmentation"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now you can call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"sample.doFancyThings()"}]},{"type":"text","value":" by importing both "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".ts"}]},{"type":"text","value":" files:"}]},{"type":"element","tag":"code","props":{"code":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This example is useful for "},{"type":"element","tag":"a","props":{"href":"./Frontend/Vue/Adding%20global%20properties%20to%20component"},"children":[{"type":"text","value":"adding global properties to component"}]},{"type":"text","value":" in vue.js."}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you want to add global variable to your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":". That thing's called "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#global-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"global module augmentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say you need to call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.doFancyThings()"}]},{"type":"text","value":". For that you should augment global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window"}]},{"type":"text","value":" interface in "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"*.d.ts"}]},{"type":"text","value":" file:"}]},{"type":"element","tag":"code","props":{"code":"declare global {\n interface Window {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5a1180"},"children":[{"type":"text","value":"global"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ea6546"},"children":[{"type":"text","value":"Window"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7ae017"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d883c"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is useful for declaring global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.ethereum"}]},{"type":"text","value":" (or "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"window.web3"}]},{"type":"text","value":") in "},{"type":"element","tag":"a","props":{"href":"/blockchain/Common%20typescript%20examples"},"children":[{"type":"text","value":"blockchain"}]},{"type":"text","value":" projects with typescript, which use wallet browser extensions."}]},{"type":"element","tag":"h2","props":{"id":"augmenting-existing-interface"},"children":[{"type":"text","value":"Augmenting existing interface"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you have class "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Sample"}]},{"type":"text","value":" without any functionality:"}]},{"type":"element","tag":"code","props":{"code":"// Sample.ts\n\nexport class Sample {\n // nothing :-)\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ded3d9"},"children":[{"type":"text","value":"// Sample.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"class"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ea6546"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ded3d9"},"children":[{"type":"text","value":"// nothing :-)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Then you want extend it with "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"doFancyThings()"}]},{"type":"text","value":" method. That can be achieved with said "},{"type":"element","tag":"a","props":{"href":"https://www.typescriptlang.org/docs/handbook/declaration-merging.html#module-augmentation","rel":["nofollow"]},"children":[{"type":"text","value":"module augmentation"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"// fancyThings.ts\nimport { Sample } from \"./Sample\";\n\ndeclare module \"./Sample\" {\n interface Sample {\n doFancyThings: () => void;\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ded3d9"},"children":[{"type":"text","value":"// fancyThings.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-5a1180"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d93ef6"},"children":[{"type":"text","value":"\"./Sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"module"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d93ef6"},"children":[{"type":"text","value":"\"./Sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ea6546"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7ae017"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d883c"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now you can call "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"sample.doFancyThings()"}]},{"type":"text","value":" by importing both "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".ts"}]},{"type":"text","value":" files:"}]},{"type":"element","tag":"code","props":{"code":"import { Sample } from \"./sample\";\nimport \"./fancyThings\";\n\nconst sample = new Sample();\nsample.doFancyThings(); // ok\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-5a1180"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d93ef6"},"children":[{"type":"text","value":"\"./sample\""}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d93ef6"},"children":[{"type":"text","value":"\"./fancyThings\""}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ae58bf"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3f0ca4"},"children":[{"type":"text","value":"sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-79d053"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7ae017"},"children":[{"type":"text","value":"Sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5a1180"},"children":[{"type":"text","value":"sample"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-7ae017"},"children":[{"type":"text","value":"doFancyThings"}]},{"type":"element","tag":"span","props":{"class":"ct-dabb00"},"children":[{"type":"text","value":"(); "}]},{"type":"element","tag":"span","props":{"class":"ct-ded3d9"},"children":[{"type":"text","value":"// ok"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This example is useful for "},{"type":"element","tag":"a","props":{"href":"./Frontend/Vue/Adding%20global%20properties%20to%20component"},"children":[{"type":"text","value":"adding global properties to component"}]},{"type":"text","value":" in vue.js."}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-3f0ca4{color:#79C0FF}.ct-d93ef6{color:#A5D6FF}.ct-ded3d9{color:#8B949E}.ct-0d883c{color:#79C0FF}.ct-79d053{color:#FF7B72}.ct-7ae017{color:#D2A8FF}.ct-ea6546{color:#FFA657}.ct-5a1180{color:#C9D1D9}.ct-dabb00{color:#C9D1D9}.ct-ae58bf{color:#FF7B72}.light .ct-ae58bf{color:#073642}.light .ct-dabb00{color:#657B83}.light .ct-5a1180{color:#268BD2}.light .ct-ea6546{color:#268BD2}.light .ct-7ae017{color:#268BD2}.light .ct-79d053{color:#859900}.light .ct-0d883c{color:#859900}.light .ct-ded3d9{color:#93A1A1}.light .ct-d93ef6{color:#2AA198}.light .ct-3f0ca4{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"augmenting-existing-interface","depth":2,"text":"Augmenting existing interface"}]}},"_type":"markdown","_id":"content:Typescript:Add global variable to window.md","_source":"content","_file":"Typescript/Add global variable to window.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/KIXVn92YTN.json b/api/_content/query/KIXVn92YTN.json index 0cdb1a1..18b60f0 100644 --- a/api/_content/query/KIXVn92YTN.json +++ b/api/_content/query/KIXVn92YTN.json @@ -1 +1 @@ -{"_path":"/frontend/react/axios-refresh-token-on-react","_dir":"react","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Axios Refresh Token On React","description":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":""}]},{"type":"text","value":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props."}]},{"type":"element","tag":"code","props":{"code":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":""}]},{"type":"text","value":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props."}]},{"type":"element","tag":"code","props":{"code":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"\"axios\""}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"React"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"createContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"PropsWithChildren"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"useContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"useEffect"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"\"react\""}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ee9ee3"},"children":[{"type":"text","value":"APIProviderProps"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d45585"},"children":[{"type":"text","value":"PropsWithChildren"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-7e867e"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-7e867e"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d30aee"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"refresh"}]},{"type":"element","tag":"span","props":{"class":"ct-7e867e"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d30aee"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfb75e"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"createContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" client: "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" baseURL: "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"process"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"env"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"NEXT_PUBLIC_API_ENDPOINT"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"APIProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5a9bde"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-5a9bde"},"children":[{"type":"text","value":"APIProviderProps"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" ({ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"children"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" baseURL: "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"process"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"env"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"NEXT_PUBLIC_API_ENDPOINT"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" )."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"<() "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfb75e"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":">(() "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5816b7"},"children":[{"type":"text","value":"// TODO: implement me"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfb75e"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"\"not implemented\""}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"useEffect"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5816b7"},"children":[{"type":"text","value":"// append `access` token to all requests"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"req"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"use"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" Authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"`Bearer ${"}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-26cf42"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfb75e"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5816b7"},"children":[{"type":"text","value":"// refreshing interceptor"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"resp"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"use"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ab524a"},"children":[{"type":"text","value":"function"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"status"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-153c3c"},"children":[{"type":"text","value":"401"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"_retry"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"_retry"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-382864"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5243a"},"children":[{"type":"text","value":"newToken"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" Authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-9941db"},"children":[{"type":"text","value":"\"Bearer \""}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"newToken"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfb75e"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"eject"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"req"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"eject"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"resp"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }, ["}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"refresh"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"]);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"Provider"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"{{ "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" }}"}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":">"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":" {"}]},{"type":"element","tag":"span","props":{"class":"ct-9ac74d"},"children":[{"type":"text","value":"children"}]},{"type":"element","tag":"span","props":{"class":"ct-d2b589"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"useAPI"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-3c0604"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c1cb9a"},"children":[{"type":"text","value":"useContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c58203"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-507769"},"children":[{"type":"text","value":"APIProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-2252d3"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-382864{color:#79C0FF}.ct-153c3c{color:#79C0FF}.ct-26cf42{color:#A5D6FF}.ct-5816b7{color:#8B949E}.ct-5a9bde{color:#FFA657}.ct-f5243a{color:#79C0FF}.ct-dfb75e{color:#79C0FF}.ct-3c0604{color:#FF7B72}.ct-c1cb9a{color:#D2A8FF}.ct-d30aee{color:#79C0FF}.ct-7e867e{color:#FF7B72}.ct-9ac74d{color:#FFA657}.ct-d45585{color:#79C0FF}.ct-ee9ee3{color:#FFA657}.ct-d2b589{color:#C9D1D9}.ct-ab524a{color:#FF7B72}.ct-9941db{color:#A5D6FF}.ct-507769{color:#C9D1D9}.ct-2252d3{color:#C9D1D9}.ct-c58203{color:#FF7B72}.light .ct-c58203{color:#859900}.light .ct-2252d3{color:#657B83}.light .ct-507769{color:#268BD2}.light .ct-9941db{color:#2AA198}.light .ct-ab524a{color:#073642}.light .ct-d2b589{color:#657B83}.light .ct-ee9ee3{color:#268BD2}.light .ct-d45585{color:#657B83}.light .ct-9ac74d{color:#657B83}.light .ct-7e867e{color:#859900}.light .ct-d30aee{color:#859900}.light .ct-c1cb9a{color:#268BD2}.light .ct-3c0604{color:#073642}.light .ct-dfb75e{color:#859900}.light .ct-f5243a{color:#268BD2}.light .ct-5a9bde{color:#268BD2}.light .ct-5816b7{color:#93A1A1}.light .ct-26cf42{color:#657B83}.light .ct-153c3c{color:#D33682}.light .ct-382864{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React:Axios refresh token on React.md","_source":"content","_file":"Frontend/React/Axios refresh token on React.md","_extension":"md"} \ No newline at end of file +{"_path":"/frontend/react/axios-refresh-token-on-react","_dir":"react","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Axios Refresh Token On React","description":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":""}]},{"type":"text","value":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props."}]},{"type":"element","tag":"code","props":{"code":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":""}]},{"type":"text","value":" component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props."}]},{"type":"element","tag":"code","props":{"code":"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () => void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC = ({ \n tokens, \n logout, \n children,\n}) => {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback<() => string>(() => {\n // TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() => {\n if (!tokens.access) {\n return;\n }\n\n // append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) => {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) => {\n Promise.reject(error);\n }\n );\n\n // refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) => {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () => {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAPI = () => useContext(APIContext).client;\n\nexport { APIProvider };\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"\"axios\""}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"React"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"createContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"PropsWithChildren"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"useContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"useEffect"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"\"react\""}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-79a62b"},"children":[{"type":"text","value":"APIProviderProps"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f483ca"},"children":[{"type":"text","value":"PropsWithChildren"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-12a4da"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-12a4da"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d927c0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"refresh"}]},{"type":"element","tag":"span","props":{"class":"ct-12a4da"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d927c0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a350b2"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"createContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" client: "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" baseURL: "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"process"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"env"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"NEXT_PUBLIC_API_ENDPOINT"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"APIProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8bf0d3"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-8bf0d3"},"children":[{"type":"text","value":"APIProviderProps"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" ({ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"children"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"}) "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" baseURL: "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"process"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"env"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"NEXT_PUBLIC_API_ENDPOINT"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" )."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"<() "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a350b2"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":">(() "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfac5d"},"children":[{"type":"text","value":"// TODO: implement me"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a350b2"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"\"not implemented\""}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"useEffect"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfac5d"},"children":[{"type":"text","value":"// append `access` token to all requests"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"req"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"use"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" Authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"`Bearer ${"}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-419752"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a350b2"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfac5d"},"children":[{"type":"text","value":"// refreshing interceptor"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"resp"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"use"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47b4a5"},"children":[{"type":"text","value":"function"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"config"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"status"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f205aa"},"children":[{"type":"text","value":"401"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"_retry"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"_retry"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2dfdaf"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dc0893"},"children":[{"type":"text","value":"newToken"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"originalRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" Authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-a880fe"},"children":[{"type":"text","value":"\"Bearer \""}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"newToken"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a350b2"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"eject"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"req"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"interceptors"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"eject"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"resp"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }, ["}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"access"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"refresh"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"refreshTokens"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"]);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"Provider"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"value"}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"{{ "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" }}"}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":">"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":" {"}]},{"type":"element","tag":"span","props":{"class":"ct-adcb9c"},"children":[{"type":"text","value":"children"}]},{"type":"element","tag":"span","props":{"class":"ct-bc1340"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"useAPI"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-dddbde"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4f8495"},"children":[{"type":"text","value":"useContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"APIContext"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"client"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-10bccc"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-13a8d9"},"children":[{"type":"text","value":"APIProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-e48648"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-2dfdaf{color:#79C0FF}.ct-f205aa{color:#79C0FF}.ct-419752{color:#A5D6FF}.ct-dfac5d{color:#8B949E}.ct-8bf0d3{color:#FFA657}.ct-dc0893{color:#79C0FF}.ct-a350b2{color:#79C0FF}.ct-dddbde{color:#FF7B72}.ct-4f8495{color:#D2A8FF}.ct-d927c0{color:#79C0FF}.ct-12a4da{color:#FF7B72}.ct-adcb9c{color:#FFA657}.ct-f483ca{color:#79C0FF}.ct-79a62b{color:#FFA657}.ct-bc1340{color:#C9D1D9}.ct-47b4a5{color:#FF7B72}.ct-a880fe{color:#A5D6FF}.ct-13a8d9{color:#C9D1D9}.ct-e48648{color:#C9D1D9}.ct-10bccc{color:#FF7B72}.light .ct-10bccc{color:#859900}.light .ct-e48648{color:#657B83}.light .ct-13a8d9{color:#268BD2}.light .ct-a880fe{color:#2AA198}.light .ct-47b4a5{color:#073642}.light .ct-bc1340{color:#657B83}.light .ct-79a62b{color:#268BD2}.light .ct-f483ca{color:#657B83}.light .ct-adcb9c{color:#657B83}.light .ct-12a4da{color:#859900}.light .ct-d927c0{color:#859900}.light .ct-4f8495{color:#268BD2}.light .ct-dddbde{color:#073642}.light .ct-a350b2{color:#859900}.light .ct-dc0893{color:#268BD2}.light .ct-8bf0d3{color:#268BD2}.light .ct-dfac5d{color:#93A1A1}.light .ct-419752{color:#657B83}.light .ct-f205aa{color:#D33682}.light .ct-2dfdaf{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React:Axios refresh token on React.md","_source":"content","_file":"Frontend/React/Axios refresh token on React.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/LKdFxpydAG.json b/api/_content/query/LKdFxpydAG.json index 096ca6a..e8c6218 100644 --- a/api/_content/query/LKdFxpydAG.json +++ b/api/_content/query/LKdFxpydAG.json @@ -1 +1 @@ -{"_path":"/sql/postgress-setup","_dir":"sql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Postgress Setup","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-postgresql-12-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"initial-database-connection"},"children":[{"type":"text","value":"Initial database connection"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A local connection (from the database server) can be done by the following command:"}]},{"type":"element","tag":"code","props":{"code":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-password-for-postgres-database-user"},"children":[{"type":"text","value":"Set password for postgres database user"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The password for the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user can be set the the quick command "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"\\password"}]},{"type":"text","value":"\nor by "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"alter user postgres password 'Supersecret'"}]},{"type":"text","value":". A connection using the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" user\nis still not possible from the \"outside\" hence to the default settings in the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password"},"children":[{"type":"text","value":"Update pg_hba.conf to allow postgres user connections with password"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In order to allow connections of the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user not using OS user\nauthentication, you have to update the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":" which can be found under\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/postgresql/12/main/pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change the last section of the above line to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"md5"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"local all postgres md5\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"local all postgres md5\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A restart is required in order to apply the new configuration:"}]},{"type":"element","tag":"code","props":{"code":"sudo systemctl restart postgresql\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo systemctl restart postgresql\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now a connection from outside the database host is possible e.g."}]},{"type":"element","tag":"code","props":{"code":"psql -U postgres -d postgres -h databasehostname\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"psql -U postgres -d postgres -h databasehostname\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-database-users"},"children":[{"type":"text","value":"Creation of additional database users"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A database user can be created by the following command:"}]},{"type":"element","tag":"code","props":{"code":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-databases"},"children":[{"type":"text","value":"Creation of additional databases"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One can create new Postgres databases within an instance. Therefore you can use the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"psql"}]},{"type":"text","value":"\ncommand to login (see above)."}]},{"type":"element","tag":"code","props":{"code":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can leave the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"OWNER"}]},{"type":"text","value":" section of the command, when doing so, the current user will become\nowner of the newly created database."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To change the owner of an existing database later, you can use the following command:"}]},{"type":"element","tag":"code","props":{"code":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-postgresql-12-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo apt update"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo apt install -y postgresql postgresql-contrib postgresql-client"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo systemctl status postgresql.service"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"initial-database-connection"},"children":[{"type":"text","value":"Initial database connection"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A local connection (from the database server) can be done by the following command:"}]},{"type":"element","tag":"code","props":{"code":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo -u postgres psql"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"Type "}]},{"type":"element","tag":"span","props":{"class":"ct-ccb54b"},"children":[{"type":"text","value":"\"help\""}]},{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6a5d2b"},"children":[{"type":"text","value":"for"}]},{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":" help."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"postgres="}]},{"type":"element","tag":"span","props":{"class":"ct-158649"},"children":[{"type":"text","value":"#"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-password-for-postgres-database-user"},"children":[{"type":"text","value":"Set password for postgres database user"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The password for the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user can be set the the quick command "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"\\password"}]},{"type":"text","value":"\nor by "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"alter user postgres password 'Supersecret'"}]},{"type":"text","value":". A connection using the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" user\nis still not possible from the \"outside\" hence to the default settings in the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password"},"children":[{"type":"text","value":"Update pg_hba.conf to allow postgres user connections with password"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In order to allow connections of the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user not using OS user\nauthentication, you have to update the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":" which can be found under\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/postgresql/12/main/pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo vi /etc/postgresql/12/main/pg_hba.conf"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-614fd0"},"children":[{"type":"text","value":"local"}]},{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":" all postgres peer"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"..."}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change the last section of the above line to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"md5"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"local all postgres md5\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"local all postgres md5"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A restart is required in order to apply the new configuration:"}]},{"type":"element","tag":"code","props":{"code":"sudo systemctl restart postgresql\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"sudo systemctl restart postgresql"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now a connection from outside the database host is possible e.g."}]},{"type":"element","tag":"code","props":{"code":"psql -U postgres -d postgres -h databasehostname\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2afb88"},"children":[{"type":"text","value":"psql -U postgres -d postgres -h databasehostname"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-database-users"},"children":[{"type":"text","value":"Creation of additional database users"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A database user can be created by the following command:"}]},{"type":"element","tag":"code","props":{"code":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-databases"},"children":[{"type":"text","value":"Creation of additional databases"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One can create new Postgres databases within an instance. Therefore you can use the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"psql"}]},{"type":"text","value":"\ncommand to login (see above)."}]},{"type":"element","tag":"code","props":{"code":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can leave the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"OWNER"}]},{"type":"text","value":" section of the command, when doing so, the current user will become\nowner of the newly created database."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To change the owner of an existing database later, you can use the following command:"}]},{"type":"element","tag":"code","props":{"code":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-614fd0{color:#FF7B72}.ct-158649{color:#8B949E}.ct-6a5d2b{color:#FF7B72}.ct-ccb54b{color:#A5D6FF}.ct-2afb88{color:#C9D1D9}.light .ct-2afb88{color:#657B83}.light .ct-ccb54b{color:#2AA198}.light .ct-6a5d2b{color:#859900}.light .ct-158649{color:#93A1A1}.light .ct-614fd0{color:#073642}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"install-postgresql-12-on-ubuntu-2004-lts","depth":2,"text":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"},{"id":"initial-database-connection","depth":2,"text":"Initial database connection"},{"id":"set-password-for-postgres-database-user","depth":2,"text":"Set password for postgres database user","children":[{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password","depth":3,"text":"Update pg_hba.conf to allow postgres user connections with password"}]},{"id":"creation-of-additional-database-users","depth":2,"text":"Creation of additional database users"},{"id":"creation-of-additional-databases","depth":2,"text":"Creation of additional databases"}]}},"_type":"markdown","_id":"content:SQL:Postgress setup.md","_source":"content","_file":"SQL/Postgress setup.md","_extension":"md"} \ No newline at end of file +{"_path":"/sql/postgress-setup","_dir":"sql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Postgress Setup","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-postgresql-12-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"initial-database-connection"},"children":[{"type":"text","value":"Initial database connection"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A local connection (from the database server) can be done by the following command:"}]},{"type":"element","tag":"code","props":{"code":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-password-for-postgres-database-user"},"children":[{"type":"text","value":"Set password for postgres database user"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The password for the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user can be set the the quick command "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"\\password"}]},{"type":"text","value":"\nor by "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"alter user postgres password 'Supersecret'"}]},{"type":"text","value":". A connection using the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" user\nis still not possible from the \"outside\" hence to the default settings in the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password"},"children":[{"type":"text","value":"Update pg_hba.conf to allow postgres user connections with password"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In order to allow connections of the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user not using OS user\nauthentication, you have to update the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":" which can be found under\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/postgresql/12/main/pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change the last section of the above line to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"md5"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"local all postgres md5\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"local all postgres md5\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A restart is required in order to apply the new configuration:"}]},{"type":"element","tag":"code","props":{"code":"sudo systemctl restart postgresql\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo systemctl restart postgresql\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now a connection from outside the database host is possible e.g."}]},{"type":"element","tag":"code","props":{"code":"psql -U postgres -d postgres -h databasehostname\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"psql -U postgres -d postgres -h databasehostname\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-database-users"},"children":[{"type":"text","value":"Creation of additional database users"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A database user can be created by the following command:"}]},{"type":"element","tag":"code","props":{"code":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-databases"},"children":[{"type":"text","value":"Creation of additional databases"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One can create new Postgres databases within an instance. Therefore you can use the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"psql"}]},{"type":"text","value":"\ncommand to login (see above)."}]},{"type":"element","tag":"code","props":{"code":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can leave the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"OWNER"}]},{"type":"text","value":" section of the command, when doing so, the current user will become\nowner of the newly created database."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To change the owner of an existing database later, you can use the following command:"}]},{"type":"element","tag":"code","props":{"code":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-postgresql-12-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install -y postgresql postgresql-contrib postgresql-client\nsudo systemctl status postgresql.service\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo apt update"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo apt install -y postgresql postgresql-contrib postgresql-client"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo systemctl status postgresql.service"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"initial-database-connection"},"children":[{"type":"text","value":"Initial database connection"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A local connection (from the database server) can be done by the following command:"}]},{"type":"element","tag":"code","props":{"code":"sudo -u postgres psql\n\npsql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))\nType \"help\" for help.\n\npostgres=#\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo -u postgres psql"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"Type "}]},{"type":"element","tag":"span","props":{"class":"ct-3f70a1"},"children":[{"type":"text","value":"\"help\""}]},{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-43adcf"},"children":[{"type":"text","value":"for"}]},{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":" help."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"postgres="}]},{"type":"element","tag":"span","props":{"class":"ct-2110ce"},"children":[{"type":"text","value":"#"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"set-password-for-postgres-database-user"},"children":[{"type":"text","value":"Set password for postgres database user"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The password for the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user can be set the the quick command "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"\\password"}]},{"type":"text","value":"\nor by "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"alter user postgres password 'Supersecret'"}]},{"type":"text","value":". A connection using the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" user\nis still not possible from the \"outside\" hence to the default settings in the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password"},"children":[{"type":"text","value":"Update pg_hba.conf to allow postgres user connections with password"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"In order to allow connections of the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"postgres"}]},{"type":"text","value":" database user not using OS user\nauthentication, you have to update the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"pg_hba.conf"}]},{"type":"text","value":" which can be found under\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/postgresql/12/main/pg_hba.conf"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"sudo vi /etc/postgresql/12/main/pg_hba.conf\n\n...\nlocal all postgres peer\n...\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo vi /etc/postgresql/12/main/pg_hba.conf"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-11fa66"},"children":[{"type":"text","value":"local"}]},{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":" all postgres peer"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"..."}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change the last section of the above line to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"md5"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"local all postgres md5\n"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"local all postgres md5"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A restart is required in order to apply the new configuration:"}]},{"type":"element","tag":"code","props":{"code":"sudo systemctl restart postgresql\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"sudo systemctl restart postgresql"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Now a connection from outside the database host is possible e.g."}]},{"type":"element","tag":"code","props":{"code":"psql -U postgres -d postgres -h databasehostname\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d033e5"},"children":[{"type":"text","value":"psql -U postgres -d postgres -h databasehostname"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-database-users"},"children":[{"type":"text","value":"Creation of additional database users"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"A database user can be created by the following command:"}]},{"type":"element","tag":"code","props":{"code":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"create user myuser with encrypted password 'Supersecret';\nCREATE ROLE\n\npostgres=# \\du\n List of roles\n Role name | Attributes | Member of\n-----------+------------------------------------------------------------+-----------\n myuser | | {}\n postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"creation-of-additional-databases"},"children":[{"type":"text","value":"Creation of additional databases"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"One can create new Postgres databases within an instance. Therefore you can use the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"psql"}]},{"type":"text","value":"\ncommand to login (see above)."}]},{"type":"element","tag":"code","props":{"code":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"CREATE DATABASE dbname OWNER myuser;\nCREATE DATABASE\n\npostgres=# \\l\n List of databases\n Name | Owner | Encoding | Collate | Ctype | Access privileges\n-----------+----------+----------+-------------+-------------+-----------------------\n dbname | myuser | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |\n template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You can leave the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"OWNER"}]},{"type":"text","value":" section of the command, when doing so, the current user will become\nowner of the newly created database."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To change the owner of an existing database later, you can use the following command:"}]},{"type":"element","tag":"code","props":{"code":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE\n","language":"sql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"postgres=# alter database dbname owner to myuser;\nALTER DATABASE"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-11fa66{color:#FF7B72}.ct-2110ce{color:#8B949E}.ct-43adcf{color:#FF7B72}.ct-3f70a1{color:#A5D6FF}.ct-d033e5{color:#C9D1D9}.light .ct-d033e5{color:#657B83}.light .ct-3f70a1{color:#2AA198}.light .ct-43adcf{color:#859900}.light .ct-2110ce{color:#93A1A1}.light .ct-11fa66{color:#073642}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"install-postgresql-12-on-ubuntu-2004-lts","depth":2,"text":"Install PostgreSQL 12 on Ubuntu 20.04 LTS"},{"id":"initial-database-connection","depth":2,"text":"Initial database connection"},{"id":"set-password-for-postgres-database-user","depth":2,"text":"Set password for postgres database user","children":[{"id":"update-pg_hbaconf-to-allow-postgres-user-connections-with-password","depth":3,"text":"Update pg_hba.conf to allow postgres user connections with password"}]},{"id":"creation-of-additional-database-users","depth":2,"text":"Creation of additional database users"},{"id":"creation-of-additional-databases","depth":2,"text":"Creation of additional databases"}]}},"_type":"markdown","_id":"content:SQL:Postgress setup.md","_source":"content","_file":"SQL/Postgress setup.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/Llpj9LBd4i.json b/api/_content/query/Llpj9LBd4i.json index 25073aa..e4eb399 100644 --- a/api/_content/query/Llpj9LBd4i.json +++ b/api/_content/query/Llpj9LBd4i.json @@ -1 +1 @@ -{"_path":"/frontend/vue/adding-global-properties-to-component","_dir":"vue","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Adding Global Properties To Component","description":"The topic's fully covered in the official documentation and in Add global variable to window.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The topic's fully covered in the "},{"type":"element","tag":"a","props":{"href":"https://vuejs.org/guide/typescript/options-api.html#augmenting-global-properties","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]},{"type":"text","value":" and in "},{"type":"element","tag":"a","props":{"href":"Add%20global%20variable%20to%20window"},"children":[{"type":"text","value":"Add global variable to window"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you want to add global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$http"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$translate"}]},{"type":"text","value":" services to all of project's components:"}]},{"type":"element","tag":"code","props":{"code":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The topic's fully covered in the "},{"type":"element","tag":"a","props":{"href":"https://vuejs.org/guide/typescript/options-api.html#augmenting-global-properties","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]},{"type":"text","value":" and in "},{"type":"element","tag":"a","props":{"href":"Add%20global%20variable%20to%20window"},"children":[{"type":"text","value":"Add global variable to window"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you want to add global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$http"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$translate"}]},{"type":"text","value":" services to all of project's components:"}]},{"type":"element","tag":"code","props":{"code":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0059ff"},"children":[{"type":"text","value":"// ~/index.d.ts or ~/custom.d.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5b31c6"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b56c55"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5b31c6"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e6de36"},"children":[{"type":"text","value":"'axios'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a26ced"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a26ced"},"children":[{"type":"text","value":"module"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e6de36"},"children":[{"type":"text","value":"'vue'"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a26ced"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b09d31"},"children":[{"type":"text","value":"ComponentCustomProperties"}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dfd58b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7a01b9"},"children":[{"type":"text","value":"$translate"}]},{"type":"element","tag":"span","props":{"class":"ct-3636dc"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-dfd58b"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-7d0996"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-3636dc"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-dfd58b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0a3a8c"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-dfd58b"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-312a18"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-dfd58b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0a3a8c"},"children":[{"type":"text","value":"string"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b1946"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-312a18{color:#FF7B72}.ct-0a3a8c{color:#79C0FF}.ct-7d0996{color:#FFA657}.ct-3636dc{color:#FF7B72}.ct-7a01b9{color:#D2A8FF}.ct-dfd58b{color:#C9D1D9}.ct-b09d31{color:#FFA657}.ct-a26ced{color:#FF7B72}.ct-e6de36{color:#A5D6FF}.ct-b56c55{color:#C9D1D9}.ct-4b1946{color:#C9D1D9}.ct-5b31c6{color:#FF7B72}.ct-0059ff{color:#8B949E}.light .ct-0059ff{color:#93A1A1}.light .ct-5b31c6{color:#859900}.light .ct-4b1946{color:#657B83}.light .ct-b56c55{color:#268BD2}.light .ct-e6de36{color:#2AA198}.light .ct-a26ced{color:#073642}.light .ct-b09d31{color:#268BD2}.light .ct-dfd58b{color:#657B83}.light .ct-7a01b9{color:#268BD2}.light .ct-3636dc{color:#859900}.light .ct-7d0996{color:#657B83}.light .ct-0a3a8c{color:#859900}.light .ct-312a18{color:#073642}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:Vue:Adding global properties to component.md","_source":"content","_file":"Frontend/Vue/Adding global properties to component.md","_extension":"md"} \ No newline at end of file +{"_path":"/frontend/vue/adding-global-properties-to-component","_dir":"vue","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Adding Global Properties To Component","description":"The topic's fully covered in the official documentation and in Add global variable to window.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The topic's fully covered in the "},{"type":"element","tag":"a","props":{"href":"https://vuejs.org/guide/typescript/options-api.html#augmenting-global-properties","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]},{"type":"text","value":" and in "},{"type":"element","tag":"a","props":{"href":"Add%20global%20variable%20to%20window"},"children":[{"type":"text","value":"Add global variable to window"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you want to add global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$http"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$translate"}]},{"type":"text","value":" services to all of project's components:"}]},{"type":"element","tag":"code","props":{"code":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The topic's fully covered in the "},{"type":"element","tag":"a","props":{"href":"https://vuejs.org/guide/typescript/options-api.html#augmenting-global-properties","rel":["nofollow"]},"children":[{"type":"text","value":"official documentation"}]},{"type":"text","value":" and in "},{"type":"element","tag":"a","props":{"href":"Add%20global%20variable%20to%20window"},"children":[{"type":"text","value":"Add global variable to window"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For example, you want to add global "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$http"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$translate"}]},{"type":"text","value":" services to all of project's components:"}]},{"type":"element","tag":"code","props":{"code":"// ~/index.d.ts or ~/custom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) => string\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5d6cfe"},"children":[{"type":"text","value":"// ~/index.d.ts or ~/custom.d.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cfe987"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8348df"},"children":[{"type":"text","value":"axios"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cfe987"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f10d9f"},"children":[{"type":"text","value":"'axios'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1fe06c"},"children":[{"type":"text","value":"declare"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fe06c"},"children":[{"type":"text","value":"module"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f10d9f"},"children":[{"type":"text","value":"'vue'"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fe06c"},"children":[{"type":"text","value":"interface"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e97f4a"},"children":[{"type":"text","value":"ComponentCustomProperties"}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f59c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-203129"},"children":[{"type":"text","value":"$translate"}]},{"type":"element","tag":"span","props":{"class":"ct-b51be1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-0f59c7"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-544231"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-b51be1"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-0f59c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bae14e"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0f59c7"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-ee4f6e"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0f59c7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bae14e"},"children":[{"type":"text","value":"string"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c6fc44"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-ee4f6e{color:#FF7B72}.ct-bae14e{color:#79C0FF}.ct-544231{color:#FFA657}.ct-b51be1{color:#FF7B72}.ct-203129{color:#D2A8FF}.ct-0f59c7{color:#C9D1D9}.ct-e97f4a{color:#FFA657}.ct-1fe06c{color:#FF7B72}.ct-f10d9f{color:#A5D6FF}.ct-8348df{color:#C9D1D9}.ct-c6fc44{color:#C9D1D9}.ct-cfe987{color:#FF7B72}.ct-5d6cfe{color:#8B949E}.light .ct-5d6cfe{color:#93A1A1}.light .ct-cfe987{color:#859900}.light .ct-c6fc44{color:#657B83}.light .ct-8348df{color:#268BD2}.light .ct-f10d9f{color:#2AA198}.light .ct-1fe06c{color:#073642}.light .ct-e97f4a{color:#268BD2}.light .ct-0f59c7{color:#657B83}.light .ct-203129{color:#268BD2}.light .ct-b51be1{color:#859900}.light .ct-544231{color:#657B83}.light .ct-bae14e{color:#859900}.light .ct-ee4f6e{color:#073642}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:Vue:Adding global properties to component.md","_source":"content","_file":"Frontend/Vue/Adding global properties to component.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/O9PBAkuWXG.json b/api/_content/query/O9PBAkuWXG.json index 1f8407f..0a04513 100644 --- a/api/_content/query/O9PBAkuWXG.json +++ b/api/_content/query/O9PBAkuWXG.json @@ -1 +1 @@ -{"_path":"/graphql/refresh-token-in-apollo-client","_dir":"graphql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Refresh Token In Apollo Client","description":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client."}]},{"type":"element","tag":"code","props":{"code":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Custom fetch function for this request. You should tune "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"text","value":" and\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"text","value":" to match your api."}]},{"type":"element","tag":"code","props":{"code":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client."}]},{"type":"element","tag":"code","props":{"code":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"createApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"url"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"getAuthorizationData"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"authorization"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1e8a25"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"<"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"undefined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" >,"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"ApolloClientBase"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// ...other options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" link: "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"ApolloLink"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"(["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// ...other options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"setContext"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"_"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":", { "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"getAuthorizationData"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"HttpLink"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" uri: "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"url"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" fetch: "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"fetchWithTokenRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ]),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Custom fetch function for this request. You should tune "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"text","value":" and\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"text","value":" to match your api."}]},{"type":"element","tag":"code","props":{"code":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"/** Global singleton for refreshing promise */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1e8a25"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"/** Checks if GraphQl errors has unauthenticated error */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"<{ "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"code"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"ErrorCode"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" }>)"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"isArray"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"some"}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"status"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-02349f"},"children":[{"type":"text","value":"401"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// Distinguish unauthorized error here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"/** Detects if customFetch is sending refresh request */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"RequestInit"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a95fcd"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"operationName"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-779e2f"},"children":[{"type":"text","value":"'RefreshToken'"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a95fcd"},"children":[{"type":"text","value":"fetchWithTokenRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":": () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":": () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" { accessToken: "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"undefined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ) "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"RequestInit"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"Response"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// already refreshing token, wait for it and then use refreshed token"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// or use empty authorization if refreshing failed"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"as"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1e8a25"},"children":[{"type":"text","value":"Record"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":">)?."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a95fcd"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// refreshing token from other request failed, retry without authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-779e2f"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"async"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a95fcd"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a95fcd"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// check for unauthorized errors, if not present, just return result"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"||"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"||"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ok: "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"unknown"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":">("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":">("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// If unauthorized, refresh token and try again"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fdb5c"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-779e2f"},"children":[{"type":"text","value":"'Session expired'"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-840d6e"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// can't refresh token. logging out"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-665308"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-779e2f"},"children":[{"type":"text","value":"'Session expired'"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// success or any non-auth error"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"refreshingPromise"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3d67cf"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-b61e12"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-f90941"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8d2815"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-9d4795"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-de8287"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// wait for other request's refreshing query to finish, when retry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-1a781c"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3c9ca1"},"children":[{"type":"text","value":"// refreshing token from other request failed, retry without authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-78ba42"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7113f"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-62900c"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-779e2f"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fd30a"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-779e2f{color:#A5D6FF}.ct-a95fcd{color:#79C0FF}.ct-02349f{color:#79C0FF}.ct-1fdb5c{color:#FFA657}.ct-840d6e{color:#79C0FF}.ct-c7113f{color:#C9D1D9}.ct-3c9ca1{color:#8B949E}.ct-1e8a25{color:#FFA657}.ct-9d4795{color:#FF7B72}.ct-3d67cf{color:#D2A8FF}.ct-665308{color:#79C0FF}.ct-8d2815{color:#79C0FF}.ct-f90941{color:#FF7B72}.ct-b61e12{color:#FFA657}.ct-de8287{color:#C9D1D9}.ct-78ba42{color:#D2A8FF}.ct-1a781c{color:#FF7B72}.ct-0fd30a{color:#C9D1D9}.ct-62900c{color:#FF7B72}.light .ct-62900c{color:#859900}.light .ct-0fd30a{color:#657B83}.light .ct-1a781c{color:#073642}.light .ct-78ba42{color:#268BD2}.light .ct-de8287{color:#657B83}.light .ct-b61e12{color:#657B83}.light .ct-f90941{color:#859900}.light .ct-8d2815{color:#859900}.light .ct-665308{color:#859900}.light .ct-3d67cf{color:#268BD2}.light .ct-9d4795{color:#073642}.light .ct-1e8a25{color:#268BD2}.light .ct-3c9ca1{color:#93A1A1}.light .ct-c7113f{color:#268BD2}.light .ct-840d6e{color:#B58900}.light .ct-1fdb5c{color:#268BD2}.light .ct-02349f{color:#D33682}.light .ct-a95fcd{color:#268BD2}.light .ct-779e2f{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:GraphQL:Refresh token in Apollo client.md","_source":"content","_file":"GraphQL/Refresh token in Apollo client.md","_extension":"md"} \ No newline at end of file +{"_path":"/graphql/refresh-token-in-apollo-client","_dir":"graphql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Refresh Token In Apollo Client","description":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client."}]},{"type":"element","tag":"code","props":{"code":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Custom fetch function for this request. You should tune "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"text","value":" and\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"text","value":" to match your api."}]},{"type":"element","tag":"code","props":{"code":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client."}]},{"type":"element","tag":"code","props":{"code":"export const createApolloClient = (\n url: string,\n logout: () => void,\n getAuthorizationData: () => { authorization: string },\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n) =>\n new ApolloClientBase({\n // ...other options\n link: ApolloLink.from([\n // ...other options\n setContext(async (_, { headers }) => {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"createApolloClient"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"url"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"getAuthorizationData"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"authorization"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caad5f"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"<"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"undefined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" >,"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"ApolloClientBase"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// ...other options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" link: "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"ApolloLink"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"(["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// ...other options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"setContext"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"_"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":", { "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"getAuthorizationData"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"HttpLink"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" uri: "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"url"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" fetch: "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"fetchWithTokenRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ]),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Custom fetch function for this request. You should tune "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"text","value":" and\n"},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"text","value":" to match your api."}]},{"type":"element","tag":"code","props":{"code":"/** Global singleton for refreshing promise */\nlet refreshingPromise: Promise | null = null;\n\n/** Checks if GraphQl errors has unauthenticated error */\nconst hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): boolean =>\n Array.isArray(errors) &&\n errors.some(error => {\n return error.status === 401; // Distinguish unauthorized error here\n });\n\n/** Detects if customFetch is sending refresh request */\nconst isRefreshRequestOptions = (options: RequestInit) => {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */\nexport const fetchWithTokenRefresh =\n (\n logout: () => void,\n refreshToken: () => Promise<\n { accessToken: string; refreshToken: string } | undefined\n >,\n ) =>\n async (uri: string, options: RequestInit): Promise => {\n // already refreshing token, wait for it and then use refreshed token\n // or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() => {\n // refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response => {\n const text = await response.text();\n const json = JSON.parse(text);\n\n // check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =>\n new Promise(resolve => {\n resolve(json);\n }),\n text: async () =>\n new Promise(resolve => {\n resolve(text);\n }),\n };\n }\n\n // If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise => {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() => {\n refreshingPromise = null;\n\n // can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n // success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) => {\n // wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () => {\n // refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"/** Global singleton for refreshing promise */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caad5f"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"/** Checks if GraphQl errors has unauthenticated error */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"<{ "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"code"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"ErrorCode"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" }>)"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"isArray"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"some"}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"status"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f935d9"},"children":[{"type":"text","value":"401"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// Distinguish unauthorized error here"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"/** Detects if customFetch is sending refresh request */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"RequestInit"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9586d0"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"operationName"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"==="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e3b437"},"children":[{"type":"text","value":"'RefreshToken'"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9586d0"},"children":[{"type":"text","value":"fetchWithTokenRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":": () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":": () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" { accessToken: "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"undefined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":">"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ) "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"RequestInit"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"Response"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// already refreshing token, wait for it and then use refreshed token"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// or use empty authorization if refreshing failed"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"&&"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"as"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caad5f"},"children":[{"type":"text","value":"Record"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":">)?."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9586d0"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// refreshing token from other request failed, retry without authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e3b437"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"async"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9586d0"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9586d0"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// check for unauthorized errors, if not present, just return result"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"isRefreshRequestOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"||"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"||"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"hasUnauthorizedError"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"errors"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"response"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ok: "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"unknown"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":">("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"json"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":">("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"text"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// If unauthorized, refresh token and try again"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"refreshToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e6318"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e3b437"},"children":[{"type":"text","value":"'Session expired'"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"tokens"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-70d1ab"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// can't refresh token. logging out"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"logout"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bc5ac0"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e3b437"},"children":[{"type":"text","value":"'Session expired'"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// success or any non-auth error"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"refreshingPromise"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-315120"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-944ca4"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-394a5b"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-844354"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-756d5d"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-64c2d8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// wait for other request's refreshing query to finish, when retry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"newAccessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-f19b0f"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f65bc2"},"children":[{"type":"text","value":"// refreshing token from other request failed, retry without authorization"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-aad558"},"children":[{"type":"text","value":"fetch"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"uri"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":", {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" headers: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-41ca16"},"children":[{"type":"text","value":"headers"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-2d6f1f"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" {}),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" authorization: "}]},{"type":"element","tag":"span","props":{"class":"ct-e3b437"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-288d63"},"children":[{"type":"text","value":" };"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-e3b437{color:#A5D6FF}.ct-9586d0{color:#79C0FF}.ct-f935d9{color:#79C0FF}.ct-5e6318{color:#FFA657}.ct-70d1ab{color:#79C0FF}.ct-41ca16{color:#C9D1D9}.ct-f65bc2{color:#8B949E}.ct-caad5f{color:#FFA657}.ct-756d5d{color:#FF7B72}.ct-315120{color:#D2A8FF}.ct-bc5ac0{color:#79C0FF}.ct-844354{color:#79C0FF}.ct-394a5b{color:#FF7B72}.ct-944ca4{color:#FFA657}.ct-64c2d8{color:#C9D1D9}.ct-aad558{color:#D2A8FF}.ct-f19b0f{color:#FF7B72}.ct-288d63{color:#C9D1D9}.ct-2d6f1f{color:#FF7B72}.light .ct-2d6f1f{color:#859900}.light .ct-288d63{color:#657B83}.light .ct-f19b0f{color:#073642}.light .ct-aad558{color:#268BD2}.light .ct-64c2d8{color:#657B83}.light .ct-944ca4{color:#657B83}.light .ct-394a5b{color:#859900}.light .ct-844354{color:#859900}.light .ct-bc5ac0{color:#859900}.light .ct-315120{color:#268BD2}.light .ct-756d5d{color:#073642}.light .ct-caad5f{color:#268BD2}.light .ct-f65bc2{color:#93A1A1}.light .ct-41ca16{color:#268BD2}.light .ct-70d1ab{color:#B58900}.light .ct-5e6318{color:#268BD2}.light .ct-f935d9{color:#D33682}.light .ct-9586d0{color:#268BD2}.light .ct-e3b437{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:GraphQL:Refresh token in Apollo client.md","_source":"content","_file":"GraphQL/Refresh token in Apollo client.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/PwERR4vHv2.json b/api/_content/query/PwERR4vHv2.json index 0d80f7b..3fffe9d 100644 --- a/api/_content/query/PwERR4vHv2.json +++ b/api/_content/query/PwERR4vHv2.json @@ -1 +1 @@ -{"_path":"/frontend/react-native/oauth2-login","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"OAuth2 Login","description":"Use #oauth2 login with React-Native","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Use #oauth2 login with React-Native"}]},{"type":"element","tag":"h2","props":{"id":"common-oauth2-providers"},"children":[{"type":"text","value":"Common OAuth2 providers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be handled by "},{"type":"element","tag":"a","props":{"href":"react-native-app-auth"},"children":[{"type":"text","value":"react-native-app-auth"}]},{"type":"text","value":" by redirecting to url "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"com.yourapp://oauth2provider"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"example-for-google"},"children":[{"type":"text","value":"Example for #Google"}]},{"type":"element","tag":"code","props":{"code":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"example-for-yandex"},"children":[{"type":"text","value":"Example for #Yandex"}]},{"type":"element","tag":"code","props":{"code":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"apple-id-login"},"children":[{"type":"text","value":"Apple ID login"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication","rel":["nofollow"]},"children":[{"type":"text","value":"react-native-apple-authentication"}]},{"type":"text","value":" has its own "},{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication/tree/main/docs","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":" on setting up OAuth using Apple ID."}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Use #oauth2 login with React-Native"}]},{"type":"element","tag":"h2","props":{"id":"common-oauth2-providers"},"children":[{"type":"text","value":"Common OAuth2 providers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be handled by "},{"type":"element","tag":"a","props":{"href":"react-native-app-auth"},"children":[{"type":"text","value":"react-native-app-auth"}]},{"type":"text","value":" by redirecting to url "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"com.yourapp://oauth2provider"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"example-for-google"},"children":[{"type":"text","value":"Example for #Google"}]},{"type":"element","tag":"code","props":{"code":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-cd66a6"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'react-native-app-auth'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"GOOGLE_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67fd92"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3baf75"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" issuer: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'https://accounts.google.com'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" clientId: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"GOOGLE_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}.apps.googleusercontent.com`"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" redirectUrl: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"`com.yourapp:/oauth2redirect/google`"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" scopes: ["}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'openid'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'profile'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" dangerouslyAllowInsecureHttpRequests: "}]},{"type":"element","tag":"span","props":{"class":"ct-22f6b6"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"});"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"example-for-yandex"},"children":[{"type":"text","value":"Example for #Yandex"}]},{"type":"element","tag":"code","props":{"code":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_SECRET"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-67fd92"},"children":[{"type":"text","value":"// better hide it somehow"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'com.yourapp'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5c383"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8cda25"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3baf75"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" serviceConfiguration: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" authorizationEndpoint: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"`https://oauth.yandex.ru/authorize?response_type=code&client_id=${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}&redirect_uri=${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}:/oauth2redirect`"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-67fd92"},"children":[{"type":"text","value":"// TODO: replace it with your own backend to secure client_secret:"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" tokenEndpoint: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"`https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}&client_secret=${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_SECRET"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" clientId: "}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" redirectUrl: "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-da0e1d"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"}:/oauth2redirect`"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" scopes: ["}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'login:info'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-bfdae2"},"children":[{"type":"text","value":"'login:avatar'"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":" dangerouslyAllowInsecureHttpRequests: "}]},{"type":"element","tag":"span","props":{"class":"ct-22f6b6"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3baf75"},"children":[{"type":"text","value":"callback"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-cd66a6"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-cd66a6"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-4619c3"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"apple-id-login"},"children":[{"type":"text","value":"Apple ID login"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication","rel":["nofollow"]},"children":[{"type":"text","value":"react-native-apple-authentication"}]},{"type":"text","value":" has its own "},{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication/tree/main/docs","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":" on setting up OAuth using Apple ID."}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-22f6b6{color:#79C0FF}.ct-3baf75{color:#D2A8FF}.ct-67fd92{color:#8B949E}.ct-da0e1d{color:#79C0FF}.ct-f5c383{color:#FF7B72}.ct-bfdae2{color:#A5D6FF}.ct-cd66a6{color:#C9D1D9}.ct-4619c3{color:#C9D1D9}.ct-8cda25{color:#FF7B72}.light .ct-8cda25{color:#859900}.light .ct-4619c3{color:#657B83}.light .ct-cd66a6{color:#268BD2}.light .ct-bfdae2{color:#2AA198}.light .ct-f5c383{color:#073642}.light .ct-da0e1d{color:#268BD2}.light .ct-67fd92{color:#93A1A1}.light .ct-3baf75{color:#268BD2}.light .ct-22f6b6{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"common-oauth2-providers","depth":2,"text":"Common OAuth2 providers","children":[{"id":"example-for-google","depth":3,"text":"Example for #Google"},{"id":"example-for-yandex","depth":3,"text":"Example for #Yandex"}]},{"id":"apple-id-login","depth":2,"text":"Apple ID login"}]}},"_type":"markdown","_id":"content:Frontend:React Native:OAuth2 login.md","_source":"content","_file":"Frontend/React Native/OAuth2 login.md","_extension":"md"} \ No newline at end of file +{"_path":"/frontend/react-native/oauth2-login","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"OAuth2 Login","description":"Use #oauth2 login with React-Native","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Use #oauth2 login with React-Native"}]},{"type":"element","tag":"h2","props":{"id":"common-oauth2-providers"},"children":[{"type":"text","value":"Common OAuth2 providers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be handled by "},{"type":"element","tag":"a","props":{"href":"react-native-app-auth"},"children":[{"type":"text","value":"react-native-app-auth"}]},{"type":"text","value":" by redirecting to url "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"com.yourapp://oauth2provider"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"example-for-google"},"children":[{"type":"text","value":"Example for #Google"}]},{"type":"element","tag":"code","props":{"code":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"example-for-yandex"},"children":[{"type":"text","value":"Example for #Yandex"}]},{"type":"element","tag":"code","props":{"code":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"apple-id-login"},"children":[{"type":"text","value":"Apple ID login"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication","rel":["nofollow"]},"children":[{"type":"text","value":"react-native-apple-authentication"}]},{"type":"text","value":" has its own "},{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication/tree/main/docs","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":" on setting up OAuth using Apple ID."}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Use #oauth2 login with React-Native"}]},{"type":"element","tag":"h2","props":{"id":"common-oauth2-providers"},"children":[{"type":"text","value":"Common OAuth2 providers"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be handled by "},{"type":"element","tag":"a","props":{"href":"react-native-app-auth"},"children":[{"type":"text","value":"react-native-app-auth"}]},{"type":"text","value":" by redirecting to url "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"com.yourapp://oauth2provider"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h3","props":{"id":"example-for-google"},"children":[{"type":"text","value":"Example for #Google"}]},{"type":"element","tag":"code","props":{"code":"import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n// ...\nconst authState = await authorize({\n issuer: 'https://accounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:/oauth2redirect/google`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-09167a"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'react-native-app-auth'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"GOOGLE_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-94fecd"},"children":[{"type":"text","value":"// ..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-035d5a"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" issuer: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'https://accounts.google.com'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" clientId: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"GOOGLE_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}.apps.googleusercontent.com`"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" redirectUrl: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"`com.yourapp:/oauth2redirect/google`"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" scopes: ["}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'openid'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'profile'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" dangerouslyAllowInsecureHttpRequests: "}]},{"type":"element","tag":"span","props":{"class":"ct-68f8f5"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"});"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"example-for-yandex"},"children":[{"type":"text","value":"Example for #Yandex"}]},{"type":"element","tag":"code","props":{"code":"const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; // better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,\n // TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:/oauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_SECRET"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"; "}]},{"type":"element","tag":"span","props":{"class":"ct-94fecd"},"children":[{"type":"text","value":"// better hide it somehow"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'com.yourapp'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9cdce7"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6abe0"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-035d5a"},"children":[{"type":"text","value":"authorize"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" serviceConfiguration: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" authorizationEndpoint: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"`https://oauth.yandex.ru/authorize?response_type=code&client_id=${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}&redirect_uri=${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}:/oauth2redirect`"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-94fecd"},"children":[{"type":"text","value":"// TODO: replace it with your own backend to secure client_secret:"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" tokenEndpoint: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"`https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}&client_secret=${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_SECRET"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" clientId: "}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"YANDEX_OAUTH_CLIENT"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" redirectUrl: "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-c0142e"},"children":[{"type":"text","value":"APP_ID"}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"}:/oauth2redirect`"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" scopes: ["}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'login:info'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-259179"},"children":[{"type":"text","value":"'login:avatar'"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":" dangerouslyAllowInsecureHttpRequests: "}]},{"type":"element","tag":"span","props":{"class":"ct-68f8f5"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"});"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-035d5a"},"children":[{"type":"text","value":"callback"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-09167a"},"children":[{"type":"text","value":"authState"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-09167a"},"children":[{"type":"text","value":"accessToken"}]},{"type":"element","tag":"span","props":{"class":"ct-c906eb"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"apple-id-login"},"children":[{"type":"text","value":"Apple ID login"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication","rel":["nofollow"]},"children":[{"type":"text","value":"react-native-apple-authentication"}]},{"type":"text","value":" has its own "},{"type":"element","tag":"a","props":{"href":"https://github.com/invertase/react-native-apple-authentication/tree/main/docs","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":" on setting up OAuth using Apple ID."}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-68f8f5{color:#79C0FF}.ct-035d5a{color:#D2A8FF}.ct-94fecd{color:#8B949E}.ct-c0142e{color:#79C0FF}.ct-9cdce7{color:#FF7B72}.ct-259179{color:#A5D6FF}.ct-09167a{color:#C9D1D9}.ct-c906eb{color:#C9D1D9}.ct-d6abe0{color:#FF7B72}.light .ct-d6abe0{color:#859900}.light .ct-c906eb{color:#657B83}.light .ct-09167a{color:#268BD2}.light .ct-259179{color:#2AA198}.light .ct-9cdce7{color:#073642}.light .ct-c0142e{color:#268BD2}.light .ct-94fecd{color:#93A1A1}.light .ct-035d5a{color:#268BD2}.light .ct-68f8f5{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"common-oauth2-providers","depth":2,"text":"Common OAuth2 providers","children":[{"id":"example-for-google","depth":3,"text":"Example for #Google"},{"id":"example-for-yandex","depth":3,"text":"Example for #Yandex"}]},{"id":"apple-id-login","depth":2,"text":"Apple ID login"}]}},"_type":"markdown","_id":"content:Frontend:React Native:OAuth2 login.md","_source":"content","_file":"Frontend/React Native/OAuth2 login.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/QqziXmSF9l.json b/api/_content/query/QqziXmSF9l.json index c9f9954..1cd24f9 100644 --- a/api/_content/query/QqziXmSF9l.json +++ b/api/_content/query/QqziXmSF9l.json @@ -1 +1 @@ -{"_path":"/frontend/react-native/useful-comands","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Useful Comands","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"show-android-logcat"},"children":[{"type":"text","value":"Show android logcat"}]},{"type":"element","tag":"code","props":{"code":"adb logcat com.application:I \"*:S\"\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"adb logcat com.application:I \"*:S\"\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"get-apks-sha-256"},"children":[{"type":"text","value":"Get .apk's SHA-256"}]},{"type":"element","tag":"code","props":{"code":"keytool -printcert -jarfile \"$1\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"keytool -printcert -jarfile \"$1\"\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"assemble-debug-release-on-android"},"children":[{"type":"text","value":"Assemble debug release on Android"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Packages release with bundled resources."}]},{"type":"element","tag":"code","props":{"code":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"send-release-to-android-device"},"children":[{"type":"text","value":"Send release to Android device"}]},{"type":"element","tag":"code","props":{"code":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"deep-links"},"children":[{"type":"text","value":"Deep links"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zarah.dev/2022/02/08/android12-deeplinks.html","rel":["nofollow"]},"children":[{"type":"text","value":"https://zarah.dev/2022/02/08/android12-deeplinks.html"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification","rel":["nofollow"]},"children":[{"type":"text","value":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls","rel":["nofollow"]},"children":[{"type":"text","value":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls"}]}]}]},{"type":"element","tag":"h3","props":{"id":"open-deep-links"},"children":[{"type":"text","value":"Open deep links"}]},{"type":"element","tag":"code","props":{"code":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"reverify-links-on-android"},"children":[{"type":"text","value":"Reverify links on Android"}]},{"type":"element","tag":"code","props":{"code":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"show-android-logcat"},"children":[{"type":"text","value":"Show android logcat"}]},{"type":"element","tag":"code","props":{"code":"adb logcat com.application:I \"*:S\"\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"adb logcat com.application:I "}]},{"type":"element","tag":"span","props":{"class":"ct-582610"},"children":[{"type":"text","value":"\"*:S\""}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"get-apks-sha-256"},"children":[{"type":"text","value":"Get .apk's SHA-256"}]},{"type":"element","tag":"code","props":{"code":"keytool -printcert -jarfile \"$1\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"keytool -printcert -jarfile "}]},{"type":"element","tag":"span","props":{"class":"ct-582610"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-880203"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-b1dec6"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-582610"},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"assemble-debug-release-on-android"},"children":[{"type":"text","value":"Assemble debug release on Android"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Packages release with bundled resources."}]},{"type":"element","tag":"code","props":{"code":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"npx react-native bundle \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" --platform android \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" --dev "}]},{"type":"element","tag":"span","props":{"class":"ct-666406"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" --entry-file index.js \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" --bundle-output android/app/src/main/assets/index.android.bundle \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" --assets-dest android/app/src/main/res/"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-666406"},"children":[{"type":"text","value":"cd"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" android "}]},{"type":"element","tag":"span","props":{"class":"ct-6129e7"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" ./gradlew assembleDebug"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-742116"},"children":[{"type":"text","value":"# do your stuff"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"./gradlew clean"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"send-release-to-android-device"},"children":[{"type":"text","value":"Send release to Android device"}]},{"type":"element","tag":"code","props":{"code":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-666406"},"children":[{"type":"text","value":"cd"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" ./android \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6129e7"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" ./gradlew assembleRelease \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6129e7"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" adb install ./app/build/outputs/apk/release/app-release.apk"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"deep-links"},"children":[{"type":"text","value":"Deep links"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zarah.dev/2022/02/08/android12-deeplinks.html","rel":["nofollow"]},"children":[{"type":"text","value":"https://zarah.dev/2022/02/08/android12-deeplinks.html"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification","rel":["nofollow"]},"children":[{"type":"text","value":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls","rel":["nofollow"]},"children":[{"type":"text","value":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls"}]}]}]},{"type":"element","tag":"h3","props":{"id":"open-deep-links"},"children":[{"type":"text","value":"Open deep links"}]},{"type":"element","tag":"code","props":{"code":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-742116"},"children":[{"type":"text","value":"# ios "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"xcrun simctl openurl booted "}]},{"type":"element","tag":"span","props":{"class":"ct-880203"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-b1dec6"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-742116"},"children":[{"type":"text","value":"# android"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"adb shell am start -W -a android.intent.action.VIEW -d "}]},{"type":"element","tag":"span","props":{"class":"ct-880203"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-b1dec6"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"com.application"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"reverify-links-on-android"},"children":[{"type":"text","value":"Reverify links on Android"}]},{"type":"element","tag":"code","props":{"code":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"PACKAGE="}]},{"type":"element","tag":"span","props":{"class":"ct-582610"},"children":[{"type":"text","value":"\"com.application\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":"adb shell pm set-app-links --package "}]},{"type":"element","tag":"span","props":{"class":"ct-880203"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-b1dec6"},"children":[{"type":"text","value":"PACKAGE"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" 0 all "}]},{"type":"element","tag":"span","props":{"class":"ct-6129e7"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4b992d"},"children":[{"type":"text","value":" adb shell pm verify-app-links --re-verify "}]},{"type":"element","tag":"span","props":{"class":"ct-880203"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-b1dec6"},"children":[{"type":"text","value":"PACKAGE"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-742116{color:#8B949E}.ct-6129e7{color:#FF7B72}.ct-666406{color:#79C0FF}.ct-b1dec6{color:#C9D1D9}.ct-880203{color:#C9D1D9}.ct-582610{color:#A5D6FF}.ct-4b992d{color:#C9D1D9}.light .ct-4b992d{color:#657B83}.light .ct-582610{color:#2AA198}.light .ct-880203{color:#859900}.light .ct-b1dec6{color:#268BD2}.light .ct-666406{color:#268BD2}.light .ct-6129e7{color:#859900}.light .ct-742116{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"show-android-logcat","depth":2,"text":"Show android logcat"},{"id":"get-apks-sha-256","depth":2,"text":"Get .apk's SHA-256"},{"id":"assemble-debug-release-on-android","depth":2,"text":"Assemble debug release on Android"},{"id":"send-release-to-android-device","depth":2,"text":"Send release to Android device"},{"id":"deep-links","depth":2,"text":"Deep links","children":[{"id":"open-deep-links","depth":3,"text":"Open deep links"},{"id":"reverify-links-on-android","depth":3,"text":"Reverify links on Android"}]}]}},"_type":"markdown","_id":"content:Frontend:React Native:Useful comands.md","_source":"content","_file":"Frontend/React Native/Useful comands.md","_extension":"md"} \ No newline at end of file +{"_path":"/frontend/react-native/useful-comands","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Useful Comands","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"show-android-logcat"},"children":[{"type":"text","value":"Show android logcat"}]},{"type":"element","tag":"code","props":{"code":"adb logcat com.application:I \"*:S\"\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"adb logcat com.application:I \"*:S\"\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"get-apks-sha-256"},"children":[{"type":"text","value":"Get .apk's SHA-256"}]},{"type":"element","tag":"code","props":{"code":"keytool -printcert -jarfile \"$1\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"keytool -printcert -jarfile \"$1\"\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"assemble-debug-release-on-android"},"children":[{"type":"text","value":"Assemble debug release on Android"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Packages release with bundled resources."}]},{"type":"element","tag":"code","props":{"code":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"send-release-to-android-device"},"children":[{"type":"text","value":"Send release to Android device"}]},{"type":"element","tag":"code","props":{"code":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"deep-links"},"children":[{"type":"text","value":"Deep links"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zarah.dev/2022/02/08/android12-deeplinks.html","rel":["nofollow"]},"children":[{"type":"text","value":"https://zarah.dev/2022/02/08/android12-deeplinks.html"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification","rel":["nofollow"]},"children":[{"type":"text","value":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls","rel":["nofollow"]},"children":[{"type":"text","value":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls"}]}]}]},{"type":"element","tag":"h3","props":{"id":"open-deep-links"},"children":[{"type":"text","value":"Open deep links"}]},{"type":"element","tag":"code","props":{"code":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"reverify-links-on-android"},"children":[{"type":"text","value":"Reverify links on Android"}]},{"type":"element","tag":"code","props":{"code":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"show-android-logcat"},"children":[{"type":"text","value":"Show android logcat"}]},{"type":"element","tag":"code","props":{"code":"adb logcat com.application:I \"*:S\"\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"adb logcat com.application:I "}]},{"type":"element","tag":"span","props":{"class":"ct-492fb7"},"children":[{"type":"text","value":"\"*:S\""}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"get-apks-sha-256"},"children":[{"type":"text","value":"Get .apk's SHA-256"}]},{"type":"element","tag":"code","props":{"code":"keytool -printcert -jarfile \"$1\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"keytool -printcert -jarfile "}]},{"type":"element","tag":"span","props":{"class":"ct-492fb7"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-f5de27"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-7a7a1d"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-492fb7"},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"assemble-debug-release-on-android"},"children":[{"type":"text","value":"Assemble debug release on Android"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Packages release with bundled resources."}]},{"type":"element","tag":"code","props":{"code":"npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android/app/src/main/assets/index.android.bundle \\\n --assets-dest android/app/src/main/res/\n\ncd android && ./gradlew assembleDebug\n\n# do your stuff\n\n./gradlew clean\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"npx react-native bundle \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" --platform android \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" --dev "}]},{"type":"element","tag":"span","props":{"class":"ct-75be1f"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" --entry-file index.js \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" --bundle-output android/app/src/main/assets/index.android.bundle \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" --assets-dest android/app/src/main/res/"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-75be1f"},"children":[{"type":"text","value":"cd"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" android "}]},{"type":"element","tag":"span","props":{"class":"ct-46ff56"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" ./gradlew assembleDebug"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4a89fe"},"children":[{"type":"text","value":"# do your stuff"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"./gradlew clean"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"send-release-to-android-device"},"children":[{"type":"text","value":"Send release to Android device"}]},{"type":"element","tag":"code","props":{"code":"cd ./android \\\n && ./gradlew assembleRelease \\\n && adb install ./app/build/outputs/apk/release/app-release.apk\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-75be1f"},"children":[{"type":"text","value":"cd"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" ./android \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-46ff56"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" ./gradlew assembleRelease \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-46ff56"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" adb install ./app/build/outputs/apk/release/app-release.apk"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"deep-links"},"children":[{"type":"text","value":"Deep links"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://zarah.dev/2022/02/08/android12-deeplinks.html","rel":["nofollow"]},"children":[{"type":"text","value":"https://zarah.dev/2022/02/08/android12-deeplinks.html"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification","rel":["nofollow"]},"children":[{"type":"text","value":"https://developer.android.com/training/app-links/verify-site-associations#invoke-domain-verification"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls","rel":["nofollow"]},"children":[{"type":"text","value":"https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://miin.ru&relation=delegate_permission/common.handle_all_urls"}]}]}]},{"type":"element","tag":"h3","props":{"id":"open-deep-links"},"children":[{"type":"text","value":"Open deep links"}]},{"type":"element","tag":"code","props":{"code":"# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4a89fe"},"children":[{"type":"text","value":"# ios "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"xcrun simctl openurl booted "}]},{"type":"element","tag":"span","props":{"class":"ct-f5de27"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-7a7a1d"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4a89fe"},"children":[{"type":"text","value":"# android"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"adb shell am start -W -a android.intent.action.VIEW -d "}]},{"type":"element","tag":"span","props":{"class":"ct-f5de27"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-7a7a1d"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"com.application"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"reverify-links-on-android"},"children":[{"type":"text","value":"Reverify links on Android"}]},{"type":"element","tag":"code","props":{"code":"PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"PACKAGE="}]},{"type":"element","tag":"span","props":{"class":"ct-492fb7"},"children":[{"type":"text","value":"\"com.application\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":"adb shell pm set-app-links --package "}]},{"type":"element","tag":"span","props":{"class":"ct-f5de27"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-7a7a1d"},"children":[{"type":"text","value":"PACKAGE"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" 0 all "}]},{"type":"element","tag":"span","props":{"class":"ct-46ff56"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7dd2c8"},"children":[{"type":"text","value":" adb shell pm verify-app-links --re-verify "}]},{"type":"element","tag":"span","props":{"class":"ct-f5de27"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-7a7a1d"},"children":[{"type":"text","value":"PACKAGE"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-4a89fe{color:#8B949E}.ct-46ff56{color:#FF7B72}.ct-75be1f{color:#79C0FF}.ct-7a7a1d{color:#C9D1D9}.ct-f5de27{color:#C9D1D9}.ct-492fb7{color:#A5D6FF}.ct-7dd2c8{color:#C9D1D9}.light .ct-7dd2c8{color:#657B83}.light .ct-492fb7{color:#2AA198}.light .ct-f5de27{color:#859900}.light .ct-7a7a1d{color:#268BD2}.light .ct-75be1f{color:#268BD2}.light .ct-46ff56{color:#859900}.light .ct-4a89fe{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"show-android-logcat","depth":2,"text":"Show android logcat"},{"id":"get-apks-sha-256","depth":2,"text":"Get .apk's SHA-256"},{"id":"assemble-debug-release-on-android","depth":2,"text":"Assemble debug release on Android"},{"id":"send-release-to-android-device","depth":2,"text":"Send release to Android device"},{"id":"deep-links","depth":2,"text":"Deep links","children":[{"id":"open-deep-links","depth":3,"text":"Open deep links"},{"id":"reverify-links-on-android","depth":3,"text":"Reverify links on Android"}]}]}},"_type":"markdown","_id":"content:Frontend:React Native:Useful comands.md","_source":"content","_file":"Frontend/React Native/Useful comands.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/S7L9CBleOj.json b/api/_content/query/S7L9CBleOj.json index 2b28043..099c9fa 100644 --- a/api/_content/query/S7L9CBleOj.json +++ b/api/_content/query/S7L9CBleOj.json @@ -1 +1 @@ -{"_path":"/frontend/vue/make-nuxt-handle-obsidian-highlights","_dir":"vue","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Make Nuxt Handle Obsidian Highlights","description":"By default Nuxt Content Plugin not handling highlight links. To fix that we will create Nitro plugin:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By default "},{"type":"element","tag":"a","props":{"href":"https://content.nuxtjs.org","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt Content Plugin"}]},{"type":"text","value":" not handling "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"highlight"}]},{"type":"text","value":" links. To fix that we will create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Nitro"}]},{"type":"text","value":" plugin:"}]},{"type":"element","tag":"code","props":{"code":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By default "},{"type":"element","tag":"a","props":{"href":"https://content.nuxtjs.org","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt Content Plugin"}]},{"type":"text","value":" not handling "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"highlight"}]},{"type":"text","value":" links. To fix that we will create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Nitro"}]},{"type":"text","value":" plugin:"}]},{"type":"element","tag":"code","props":{"code":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e451d7"},"children":[{"type":"text","value":"// ~/server/plugins/highlight.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c283c4"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-2996cc"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c283c4"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-2996cc"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4ae78b"},"children":[{"type":"text","value":"defineNitroPlugin"}]},{"type":"element","tag":"span","props":{"class":"ct-2996cc"},"children":[{"type":"text","value":"((nitroApp) "}]},{"type":"element","tag":"span","props":{"class":"ct-7162c0"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-2996cc"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4029a0"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"nitroApp"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"hooks"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3d30a3"},"children":[{"type":"text","value":"hook"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d3beb1"},"children":[{"type":"text","value":"\"content:file:beforeParse\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-86fb7c"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"_id"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3d30a3"},"children":[{"type":"text","value":"endsWith"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d3beb1"},"children":[{"type":"text","value":"\".md\""}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-86fb7c"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-1fb8d7"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3d30a3"},"children":[{"type":"text","value":"replace"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c89929"},"children":[{"type":"text","value":"/==("}]},{"type":"element","tag":"span","props":{"class":"ct-7da03a"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-86fb7c"},"children":[{"type":"text","value":"^"}]},{"type":"element","tag":"span","props":{"class":"ct-7da03a"},"children":[{"type":"text","value":"=]"}]},{"type":"element","tag":"span","props":{"class":"ct-86fb7c"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-c89929"},"children":[{"type":"text","value":")==/"}]},{"type":"element","tag":"span","props":{"class":"ct-86fb7c"},"children":[{"type":"text","value":"gs"}]},{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d3beb1"},"children":[{"type":"text","value":"`$1`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-9ad155"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4029a0"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-2996cc"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-4029a0"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-7da03a{color:#79C0FF}.ct-c89929{color:#A5D6FF}.ct-86fb7c{color:#FF7B72}.ct-d3beb1{color:#A5D6FF}.ct-3d30a3{color:#D2A8FF}.ct-1fb8d7{color:#C9D1D9}.ct-9ad155{color:#C9D1D9}.ct-4029a0{color:#C9D1D9}.ct-7162c0{color:#FF7B72}.ct-4ae78b{color:#D2A8FF}.ct-2996cc{color:#FFA657}.ct-c283c4{color:#FF7B72}.ct-e451d7{color:#8B949E}.light .ct-e451d7{color:#93A1A1}.light .ct-c283c4{color:#859900}.light .ct-2996cc{color:#657B83}.light .ct-4ae78b{color:#268BD2}.light .ct-7162c0{color:#073642}.light .ct-4029a0{color:#657B83}.light .ct-9ad155{color:#657B83}.light .ct-1fb8d7{color:#268BD2}.light .ct-3d30a3{color:#268BD2}.light .ct-d3beb1{color:#2AA198}.light .ct-86fb7c{color:#859900}.light .ct-c89929{color:#D30102}.light .ct-7da03a{color:#CB4B16}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:Vue:Make Nuxt handle Obsidian highlights.md","_source":"content","_file":"Frontend/Vue/Make Nuxt handle Obsidian highlights.md","_extension":"md"} \ No newline at end of file +{"_path":"/frontend/vue/make-nuxt-handle-obsidian-highlights","_dir":"vue","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Make Nuxt Handle Obsidian Highlights","description":"By default Nuxt Content Plugin not handling highlight links. To fix that we will create Nitro plugin:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By default "},{"type":"element","tag":"a","props":{"href":"https://content.nuxtjs.org","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt Content Plugin"}]},{"type":"text","value":" not handling "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"highlight"}]},{"type":"text","value":" links. To fix that we will create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Nitro"}]},{"type":"text","value":" plugin:"}]},{"type":"element","tag":"code","props":{"code":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"By default "},{"type":"element","tag":"a","props":{"href":"https://content.nuxtjs.org","rel":["nofollow"]},"children":[{"type":"text","value":"Nuxt Content Plugin"}]},{"type":"text","value":" not handling "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"highlight"}]},{"type":"text","value":" links. To fix that we will create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Nitro"}]},{"type":"text","value":" plugin:"}]},{"type":"element","tag":"code","props":{"code":"// ~/server/plugins/highlight.ts\nexport default defineNitroPlugin((nitroApp) => {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) => {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n /==([^=]+)==/gs,\n `$1`\n );\n }\n });\n});\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e7b999"},"children":[{"type":"text","value":"// ~/server/plugins/highlight.ts"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1a859c"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-c61dc2"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1a859c"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-c61dc2"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-90a102"},"children":[{"type":"text","value":"defineNitroPlugin"}]},{"type":"element","tag":"span","props":{"class":"ct-c61dc2"},"children":[{"type":"text","value":"((nitroApp) "}]},{"type":"element","tag":"span","props":{"class":"ct-bd9257"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-c61dc2"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ed11fd"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"nitroApp"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"hooks"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e84e69"},"children":[{"type":"text","value":"hook"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-11706c"},"children":[{"type":"text","value":"\"content:file:beforeParse\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7385d1"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"_id"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e84e69"},"children":[{"type":"text","value":"endsWith"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-11706c"},"children":[{"type":"text","value":"\".md\""}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7385d1"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"file"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-9e7555"},"children":[{"type":"text","value":"body"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-e84e69"},"children":[{"type":"text","value":"replace"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-14315a"},"children":[{"type":"text","value":"/==("}]},{"type":"element","tag":"span","props":{"class":"ct-773264"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-7385d1"},"children":[{"type":"text","value":"^"}]},{"type":"element","tag":"span","props":{"class":"ct-773264"},"children":[{"type":"text","value":"=]"}]},{"type":"element","tag":"span","props":{"class":"ct-7385d1"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-14315a"},"children":[{"type":"text","value":")==/"}]},{"type":"element","tag":"span","props":{"class":"ct-7385d1"},"children":[{"type":"text","value":"gs"}]},{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-11706c"},"children":[{"type":"text","value":"`$1`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a60213"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ed11fd"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-c61dc2"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ed11fd"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-773264{color:#79C0FF}.ct-14315a{color:#A5D6FF}.ct-7385d1{color:#FF7B72}.ct-11706c{color:#A5D6FF}.ct-e84e69{color:#D2A8FF}.ct-9e7555{color:#C9D1D9}.ct-a60213{color:#C9D1D9}.ct-ed11fd{color:#C9D1D9}.ct-bd9257{color:#FF7B72}.ct-90a102{color:#D2A8FF}.ct-c61dc2{color:#FFA657}.ct-1a859c{color:#FF7B72}.ct-e7b999{color:#8B949E}.light .ct-e7b999{color:#93A1A1}.light .ct-1a859c{color:#859900}.light .ct-c61dc2{color:#657B83}.light .ct-90a102{color:#268BD2}.light .ct-bd9257{color:#073642}.light .ct-ed11fd{color:#657B83}.light .ct-a60213{color:#657B83}.light .ct-9e7555{color:#268BD2}.light .ct-e84e69{color:#268BD2}.light .ct-11706c{color:#2AA198}.light .ct-7385d1{color:#859900}.light .ct-14315a{color:#D30102}.light .ct-773264{color:#CB4B16}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:Vue:Make Nuxt handle Obsidian highlights.md","_source":"content","_file":"Frontend/Vue/Make Nuxt handle Obsidian highlights.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/TvYXYGXdZ0.json b/api/_content/query/TvYXYGXdZ0.json index 2bf5752..d0c9e32 100644 --- a/api/_content/query/TvYXYGXdZ0.json +++ b/api/_content/query/TvYXYGXdZ0.json @@ -1 +1 @@ -{"_path":"/sql/mysql-and-mariadb-setup","_dir":"sql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"MySQL And MariaDB Setup","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-mariadb-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install MariaDB on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"access-database-from-outside"},"children":[{"type":"text","value":"Access Database from outside"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/mysql/mariadb.conf.d/50-server.cnf"}]},{"type":"text","value":" and change the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"bind-address"}]},{"type":"text","value":" to:"}]},{"type":"element","tag":"code","props":{"code":"...\nbind-address = 0.0.0.0\n...\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"...\nbind-address = 0.0.0.0\n...\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"create-administrative-user"},"children":[{"type":"text","value":"Create Administrative User"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create a new user "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"newuser"}]},{"type":"text","value":" for the host "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"localhost"}]},{"type":"text","value":" with a new "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"password"}]},{"type":"text","value":":"}]}]},{"type":"element","tag":"code","props":{"code":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n"}]}]}]},{"type":"element","tag":"ol","props":{"start":2},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Grant all permissions to the new user"}]}]},{"type":"element","tag":"code","props":{"code":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n"}]}]}]},{"type":"element","tag":"ol","props":{"start":3},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Update permissions"}]}]},{"type":"element","tag":"code","props":{"code":"FLUSH PRIVILEGES;\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"FLUSH PRIVILEGES;\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-mariadb-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install MariaDB on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"sudo apt update"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"sudo apt install mariadb-server"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"sudo mysql_secure_installation"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"access-database-from-outside"},"children":[{"type":"text","value":"Access Database from outside"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/mysql/mariadb.conf.d/50-server.cnf"}]},{"type":"text","value":" and change the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"bind-address"}]},{"type":"text","value":" to:"}]},{"type":"element","tag":"code","props":{"code":"...\nbind-address = 0.0.0.0\n...\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"bind-"}]},{"type":"element","tag":"span","props":{"class":"ct-bde705"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":" = 0.0.0.0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c8084e"},"children":[{"type":"text","value":"..."}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"create-administrative-user"},"children":[{"type":"text","value":"Create Administrative User"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create a new user "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"newuser"}]},{"type":"text","value":" for the host "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"localhost"}]},{"type":"text","value":" with a new "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"password"}]},{"type":"text","value":":"}]}]},{"type":"element","tag":"code","props":{"code":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';"}]}]}]}]}]},{"type":"element","tag":"ol","props":{"start":2},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Grant all permissions to the new user"}]}]},{"type":"element","tag":"code","props":{"code":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';"}]}]}]}]}]},{"type":"element","tag":"ol","props":{"start":3},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Update permissions"}]}]},{"type":"element","tag":"code","props":{"code":"FLUSH PRIVILEGES;\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"FLUSH PRIVILEGES;"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-bde705{color:#FF7B72}.ct-c8084e{color:#C9D1D9}.light .ct-c8084e{color:#657B83}.light .ct-bde705{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"install-mariadb-on-ubuntu-2004-lts","depth":2,"text":"Install MariaDB on Ubuntu 20.04 LTS"},{"id":"access-database-from-outside","depth":2,"text":"Access Database from outside"},{"id":"create-administrative-user","depth":2,"text":"Create Administrative User"}]}},"_type":"markdown","_id":"content:SQL:MySQL and MariaDB setup.md","_source":"content","_file":"SQL/MySQL and MariaDB setup.md","_extension":"md"} \ No newline at end of file +{"_path":"/sql/mysql-and-mariadb-setup","_dir":"sql","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"MySQL And MariaDB Setup","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-mariadb-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install MariaDB on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"access-database-from-outside"},"children":[{"type":"text","value":"Access Database from outside"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/mysql/mariadb.conf.d/50-server.cnf"}]},{"type":"text","value":" and change the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"bind-address"}]},{"type":"text","value":" to:"}]},{"type":"element","tag":"code","props":{"code":"...\nbind-address = 0.0.0.0\n...\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"...\nbind-address = 0.0.0.0\n...\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"create-administrative-user"},"children":[{"type":"text","value":"Create Administrative User"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create a new user "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"newuser"}]},{"type":"text","value":" for the host "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"localhost"}]},{"type":"text","value":" with a new "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"password"}]},{"type":"text","value":":"}]}]},{"type":"element","tag":"code","props":{"code":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n"}]}]}]},{"type":"element","tag":"ol","props":{"start":2},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Grant all permissions to the new user"}]}]},{"type":"element","tag":"code","props":{"code":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n"}]}]}]},{"type":"element","tag":"ol","props":{"start":3},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Update permissions"}]}]},{"type":"element","tag":"code","props":{"code":"FLUSH PRIVILEGES;\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"FLUSH PRIVILEGES;\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"install-mariadb-on-ubuntu-2004-lts"},"children":[{"type":"text","value":"Install MariaDB on Ubuntu 20.04 LTS"}]},{"type":"element","tag":"code","props":{"code":"sudo apt update\nsudo apt install mariadb-server\nsudo mysql_secure_installation\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"sudo apt update"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"sudo apt install mariadb-server"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"sudo mysql_secure_installation"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"access-database-from-outside"},"children":[{"type":"text","value":"Access Database from outside"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Open "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"/etc/mysql/mariadb.conf.d/50-server.cnf"}]},{"type":"text","value":" and change the "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"bind-address"}]},{"type":"text","value":" to:"}]},{"type":"element","tag":"code","props":{"code":"...\nbind-address = 0.0.0.0\n...\n","language":"nginx"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"bind-"}]},{"type":"element","tag":"span","props":{"class":"ct-68eb49"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":" = 0.0.0.0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5cf055"},"children":[{"type":"text","value":"..."}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"create-administrative-user"},"children":[{"type":"text","value":"Create Administrative User"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Create a new user "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"newuser"}]},{"type":"text","value":" for the host "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"localhost"}]},{"type":"text","value":" with a new "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"password"}]},{"type":"text","value":":"}]}]},{"type":"element","tag":"code","props":{"code":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';"}]}]}]}]}]},{"type":"element","tag":"ol","props":{"start":2},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Grant all permissions to the new user"}]}]},{"type":"element","tag":"code","props":{"code":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';"}]}]}]}]}]},{"type":"element","tag":"ol","props":{"start":3},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Update permissions"}]}]},{"type":"element","tag":"code","props":{"code":"FLUSH PRIVILEGES;\n","language":"mysql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"FLUSH PRIVILEGES;"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-68eb49{color:#FF7B72}.ct-5cf055{color:#C9D1D9}.light .ct-5cf055{color:#657B83}.light .ct-68eb49{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"install-mariadb-on-ubuntu-2004-lts","depth":2,"text":"Install MariaDB on Ubuntu 20.04 LTS"},{"id":"access-database-from-outside","depth":2,"text":"Access Database from outside"},{"id":"create-administrative-user","depth":2,"text":"Create Administrative User"}]}},"_type":"markdown","_id":"content:SQL:MySQL and MariaDB setup.md","_source":"content","_file":"SQL/MySQL and MariaDB setup.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/UBl6xR2vxQ.json b/api/_content/query/UBl6xR2vxQ.json index dc73600..208fef0 100644 --- a/api/_content/query/UBl6xR2vxQ.json +++ b/api/_content/query/UBl6xR2vxQ.json @@ -1 +1 @@ -{"_path":"/docker/refresh-containers-on-pull","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Refresh Containers On Pull","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"setting-up-watchtower"},"children":[{"type":"text","value":"Setting up watchtower"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://containrrr.dev/watchtower/","rel":["nofollow"]},"children":[{"type":"text","value":"Watchtower"}]},{"type":"text","value":" will automatically pull updated #docker containers. Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"setting-up-watchtower"},"children":[{"type":"text","value":"Setting up watchtower"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://containrrr.dev/watchtower/","rel":["nofollow"]},"children":[{"type":"text","value":"Watchtower"}]},{"type":"text","value":" will automatically pull updated #docker containers. Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"watchtower"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"docker__watchtower"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"v2tec/watchtower"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"/var/run/docker.sock:/var/run/docker.sock"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"/home/user/.docker/config.json:/config.json"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-379eb3"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-c68bc8"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-f5251e"},"children":[{"type":"text","value":"--interval 60 image_1 image_2"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-f5251e{color:#A5D6FF}.ct-c68bc8{color:#C9D1D9}.ct-379eb3{color:#7EE787}.light .ct-379eb3{color:#268BD2}.light .ct-c68bc8{color:#657B83}.light .ct-f5251e{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"setting-up-watchtower","depth":2,"text":"Setting up watchtower"}]}},"_type":"markdown","_id":"content:Docker:Refresh containers on pull.md","_source":"content","_file":"Docker/Refresh containers on pull.md","_extension":"md"} \ No newline at end of file +{"_path":"/docker/refresh-containers-on-pull","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Refresh Containers On Pull","description":"","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"setting-up-watchtower"},"children":[{"type":"text","value":"Setting up watchtower"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://containrrr.dev/watchtower/","rel":["nofollow"]},"children":[{"type":"text","value":"Watchtower"}]},{"type":"text","value":" will automatically pull updated #docker containers. Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"setting-up-watchtower"},"children":[{"type":"text","value":"Setting up watchtower"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://containrrr.dev/watchtower/","rel":["nofollow"]},"children":[{"type":"text","value":"Watchtower"}]},{"type":"text","value":" will automatically pull updated #docker containers. Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" and "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec/watchtower\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n - /home/user/.docker/config.json:/config.json\n command: --interval 60 image_1 image_2\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"watchtower"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"docker__watchtower"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"v2tec/watchtower"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"/var/run/docker.sock:/var/run/docker.sock"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"/home/user/.docker/config.json:/config.json"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af48"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-d995bf"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4ffa29"},"children":[{"type":"text","value":"--interval 60 image_1 image_2"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-4ffa29{color:#A5D6FF}.ct-d995bf{color:#C9D1D9}.ct-38af48{color:#7EE787}.light .ct-38af48{color:#268BD2}.light .ct-d995bf{color:#657B83}.light .ct-4ffa29{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"setting-up-watchtower","depth":2,"text":"Setting up watchtower"}]}},"_type":"markdown","_id":"content:Docker:Refresh containers on pull.md","_source":"content","_file":"Docker/Refresh containers on pull.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/WJQDeZ21lK.json b/api/_content/query/WJQDeZ21lK.json index f39860d..9571a43 100644 --- a/api/_content/query/WJQDeZ21lK.json +++ b/api/_content/query/WJQDeZ21lK.json @@ -1 +1 @@ -{"_path":"/git/git-aliases-and-useful-commands","_dir":"git","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Git Aliases And Useful Commands","description":"Shorthands for #git commands can be specified. Should be placed at ~/.gitconfig.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Shorthands for #git commands can be specified. Should be placed at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n"}]}]}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"command"}]}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"description"}]}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git flush"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"drops all branches, except master"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git lol"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"shows log"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git c"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits with message"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git cv"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits without hooks"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git p"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"pushes"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git pf"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"push with --force and additional check"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git ignore-now"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"starts ignoring file from now on"}]}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Shorthands for #git commands can be specified. Should be placed at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"[alias]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" flush "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" git clean"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"branches branch "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" grep "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"v master "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" xargs git branch "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"D"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" lol "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" log "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"oneline "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"graph"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" l "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" lol"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" c "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" commit "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"am"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" cv "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" commit "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"no"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"verify "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"am"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" p "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" push"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" pf "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" p "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"force"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"with"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"lease"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" ignore"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"now "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":" update"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"index "}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"skip"}]},{"type":"element","tag":"span","props":{"class":"ct-266817"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-3013c7"},"children":[{"type":"text","value":"worktree"}]}]}]}]}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"command"}]}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"description"}]}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git flush"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"drops all branches, except master"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git lol"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"shows log"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git c"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits with message"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git cv"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits without hooks"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git p"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"pushes"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git pf"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"push with --force and additional check"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git ignore-now"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"starts ignoring file from now on"}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-266817{color:#FF7B72}.ct-3013c7{color:#C9D1D9}.light .ct-3013c7{color:#657B83}.light .ct-266817{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Git:Git aliases and useful commands.md","_source":"content","_file":"Git/Git aliases and useful commands.md","_extension":"md"} \ No newline at end of file +{"_path":"/git/git-aliases-and-useful-commands","_dir":"git","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Git Aliases And Useful Commands","description":"Shorthands for #git commands can be specified. Should be placed at ~/.gitconfig.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Shorthands for #git commands can be specified. Should be placed at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n"}]}]}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"command"}]}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"description"}]}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git flush"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"drops all branches, except master"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git lol"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"shows log"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git c"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits with message"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git cv"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits without hooks"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git p"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"pushes"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git pf"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"push with --force and additional check"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git ignore-now"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"starts ignoring file from now on"}]}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Shorthands for #git commands can be specified. Should be placed at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"[alias]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" flush "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" git clean"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"branches branch "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" grep "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"v master "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" xargs git branch "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"D"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" lol "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" log "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"oneline "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"graph"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" l "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" lol"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" c "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" commit "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"am"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" cv "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" commit "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"no"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"verify "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"am"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" p "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" push"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" pf "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" p "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"force"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"with"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"lease"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" ignore"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"now "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":" update"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"index "}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"--"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"skip"}]},{"type":"element","tag":"span","props":{"class":"ct-b9ecb8"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-473820"},"children":[{"type":"text","value":"worktree"}]}]}]}]}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"command"}]}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"description"}]}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git flush"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"drops all branches, except master"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git lol"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"shows log"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git c"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits with message"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git cv"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"commits without hooks"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git p"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"pushes"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git pf"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"push with --force and additional check"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"git ignore-now"}]}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"starts ignoring file from now on"}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-b9ecb8{color:#FF7B72}.ct-473820{color:#C9D1D9}.light .ct-473820{color:#657B83}.light .ct-b9ecb8{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Git:Git aliases and useful commands.md","_source":"content","_file":"Git/Git aliases and useful commands.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/WO7KYRkFiw.json b/api/_content/query/WO7KYRkFiw.json index a270b16..6fa969b 100644 --- a/api/_content/query/WO7KYRkFiw.json +++ b/api/_content/query/WO7KYRkFiw.json @@ -1 +1 @@ -{"_path":"/blockchain/smart-contracts","_dir":"blockchain","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Smart Contracts","description":"For common functions see Common typescript examples.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For common functions see "},{"type":"element","tag":"a","props":{"href":"Common%20typescript%20examples"},"children":[{"type":"text","value":"Common typescript examples"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"getting-smart-contract-instance"},"children":[{"type":"text","value":"Getting smart contract instance"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for calling smart contract methods:"}]},{"type":"element","tag":"code","props":{"code":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"executing-contract-method"},"children":[{"type":"text","value":"Executing contract method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Contract has "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"write"}]},{"type":"text","value":" methods. To get a list of methods, you can paste contract address on "},{"type":"element","tag":"a","props":{"href":"https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","rel":["nofollow"]},"children":[{"type":"text","value":"https://etherscan.io/ ETH"}]},{"type":"text","value":" or any other service."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Read"}]},{"type":"text","value":" methods doesn't require spending "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":". "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Write"}]},{"type":"text","value":" methods cost some amount of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":", hence they will be executed with confirmation from user."}]},{"type":"element","tag":"h3","props":{"id":"example-for-metamask-without-private-key"},"children":[{"type":"text","value":"Example for #Metamask without private key"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"nodejs-and-react-native-example"},"children":[{"type":"text","value":"Node.js and React Native example"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"calling-a-batch-of-contracts-methods"},"children":[{"type":"text","value":"Calling a batch of contract's methods"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Function calls batch of requests, returning array of results. For example:"}]},{"type":"element","tag":"code","props":{"code":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n"}]}]}]},{"type":"element","tag":"code","props":{"code":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-smart-contract-events"},"children":[{"type":"text","value":"Subscribing to smart contract events"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There're different ways to subscribe for contract events. For all of them you will need following variables:"}]},{"type":"element","tag":"code","props":{"code":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"by-accessing-contractevents"},"children":[{"type":"text","value":"By accessing contract.events"}]},{"type":"element","tag":"code","props":{"code":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"with-filtering"},"children":[{"type":"text","value":"With filtering"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We're listening to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" event here:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"common-subscribe-method"},"children":[{"type":"text","value":"Common Subscribe method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Filtering options can also be specified:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"getting-event-history"},"children":[{"type":"text","value":"Getting event history"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Getting history for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" events for specific values. More info can be found "},{"type":"element","tag":"a","props":{"href":"https://web3js.readthedocs.io/en/v1.2.11/web3-eth-subscribe.html#","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]}]},{"type":"element","tag":"code","props":{"code":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For common functions see "},{"type":"element","tag":"a","props":{"href":"Common%20typescript%20examples"},"children":[{"type":"text","value":"Common typescript examples"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"getting-smart-contract-instance"},"children":[{"type":"text","value":"Getting smart contract instance"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for calling smart contract methods:"}]},{"type":"element","tag":"code","props":{"code":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'web3-eth-contract'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"abi"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"object"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0c16cc"},"children":[{"type":"text","value":"abiFromJson"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d924d9"},"children":[{"type":"text","value":"JSON"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0c16cc"},"children":[{"type":"text","value":"parse"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"abiFromJson"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"executing-contract-method"},"children":[{"type":"text","value":"Executing contract method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Contract has "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"write"}]},{"type":"text","value":" methods. To get a list of methods, you can paste contract address on "},{"type":"element","tag":"a","props":{"href":"https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","rel":["nofollow"]},"children":[{"type":"text","value":"https://etherscan.io/ ETH"}]},{"type":"text","value":" or any other service."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Read"}]},{"type":"text","value":" methods doesn't require spending "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":". "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Write"}]},{"type":"text","value":" methods cost some amount of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":", hence they will be executed with confirmation from user."}]},{"type":"element","tag":"h3","props":{"id":"example-for-metamask-without-private-key"},"children":[{"type":"text","value":"Example for #Metamask without private key"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// see example below"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// ABI of contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"/* ... */"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// address for contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"executeContractMethod"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ({}) "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// getting contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// Calling write method"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// authorizing with Metamask"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'eth_requestAccounts'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// getting wallet address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"addressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"selectedAddress"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// calling \"store\" store method for contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// payload should include `from` address, that matches"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// current user's wallet"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"store"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'Parameter'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"send"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" from: "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"addressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4a0f6a"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// calling read method"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// this method can return data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"retrieve"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4a0f6a"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"nodejs-and-react-native-example"},"children":[{"type":"text","value":"Node.js and React Native example"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// see example below"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// ABI контракта"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"/* ... */"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// contract address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// getting contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// account's private key"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// write-methods requires private key"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"executeContractMethod"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"val"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"store"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"val"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"account"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"accounts"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"privateKeyToAccount"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" to: "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"encodeABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" gas: "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"estimateGas"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"({ from: "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"account"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" gasPrice: "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"signed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"accounts"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"signTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"sendSignedTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"signed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"rawTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"};"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"calling-a-batch-of-contracts-methods"},"children":[{"type":"text","value":"Calling a batch of contract's methods"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Function calls batch of requests, returning array of results. For example:"}]},{"type":"element","tag":"code","props":{"code":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"requests"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"method"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"balanceOf"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"method"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getStaked"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"call"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"code","props":{"code":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"givenProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"calls"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"any"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"[]) "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getWeb3NoAccount"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"BatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"promises"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"calls"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"map"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"add"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"execute"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4a0f6a"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"all"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"promises"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-81ebef"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-3dd077"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-smart-contract-events"},"children":[{"type":"text","value":"Subscribing to smart contract events"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There're different ways to subscribe for contract events. For all of them you will need following variables:"}]},{"type":"element","tag":"code","props":{"code":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'web3'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'YOUR_RPC_ENDPOINT_HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'YOUR ABI HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'YOUR CONTRACT ADDRESS HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"by-accessing-contractevents"},"children":[{"type":"text","value":"By accessing contract.events"}]},{"type":"element","tag":"code","props":{"code":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"referralProgramContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"events"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"RegisterUser"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-0a0823"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"subscriptionId"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"`| UserRegistered | events | ${"}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscriptionId"}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"removed"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-427bbc"},"children":[{"type":"text","value":"boolean"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"returnValues"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3cce47"},"children":[{"type":"text","value":"RegisterUserResponseInterface"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"removed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"user"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-047000"},"children":[{"type":"text","value":"referrer"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"returnValues"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"user"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"referrer"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"`| ONCE | ${"}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" )"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-d6daf9"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-0a0823"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":", ("}]},{"type":"element","tag":"span","props":{"class":"ct-60e515"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-148471"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3cce47"},"children":[{"type":"text","value":"ErrnoException"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-7475e8"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-16c265"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"with-filtering"},"children":[{"type":"text","value":"With filtering"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We're listening to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" event here:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" filter: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" value: [],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"events"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"Transfer"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'changed'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"changed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"str"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"common-subscribe-method"},"children":[{"type":"text","value":"Common Subscribe method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Filtering options can also be specified:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" address: ["}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'address-1'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'address-2'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"], "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"//Only get events from specific addresses"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" topics: [] "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"//What topics to subscribe to"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'logs'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'changed'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"changed"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"nr"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"getting-event-history"},"children":[{"type":"text","value":"Getting event history"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Getting history for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" events for specific values. More info can be found "},{"type":"element","tag":"a","props":{"href":"https://web3js.readthedocs.io/en/v1.2.11/web3-eth-subscribe.html#","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]}]},{"type":"element","tag":"code","props":{"code":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"//example options(optional)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-307d26"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a00ecd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" filter: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// only get events where transfer value was 1000 or 1337"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" value: ["}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'1000'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'1337'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"] "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-495eea"},"children":[{"type":"text","value":"// number | \"earliest\" | \"pending\" | \"latest\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-538bd0"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" toBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'latest'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"getPastEvents"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-69a21a"},"children":[{"type":"text","value":"'Transfer'"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-389197"},"children":[{"type":"text","value":"results"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-37c069"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-5f84b8"},"children":[{"type":"text","value":" "}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-3cce47{color:#FFA657}.ct-0a0823{color:#A5D6FF}.ct-81ebef{color:#79C0FF}.ct-4a0f6a{color:#79C0FF}.ct-538bd0{color:#79C0FF}.ct-047000{color:#79C0FF}.ct-307d26{color:#FF7B72}.ct-495eea{color:#8B949E}.ct-3dd077{color:#FFA657}.ct-37c069{color:#D2A8FF}.ct-d924d9{color:#79C0FF}.ct-0c16cc{color:#79C0FF}.ct-427bbc{color:#79C0FF}.ct-60e515{color:#FFA657}.ct-148471{color:#FF7B72}.ct-d6daf9{color:#D2A8FF}.ct-16c265{color:#C9D1D9}.ct-7475e8{color:#FF7B72}.ct-69a21a{color:#A5D6FF}.ct-389197{color:#C9D1D9}.ct-5f84b8{color:#C9D1D9}.ct-a00ecd{color:#FF7B72}.light .ct-a00ecd{color:#859900}.light .ct-5f84b8{color:#657B83}.light .ct-389197{color:#268BD2}.light .ct-69a21a{color:#2AA198}.light .ct-7475e8{color:#073642}.light .ct-16c265{color:#657B83}.light .ct-d6daf9{color:#268BD2}.light .ct-148471{color:#859900}.light .ct-60e515{color:#657B83}.light .ct-427bbc{color:#859900}.light .ct-0c16cc{color:#268BD2}.light .ct-d924d9{color:#657B83}.light .ct-37c069{color:#268BD2}.light .ct-3dd077{color:#657B83}.light .ct-495eea{color:#93A1A1}.light .ct-307d26{color:#073642}.light .ct-047000{color:#268BD2}.light .ct-538bd0{color:#D33682}.light .ct-4a0f6a{color:#859900}.light .ct-81ebef{color:#B58900}.light .ct-0a0823{color:#2AA198}.light .ct-3cce47{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"getting-smart-contract-instance","depth":2,"text":"Getting smart contract instance"},{"id":"executing-contract-method","depth":2,"text":"Executing contract method","children":[{"id":"example-for-metamask-without-private-key","depth":3,"text":"Example for #Metamask without private key"},{"id":"nodejs-and-react-native-example","depth":3,"text":"Node.js and React Native example"},{"id":"calling-a-batch-of-contracts-methods","depth":3,"text":"Calling a batch of contract's methods"}]},{"id":"subscribing-to-smart-contract-events","depth":2,"text":"Subscribing to smart contract events","children":[{"id":"by-accessing-contractevents","depth":3,"text":"By accessing contract.events"},{"id":"with-filtering","depth":3,"text":"With filtering"},{"id":"common-subscribe-method","depth":3,"text":"Common Subscribe method"},{"id":"getting-event-history","depth":3,"text":"Getting event history"}]}]}},"_type":"markdown","_id":"content:Blockchain:Smart contracts.md","_source":"content","_file":"Blockchain/Smart contracts.md","_extension":"md"} \ No newline at end of file +{"_path":"/blockchain/smart-contracts","_dir":"blockchain","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Smart Contracts","description":"For common functions see Common typescript examples.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For common functions see "},{"type":"element","tag":"a","props":{"href":"Common%20typescript%20examples"},"children":[{"type":"text","value":"Common typescript examples"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"getting-smart-contract-instance"},"children":[{"type":"text","value":"Getting smart contract instance"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for calling smart contract methods:"}]},{"type":"element","tag":"code","props":{"code":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"executing-contract-method"},"children":[{"type":"text","value":"Executing contract method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Contract has "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"write"}]},{"type":"text","value":" methods. To get a list of methods, you can paste contract address on "},{"type":"element","tag":"a","props":{"href":"https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","rel":["nofollow"]},"children":[{"type":"text","value":"https://etherscan.io/ ETH"}]},{"type":"text","value":" or any other service."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Read"}]},{"type":"text","value":" methods doesn't require spending "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":". "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Write"}]},{"type":"text","value":" methods cost some amount of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":", hence they will be executed with confirmation from user."}]},{"type":"element","tag":"h3","props":{"id":"example-for-metamask-without-private-key"},"children":[{"type":"text","value":"Example for #Metamask without private key"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"nodejs-and-react-native-example"},"children":[{"type":"text","value":"Node.js and React Native example"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"calling-a-batch-of-contracts-methods"},"children":[{"type":"text","value":"Calling a batch of contract's methods"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Function calls batch of requests, returning array of results. For example:"}]},{"type":"element","tag":"code","props":{"code":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n"}]}]}]},{"type":"element","tag":"code","props":{"code":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-smart-contract-events"},"children":[{"type":"text","value":"Subscribing to smart contract events"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There're different ways to subscribe for contract events. For all of them you will need following variables:"}]},{"type":"element","tag":"code","props":{"code":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"by-accessing-contractevents"},"children":[{"type":"text","value":"By accessing contract.events"}]},{"type":"element","tag":"code","props":{"code":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"with-filtering"},"children":[{"type":"text","value":"With filtering"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We're listening to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" event here:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"common-subscribe-method"},"children":[{"type":"text","value":"Common Subscribe method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Filtering options can also be specified:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"getting-event-history"},"children":[{"type":"text","value":"Getting event history"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Getting history for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" events for specific values. More info can be found "},{"type":"element","tag":"a","props":{"href":"https://web3js.readthedocs.io/en/v1.2.11/web3-eth-subscribe.html#","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]}]},{"type":"element","tag":"code","props":{"code":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"For common functions see "},{"type":"element","tag":"a","props":{"href":"Common%20typescript%20examples"},"children":[{"type":"text","value":"Common typescript examples"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"getting-smart-contract-instance"},"children":[{"type":"text","value":"Getting smart contract instance"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for calling smart contract methods:"}]},{"type":"element","tag":"code","props":{"code":"import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract => {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'web3-eth-contract'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d7a62"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"abi"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"object"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1ed0c7"},"children":[{"type":"text","value":"abiFromJson"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561f21"},"children":[{"type":"text","value":"JSON"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-1ed0c7"},"children":[{"type":"text","value":"parse"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"abiFromJson"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-a644f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-a644f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"executing-contract-method"},"children":[{"type":"text","value":"Executing contract method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Contract has "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"read"}]},{"type":"text","value":" and "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"write"}]},{"type":"text","value":" methods. To get a list of methods, you can paste contract address on "},{"type":"element","tag":"a","props":{"href":"https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","rel":["nofollow"]},"children":[{"type":"text","value":"https://etherscan.io/ ETH"}]},{"type":"text","value":" or any other service."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Read"}]},{"type":"text","value":" methods doesn't require spending "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":". "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Write"}]},{"type":"text","value":" methods cost some amount of "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"gas"}]},{"type":"text","value":", hence they will be executed with confirmation from user."}]},{"type":"element","tag":"h3","props":{"id":"example-for-metamask-without-private-key"},"children":[{"type":"text","value":"Example for #Metamask without private key"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI of contract\nconst CONTRACT_ABI = { /* ... */ };\n // address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) => {\n // getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n // Calling write method\n try {\n // authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n // getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n // calling \"store\" store method for contract\n // payload should include `from` address, that matches\n // current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n // calling read method\n try {\n // this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// see example below"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// ABI of contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"/* ... */"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// address for contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"executeContractMethod"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ({}) "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// getting contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// Calling write method"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// authorizing with Metamask"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"({ method: "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'eth_requestAccounts'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// getting wallet address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"addressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"currentProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"selectedAddress"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// calling \"store\" store method for contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// payload should include `from` address, that matches"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// current user's wallet"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"store"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9a1d7b"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'Parameter'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"send"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" from: "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"addressUser"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-612ba8"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// calling read method"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// this method can return data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"retrieve"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-612ba8"},"children":[{"type":"text","value":"Error"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"nodejs-and-react-native-example"},"children":[{"type":"text","value":"Node.js and React Native example"}]},{"type":"element","tag":"code","props":{"code":"// see example below\nimport { getContract } from '.';\n\n// ABI контракта\nconst CONTRACT_ABI = { /* ... */ };\n// contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n// getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n// account's private key\nconst privateKey = '...';\n\n// write-methods requires private key\nconst executeContractMethod = async (val: number) => {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// see example below"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'.'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// ABI контракта"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"/* ... */"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// contract address"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// getting contract"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// account's private key"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'...'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// write-methods requires private key"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d7a62"},"children":[{"type":"text","value":"executeContractMethod"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"val"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"methods"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"store"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"val"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"account"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"accounts"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"privateKeyToAccount"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" to: "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" data: "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"encodeABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" gas: "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"transaction"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"estimateGas"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"({ from: "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"account"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"address"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" gasPrice: "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getGasPrice"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"(),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"signed"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"accounts"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"signTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"privateKey"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"eth"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"sendSignedTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"signed"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"rawTransaction"}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"};"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"calling-a-batch-of-contracts-methods"},"children":[{"type":"text","value":"Calling a batch of contract's methods"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Function calls batch of requests, returning array of results. For example:"}]},{"type":"element","tag":"code","props":{"code":" const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"requests"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ["}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"method"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"balanceOf"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"call"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"method"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getStaked"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"()."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"call"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"await"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"request"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"code","props":{"code":"const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) => {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) => {\n return new Promise((resolve, reject) => {\n batch.add(\n call.request({}, (err, result) => {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"givenProvider"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"PROVIDER_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1d7a62"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"calls"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"any"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"[]) "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getWeb3NoAccount"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"BatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"promises"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"calls"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"map"}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"add"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"reject"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"resolve"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"result"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"batch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"execute"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-612ba8"},"children":[{"type":"text","value":"Promise"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"all"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"promises"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3659c7"},"children":[{"type":"text","value":"null"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"};"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-a644f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"default"}]},{"type":"element","tag":"span","props":{"class":"ct-a644f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"makeBatchRequest"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"subscribing-to-smart-contract-events"},"children":[{"type":"text","value":"Subscribing to smart contract events"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"There're different ways to subscribe for contract events. For all of them you will need following variables:"}]},{"type":"element","tag":"code","props":{"code":" import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'web3'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'YOUR_RPC_ENDPOINT_HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'YOUR ABI HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'YOUR CONTRACT ADDRESS HERE'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"new"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"Web3"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"Contract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"ABI"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"CONTRACT_ADDRESS"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"by-accessing-contractevents"},"children":[{"type":"text","value":"By accessing contract.events"}]},{"type":"element","tag":"code","props":{"code":"referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) => {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) => {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) => {\n console.log(error);\n });\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"referralProgramContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"events"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"RegisterUser"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"()"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-1d7a62"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-43fe40"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":", ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"subscriptionId"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"`| UserRegistered | events | ${"}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscriptionId"}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"async"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"removed"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f51dd2"},"children":[{"type":"text","value":"boolean"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"returnValues"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d5c04"},"children":[{"type":"text","value":"RegisterUserResponseInterface"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"try"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"removed"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"user"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8024fd"},"children":[{"type":"text","value":"referrer"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"returnValues"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"user"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"referrer"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"`| ONCE | ${"}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"e"}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"}`"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" )"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-1d7a62"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-43fe40"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":", ("}]},{"type":"element","tag":"span","props":{"class":"ct-05b505"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-cc0b53"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-4d5c04"},"children":[{"type":"text","value":"ErrnoException"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-3552ef"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-109f96"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"error"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"with-filtering"},"children":[{"type":"text","value":"With filtering"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"We're listening to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" event here:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event => console.log(event))\n .on('changed', changed => console.log(changed))\n .on('error', err => throw err)\n .on('connected', str => console.log(str))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" filter: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" value: [],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1d7b"},"children":[{"type":"text","value":"0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"events"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"Transfer"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'changed'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"changed"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"str"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"common-subscribe-method"},"children":[{"type":"text","value":"Common Subscribe method"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Filtering options can also be specified:"}]},{"type":"element","tag":"code","props":{"code":" let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], //Only get events from specific addresses\n topics: [] //What topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) => {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event => console.log(event))\n subscription.on('changed', changed => console.log(changed))\n subscription.on('error', err => { throw err })\n subscription.on('connected', nr => console.log(nr))\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1d7b"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" address: ["}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'address-1'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'address-2'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"], "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"//Only get events from specific addresses"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" topics: [] "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"//What topics to subscribe to"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'logs'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'data'"}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'changed'"}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"changed"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'error'"}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"throw"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"err"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" })"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"subscription"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"on"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'connected'"}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"console"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"nr"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"getting-event-history"},"children":[{"type":"text","value":"Getting event history"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Getting history for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"Transfer"}]},{"type":"text","value":" events for specific values. More info can be found "},{"type":"element","tag":"a","props":{"href":"https://web3js.readthedocs.io/en/v1.2.11/web3-eth-subscribe.html#","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]}]},{"type":"element","tag":"code","props":{"code":" //example options(optional)\n let options = {\n filter: {\n // only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n // number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results => console.log(results))\n .catch(err => throw err);\n\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"//example options(optional)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8b86e9"},"children":[{"type":"text","value":"let"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c38b7d"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" filter: {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// only get events where transfer value was 1000 or 1337"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" value: ["}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'1000'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'1337'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"] "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-92b574"},"children":[{"type":"text","value":"// number | \"earliest\" | \"pending\" | \"latest\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" fromBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1d7b"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" toBlock: "}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'latest'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" };"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"myContract"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"getPastEvents"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-561e74"},"children":[{"type":"text","value":"'Transfer'"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"then"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-dae887"},"children":[{"type":"text","value":"results"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" ."}]},{"type":"element","tag":"span","props":{"class":"ct-3eaeba"},"children":[{"type":"text","value":"catch"}]},{"type":"element","tag":"span","props":{"class":"ct-aa3fd5"},"children":[{"type":"text","value":" "}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-4d5c04{color:#FFA657}.ct-43fe40{color:#A5D6FF}.ct-3659c7{color:#79C0FF}.ct-612ba8{color:#79C0FF}.ct-9a1d7b{color:#79C0FF}.ct-8024fd{color:#79C0FF}.ct-8b86e9{color:#FF7B72}.ct-92b574{color:#8B949E}.ct-a644f1{color:#FFA657}.ct-3eaeba{color:#D2A8FF}.ct-561f21{color:#79C0FF}.ct-1ed0c7{color:#79C0FF}.ct-f51dd2{color:#79C0FF}.ct-05b505{color:#FFA657}.ct-cc0b53{color:#FF7B72}.ct-1d7a62{color:#D2A8FF}.ct-109f96{color:#C9D1D9}.ct-3552ef{color:#FF7B72}.ct-561e74{color:#A5D6FF}.ct-dae887{color:#C9D1D9}.ct-aa3fd5{color:#C9D1D9}.ct-c38b7d{color:#FF7B72}.light .ct-c38b7d{color:#859900}.light .ct-aa3fd5{color:#657B83}.light .ct-dae887{color:#268BD2}.light .ct-561e74{color:#2AA198}.light .ct-3552ef{color:#073642}.light .ct-109f96{color:#657B83}.light .ct-1d7a62{color:#268BD2}.light .ct-cc0b53{color:#859900}.light .ct-05b505{color:#657B83}.light .ct-f51dd2{color:#859900}.light .ct-1ed0c7{color:#268BD2}.light .ct-561f21{color:#657B83}.light .ct-3eaeba{color:#268BD2}.light .ct-a644f1{color:#657B83}.light .ct-92b574{color:#93A1A1}.light .ct-8b86e9{color:#073642}.light .ct-8024fd{color:#268BD2}.light .ct-9a1d7b{color:#D33682}.light .ct-612ba8{color:#859900}.light .ct-3659c7{color:#B58900}.light .ct-43fe40{color:#2AA198}.light .ct-4d5c04{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"getting-smart-contract-instance","depth":2,"text":"Getting smart contract instance"},{"id":"executing-contract-method","depth":2,"text":"Executing contract method","children":[{"id":"example-for-metamask-without-private-key","depth":3,"text":"Example for #Metamask without private key"},{"id":"nodejs-and-react-native-example","depth":3,"text":"Node.js and React Native example"},{"id":"calling-a-batch-of-contracts-methods","depth":3,"text":"Calling a batch of contract's methods"}]},{"id":"subscribing-to-smart-contract-events","depth":2,"text":"Subscribing to smart contract events","children":[{"id":"by-accessing-contractevents","depth":3,"text":"By accessing contract.events"},{"id":"with-filtering","depth":3,"text":"With filtering"},{"id":"common-subscribe-method","depth":3,"text":"Common Subscribe method"},{"id":"getting-event-history","depth":3,"text":"Getting event history"}]}]}},"_type":"markdown","_id":"content:Blockchain:Smart contracts.md","_source":"content","_file":"Blockchain/Smart contracts.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/WUiUHbO5Pg.json b/api/_content/query/WUiUHbO5Pg.json index 04a7aaa..0a76585 100644 --- a/api/_content/query/WUiUHbO5Pg.json +++ b/api/_content/query/WUiUHbO5Pg.json @@ -1 +1 @@ -{"_path":"/css/test-if-browser-supports-css-rules","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Test If Browser Supports CSS Rules","description":"To test if browser supports some #CSS rules, do following:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To test if browser supports some #CSS rules, do following:"}]},{"type":"element","tag":"code","props":{"code":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","language":"css"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"@mixin"}]},{"type":"text","value":" will only apply rule if browser support backdrop filtering:"}]},{"type":"element","tag":"code","props":{"code":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To test if browser supports some #CSS rules, do following:"}]},{"type":"element","tag":"code","props":{"code":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","language":"css"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@supports"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dc5f6f"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-76b142"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b57c26"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-147719"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":": blur(5px);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"@mixin"}]},{"type":"text","value":" will only apply rule if browser support backdrop filtering:"}]},{"type":"element","tag":"code","props":{"code":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@mixin"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ee8d8a"},"children":[{"type":"text","value":"can_backdrop"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@supports"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-34cfd3"},"children":[{"type":"text","value":"-webkit-backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-4138a8"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-20b136"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-11eec6"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":")) "}]},{"type":"element","tag":"span","props":{"class":"ct-92f797"},"children":[{"type":"text","value":"or"}]},{"type":"element","tag":"span","props":{"class":"ct-3d523b"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-dc5f6f"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-76b142"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b57c26"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96fe27"},"children":[{"type":"text","value":"@content"}]},{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c068ad"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-92f797{color:#79C0FF}.ct-11eec6{color:#FF7B72}.ct-20b136{color:#79C0FF}.ct-4138a8{color:#79C0FF}.ct-34cfd3{color:#79C0FF}.ct-3d523b{color:#C9D1D9}.ct-ee8d8a{color:#D2A8FF}.ct-147719{color:#7EE787}.ct-b57c26{color:#79C0FF}.ct-76b142{color:#79C0FF}.ct-dc5f6f{color:#79C0FF}.ct-c068ad{color:#C9D1D9}.ct-96fe27{color:#FF7B72}.light .ct-96fe27{color:#859900}.light .ct-c068ad{color:#657B83}.light .ct-dc5f6f{color:#859900}.light .ct-76b142{color:#268BD2}.light .ct-b57c26{color:#D33682}.light .ct-147719{color:#268BD2}.light .ct-ee8d8a{color:#268BD2}.light .ct-3d523b{color:#657B83}.light .ct-34cfd3{color:#859900}.light .ct-4138a8{color:#268BD2}.light .ct-20b136{color:#D33682}.light .ct-11eec6{color:#859900}.light .ct-92f797{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:CSS:Test if browser supports CSS rules.md","_source":"content","_file":"CSS/Test if browser supports CSS rules.md","_extension":"md"} \ No newline at end of file +{"_path":"/css/test-if-browser-supports-css-rules","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Test If Browser Supports CSS Rules","description":"To test if browser supports some #CSS rules, do following:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To test if browser supports some #CSS rules, do following:"}]},{"type":"element","tag":"code","props":{"code":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","language":"css"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"@mixin"}]},{"type":"text","value":" will only apply rule if browser support backdrop filtering:"}]},{"type":"element","tag":"code","props":{"code":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To test if browser supports some #CSS rules, do following:"}]},{"type":"element","tag":"code","props":{"code":"@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","language":"css"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"@supports"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-4b23d2"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-189c40"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b01425"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-670d07"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":": blur(5px);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"@mixin"}]},{"type":"text","value":" will only apply rule if browser support backdrop filtering:"}]},{"type":"element","tag":"code","props":{"code":"@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"@mixin"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-af03f2"},"children":[{"type":"text","value":"can_backdrop"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"@supports"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-eb53f2"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a75c6d"},"children":[{"type":"text","value":"-webkit-backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-eb53f2"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-a1a7f3"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-eb53f2"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-0906b4"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-7f4dc3"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-eb53f2"},"children":[{"type":"text","value":")) "}]},{"type":"element","tag":"span","props":{"class":"ct-f4126f"},"children":[{"type":"text","value":"or"}]},{"type":"element","tag":"span","props":{"class":"ct-eb53f2"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-4b23d2"},"children":[{"type":"text","value":"backdrop-filter"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-189c40"},"children":[{"type":"text","value":"blur"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b01425"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"px"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" ) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-120989"},"children":[{"type":"text","value":"@content"}]},{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0e7559"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-f4126f{color:#79C0FF}.ct-7f4dc3{color:#FF7B72}.ct-0906b4{color:#79C0FF}.ct-a1a7f3{color:#79C0FF}.ct-a75c6d{color:#79C0FF}.ct-eb53f2{color:#C9D1D9}.ct-af03f2{color:#D2A8FF}.ct-670d07{color:#7EE787}.ct-b01425{color:#79C0FF}.ct-189c40{color:#79C0FF}.ct-4b23d2{color:#79C0FF}.ct-0e7559{color:#C9D1D9}.ct-120989{color:#FF7B72}.light .ct-120989{color:#859900}.light .ct-0e7559{color:#657B83}.light .ct-4b23d2{color:#859900}.light .ct-189c40{color:#268BD2}.light .ct-b01425{color:#D33682}.light .ct-670d07{color:#268BD2}.light .ct-af03f2{color:#268BD2}.light .ct-eb53f2{color:#657B83}.light .ct-a75c6d{color:#859900}.light .ct-a1a7f3{color:#268BD2}.light .ct-0906b4{color:#D33682}.light .ct-7f4dc3{color:#859900}.light .ct-f4126f{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:CSS:Test if browser supports CSS rules.md","_source":"content","_file":"CSS/Test if browser supports CSS rules.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/a1s3E9iAyd.json b/api/_content/query/a1s3E9iAyd.json index 7c9d417..ca52c0c 100644 --- a/api/_content/query/a1s3E9iAyd.json +++ b/api/_content/query/a1s3E9iAyd.json @@ -1 +1 @@ -{"_path":"/docker/wait-for-mysql","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Wait For Mysql","description":"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful query from database or exits with non-zero status after timeout."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Don't forget to change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$query"}]},{"type":"text","value":" for the actually working one."}]},{"type":"element","tag":"code","props":{"code":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20redis"},"children":[{"type":"text","value":"Wait for redis"}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful query from database or exits with non-zero status after timeout."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Don't forget to change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$query"}]},{"type":"text","value":" for the actually working one."}]},{"type":"element","tag":"code","props":{"code":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-09c516"},"children":[{"type":"text","value":"# Waits for mysql to become actually available"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ca8f86"},"children":[{"type":"text","value":"wait_for_mysql"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":"() {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" query="}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\"SELECT count(*) FROM users\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" timeout=180 "}]},{"type":"element","tag":"span","props":{"class":"ct-09c516"},"children":[{"type":"text","value":"# 3 minutes limit"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" i=0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"while"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-9ea5d9"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" -it "}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" mysql --user="}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" -e "}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"query"}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"do"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" sleep 1"}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" i="}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"$(("}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-6aee57"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" [[ "}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"-ge"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"timeout"}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" ]]"}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":";"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9ea5d9"},"children":[{"type":"text","value":"echo"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":"\"[Error] can't properly query MySQL after "}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-36fa5c"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-d3c17d"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-d554cb"},"children":[{"type":"text","value":" secs\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9ea5d9"},"children":[{"type":"text","value":"exit"}]},{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" 1"}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"fi"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ec8705"},"children":[{"type":"text","value":"done"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d5194e"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-09c516"},"children":[{"type":"text","value":"# usage: wait_for_mysql miin-mysql-dev root password database"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20redis"},"children":[{"type":"text","value":"Wait for redis"}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-6aee57{color:#79C0FF}.ct-36fa5c{color:#C9D1D9}.ct-d3c17d{color:#C9D1D9}.ct-9ea5d9{color:#79C0FF}.ct-ec8705{color:#FF7B72}.ct-d554cb{color:#A5D6FF}.ct-d5194e{color:#C9D1D9}.ct-ca8f86{color:#D2A8FF}.ct-09c516{color:#8B949E}.light .ct-09c516{color:#93A1A1}.light .ct-ca8f86{color:#268BD2}.light .ct-d5194e{color:#657B83}.light .ct-d554cb{color:#2AA198}.light .ct-ec8705{color:#859900}.light .ct-9ea5d9{color:#268BD2}.light .ct-d3c17d{color:#859900}.light .ct-36fa5c{color:#268BD2}.light .ct-6aee57{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Wait for mysql.md","_source":"content","_file":"Docker/Wait for mysql.md","_extension":"md"} \ No newline at end of file +{"_path":"/docker/wait-for-mysql","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Wait For Mysql","description":"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful query from database or exits with non-zero status after timeout."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Don't forget to change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$query"}]},{"type":"text","value":" for the actually working one."}]},{"type":"element","tag":"code","props":{"code":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20redis"},"children":[{"type":"text","value":"Wait for redis"}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.com/vishnubob/wait-for-it","rel":["nofollow"]},"children":[{"type":"text","value":"wait-for-it.sh"}]},{"type":"text","value":" doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This script waits for first successful query from database or exits with non-zero status after timeout."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Don't forget to change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"$query"}]},{"type":"text","value":" for the actually working one."}]},{"type":"element","tag":"code","props":{"code":"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 >/dev/null 2>&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-96e909"},"children":[{"type":"text","value":"# Waits for mysql to become actually available"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-4e894a"},"children":[{"type":"text","value":"wait_for_mysql"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":"() {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" query="}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\"SELECT count(*) FROM users\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" timeout=180 "}]},{"type":"element","tag":"span","props":{"class":"ct-96e909"},"children":[{"type":"text","value":"# 3 minutes limit"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" i=0"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"while"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-6f15dd"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" -it "}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" mysql --user="}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" -e "}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"query"}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"do"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" sleep 1"}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" i="}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"$(("}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-82e697"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"))"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" [[ "}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"-ge"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"timeout"}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" ]]"}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":";"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"then"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6f15dd"},"children":[{"type":"text","value":"echo"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":"\"[Error] can't properly query MySQL after "}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"${"}]},{"type":"element","tag":"span","props":{"class":"ct-1e03f6"},"children":[{"type":"text","value":"i"}]},{"type":"element","tag":"span","props":{"class":"ct-6132de"},"children":[{"type":"text","value":"}"}]},{"type":"element","tag":"span","props":{"class":"ct-cdfdb2"},"children":[{"type":"text","value":" secs\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6f15dd"},"children":[{"type":"text","value":"exit"}]},{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" 1"}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"fi"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-170fd0"},"children":[{"type":"text","value":"done"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bf65b0"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-96e909"},"children":[{"type":"text","value":"# usage: wait_for_mysql miin-mysql-dev root password database"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"Wait%20for%20redis"},"children":[{"type":"text","value":"Wait for redis"}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-82e697{color:#79C0FF}.ct-1e03f6{color:#C9D1D9}.ct-6132de{color:#C9D1D9}.ct-6f15dd{color:#79C0FF}.ct-170fd0{color:#FF7B72}.ct-cdfdb2{color:#A5D6FF}.ct-bf65b0{color:#C9D1D9}.ct-4e894a{color:#D2A8FF}.ct-96e909{color:#8B949E}.light .ct-96e909{color:#93A1A1}.light .ct-4e894a{color:#268BD2}.light .ct-bf65b0{color:#657B83}.light .ct-cdfdb2{color:#2AA198}.light .ct-170fd0{color:#859900}.light .ct-6f15dd{color:#268BD2}.light .ct-6132de{color:#859900}.light .ct-1e03f6{color:#268BD2}.light .ct-82e697{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Wait for mysql.md","_source":"content","_file":"Docker/Wait for mysql.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/aP6pCxBj14.json b/api/_content/query/aP6pCxBj14.json index 3b4101f..2fa8796 100644 --- a/api/_content/query/aP6pCxBj14.json +++ b/api/_content/query/aP6pCxBj14.json @@ -1 +1 @@ -{"_path":"/linux/resume-or-start-screen-session","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Resume Or Start Screen Session","description":"Running this script will enter currently running screen session or will start new one.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Running this script will enter currently running "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"screen"}]},{"type":"text","value":" session or will start new one."}]},{"type":"element","tag":"code","props":{"code":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Running this script will enter currently running "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"screen"}]},{"type":"text","value":" session or will start new one."}]},{"type":"element","tag":"code","props":{"code":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7286cb"},"children":[{"type":"text","value":"( screen -r bash "}]},{"type":"element","tag":"span","props":{"class":"ct-fa5ecd"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-7286cb"},"children":[{"type":"text","value":" ( screen -d bash "}]},{"type":"element","tag":"span","props":{"class":"ct-fa5ecd"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-7286cb"},"children":[{"type":"text","value":" screen -r bash "}]},{"type":"element","tag":"span","props":{"class":"ct-fa5ecd"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-7286cb"},"children":[{"type":"text","value":" screen -SAm bash bash ) )"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-fa5ecd{color:#FF7B72}.ct-7286cb{color:#C9D1D9}.light .ct-7286cb{color:#657B83}.light .ct-fa5ecd{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Linux:Resume or start screen session.md","_source":"content","_file":"Linux/Resume or start screen session.md","_extension":"md"} \ No newline at end of file +{"_path":"/linux/resume-or-start-screen-session","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Resume Or Start Screen Session","description":"Running this script will enter currently running screen session or will start new one.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Running this script will enter currently running "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"screen"}]},{"type":"text","value":" session or will start new one."}]},{"type":"element","tag":"code","props":{"code":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Running this script will enter currently running "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"screen"}]},{"type":"text","value":" session or will start new one."}]},{"type":"element","tag":"code","props":{"code":"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-33f6fa"},"children":[{"type":"text","value":"( screen -r bash "}]},{"type":"element","tag":"span","props":{"class":"ct-d79ad9"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-33f6fa"},"children":[{"type":"text","value":" ( screen -d bash "}]},{"type":"element","tag":"span","props":{"class":"ct-d79ad9"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-33f6fa"},"children":[{"type":"text","value":" screen -r bash "}]},{"type":"element","tag":"span","props":{"class":"ct-d79ad9"},"children":[{"type":"text","value":"||"}]},{"type":"element","tag":"span","props":{"class":"ct-33f6fa"},"children":[{"type":"text","value":" screen -SAm bash bash ) )"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-d79ad9{color:#FF7B72}.ct-33f6fa{color:#C9D1D9}.light .ct-33f6fa{color:#657B83}.light .ct-d79ad9{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Linux:Resume or start screen session.md","_source":"content","_file":"Linux/Resume or start screen session.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/arOc40mIpI.json b/api/_content/query/arOc40mIpI.json index 885f536..aa5b152 100644 --- a/api/_content/query/arOc40mIpI.json +++ b/api/_content/query/arOc40mIpI.json @@ -1 +1 @@ -{"_path":"/docker/drone-ci","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Drone Ci","description":"Can be used with Private docker registry to deploy things using #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" to deploy things using #docker."}]},{"type":"element","tag":"h2","props":{"id":"pushing-to-private-docker_registry"},"children":[{"type":"text","value":"Pushing to private docker_registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should specify "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_login"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_password"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_registry"}]},{"type":"text","value":" organizations variables in your "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":". And "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker_repo"}]},{"type":"text","value":" variable for your repo as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker.yourdomain.com/your-image"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is example of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".droneci"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"private docker registry"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-for-drone-ci"},"children":[{"type":"text","value":"Docker-compose file for drone-ci"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":" service is ui itself and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone-agent"}]},{"type":"text","value":" is runner for builds, that can be started on different machine (or machines)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"secret_id"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"rpc_secret"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone.url"}]},{"type":"text","value":" to something you like."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"caching-builds"},"children":[{"type":"text","value":"Caching builds"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Haven't checked that yet, but there's a "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/the-ultimate-droneci-caching-guide","rel":["nofollow"]},"children":[{"type":"text","value":"manual"}]},{"type":"text","value":" from "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/","rel":["nofollow"]},"children":[{"type":"text","value":"Laszlo Fogas"}]},{"type":"text","value":" about that."}]},{"type":"element","tag":"h2","props":{"id":"get-user-info"},"children":[{"type":"text","value":"Get user info"}]},{"type":"element","tag":"code","props":{"code":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"mark-user-as-trusted"},"children":[{"type":"text","value":"Mark user as trusted"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"drone repo update $1 --trusted=true && drone repo info $1\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"drone repo update $1 --trusted=true && drone repo info $1\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" to deploy things using #docker."}]},{"type":"element","tag":"h2","props":{"id":"pushing-to-private-docker_registry"},"children":[{"type":"text","value":"Pushing to private docker_registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should specify "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_login"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_password"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_registry"}]},{"type":"text","value":" organizations variables in your "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":". And "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker_repo"}]},{"type":"text","value":" variable for your repo as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker.yourdomain.com/your-image"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is example of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".droneci"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"private docker registry"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"kind"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"pipeline"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"platform"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"os"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"linux"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"arch"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"amd64"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"steps"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"build-master"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"plugins/docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"when"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"branch"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"master"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"settings"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"dockerfile"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"Dockerfile"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"tag"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"${DRONE_BRANCH}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"username"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"global_docker_login"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"password"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"global_docker_password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"registry"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"global_docker_registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"repo"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"docker_repo"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-for-drone-ci"},"children":[{"type":"text","value":"Docker-compose file for drone-ci"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":" service is ui itself and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone-agent"}]},{"type":"text","value":" is runner for builds, that can be started on different machine (or machines)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"secret_id"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"rpc_secret"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone.url"}]},{"type":"text","value":" to something you like."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"drone"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone/drone:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_GITHUB_CLIENT_ID=secret_id"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_GITHUB_CLIENT_SECRET=client_secret"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_RPC_SECRET=rpc_secret"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_SERVER_HOST=drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_USER_CREATE=\"username:user,admin:true\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_SERVER_PROTO=https"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_TLS_AUTOCERT=false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_GIT_ALWAYS_AUTH=false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_LOGS_DEBUG=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_LOGS_TRACE=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"./data:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"8090:80"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"drone-agent"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone__agent"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"drone/agent:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"agent"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"/var/run/docker.sock:/var/run/docker.sock"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dd7736"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_RPC_SERVER=https://drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-2bd6cd"},"children":[{"type":"text","value":"DRONE_RPC_SECRET=rpc_secret"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"caching-builds"},"children":[{"type":"text","value":"Caching builds"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Haven't checked that yet, but there's a "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/the-ultimate-droneci-caching-guide","rel":["nofollow"]},"children":[{"type":"text","value":"manual"}]},{"type":"text","value":" from "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/","rel":["nofollow"]},"children":[{"type":"text","value":"Laszlo Fogas"}]},{"type":"text","value":" about that."}]},{"type":"element","tag":"h2","props":{"id":"get-user-info"},"children":[{"type":"text","value":"Get user info"}]},{"type":"element","tag":"code","props":{"code":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d6b69b"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" DRONE_SERVER=https://drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d6b69b"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" DRONE_TOKEN=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":"drone info"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"mark-user-as-trusted"},"children":[{"type":"text","value":"Mark user as trusted"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"drone repo update $1 --trusted=true && drone repo info $1\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":"drone repo update "}]},{"type":"element","tag":"span","props":{"class":"ct-7833c9"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-0db3cf"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" --trusted=true "}]},{"type":"element","tag":"span","props":{"class":"ct-b2944d"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-3abe3a"},"children":[{"type":"text","value":" drone repo info "}]},{"type":"element","tag":"span","props":{"class":"ct-7833c9"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-0db3cf"},"children":[{"type":"text","value":"1"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-b2944d{color:#FF7B72}.ct-0db3cf{color:#C9D1D9}.ct-7833c9{color:#C9D1D9}.ct-d6b69b{color:#FF7B72}.ct-2bd6cd{color:#A5D6FF}.ct-3abe3a{color:#C9D1D9}.ct-dd7736{color:#7EE787}.light .ct-dd7736{color:#268BD2}.light .ct-3abe3a{color:#657B83}.light .ct-2bd6cd{color:#2AA198}.light .ct-d6b69b{color:#073642}.light .ct-7833c9{color:#859900}.light .ct-0db3cf{color:#268BD2}.light .ct-b2944d{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"pushing-to-private-docker_registry","depth":2,"text":"Pushing to private docker_registry"},{"id":"docker-compose-file-for-drone-ci","depth":2,"text":"Docker-compose file for drone-ci"},{"id":"caching-builds","depth":2,"text":"Caching builds"},{"id":"get-user-info","depth":2,"text":"Get user info"},{"id":"mark-user-as-trusted","depth":2,"text":"Mark user as trusted"}]}},"_type":"markdown","_id":"content:Docker:Drone-ci.md","_source":"content","_file":"Docker/Drone-ci.md","_extension":"md"} \ No newline at end of file +{"_path":"/docker/drone-ci","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Drone Ci","description":"Can be used with Private docker registry to deploy things using #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" to deploy things using #docker."}]},{"type":"element","tag":"h2","props":{"id":"pushing-to-private-docker_registry"},"children":[{"type":"text","value":"Pushing to private docker_registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should specify "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_login"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_password"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_registry"}]},{"type":"text","value":" organizations variables in your "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":". And "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker_repo"}]},{"type":"text","value":" variable for your repo as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker.yourdomain.com/your-image"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is example of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".droneci"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"private docker registry"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-for-drone-ci"},"children":[{"type":"text","value":"Docker-compose file for drone-ci"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":" service is ui itself and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone-agent"}]},{"type":"text","value":" is runner for builds, that can be started on different machine (or machines)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"secret_id"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"rpc_secret"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone.url"}]},{"type":"text","value":" to something you like."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"caching-builds"},"children":[{"type":"text","value":"Caching builds"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Haven't checked that yet, but there's a "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/the-ultimate-droneci-caching-guide","rel":["nofollow"]},"children":[{"type":"text","value":"manual"}]},{"type":"text","value":" from "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/","rel":["nofollow"]},"children":[{"type":"text","value":"Laszlo Fogas"}]},{"type":"text","value":" about that."}]},{"type":"element","tag":"h2","props":{"id":"get-user-info"},"children":[{"type":"text","value":"Get user info"}]},{"type":"element","tag":"code","props":{"code":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"mark-user-as-trusted"},"children":[{"type":"text","value":"Mark user as trusted"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"drone repo update $1 --trusted=true && drone repo info $1\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"drone repo update $1 --trusted=true && drone repo info $1\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Can be used with "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"Private docker registry"}]},{"type":"text","value":" to deploy things using #docker."}]},{"type":"element","tag":"h2","props":{"id":"pushing-to-private-docker_registry"},"children":[{"type":"text","value":"Pushing to private docker_registry"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should specify "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_login"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_password"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"global_docker_registry"}]},{"type":"text","value":" organizations variables in your "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":". And "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker_repo"}]},{"type":"text","value":" variable for your repo as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docker.yourdomain.com/your-image"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This is example of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".droneci"}]},{"type":"text","value":" for "},{"type":"element","tag":"a","props":{"href":"Private%20docker%20registry"},"children":[{"type":"text","value":"private docker registry"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins/docker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"kind"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"pipeline"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"platform"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"os"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"linux"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"arch"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"amd64"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"steps"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"build-master"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"plugins/docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"when"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"branch"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"master"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"settings"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"dockerfile"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"Dockerfile"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"tag"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"${DRONE_BRANCH}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"username"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"global_docker_login"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"password"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"global_docker_password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"registry"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"global_docker_registry"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"repo"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"docker_repo"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-for-drone-ci"},"children":[{"type":"text","value":"Docker-compose file for drone-ci"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"The "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone"}]},{"type":"text","value":" service is ui itself and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone-agent"}]},{"type":"text","value":" is runner for builds, that can be started on different machine (or machines)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Change "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"secret_id"}]},{"type":"text","value":", "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"rpc_secret"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"drone.url"}]},{"type":"text","value":" to something you like."}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone/drone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - ./data:/data\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone/agent:latest\n command: agent\n restart: always\n volumes:\n - /var/run/docker.sock:/var/run/docker.sock\n environment:\n - DRONE_RPC_SERVER=https://drone.url\n - DRONE_RPC_SECRET=rpc_secret\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"drone"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"drone"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"drone/drone:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_GITHUB_CLIENT_ID=secret_id"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_GITHUB_CLIENT_SECRET=client_secret"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_RPC_SECRET=rpc_secret"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_SERVER_HOST=drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_USER_CREATE=\"username:user,admin:true\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_SERVER_PROTO=https"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_TLS_AUTOCERT=false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_GIT_ALWAYS_AUTH=false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_LOGS_DEBUG=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_LOGS_TRACE=true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"./data:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"8090:80"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"drone-agent"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"drone__agent"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"drone/agent:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"agent"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"/var/run/docker.sock:/var/run/docker.sock"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0f0ad9"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_RPC_SERVER=https://drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-17515e"},"children":[{"type":"text","value":"DRONE_RPC_SECRET=rpc_secret"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"caching-builds"},"children":[{"type":"text","value":"Caching builds"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Haven't checked that yet, but there's a "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/the-ultimate-droneci-caching-guide","rel":["nofollow"]},"children":[{"type":"text","value":"manual"}]},{"type":"text","value":" from "},{"type":"element","tag":"a","props":{"href":"https://laszlo.cloud/","rel":["nofollow"]},"children":[{"type":"text","value":"Laszlo Fogas"}]},{"type":"text","value":" about that."}]},{"type":"element","tag":"h2","props":{"id":"get-user-info"},"children":[{"type":"text","value":"Get user info"}]},{"type":"element","tag":"code","props":{"code":"export DRONE_SERVER=https://drone.url\nexport DRONE_TOKEN=password\ndrone info\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f7ec05"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" DRONE_SERVER=https://drone.url"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f7ec05"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" DRONE_TOKEN=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":"drone info"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"mark-user-as-trusted"},"children":[{"type":"text","value":"Mark user as trusted"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"1"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"drone repo update $1 --trusted=true && drone repo info $1\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":"drone repo update "}]},{"type":"element","tag":"span","props":{"class":"ct-533bdf"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-be3582"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" --trusted=true "}]},{"type":"element","tag":"span","props":{"class":"ct-77901b"},"children":[{"type":"text","value":"&&"}]},{"type":"element","tag":"span","props":{"class":"ct-024d63"},"children":[{"type":"text","value":" drone repo info "}]},{"type":"element","tag":"span","props":{"class":"ct-533bdf"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-be3582"},"children":[{"type":"text","value":"1"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-77901b{color:#FF7B72}.ct-be3582{color:#C9D1D9}.ct-533bdf{color:#C9D1D9}.ct-f7ec05{color:#FF7B72}.ct-17515e{color:#A5D6FF}.ct-024d63{color:#C9D1D9}.ct-0f0ad9{color:#7EE787}.light .ct-0f0ad9{color:#268BD2}.light .ct-024d63{color:#657B83}.light .ct-17515e{color:#2AA198}.light .ct-f7ec05{color:#073642}.light .ct-533bdf{color:#859900}.light .ct-be3582{color:#268BD2}.light .ct-77901b{color:#859900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"pushing-to-private-docker_registry","depth":2,"text":"Pushing to private docker_registry"},{"id":"docker-compose-file-for-drone-ci","depth":2,"text":"Docker-compose file for drone-ci"},{"id":"caching-builds","depth":2,"text":"Caching builds"},{"id":"get-user-info","depth":2,"text":"Get user info"},{"id":"mark-user-as-trusted","depth":2,"text":"Mark user as trusted"}]}},"_type":"markdown","_id":"content:Docker:Drone-ci.md","_source":"content","_file":"Docker/Drone-ci.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/eIcZslqPOz.json b/api/_content/query/eIcZslqPOz.json index 074bbdd..c69059c 100644 --- a/api/_content/query/eIcZslqPOz.json +++ b/api/_content/query/eIcZslqPOz.json @@ -1 +1 @@ -{"_path":"/git/force-git-to-use-https","_dir":"git","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Force Git To Use HTTPS","description":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put this inside your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"[url \"https://github.com\"]\n insteadOf = git://github.com\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"[url \"https://github.com\"]\n insteadOf = git://github.com\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put this inside your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"[url \"https://github.com\"]\n insteadOf = git://github.com\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-887227"},"children":[{"type":"text","value":"[url "}]},{"type":"element","tag":"span","props":{"class":"ct-bb7a3a"},"children":[{"type":"text","value":"\"https://github.com\""}]},{"type":"element","tag":"span","props":{"class":"ct-887227"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-887227"},"children":[{"type":"text","value":" insteadOf "}]},{"type":"element","tag":"span","props":{"class":"ct-9648cd"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-887227"},"children":[{"type":"text","value":" git:"}]},{"type":"element","tag":"span","props":{"class":"ct-b7e81b"},"children":[{"type":"text","value":"//github.com"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-b7e81b{color:#8B949E}.ct-9648cd{color:#FF7B72}.ct-bb7a3a{color:#A5D6FF}.ct-887227{color:#C9D1D9}.light .ct-887227{color:#657B83}.light .ct-bb7a3a{color:#2AA198}.light .ct-9648cd{color:#859900}.light .ct-b7e81b{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Git:Force git to use HTTPS.md","_source":"content","_file":"Git/Force git to use HTTPS.md","_extension":"md"} \ No newline at end of file +{"_path":"/git/force-git-to-use-https","_dir":"git","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Force Git To Use HTTPS","description":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put this inside your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"[url \"https://github.com\"]\n insteadOf = git://github.com\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"[url \"https://github.com\"]\n insteadOf = git://github.com\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Put this inside your "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"~/.gitconfig"}]},{"type":"text","value":":"}]},{"type":"element","tag":"code","props":{"code":"[url \"https://github.com\"]\n insteadOf = git://github.com\n","language":"c"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b3692d"},"children":[{"type":"text","value":"[url "}]},{"type":"element","tag":"span","props":{"class":"ct-35ba29"},"children":[{"type":"text","value":"\"https://github.com\""}]},{"type":"element","tag":"span","props":{"class":"ct-b3692d"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b3692d"},"children":[{"type":"text","value":" insteadOf "}]},{"type":"element","tag":"span","props":{"class":"ct-f321ae"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-b3692d"},"children":[{"type":"text","value":" git:"}]},{"type":"element","tag":"span","props":{"class":"ct-071617"},"children":[{"type":"text","value":"//github.com"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-071617{color:#8B949E}.ct-f321ae{color:#FF7B72}.ct-35ba29{color:#A5D6FF}.ct-b3692d{color:#C9D1D9}.light .ct-b3692d{color:#657B83}.light .ct-35ba29{color:#2AA198}.light .ct-f321ae{color:#859900}.light .ct-071617{color:#93A1A1}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Git:Force git to use HTTPS.md","_source":"content","_file":"Git/Force git to use HTTPS.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/epeSDkttbj.json b/api/_content/query/epeSDkttbj.json index 332d6a6..01ca0bb 100644 --- a/api/_content/query/epeSDkttbj.json +++ b/api/_content/query/epeSDkttbj.json @@ -1 +1 @@ -{"_path":"/css/sass-nth-child-iterate-mixin","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Sass Nth Child Iterate Mixin","description":"Say, we need to color n items by specific colors, which depend on its position. #SCSS supports iteration over lists for that purposes:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we need to color "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" items by specific colors, which depend on its position. #SCSS supports "},{"type":"element","tag":"a","props":{"href":"https://sass-lang.com/documentation/at-rules/control/each","rel":["nofollow"]},"children":[{"type":"text","value":"iteration over lists"}]},{"type":"text","value":" for that purposes:"}]},{"type":"element","tag":"code","props":{"code":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage is simple:"}]},{"type":"element","tag":"code","props":{"code":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we need to color "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" items by specific colors, which depend on its position. #SCSS supports "},{"type":"element","tag":"a","props":{"href":"https://sass-lang.com/documentation/at-rules/control/each","rel":["nofollow"]},"children":[{"type":"text","value":"iteration over lists"}]},{"type":"text","value":" for that purposes:"}]},{"type":"element","tag":"code","props":{"code":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-42be13"},"children":[{"type":"text","value":"@mixin"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-970948"},"children":[{"type":"text","value":"color-per-child"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$colors"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-42be13"},"children":[{"type":"text","value":"@each"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$color"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-42be13"},"children":[{"type":"text","value":"in"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$colors"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9944ba"},"children":[{"type":"text","value":"&"}]},{"type":"element","tag":"span","props":{"class":"ct-b1fbc0"},"children":[{"type":"text","value":":nth-child"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"#{"}]},{"type":"element","tag":"span","props":{"class":"ct-33af56"},"children":[{"type":"text","value":"index"}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"(($colors), ($color))}"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-079bc9"},"children":[{"type":"text","value":"color"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-33b3aa"},"children":[{"type":"text","value":"$color"}]},{"type":"element","tag":"span","props":{"class":"ct-8a61ea"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage is simple:"}]},{"type":"element","tag":"code","props":{"code":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d733bc"},"children":[{"type":"text","value":".item"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-baf813"},"children":[{"type":"text","value":"@include"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-90aa85"},"children":[{"type":"text","value":"color_per_child"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#ded187"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#dbde87"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#bade87"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#9cde87"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-9ec2d3"},"children":[{"type":"text","value":"#87deaa"}]},{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"));"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e65013"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-9ec2d3{color:#79C0FF}.ct-90aa85{color:#D2A8FF}.ct-baf813{color:#FF7B72}.ct-d733bc{color:#79C0FF}.ct-e65013{color:#C9D1D9}.ct-079bc9{color:#79C0FF}.ct-33af56{color:#79C0FF}.ct-b1fbc0{color:#79C0FF}.ct-9944ba{color:#7EE787}.ct-33b3aa{color:#FFA657}.ct-970948{color:#D2A8FF}.ct-8a61ea{color:#C9D1D9}.ct-42be13{color:#FF7B72}.light .ct-42be13{color:#859900}.light .ct-8a61ea{color:#657B83}.light .ct-970948{color:#268BD2}.light .ct-33b3aa{color:#657B83}.light .ct-9944ba{color:#268BD2}.light .ct-b1fbc0{color:#93A1A1}.light .ct-33af56{color:#268BD2}.light .ct-079bc9{color:#859900}.light .ct-e65013{color:#657B83}.light .ct-d733bc{color:#93A1A1}.light .ct-baf813{color:#859900}.light .ct-90aa85{color:#268BD2}.light .ct-9ec2d3{color:#CB4B16}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:CSS:Sass nth-child iterate mixin.md","_source":"content","_file":"CSS/Sass nth-child iterate mixin.md","_extension":"md"} \ No newline at end of file +{"_path":"/css/sass-nth-child-iterate-mixin","_dir":"css","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Sass Nth Child Iterate Mixin","description":"Say, we need to color n items by specific colors, which depend on its position. #SCSS supports iteration over lists for that purposes:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we need to color "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" items by specific colors, which depend on its position. #SCSS supports "},{"type":"element","tag":"a","props":{"href":"https://sass-lang.com/documentation/at-rules/control/each","rel":["nofollow"]},"children":[{"type":"text","value":"iteration over lists"}]},{"type":"text","value":" for that purposes:"}]},{"type":"element","tag":"code","props":{"code":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage is simple:"}]},{"type":"element","tag":"code","props":{"code":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Say, we need to color "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"n"}]},{"type":"text","value":" items by specific colors, which depend on its position. #SCSS supports "},{"type":"element","tag":"a","props":{"href":"https://sass-lang.com/documentation/at-rules/control/each","rel":["nofollow"]},"children":[{"type":"text","value":"iteration over lists"}]},{"type":"text","value":" for that purposes:"}]},{"type":"element","tag":"code","props":{"code":"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-44ded8"},"children":[{"type":"text","value":"@mixin"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3e86e3"},"children":[{"type":"text","value":"color-per-child"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"$colors"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-44ded8"},"children":[{"type":"text","value":"@each"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"$color"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-44ded8"},"children":[{"type":"text","value":"in"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"$colors"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7ceaa8"},"children":[{"type":"text","value":"&"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2245"},"children":[{"type":"text","value":":nth-child"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"#{"}]},{"type":"element","tag":"span","props":{"class":"ct-ca9252"},"children":[{"type":"text","value":"index"}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"(($colors), ($color))}"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47277e"},"children":[{"type":"text","value":"color"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-123e2b"},"children":[{"type":"text","value":"$color"}]},{"type":"element","tag":"span","props":{"class":"ct-b80ee6"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage is simple:"}]},{"type":"element","tag":"code","props":{"code":".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","language":"scss"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b0858e"},"children":[{"type":"text","value":".item"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0604d7"},"children":[{"type":"text","value":"@include"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-543fff"},"children":[{"type":"text","value":"color_per_child"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-cd960d"},"children":[{"type":"text","value":"#ded187"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-cd960d"},"children":[{"type":"text","value":"#dbde87"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-cd960d"},"children":[{"type":"text","value":"#bade87"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-cd960d"},"children":[{"type":"text","value":"#9cde87"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-cd960d"},"children":[{"type":"text","value":"#87deaa"}]},{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":"));"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-683c67"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-cd960d{color:#79C0FF}.ct-543fff{color:#D2A8FF}.ct-0604d7{color:#FF7B72}.ct-b0858e{color:#79C0FF}.ct-683c67{color:#C9D1D9}.ct-47277e{color:#79C0FF}.ct-ca9252{color:#79C0FF}.ct-8c2245{color:#79C0FF}.ct-7ceaa8{color:#7EE787}.ct-123e2b{color:#FFA657}.ct-3e86e3{color:#D2A8FF}.ct-b80ee6{color:#C9D1D9}.ct-44ded8{color:#FF7B72}.light .ct-44ded8{color:#859900}.light .ct-b80ee6{color:#657B83}.light .ct-3e86e3{color:#268BD2}.light .ct-123e2b{color:#657B83}.light .ct-7ceaa8{color:#268BD2}.light .ct-8c2245{color:#93A1A1}.light .ct-ca9252{color:#268BD2}.light .ct-47277e{color:#859900}.light .ct-683c67{color:#657B83}.light .ct-b0858e{color:#93A1A1}.light .ct-0604d7{color:#859900}.light .ct-543fff{color:#268BD2}.light .ct-cd960d{color:#CB4B16}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:CSS:Sass nth-child iterate mixin.md","_source":"content","_file":"CSS/Sass nth-child iterate mixin.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/gviYR2nAXj.json b/api/_content/query/gviYR2nAXj.json index 3474aa5..7be6f00 100644 --- a/api/_content/query/gviYR2nAXj.json +++ b/api/_content/query/gviYR2nAXj.json @@ -1 +1 @@ -{"_path":"/linux/gitea-for-git-hosting","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Gitea For Git Hosting","description":"Self-hosted #git repositories with gitea and #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Self-hosted #git repositories with "},{"type":"element","tag":"a","props":{"href":"https://gitea.io/ru-ru/","rel":["nofollow"]},"children":[{"type":"text","value":"gitea"}]},{"type":"text","value":" and #docker."}]},{"type":"element","tag":"h2","props":{"id":"setting-up-with-docker-compose"},"children":[{"type":"text","value":"Setting up with docker-compose"}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Self-hosted #git repositories with "},{"type":"element","tag":"a","props":{"href":"https://gitea.io/ru-ru/","rel":["nofollow"]},"children":[{"type":"text","value":"gitea"}]},{"type":"text","value":" and #docker."}]},{"type":"element","tag":"h2","props":{"id":"setting-up-with-docker-compose"},"children":[{"type":"text","value":"Setting up with docker-compose"}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"networks"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"gitea"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"external"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d97ebb"},"children":[{"type":"text","value":"false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"gitea/gitea:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"USER_UID=1000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"USER_GID=1000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"networks"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"./var/lib/gitea:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"./etc/gitea:/etc/gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"/etc/timezone:/etc/timezone:ro"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"/etc/localtime:/etc/localtime:ro"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c39ea1"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"\"3000:3000\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ce386f"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-bf81c9"},"children":[{"type":"text","value":"\"222:22\""}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-d97ebb{color:#79C0FF}.ct-bf81c9{color:#A5D6FF}.ct-ce386f{color:#C9D1D9}.ct-c39ea1{color:#7EE787}.light .ct-c39ea1{color:#268BD2}.light .ct-ce386f{color:#657B83}.light .ct-bf81c9{color:#2AA198}.light .ct-d97ebb{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"setting-up-with-docker-compose","depth":2,"text":"Setting up with docker-compose"}]}},"_type":"markdown","_id":"content:Linux:Gitea for git hosting.md","_source":"content","_file":"Linux/Gitea for git hosting.md","_extension":"md"} \ No newline at end of file +{"_path":"/linux/gitea-for-git-hosting","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Gitea For Git Hosting","description":"Self-hosted #git repositories with gitea and #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Self-hosted #git repositories with "},{"type":"element","tag":"a","props":{"href":"https://gitea.io/ru-ru/","rel":["nofollow"]},"children":[{"type":"text","value":"gitea"}]},{"type":"text","value":" and #docker."}]},{"type":"element","tag":"h2","props":{"id":"setting-up-with-docker-compose"},"children":[{"type":"text","value":"Setting up with docker-compose"}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Self-hosted #git repositories with "},{"type":"element","tag":"a","props":{"href":"https://gitea.io/ru-ru/","rel":["nofollow"]},"children":[{"type":"text","value":"gitea"}]},{"type":"text","value":" and #docker."}]},{"type":"element","tag":"h2","props":{"id":"setting-up-with-docker-compose"},"children":[{"type":"text","value":"Setting up with docker-compose"}]},{"type":"element","tag":"code","props":{"code":"version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea/gitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - ./var/lib/gitea:/data\n - ./etc/gitea:/etc/gitea\n - /etc/timezone:/etc/timezone:ro\n - /etc/localtime:/etc/localtime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"\"3\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"networks"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"gitea"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"external"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-bb8b11"},"children":[{"type":"text","value":"false"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"server"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"gitea/gitea:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"USER_UID=1000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"USER_GID=1000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"always"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"networks"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"./var/lib/gitea:/data"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"./etc/gitea:/etc/gitea"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"/etc/timezone:/etc/timezone:ro"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"/etc/localtime:/etc/localtime:ro"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7bf0c6"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"\"3000:3000\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-348279"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-7df5b4"},"children":[{"type":"text","value":"\"222:22\""}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-bb8b11{color:#79C0FF}.ct-7df5b4{color:#A5D6FF}.ct-348279{color:#C9D1D9}.ct-7bf0c6{color:#7EE787}.light .ct-7bf0c6{color:#268BD2}.light .ct-348279{color:#657B83}.light .ct-7df5b4{color:#2AA198}.light .ct-bb8b11{color:#B58900}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"setting-up-with-docker-compose","depth":2,"text":"Setting up with docker-compose"}]}},"_type":"markdown","_id":"content:Linux:Gitea for git hosting.md","_source":"content","_file":"Linux/Gitea for git hosting.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/iZIUw8pCoM.json b/api/_content/query/iZIUw8pCoM.json index ad0522b..7cf12c5 100644 --- a/api/_content/query/iZIUw8pCoM.json +++ b/api/_content/query/iZIUw8pCoM.json @@ -1 +1 @@ -{"_path":"/typescript/type-guards","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Type Guards","description":"Useful for type checking at compile and run time:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for type checking at compile and run time:"}]},{"type":"element","tag":"code","props":{"code":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage:"}]},{"type":"element","tag":"code","props":{"code":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for type checking at compile and run time:"}]},{"type":"element","tag":"code","props":{"code":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3e88fe"},"children":[{"type":"text","value":"function"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96a544"},"children":[{"type":"text","value":"isFish"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-f31f3b"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-96df25"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-851fa7"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96df25"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-851fa7"},"children":[{"type":"text","value":"Bird"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-96df25"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f31f3b"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-96df25"},"children":[{"type":"text","value":"is"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-851fa7"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-f1d349"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-50f970"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"as"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d7879"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-50f970"},"children":[{"type":"text","value":"swim"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"!=="}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-38af6a"},"children":[{"type":"text","value":"undefined"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage:"}]},{"type":"element","tag":"code","props":{"code":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-01bcf2"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3fd1a6"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c215b1"},"children":[{"type":"text","value":"getSmallPet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c215b1"},"children":[{"type":"text","value":"isFish"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-50f970"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-50f970"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c215b1"},"children":[{"type":"text","value":"swim"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-dfad5f"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-50f970"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c215b1"},"children":[{"type":"text","value":"fly"}]},{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f91a65"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-c215b1{color:#D2A8FF}.ct-3fd1a6{color:#79C0FF}.ct-01bcf2{color:#FF7B72}.ct-38af6a{color:#79C0FF}.ct-0d7879{color:#FFA657}.ct-50f970{color:#C9D1D9}.ct-dfad5f{color:#FF7B72}.ct-f91a65{color:#C9D1D9}.ct-851fa7{color:#FFA657}.ct-96df25{color:#FF7B72}.ct-f31f3b{color:#FFA657}.ct-96a544{color:#D2A8FF}.ct-f1d349{color:#C9D1D9}.ct-3e88fe{color:#FF7B72}.light .ct-3e88fe{color:#073642}.light .ct-f1d349{color:#657B83}.light .ct-96a544{color:#268BD2}.light .ct-f31f3b{color:#657B83}.light .ct-96df25{color:#859900}.light .ct-851fa7{color:#268BD2}.light .ct-f91a65{color:#657B83}.light .ct-dfad5f{color:#859900}.light .ct-50f970{color:#268BD2}.light .ct-0d7879{color:#268BD2}.light .ct-38af6a{color:#B58900}.light .ct-01bcf2{color:#073642}.light .ct-3fd1a6{color:#268BD2}.light .ct-c215b1{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Typescript:Type guards.md","_source":"content","_file":"Typescript/Type guards.md","_extension":"md"} \ No newline at end of file +{"_path":"/typescript/type-guards","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Type Guards","description":"Useful for type checking at compile and run time:","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for type checking at compile and run time:"}]},{"type":"element","tag":"code","props":{"code":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage:"}]},{"type":"element","tag":"code","props":{"code":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Useful for type checking at compile and run time:"}]},{"type":"element","tag":"code","props":{"code":"function isFish(pet: Fish | Bird): pet is Fish {\n return (pet as Fish).swim !== undefined;\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-046d7b"},"children":[{"type":"text","value":"function"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-527549"},"children":[{"type":"text","value":"isFish"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d96e74"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-a37712"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f189e5"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a37712"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f189e5"},"children":[{"type":"text","value":"Bird"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-a37712"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d96e74"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a37712"},"children":[{"type":"text","value":"is"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f189e5"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-b4c07a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-5a0e09"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"as"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-606086"},"children":[{"type":"text","value":"Fish"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":")."}]},{"type":"element","tag":"span","props":{"class":"ct-5a0e09"},"children":[{"type":"text","value":"swim"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"!=="}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8c8025"},"children":[{"type":"text","value":"undefined"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Usage:"}]},{"type":"element","tag":"code","props":{"code":"const pet = getSmallPet();\n \nif (isFish(pet)) {\n pet.swim();\n} else {\n pet.fly();\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b7a6b6"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-efc9d5"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7c789"},"children":[{"type":"text","value":"getSmallPet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c7c789"},"children":[{"type":"text","value":"isFish"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-5a0e09"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":")) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5a0e09"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7c789"},"children":[{"type":"text","value":"swim"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"} "}]},{"type":"element","tag":"span","props":{"class":"ct-3434a0"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5a0e09"},"children":[{"type":"text","value":"pet"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-c7c789"},"children":[{"type":"text","value":"fly"}]},{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b9efb7"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-c7c789{color:#D2A8FF}.ct-efc9d5{color:#79C0FF}.ct-b7a6b6{color:#FF7B72}.ct-8c8025{color:#79C0FF}.ct-606086{color:#FFA657}.ct-5a0e09{color:#C9D1D9}.ct-3434a0{color:#FF7B72}.ct-b9efb7{color:#C9D1D9}.ct-f189e5{color:#FFA657}.ct-a37712{color:#FF7B72}.ct-d96e74{color:#FFA657}.ct-527549{color:#D2A8FF}.ct-b4c07a{color:#C9D1D9}.ct-046d7b{color:#FF7B72}.light .ct-046d7b{color:#073642}.light .ct-b4c07a{color:#657B83}.light .ct-527549{color:#268BD2}.light .ct-d96e74{color:#657B83}.light .ct-a37712{color:#859900}.light .ct-f189e5{color:#268BD2}.light .ct-b9efb7{color:#657B83}.light .ct-3434a0{color:#859900}.light .ct-5a0e09{color:#268BD2}.light .ct-606086{color:#268BD2}.light .ct-8c8025{color:#B58900}.light .ct-b7a6b6{color:#073642}.light .ct-efc9d5{color:#268BD2}.light .ct-c7c789{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Typescript:Type guards.md","_source":"content","_file":"Typescript/Type guards.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/ki2hTtdZ9z.json b/api/_content/query/ki2hTtdZ9z.json index bbe13da..353ac81 100644 --- a/api/_content/query/ki2hTtdZ9z.json +++ b/api/_content/query/ki2hTtdZ9z.json @@ -1 +1 @@ -{"_path":"/typescript/flatten-object-with-periods","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Flatten Object With Periods","description":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Used for typing "},{"type":"element","tag":"a","props":{"href":"https://www.npmjs.com/package/i18n-js","rel":["nofollow"]},"children":[{"type":"text","value":"i18n.js"}]},{"type":"text","value":" dictionaries;"}]},{"type":"element","tag":"code","props":{"code":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flatten type defined here:"}]},{"type":"element","tag":"code","props":{"code":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Used for typing "},{"type":"element","tag":"a","props":{"href":"https://www.npmjs.com/package/i18n-js","rel":["nofollow"]},"children":[{"type":"text","value":"i18n.js"}]},{"type":"text","value":" dictionaries;"}]},{"type":"element","tag":"code","props":{"code":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-17f2f0"},"children":[{"type":"text","value":"en"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"'./en.json'"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"TranslationPath"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"typeof"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-17f2f0"},"children":[{"type":"text","value":"en"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":">;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c4c8dc"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9106a4"},"children":[{"type":"text","value":"t"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-eb2458"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-f472b9"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-eb2458"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-db1e37"},"children":[{"type":"text","value":"TranslationPath"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-f472b9"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-eb2458"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-db1e37"},"children":[{"type":"text","value":"TranslateOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-07eddd"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-c4c8dc"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-17f2f0"},"children":[{"type":"text","value":"I18nLib"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-827a3b"},"children":[{"type":"text","value":"t"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-17f2f0"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-17f2f0"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flatten type defined here:"}]},{"type":"element","tag":"code","props":{"code":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113d4c"},"children":[{"type":"text","value":"// This one based on answer from StackOverflow:"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113d4c"},"children":[{"type":"text","value":"// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"] "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"never"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"PluralForm"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-113d4c"},"children":[{"type":"text","value":"// plural object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"''"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" { ["}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"in"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"keyof"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"]"}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"-?:"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Join"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"], "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Prev"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"]>> }["}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"keyof"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-113d4c"},"children":[{"type":"text","value":"// Fix it for you plural form"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"PluralForm"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Record"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"'one'"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"'few'"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"'many'"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":">;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Join"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"number"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"number"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"}${''"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-4fd83d"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"'.'}${"}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-1fbe6c"},"children":[{"type":"text","value":"}`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"never"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-da5227"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Prev"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-8a1f02"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"3"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"4"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-55b392"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-37d3c5"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-47e9f7"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-5edddd"},"children":[{"type":"text","value":">];"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-4fd83d{color:#A5D6FF}.ct-47e9f7{color:#79C0FF}.ct-8a1f02{color:#79C0FF}.ct-113d4c{color:#8B949E}.ct-827a3b{color:#D2A8FF}.ct-db1e37{color:#FFA657}.ct-f472b9{color:#FFA657}.ct-eb2458{color:#FF7B72}.ct-9106a4{color:#D2A8FF}.ct-07eddd{color:#C9D1D9}.ct-c4c8dc{color:#FF7B72}.ct-37d3c5{color:#FFA657}.ct-da5227{color:#FF7B72}.ct-1fbe6c{color:#A5D6FF}.ct-17f2f0{color:#C9D1D9}.ct-5edddd{color:#C9D1D9}.ct-55b392{color:#FF7B72}.light .ct-55b392{color:#859900}.light .ct-5edddd{color:#657B83}.light .ct-17f2f0{color:#268BD2}.light .ct-1fbe6c{color:#2AA198}.light .ct-da5227{color:#073642}.light .ct-37d3c5{color:#268BD2}.light .ct-c4c8dc{color:#073642}.light .ct-07eddd{color:#657B83}.light .ct-9106a4{color:#268BD2}.light .ct-eb2458{color:#859900}.light .ct-f472b9{color:#657B83}.light .ct-db1e37{color:#268BD2}.light .ct-827a3b{color:#268BD2}.light .ct-113d4c{color:#93A1A1}.light .ct-8a1f02{color:#859900}.light .ct-47e9f7{color:#D33682}.light .ct-4fd83d{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Typescript:Flatten object with periods.md","_source":"content","_file":"Typescript/Flatten object with periods.md","_extension":"md"} \ No newline at end of file +{"_path":"/typescript/flatten-object-with-periods","_dir":"typescript","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Flatten Object With Periods","description":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Used for typing "},{"type":"element","tag":"a","props":{"href":"https://www.npmjs.com/package/i18n-js","rel":["nofollow"]},"children":[{"type":"text","value":"i18n.js"}]},{"type":"text","value":" dictionaries;"}]},{"type":"element","tag":"code","props":{"code":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flatten type defined here:"}]},{"type":"element","tag":"code","props":{"code":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This helper generates Typescript types for i18n dictionary json\nfiles by flattening it with period delimiter. Supports plural forms."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Used for typing "},{"type":"element","tag":"a","props":{"href":"https://www.npmjs.com/package/i18n-js","rel":["nofollow"]},"children":[{"type":"text","value":"i18n.js"}]},{"type":"text","value":" dictionaries;"}]},{"type":"element","tag":"code","props":{"code":"import en from './en.json';\ntype TranslationPath = Flatten;\n\nconst t = (key: TranslationPath, options?: TranslateOptions) =>\n I18nLib.t(key, options);\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"import"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-376e38"},"children":[{"type":"text","value":"en"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"from"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"'./en.json'"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"TranslationPath"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"typeof"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-376e38"},"children":[{"type":"text","value":"en"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":">;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-86bd56"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c7e4a5"},"children":[{"type":"text","value":"t"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c2b323"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-926c31"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-c2b323"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3a2c1c"},"children":[{"type":"text","value":"TranslationPath"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-926c31"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-c2b323"},"children":[{"type":"text","value":"?:"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3a2c1c"},"children":[{"type":"text","value":"TranslateOptions"}]},{"type":"element","tag":"span","props":{"class":"ct-c58f6b"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-86bd56"},"children":[{"type":"text","value":"=>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-376e38"},"children":[{"type":"text","value":"I18nLib"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-ad45dc"},"children":[{"type":"text","value":"t"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-376e38"},"children":[{"type":"text","value":"key"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-376e38"},"children":[{"type":"text","value":"options"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":");"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Flatten type defined here:"}]},{"type":"element","tag":"code","props":{"code":"// This one based on answer from StackOverflow:\n// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object\n\nexport type Flatten = [D] extends [never]\n ? never\n : T extends PluralForm // plural object\n ? ''\n : T extends object\n ? { [K in keyof T]-?: Join> }[keyof T]\n : '';\n\n// Fix it for you plural form\ntype PluralForm = Record<'one' | 'few' | 'many', string>;\n\ntype Join = K extends string | number\n ? P extends string | number\n ? `${K}${'' extends P ? '' : '.'}${P}`\n : never\n : never;\n\ntype Prev = [never, 0, 1, 2, 3, 4, 5, ...Array<0>];\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fca63"},"children":[{"type":"text","value":"// This one based on answer from StackOverflow:"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fca63"},"children":[{"type":"text","value":"// https://stackoverflow.com/questions/58434389/typescript-deep-keyof-of-a-nested-object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"export"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"] "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"never"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"PluralForm"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0fca63"},"children":[{"type":"text","value":"// plural object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"''"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"object"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" { ["}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"in"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"keyof"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"]"}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"-?:"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Join"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Flatten"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"], "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Prev"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"["}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"D"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"]>> }["}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"keyof"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"T"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0fca63"},"children":[{"type":"text","value":"// Fix it for you plural form"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"PluralForm"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Record"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"'one'"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"'few'"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"'many'"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":">;"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Join"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"number"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"string"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"number"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"`${"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"K"}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"}${''"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"extends"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"?"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-aae1b4"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"'.'}${"}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"P"}]},{"type":"element","tag":"span","props":{"class":"ct-1162b8"},"children":[{"type":"text","value":"}`"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"never"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5154b4"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Prev"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-901170"},"children":[{"type":"text","value":"never"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"3"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"4"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-7881db"},"children":[{"type":"text","value":"..."}]},{"type":"element","tag":"span","props":{"class":"ct-89dc1d"},"children":[{"type":"text","value":"Array"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-58da23"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-642830"},"children":[{"type":"text","value":">];"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-aae1b4{color:#A5D6FF}.ct-58da23{color:#79C0FF}.ct-901170{color:#79C0FF}.ct-0fca63{color:#8B949E}.ct-ad45dc{color:#D2A8FF}.ct-3a2c1c{color:#FFA657}.ct-926c31{color:#FFA657}.ct-c2b323{color:#FF7B72}.ct-c7e4a5{color:#D2A8FF}.ct-c58f6b{color:#C9D1D9}.ct-86bd56{color:#FF7B72}.ct-89dc1d{color:#FFA657}.ct-5154b4{color:#FF7B72}.ct-1162b8{color:#A5D6FF}.ct-376e38{color:#C9D1D9}.ct-642830{color:#C9D1D9}.ct-7881db{color:#FF7B72}.light .ct-7881db{color:#859900}.light .ct-642830{color:#657B83}.light .ct-376e38{color:#268BD2}.light .ct-1162b8{color:#2AA198}.light .ct-5154b4{color:#073642}.light .ct-89dc1d{color:#268BD2}.light .ct-86bd56{color:#073642}.light .ct-c58f6b{color:#657B83}.light .ct-c7e4a5{color:#268BD2}.light .ct-c2b323{color:#859900}.light .ct-926c31{color:#657B83}.light .ct-3a2c1c{color:#268BD2}.light .ct-ad45dc{color:#268BD2}.light .ct-0fca63{color:#93A1A1}.light .ct-901170{color:#859900}.light .ct-58da23{color:#D33682}.light .ct-aae1b4{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Typescript:Flatten object with periods.md","_source":"content","_file":"Typescript/Flatten object with periods.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/kmbybMtElx.json b/api/_content/query/kmbybMtElx.json index 38da93b..c24795e 100644 --- a/api/_content/query/kmbybMtElx.json +++ b/api/_content/query/kmbybMtElx.json @@ -1 +1 @@ -{"_path":"/linux/google-photos-alternative-with-photoprism","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Google Photos Alternative With Photoprism","description":"Photo Prism is a free alternative to Google photos, can be set up with #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://photoprism.app/","rel":["nofollow"]},"children":[{"type":"text","value":"Photo Prism"}]},{"type":"text","value":" is a free alternative to Google photos, can be set up with #docker."}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-to-run-it"},"children":[{"type":"text","value":"Docker compose file to run it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out current "},{"type":"element","tag":"a","props":{"href":"https://dl.photoprism.app/docker/docker-compose.yml","rel":["nofollow"]},"children":[{"type":"text","value":"example"}]},{"type":"text","value":" at photoprism's "},{"type":"element","tag":"a","props":{"href":"https://docs.photoprism.app/getting-started/docker-compose/","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://photoprism.app/","rel":["nofollow"]},"children":[{"type":"text","value":"Photo Prism"}]},{"type":"text","value":" is a free alternative to Google photos, can be set up with #docker."}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-to-run-it"},"children":[{"type":"text","value":"Docker compose file to run it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out current "},{"type":"element","tag":"a","props":{"href":"https://dl.photoprism.app/docker/docker-compose.yml","rel":["nofollow"]},"children":[{"type":"text","value":"example"}]},{"type":"text","value":" at photoprism's "},{"type":"element","tag":"a","props":{"href":"https://docs.photoprism.app/getting-started/docker-compose/","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"'3.5'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"photoprism"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"photoprism__app"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"photoprism/photoprism:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"depends_on"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"mariadb"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"unless-stopped"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"security_opt"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"seccomp:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"apparmor:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"2342:2342"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-67dd99"},"children":[{"type":"text","value":"# HTTP port (host:container)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_ADMIN_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"password\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"https://service.url/\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_ORIGINALS_LIMIT"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-0d1cbf"},"children":[{"type":"text","value":"5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_HTTP_COMPRESSION"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"gzip\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DEBUG"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_PUBLIC"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_READONLY"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_EXPERIMENTAL"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_CHOWN"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_WEBDAV"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_SETTINGS"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_TENSORFLOW"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_FACES"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_CLASSIFICATION"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DARKTABLE_PRESETS"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DETECT_NSFW"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_UPLOAD_NSFW"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"true\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_DRIVER"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"mysql\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_SERVER"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"mariadb:3306\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_NAME"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"photoprism\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_USER"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"root\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"insecure\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_TITLE"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"PhotoPrism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_CAPTION"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"Browse Your Life\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_DESCRIPTION"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_AUTHOR"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"HOME"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"/photoprism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"working_dir"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"/photoprism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"./data/originals:/photoprism/originals\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"./data/imports:/photoprism/import\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"./data/storage:/photoprism/storage\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"  "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"mariadb"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"photoprism__db"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"unless-stopped"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"mariadb:10.6"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"security_opt"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"seccomp:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"apparmor:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"\"./database:/var/lib/mysql\""}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-67dd99"},"children":[{"type":"text","value":"# Important, don't remove"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"MYSQL_ROOT_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"insecure"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"MYSQL_DATABASE"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"photoprism"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"MYSQL_USER"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"photoprism"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-f5da4b"},"children":[{"type":"text","value":"MYSQL_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-fafdca"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-d2fbc5"},"children":[{"type":"text","value":"insecure"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-0d1cbf{color:#79C0FF}.ct-67dd99{color:#8B949E}.ct-d2fbc5{color:#A5D6FF}.ct-fafdca{color:#C9D1D9}.ct-f5da4b{color:#7EE787}.light .ct-f5da4b{color:#268BD2}.light .ct-fafdca{color:#657B83}.light .ct-d2fbc5{color:#2AA198}.light .ct-67dd99{color:#93A1A1}.light .ct-0d1cbf{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"docker-compose-file-to-run-it","depth":2,"text":"Docker compose file to run it"}]}},"_type":"markdown","_id":"content:Linux:Google photos alternative with Photoprism.md","_source":"content","_file":"Linux/Google photos alternative with Photoprism.md","_extension":"md"} \ No newline at end of file +{"_path":"/linux/google-photos-alternative-with-photoprism","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Google Photos Alternative With Photoprism","description":"Photo Prism is a free alternative to Google photos, can be set up with #docker.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://photoprism.app/","rel":["nofollow"]},"children":[{"type":"text","value":"Photo Prism"}]},{"type":"text","value":" is a free alternative to Google photos, can be set up with #docker."}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-to-run-it"},"children":[{"type":"text","value":"Docker compose file to run it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out current "},{"type":"element","tag":"a","props":{"href":"https://dl.photoprism.app/docker/docker-compose.yml","rel":["nofollow"]},"children":[{"type":"text","value":"example"}]},{"type":"text","value":" at photoprism's "},{"type":"element","tag":"a","props":{"href":"https://docs.photoprism.app/getting-started/docker-compose/","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://photoprism.app/","rel":["nofollow"]},"children":[{"type":"text","value":"Photo Prism"}]},{"type":"text","value":" is a free alternative to Google photos, can be set up with #docker."}]},{"type":"element","tag":"h2","props":{"id":"docker-compose-file-to-run-it"},"children":[{"type":"text","value":"Docker compose file to run it"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Check out current "},{"type":"element","tag":"a","props":{"href":"https://dl.photoprism.app/docker/docker-compose.yml","rel":["nofollow"]},"children":[{"type":"text","value":"example"}]},{"type":"text","value":" at photoprism's "},{"type":"element","tag":"a","props":{"href":"https://docs.photoprism.app/getting-started/docker-compose/","rel":["nofollow"]},"children":[{"type":"text","value":"documentation"}]},{"type":"text","value":"."}]},{"type":"element","tag":"code","props":{"code":"version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism/photoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https://service.url/\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"/photoprism\"\n    working_dir: \"/photoprism\"\n    volumes:\n      - \"./data/originals:/photoprism/originals\"    \n      - \"./data/imports:/photoprism/import\"\n      - \"./data/storage:/photoprism/storage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \"./database:/var/lib/mysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"version"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"'3.5'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"services"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"photoprism"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"photoprism__app"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"photoprism/photoprism:latest"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"depends_on"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"mariadb"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"unless-stopped"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"security_opt"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"seccomp:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"apparmor:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"ports"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"2342:2342"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35ae50"},"children":[{"type":"text","value":"# HTTP port (host:container)"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_ADMIN_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"password\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_URL"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"https://service.url/\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_ORIGINALS_LIMIT"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-2abf7f"},"children":[{"type":"text","value":"5000"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_HTTP_COMPRESSION"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"gzip\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DEBUG"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_PUBLIC"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_READONLY"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_EXPERIMENTAL"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_CHOWN"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_WEBDAV"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_SETTINGS"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_TENSORFLOW"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_FACES"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DISABLE_CLASSIFICATION"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DARKTABLE_PRESETS"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DETECT_NSFW"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"false\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_UPLOAD_NSFW"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"true\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_DRIVER"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"mysql\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_SERVER"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"mariadb:3306\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_NAME"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"photoprism\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_USER"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"root\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_DATABASE_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"insecure\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_TITLE"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"PhotoPrism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_CAPTION"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"Browse Your Life\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_DESCRIPTION"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"PHOTOPRISM_SITE_AUTHOR"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"HOME"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"/photoprism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"working_dir"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"/photoprism\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"./data/originals:/photoprism/originals\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"./data/imports:/photoprism/import\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"./data/storage:/photoprism/storage\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"  "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"mariadb"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"container_name"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"photoprism__db"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"restart"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"unless-stopped"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"mariadb:10.6"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"security_opt"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"seccomp:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"apparmor:unconfined"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"command"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"volumes"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      - "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"\"./database:/var/lib/mysql\""}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-35ae50"},"children":[{"type":"text","value":"# Important, don't remove"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"    "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"environment"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"MYSQL_ROOT_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"insecure"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"MYSQL_DATABASE"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"photoprism"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"MYSQL_USER"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"photoprism"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":"      "}]},{"type":"element","tag":"span","props":{"class":"ct-c91294"},"children":[{"type":"text","value":"MYSQL_PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-bff125"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-cc2293"},"children":[{"type":"text","value":"insecure"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-2abf7f{color:#79C0FF}.ct-35ae50{color:#8B949E}.ct-cc2293{color:#A5D6FF}.ct-bff125{color:#C9D1D9}.ct-c91294{color:#7EE787}.light .ct-c91294{color:#268BD2}.light .ct-bff125{color:#657B83}.light .ct-cc2293{color:#2AA198}.light .ct-35ae50{color:#93A1A1}.light .ct-2abf7f{color:#D33682}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"docker-compose-file-to-run-it","depth":2,"text":"Docker compose file to run it"}]}},"_type":"markdown","_id":"content:Linux:Google photos alternative with Photoprism.md","_source":"content","_file":"Linux/Google photos alternative with Photoprism.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/pVAGVLBNPu.json b/api/_content/query/pVAGVLBNPu.json index 7342109..7e4a259 100644 --- a/api/_content/query/pVAGVLBNPu.json +++ b/api/_content/query/pVAGVLBNPu.json @@ -1 +1 @@ -{"_path":"/linux/rsync-file-with-ssh","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Rsync File With SSH","description":"Downloads file from #SSH with rsync and puts it in current folder.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Downloads file from #SSH with rsync and puts it in current folder."}]},{"type":"element","tag":"code","props":{"code":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Downloads file from #SSH with rsync and puts it in current folder."}]},{"type":"element","tag":"code","props":{"code":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-06e70b"},"children":[{"type":"text","value":"#!/bin/bash"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"PORT=22"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"USER=user"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"HOST=example.com"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"REMOTE_PATH=/tmp"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"REMOTE_FILE=sample.text"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"DEST_PATH=./"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":"rsync -a -e "}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\"ssh -p "}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"PORT"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":" -P -v \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"USER"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"@"}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"HOST"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"REMOTE_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"REMOTE_FILE"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d3a694"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-39f251"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-231d22"},"children":[{"type":"text","value":"DEST_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-354ab7"},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-231d22{color:#C9D1D9}.ct-39f251{color:#C9D1D9}.ct-354ab7{color:#A5D6FF}.ct-d3a694{color:#C9D1D9}.ct-06e70b{color:#8B949E}.light .ct-06e70b{color:#93A1A1}.light .ct-d3a694{color:#657B83}.light .ct-354ab7{color:#2AA198}.light .ct-39f251{color:#859900}.light .ct-231d22{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Linux:Rsync file with SSH.md","_source":"content","_file":"Linux/Rsync file with SSH.md","_extension":"md"} \ No newline at end of file +{"_path":"/linux/rsync-file-with-ssh","_dir":"linux","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Rsync File With SSH","description":"Downloads file from #SSH with rsync and puts it in current folder.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Downloads file from #SSH with rsync and puts it in current folder."}]},{"type":"element","tag":"code","props":{"code":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Downloads file from #SSH with rsync and puts it in current folder."}]},{"type":"element","tag":"code","props":{"code":"#!/bin/bash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=/tmp\nREMOTE_FILE=sample.text\nDEST_PATH=./\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-772071"},"children":[{"type":"text","value":"#!/bin/bash"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"PORT=22"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"USER=user"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"HOST=example.com"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"REMOTE_PATH=/tmp"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"REMOTE_FILE=sample.text"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"DEST_PATH=./"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":"rsync -a -e "}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\"ssh -p "}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"PORT"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":" -P -v \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"USER"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"@"}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"HOST"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"REMOTE_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"/"}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"REMOTE_FILE"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":" \\"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-abc278"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-5fce1c"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-bccbfa"},"children":[{"type":"text","value":"DEST_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-9b3752"},"children":[{"type":"text","value":"\""}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-bccbfa{color:#C9D1D9}.ct-5fce1c{color:#C9D1D9}.ct-9b3752{color:#A5D6FF}.ct-abc278{color:#C9D1D9}.ct-772071{color:#8B949E}.light .ct-772071{color:#93A1A1}.light .ct-abc278{color:#657B83}.light .ct-9b3752{color:#2AA198}.light .ct-5fce1c{color:#859900}.light .ct-bccbfa{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Linux:Rsync file with SSH.md","_source":"content","_file":"Linux/Rsync file with SSH.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/pv8ckH0an3.json b/api/_content/query/pv8ckH0an3.json index a977df4..4b27c27 100644 --- a/api/_content/query/pv8ckH0an3.json +++ b/api/_content/query/pv8ckH0an3.json @@ -1 +1 @@ -{"_path":"/frontend/react-native/preserve-flatlist-scroll-position-in-react-native","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Preserve FlatList Scroll Position In React Native","description":"Sometimes you need to keep scroll position of FlatList in React Native after some user interactions.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to keep scroll position of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"FlatList"}]},{"type":"text","value":" in React Native after some user interactions."}]},{"type":"element","tag":"code","props":{"code":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to keep scroll position of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"FlatList"}]},{"type":"text","value":" in React Native after some user interactions."}]},{"type":"element","tag":"code","props":{"code":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-813619"},"children":[{"type":"text","value":"// interact() is doing some stuff, that changes FlatList scroll size"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-b6859e"},"children":[{"type":"text","value":"Props"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-671d2d"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"; }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-0d3f63"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c26930"},"children":[{"type":"text","value":"SomeList"}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d0748e"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-d0748e"},"children":[{"type":"text","value":"Props"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" ({ "}]},{"type":"element","tag":"span","props":{"class":"ct-71edb3"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-0d3f63"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b39378"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-b39378"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-813619"},"children":[{"type":"text","value":"// set it to `true` before interaction and back to `false` right after"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-d39361"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-71edb3"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d0748e"},"children":[{"type":"text","value":"NativeSyntheticEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-d0748e"},"children":[{"type":"text","value":"NativeScrollEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":">) "}]},{"type":"element","tag":"span","props":{"class":"ct-0d3f63"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"nativeEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"contentOffset"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"y"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" [],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d3f63"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-152aab"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c26930"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-71edb3"},"children":[{"type":"text","value":"_"}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-26fd42"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-71edb3"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-50c268"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-26fd42"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-0d3f63"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-d59891"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"scrollToOffset"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" offset: "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" animated: "}]},{"type":"element","tag":"span","props":{"class":"ct-d39361"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-813619"},"children":[{"type":"text","value":"// onInteraction wraps interaction to preserve scroll position"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"onInteraction"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d39361"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"setTimeout"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-852d98"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" }, "}]},{"type":"element","tag":"span","props":{"class":"ct-b39378"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c02abc"},"children":[{"type":"text","value":"setTimeout"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-088cae"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-d39361"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" }, "}]},{"type":"element","tag":"span","props":{"class":"ct-b39378"},"children":[{"type":"text","value":"500"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"setSelectedSubThemes"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-30a71a"},"children":[{"type":"text","value":"FlatList"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-813619"},"children":[{"type":"text","value":"// ...required FlatList options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-0d0f2a"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-135a94"},"children":[{"type":"text","value":"/>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":" )"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-854b0c"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-30a71a{color:#FFA657}.ct-26fd42{color:#79C0FF}.ct-152aab{color:#79C0FF}.ct-0d0f2a{color:#C9D1D9}.ct-d39361{color:#79C0FF}.ct-b39378{color:#79C0FF}.ct-c02abc{color:#79C0FF}.ct-71edb3{color:#FFA657}.ct-d0748e{color:#FFA657}.ct-50c268{color:#FF7B72}.ct-c26930{color:#D2A8FF}.ct-d59891{color:#C9D1D9}.ct-0d3f63{color:#FF7B72}.ct-671d2d{color:#79C0FF}.ct-852d98{color:#D2A8FF}.ct-135a94{color:#FF7B72}.ct-b6859e{color:#FFA657}.ct-854b0c{color:#C9D1D9}.ct-088cae{color:#FF7B72}.ct-813619{color:#8B949E}.light .ct-813619{color:#93A1A1}.light .ct-088cae{color:#073642}.light .ct-854b0c{color:#657B83}.light .ct-b6859e{color:#268BD2}.light .ct-135a94{color:#859900}.light .ct-852d98{color:#268BD2}.light .ct-671d2d{color:#859900}.light .ct-0d3f63{color:#073642}.light .ct-d59891{color:#657B83}.light .ct-c26930{color:#268BD2}.light .ct-50c268{color:#859900}.light .ct-d0748e{color:#268BD2}.light .ct-71edb3{color:#657B83}.light .ct-c02abc{color:#268BD2}.light .ct-b39378{color:#D33682}.light .ct-d39361{color:#B58900}.light .ct-0d0f2a{color:#268BD2}.light .ct-152aab{color:#268BD2}.light .ct-26fd42{color:#859900}.light .ct-30a71a{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React Native:Preserve FlatList scroll position in React Native.md","_source":"content","_file":"Frontend/React Native/Preserve FlatList scroll position in React Native.md","_extension":"md"} \ No newline at end of file +{"_path":"/frontend/react-native/preserve-flatlist-scroll-position-in-react-native","_dir":"react-native","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Preserve FlatList Scroll Position In React Native","description":"Sometimes you need to keep scroll position of FlatList in React Native after some user interactions.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to keep scroll position of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"FlatList"}]},{"type":"text","value":" in React Native after some user interactions."}]},{"type":"element","tag":"code","props":{"code":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Sometimes you need to keep scroll position of "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"FlatList"}]},{"type":"text","value":" in React Native after some user interactions."}]},{"type":"element","tag":"code","props":{"code":"// interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () => void; }\n\nconst SomeList: FC = ({ interact }) => {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n // set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent) => {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) => {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n // onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () => {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() => {\n interact();\n }, 0);\n\n setTimeout(() => {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \n )\n}\n","language":"typescript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-1b2898"},"children":[{"type":"text","value":"// interact() is doing some stuff, that changes FlatList scroll size"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-56a237"},"children":[{"type":"text","value":"Props"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-27e8c9"},"children":[{"type":"text","value":"void"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"; }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-5e0832"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6a1d68"},"children":[{"type":"text","value":"SomeList"}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-173810"},"children":[{"type":"text","value":"FC"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-173810"},"children":[{"type":"text","value":"Props"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":"> "}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" ({ "}]},{"type":"element","tag":"span","props":{"class":"ct-81988b"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" }) "}]},{"type":"element","tag":"span","props":{"class":"ct-5e0832"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9d2c22"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-9d2c22"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b2898"},"children":[{"type":"text","value":"// set it to `true` before interaction and back to `false` right after"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"useRef"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-ea1c0a"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-81988b"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-173810"},"children":[{"type":"text","value":"NativeSyntheticEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-173810"},"children":[{"type":"text","value":"NativeScrollEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":">) "}]},{"type":"element","tag":"span","props":{"class":"ct-5e0832"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"event"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"nativeEvent"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"contentOffset"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"y"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" [],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-5e0832"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-846e70"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-6a1d68"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":"(("}]},{"type":"element","tag":"span","props":{"class":"ct-81988b"},"children":[{"type":"text","value":"_"}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a41202"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-81988b"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-459bf0"},"children":[{"type":"text","value":":"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a41202"},"children":[{"type":"text","value":"number"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":") "}]},{"type":"element","tag":"span","props":{"class":"ct-5e0832"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-03eaac"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"!"}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"?."}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"scrollToOffset"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"({"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" offset: "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"scrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"+"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"),"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" animated: "}]},{"type":"element","tag":"span","props":{"class":"ct-ea1c0a"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" });"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"scrollHeight"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"h"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" }, []);"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b2898"},"children":[{"type":"text","value":"// onInteraction wraps interaction to preserve scroll position"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"onInteraction"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"useCallback"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" () "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ea1c0a"},"children":[{"type":"text","value":"true"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"setTimeout"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3285b3"},"children":[{"type":"text","value":"interact"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" }, "}]},{"type":"element","tag":"span","props":{"class":"ct-9d2c22"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-383d75"},"children":[{"type":"text","value":"setTimeout"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"(() "}]},{"type":"element","tag":"span","props":{"class":"ct-18b8d0"},"children":[{"type":"text","value":"=>"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"shouldKeepScrollPosition"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"."}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"current"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ea1c0a"},"children":[{"type":"text","value":"false"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" }, "}]},{"type":"element","tag":"span","props":{"class":"ct-9d2c22"},"children":[{"type":"text","value":"500"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" },"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"setSelectedSubThemes"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"],"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" );"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" ("}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-b6e4ff"},"children":[{"type":"text","value":"FlatList"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1b2898"},"children":[{"type":"text","value":"// ...required FlatList options"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"ref"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onContentSizeChange"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onRefresh"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"{"}]},{"type":"element","tag":"span","props":{"class":"ct-715b00"},"children":[{"type":"text","value":"onScroll"}]},{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ecea9a"},"children":[{"type":"text","value":"/>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":" )"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-e5f3ab"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-b6e4ff{color:#FFA657}.ct-a41202{color:#79C0FF}.ct-846e70{color:#79C0FF}.ct-715b00{color:#C9D1D9}.ct-ea1c0a{color:#79C0FF}.ct-9d2c22{color:#79C0FF}.ct-383d75{color:#79C0FF}.ct-81988b{color:#FFA657}.ct-173810{color:#FFA657}.ct-459bf0{color:#FF7B72}.ct-6a1d68{color:#D2A8FF}.ct-03eaac{color:#C9D1D9}.ct-5e0832{color:#FF7B72}.ct-27e8c9{color:#79C0FF}.ct-3285b3{color:#D2A8FF}.ct-ecea9a{color:#FF7B72}.ct-56a237{color:#FFA657}.ct-e5f3ab{color:#C9D1D9}.ct-18b8d0{color:#FF7B72}.ct-1b2898{color:#8B949E}.light .ct-1b2898{color:#93A1A1}.light .ct-18b8d0{color:#073642}.light .ct-e5f3ab{color:#657B83}.light .ct-56a237{color:#268BD2}.light .ct-ecea9a{color:#859900}.light .ct-3285b3{color:#268BD2}.light .ct-27e8c9{color:#859900}.light .ct-5e0832{color:#073642}.light .ct-03eaac{color:#657B83}.light .ct-6a1d68{color:#268BD2}.light .ct-459bf0{color:#859900}.light .ct-173810{color:#268BD2}.light .ct-81988b{color:#657B83}.light .ct-383d75{color:#268BD2}.light .ct-9d2c22{color:#D33682}.light .ct-ea1c0a{color:#B58900}.light .ct-715b00{color:#268BD2}.light .ct-846e70{color:#268BD2}.light .ct-a41202{color:#859900}.light .ct-b6e4ff{color:#657B83}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Frontend:React Native:Preserve FlatList scroll position in React Native.md","_source":"content","_file":"Frontend/React Native/Preserve FlatList scroll position in React Native.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/rNRhET0KmZ.json b/api/_content/query/rNRhET0KmZ.json index b2f2c5d..3685dfe 100644 --- a/api/_content/query/rNRhET0KmZ.json +++ b/api/_content/query/rNRhET0KmZ.json @@ -1 +1 @@ -{"_path":"/docker/github-pages-with-drone-ci","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Github Pages With Drone Ci","description":"To deploy github pages with Drone-ci you will need .drone.yml as specified below. You also should define secrets github_username and github_token (get it here) in your drone's repository setup.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deploy github pages with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" you will need "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".drone.yml"}]},{"type":"text","value":" as specified below. You also should define secrets "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_username"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_token"}]},{"type":"text","value":" (get it "},{"type":"element","tag":"a","props":{"href":"https://github.com/settings/tokens","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":") in your drone's repository setup."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Github repository should be named as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"yourname.github.io"}]},{"type":"text","value":" and it could be accessed at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/"}]},{"type":"text","value":". Otherwise it'll be available at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/repo-name/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/repo-name/"}]},{"type":"text","value":", what you might not like."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should create branch named "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" in that repo and setup GH Pages at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https://github.com//.github.io/settings/pages"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This config will update "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins."}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here we're moving "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./.output/public"}]},{"type":"text","value":" to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./docs"}]},{"type":"text","value":", because #nuxt creates symlink for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docs"}]},{"type":"text","value":" and git can't work with that."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also we create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".nojekyll"}]},{"type":"text","value":" at the root of repo, so github's internal engine won't "},{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"ignore files that start with underscore"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"additional-reading"},"children":[{"type":"text","value":"Additional reading"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://plugins.drone.io/plugins/gh-pages","rel":["nofollow"]},"children":[{"type":"text","value":"Drone Github Pages Documentation"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"Bypassing Jekyll on GitHub Pages"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deploy github pages with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" you will need "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".drone.yml"}]},{"type":"text","value":" as specified below. You also should define secrets "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_username"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_token"}]},{"type":"text","value":" (get it "},{"type":"element","tag":"a","props":{"href":"https://github.com/settings/tokens","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":") in your drone's repository setup."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Github repository should be named as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"yourname.github.io"}]},{"type":"text","value":" and it could be accessed at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/"}]},{"type":"text","value":". Otherwise it'll be available at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/repo-name/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/repo-name/"}]},{"type":"text","value":", what you might not like."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should create branch named "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" in that repo and setup GH Pages at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https://github.com//.github.io/settings/pages"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This config will update "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins."}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"kind"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"pipeline"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"platform"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"os"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"linux"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"arch"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"amd64"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"steps"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"node:16"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"commands"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"yarn"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"yarn generate"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"rm -rf ./docs"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"mv ./.output/public ./docs"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"touch ./docs/.nojekyll"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"publish"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"plugins/gh-pages"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"settings"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"target_branch"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"gh-pages"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"username"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"github_username"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"password"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f2adb2"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-2ae8ba"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-97e160"},"children":[{"type":"text","value":"github_token"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here we're moving "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./.output/public"}]},{"type":"text","value":" to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./docs"}]},{"type":"text","value":", because #nuxt creates symlink for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docs"}]},{"type":"text","value":" and git can't work with that."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also we create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".nojekyll"}]},{"type":"text","value":" at the root of repo, so github's internal engine won't "},{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"ignore files that start with underscore"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"additional-reading"},"children":[{"type":"text","value":"Additional reading"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://plugins.drone.io/plugins/gh-pages","rel":["nofollow"]},"children":[{"type":"text","value":"Drone Github Pages Documentation"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"Bypassing Jekyll on GitHub Pages"}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-97e160{color:#A5D6FF}.ct-2ae8ba{color:#C9D1D9}.ct-f2adb2{color:#7EE787}.light .ct-f2adb2{color:#268BD2}.light .ct-2ae8ba{color:#657B83}.light .ct-97e160{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"additional-reading","depth":2,"text":"Additional reading"}]}},"_type":"markdown","_id":"content:Docker:Github pages with drone-ci.md","_source":"content","_file":"Docker/Github pages with drone-ci.md","_extension":"md"} \ No newline at end of file +{"_path":"/docker/github-pages-with-drone-ci","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Github Pages With Drone Ci","description":"To deploy github pages with Drone-ci you will need .drone.yml as specified below. You also should define secrets github_username and github_token (get it here) in your drone's repository setup.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deploy github pages with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" you will need "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".drone.yml"}]},{"type":"text","value":" as specified below. You also should define secrets "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_username"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_token"}]},{"type":"text","value":" (get it "},{"type":"element","tag":"a","props":{"href":"https://github.com/settings/tokens","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":") in your drone's repository setup."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Github repository should be named as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"yourname.github.io"}]},{"type":"text","value":" and it could be accessed at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/"}]},{"type":"text","value":". Otherwise it'll be available at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/repo-name/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/repo-name/"}]},{"type":"text","value":", what you might not like."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should create branch named "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" in that repo and setup GH Pages at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https://github.com//.github.io/settings/pages"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This config will update "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins."}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here we're moving "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./.output/public"}]},{"type":"text","value":" to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./docs"}]},{"type":"text","value":", because #nuxt creates symlink for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docs"}]},{"type":"text","value":" and git can't work with that."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also we create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".nojekyll"}]},{"type":"text","value":" at the root of repo, so github's internal engine won't "},{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"ignore files that start with underscore"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"additional-reading"},"children":[{"type":"text","value":"Additional reading"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://plugins.drone.io/plugins/gh-pages","rel":["nofollow"]},"children":[{"type":"text","value":"Drone Github Pages Documentation"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"Bypassing Jekyll on GitHub Pages"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"To deploy github pages with "},{"type":"element","tag":"a","props":{"href":"Drone-ci"},"children":[{"type":"text","value":"Drone-ci"}]},{"type":"text","value":" you will need "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".drone.yml"}]},{"type":"text","value":" as specified below. You also should define secrets "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_username"}]},{"type":"text","value":" and "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"github_token"}]},{"type":"text","value":" (get it "},{"type":"element","tag":"a","props":{"href":"https://github.com/settings/tokens","rel":["nofollow"]},"children":[{"type":"text","value":"here"}]},{"type":"text","value":") in your drone's repository setup."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Github repository should be named as "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"yourname.github.io"}]},{"type":"text","value":" and it could be accessed at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/"}]},{"type":"text","value":". Otherwise it'll be available at "},{"type":"element","tag":"a","props":{"href":"https://yourname.github.io/repo-name/","rel":["nofollow"]},"children":[{"type":"text","value":"https://yourname.github.io/repo-name/"}]},{"type":"text","value":", what you might not like."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"You should create branch named "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" in that repo and setup GH Pages at "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"https://github.com//.github.io/settings/pages"}]},{"type":"text","value":"."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"This config will update "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"gh-pages"}]},{"type":"text","value":" branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins."}]},{"type":"element","tag":"code","props":{"code":"kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf ./docs\n - mv ./.output/public ./docs\n - touch ./docs/.nojekyll\n - name: publish\n image: plugins/gh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n","language":"yaml"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"kind"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"pipeline"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"type"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"docker"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"platform"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"os"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"linux"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"arch"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"amd64"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"steps"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"build"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"node:16"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"commands"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"yarn"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"yarn generate"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"rm -rf ./docs"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"mv ./.output/public ./docs"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"touch ./docs/.nojekyll"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" - "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"publish"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"image"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"plugins/gh-pages"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"settings"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"target_branch"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"gh-pages"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"username"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"github_username"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"password"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":":"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-72f2f7"},"children":[{"type":"text","value":"from_secret"}]},{"type":"element","tag":"span","props":{"class":"ct-f503f1"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-9a1e3a"},"children":[{"type":"text","value":"github_token"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Here we're moving "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./.output/public"}]},{"type":"text","value":" to "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"./docs"}]},{"type":"text","value":", because #nuxt creates symlink for "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":"docs"}]},{"type":"text","value":" and git can't work with that."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Also we create "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".nojekyll"}]},{"type":"text","value":" at the root of repo, so github's internal engine won't "},{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"ignore files that start with underscore"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"additional-reading"},"children":[{"type":"text","value":"Additional reading"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://plugins.drone.io/plugins/gh-pages","rel":["nofollow"]},"children":[{"type":"text","value":"Drone Github Pages Documentation"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://github.blog/2009-12-29-bypassing-jekyll-on-github-pages/","rel":["nofollow"]},"children":[{"type":"text","value":"Bypassing Jekyll on GitHub Pages"}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-9a1e3a{color:#A5D6FF}.ct-f503f1{color:#C9D1D9}.ct-72f2f7{color:#7EE787}.light .ct-72f2f7{color:#268BD2}.light .ct-f503f1{color:#657B83}.light .ct-9a1e3a{color:#2AA198}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[{"id":"additional-reading","depth":2,"text":"Additional reading"}]}},"_type":"markdown","_id":"content:Docker:Github pages with drone-ci.md","_source":"content","_file":"Docker/Github pages with drone-ci.md","_extension":"md"} \ No newline at end of file diff --git a/api/_content/query/v8MG1Q8wMg.json b/api/_content/query/v8MG1Q8wMg.json index 5b149ea..809c78f 100644 --- a/api/_content/query/v8MG1Q8wMg.json +++ b/api/_content/query/v8MG1Q8wMg.json @@ -1 +1 @@ -{"_path":"/docker/seed-dump-inside-docker","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Seed Dump Inside Docker","description":"If you need to seed .sql dump in #docker container, just run this command. Also you can try to rsync file with SSH to get it from remote host.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to seed "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".sql"}]},{"type":"text","value":" dump in #docker container, just run this command. Also you can try to "},{"type":"element","tag":"a","props":{"href":"/linux/Rsync%20file%20with%20SSH"},"children":[{"type":"text","value":"rsync file with SSH"}]},{"type":"text","value":" to get it from remote host."}]},{"type":"element","tag":"code","props":{"code":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to seed "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".sql"}]},{"type":"text","value":" dump in #docker container, just run this command. Also you can try to "},{"type":"element","tag":"a","props":{"href":"/linux/Rsync%20file%20with%20SSH"},"children":[{"type":"text","value":"rsync file with SSH"}]},{"type":"text","value":" to get it from remote host."}]},{"type":"element","tag":"code","props":{"code":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aac0b0"},"children":[{"type":"text","value":"#####"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aac0b0"},"children":[{"type":"text","value":"# usage: ./script.sh \"/path/to/dump.sql\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-aac0b0"},"children":[{"type":"text","value":"#####"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"DUMP_PATH="}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"CONTAINER="}]},{"type":"element","tag":"span","props":{"class":"ct-da7cb6"},"children":[{"type":"text","value":"\"db\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"USER=root"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"PASSWORD=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"DB=database"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":"cat "}]},{"type":"element","tag":"span","props":{"class":"ct-da7cb6"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"DUMP_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-da7cb6"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-084b84"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-371fb5"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" -i "}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"CONTAINER"}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" mysql -u"}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"USER"}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" -p"}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-74a2bf"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-1ae675"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-96c3f7"},"children":[{"type":"text","value":"DB"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-371fb5{color:#79C0FF}.ct-084b84{color:#FF7B72}.ct-da7cb6{color:#A5D6FF}.ct-96c3f7{color:#C9D1D9}.ct-1ae675{color:#C9D1D9}.ct-74a2bf{color:#C9D1D9}.ct-aac0b0{color:#8B949E}.light .ct-aac0b0{color:#93A1A1}.light .ct-74a2bf{color:#657B83}.light .ct-1ae675{color:#859900}.light .ct-96c3f7{color:#268BD2}.light .ct-da7cb6{color:#2AA198}.light .ct-084b84{color:#859900}.light .ct-371fb5{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Seed dump inside docker.md","_source":"content","_file":"Docker/Seed dump inside docker.md","_extension":"md"} \ No newline at end of file +{"_path":"/docker/seed-dump-inside-docker","_dir":"docker","_draft":false,"_partial":false,"_locale":"en","_empty":false,"title":"Seed Dump Inside Docker","description":"If you need to seed .sql dump in #docker container, just run this command. Also you can try to rsync file with SSH to get it from remote host.","excerpt":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to seed "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".sql"}]},{"type":"text","value":" dump in #docker container, just run this command. Also you can try to "},{"type":"element","tag":"a","props":{"href":"/linux/Rsync%20file%20with%20SSH"},"children":[{"type":"text","value":"rsync file with SSH"}]},{"type":"text","value":" to get it from remote host."}]},{"type":"element","tag":"code","props":{"code":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n"}]}]}]}]},"body":{"type":"root","children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"If you need to seed "},{"type":"element","tag":"code-inline","props":{},"children":[{"type":"text","value":".sql"}]},{"type":"text","value":" dump in #docker container, just run this command. Also you can try to "},{"type":"element","tag":"a","props":{"href":"/linux/Rsync%20file%20with%20SSH"},"children":[{"type":"text","value":"rsync file with SSH"}]},{"type":"text","value":" to get it from remote host."}]},{"type":"element","tag":"code","props":{"code":"#####\n# usage: ./script.sh \"/path/to/dump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n","language":"shell"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cec5ec"},"children":[{"type":"text","value":"#####"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cec5ec"},"children":[{"type":"text","value":"# usage: ./script.sh \"/path/to/dump.sql\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-cec5ec"},"children":[{"type":"text","value":"#####"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"DUMP_PATH="}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"1"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"CONTAINER="}]},{"type":"element","tag":"span","props":{"class":"ct-464a66"},"children":[{"type":"text","value":"\"db\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"USER=root"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"PASSWORD=password"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"DB=database"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":"cat "}]},{"type":"element","tag":"span","props":{"class":"ct-464a66"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"DUMP_PATH"}]},{"type":"element","tag":"span","props":{"class":"ct-464a66"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-912b98"},"children":[{"type":"text","value":"|"}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" docker "}]},{"type":"element","tag":"span","props":{"class":"ct-c90fb8"},"children":[{"type":"text","value":"exec"}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" -i "}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"CONTAINER"}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" mysql -u"}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"USER"}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" -p"}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"PASSWORD"}]},{"type":"element","tag":"span","props":{"class":"ct-2efaf7"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-bfeec8"},"children":[{"type":"text","value":"$"}]},{"type":"element","tag":"span","props":{"class":"ct-a801ae"},"children":[{"type":"text","value":"DB"}]}]}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-c90fb8{color:#79C0FF}.ct-912b98{color:#FF7B72}.ct-464a66{color:#A5D6FF}.ct-a801ae{color:#C9D1D9}.ct-bfeec8{color:#C9D1D9}.ct-2efaf7{color:#C9D1D9}.ct-cec5ec{color:#8B949E}.light .ct-cec5ec{color:#93A1A1}.light .ct-2efaf7{color:#657B83}.light .ct-bfeec8{color:#859900}.light .ct-a801ae{color:#268BD2}.light .ct-464a66{color:#2AA198}.light .ct-912b98{color:#859900}.light .ct-c90fb8{color:#268BD2}"}]}],"toc":{"title":"","searchDepth":2,"depth":2,"links":[]}},"_type":"markdown","_id":"content:Docker:Seed dump inside docker.md","_source":"content","_file":"Docker/Seed dump inside docker.md","_extension":"md"} \ No newline at end of file diff --git a/bio/_payload.js b/bio/_payload.js index a7b8efe..b4193fa 100644 --- a/bio/_payload.js +++ b/bio/_payload.js @@ -1 +1 @@ -export default {data:{},prerenderedAt:1667469948686} \ No newline at end of file +export default {data:{},prerenderedAt:1667480025485} \ No newline at end of file diff --git a/bio/index.html b/bio/index.html index a5f5677..d5b3529 100644 --- a/bio/index.html +++ b/bio/index.html @@ -1,6 +1,12 @@ - -

Howdy!

My name is Fedor Katurov, I'm a fullstack developer from Siberia.

I develop frontend applications with React, Vue and numerous other frameworks for the most of my time, but I'm also capable of doing Typescript and Golang backend.

Skills

React

Classes and FC-s, hooks, context, redux, redux-saga, mobx

Typescript

For both frontend and backend development: generics, guards, infers

SSR (Next, Gatsby)

Automated generation, incremental, static, and dynamic rendering

Vue.js & Nuxt

Common SPA-s and SSR blogs like this one, with composition API, and Vuex

React Native

Basic developing and releasing experience without native modules

Golang

Monolith and microservice apps with REST, GraphQL, and GRPC

Docker

Docker, docker-compose, private registries, gitlab-ci, and drone-ci

HTML, CSS, SVG

Adaptive markup, all modern techniques, preprocessors, and CSS-in-JS

Linux Shell

Linux user since 2003, can write scripts to automate my work. BTW, I use Arch!

GraphQL

Both server- and client-side. Queries, mutations, cache manipulation

REST API

With Axios, fetch, express, gorilla-mux, and gin-gonic

SQL

Base queries, JOIN-s, indexes and simpl query optimizations
btw, have a nice day
(2018 - 2022) muerwre
+

Howdy!

My name is Fedor Katurov, I'm a fullstack developer from Siberia.

I develop frontend applications with React, Vue and numerous other frameworks for the most of my time, but I'm also capable of doing Typescript and Golang backend.

Skills

React

Classes and FC-s, hooks, context, redux, redux-saga, mobx

Typescript

For both frontend and backend development: generics, guards, infers

SSR (Next, Gatsby)

Automated generation, incremental, static, and dynamic rendering

Vue.js & Nuxt

Common SPA-s and SSR blogs like this one, with composition API, and Vuex

React Native

Basic developing and releasing experience without native modules

Golang

Monolith and microservice apps with REST, GraphQL, and GRPC

Docker

Docker, docker-compose, private registries, gitlab-ci, and drone-ci

HTML, CSS, SVG

Adaptive markup, all modern techniques, preprocessors, and CSS-in-JS

Linux Shell

Linux user since 2003, can write scripts to automate my work. BTW, I use Arch!

GraphQL

Both server- and client-side. Queries, mutations, cache manipulation

REST API

With Axios, fetch, express, gorilla-mux, and gin-gonic

SQL

Base queries, JOIN-s, indexes and simpl query optimizations

Pet Projects

Vault48
Community blog with a long 13-year history, features photo, video and audio embedding. + +Beeing initially written with Drupal 5, went through refactoring to Laravel + Vue and then, nowadays works on React and Golang stack.
Orchid Map
Local cycling community Web Maps made with React, Leaflet, and Golang. + +Implements automatic route building with OSRM and map rasterization with canvas. Used by users in local cycling communities for ride sharing.
Obsidian Garden
Frontend for personal knowledge database managed by Obsidian.md software. + +Made with nuxt3, nuxt-content plugin and some customizations. Deployed with drone-ci directly to github-pages.

Career

btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/blockchain/common-typescript-examples/_payload.js b/blockchain/common-typescript-examples/_payload.js index d0b2917..0c57574 100644 --- a/blockchain/common-typescript-examples/_payload.js +++ b/blockchain/common-typescript-examples/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,a_,a$,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,bA,bB,bC,bD,bE,bF,bG,bH,bI,bJ,bK,bL,bM,bN,bO,bP,bQ,bR,bS,bT,bU,bV,bW,bX,bY,bZ,b_,b$,ca,cb,cc){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:aY,_path:aZ},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-84dtRQ1pg6":{_path:aZ,_dir:"blockchain",_draft:ak,_partial:ak,_locale:"en",_empty:ak,title:aY,description:p,excerpt:{type:a_,children:[{type:a,tag:a$,props:{},children:[{type:a,tag:Y,props:{},children:[{type:c,value:ba},{type:a,tag:M,props:{href:Z,rel:[_]},children:[{type:c,value:Z}]}]},{type:a,tag:Y,props:{},children:[{type:c,value:bb},{type:a,tag:M,props:{href:bc},children:[{type:c,value:bd}]}]}]},{type:a,tag:u,props:{id:al},children:[{type:c,value:am}]},{type:a,tag:D,props:{},children:[{type:c,value:be},{type:a,tag:N,props:{},children:[{type:c,value:bf}]},{type:c,value:bg},{type:a,tag:M,props:{href:bh,rel:[_]},children:[{type:c,value:bi}]},{type:c,value:bj}]},{type:a,tag:j,props:{code:an,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:an}]}]}]},{type:a,tag:u,props:{id:ao},children:[{type:c,value:ap}]},{type:a,tag:j,props:{code:aq,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aq}]}]}]},{type:a,tag:u,props:{id:ar},children:[{type:c,value:as}]},{type:a,tag:j,props:{code:at,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:at}]}]}]},{type:a,tag:u,props:{id:au},children:[{type:c,value:av}]},{type:a,tag:D,props:{},children:[{type:c,value:bk},{type:a,tag:N,props:{},children:[{type:c,value:O}]},{type:c,value:bl},{type:a,tag:N,props:{},children:[{type:c,value:P}]},{type:c,value:bm}]},{type:a,tag:j,props:{code:aw,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aw}]}]}]},{type:a,tag:u,props:{id:ax},children:[{type:c,value:ay}]},{type:a,tag:D,props:{},children:[{type:c,value:bn}]},{type:a,tag:j,props:{code:az,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:az}]}]}]},{type:a,tag:u,props:{id:aA},children:[{type:c,value:aB}]},{type:a,tag:j,props:{code:aC,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aC}]}]}]},{type:a,tag:u,props:{id:aD},children:[{type:c,value:aE}]},{type:a,tag:j,props:{code:aF,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aF}]}]}]},{type:a,tag:u,props:{id:aG},children:[{type:c,value:aH}]},{type:a,tag:j,props:{code:aI,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aI}]}]}]},{type:a,tag:u,props:{id:aJ},children:[{type:c,value:aK}]},{type:a,tag:D,props:{},children:[{type:c,value:bo}]},{type:a,tag:j,props:{code:aL,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aL}]}]}]},{type:a,tag:D,props:{},children:[{type:c,value:bp}]},{type:a,tag:j,props:{code:aM,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aM}]}]}]}]},body:{type:a_,children:[{type:a,tag:a$,props:{},children:[{type:a,tag:Y,props:{},children:[{type:c,value:ba},{type:a,tag:M,props:{href:Z,rel:[_]},children:[{type:c,value:Z}]}]},{type:a,tag:Y,props:{},children:[{type:c,value:bb},{type:a,tag:M,props:{href:bc},children:[{type:c,value:bd}]}]}]},{type:a,tag:u,props:{id:al},children:[{type:c,value:am}]},{type:a,tag:D,props:{},children:[{type:c,value:be},{type:a,tag:N,props:{},children:[{type:c,value:bf}]},{type:c,value:bg},{type:a,tag:M,props:{href:bh,rel:[_]},children:[{type:c,value:bi}]},{type:c,value:bj}]},{type:a,tag:j,props:{code:an,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:aN}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'web3'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F URL of your node"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'https:\u002F\u002F...'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:"export"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"givenProvider"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"||"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]}]}]}]},{type:a,tag:u,props:{id:ao},children:[{type:c,value:ap}]},{type:a,tag:j,props:{code:aq,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:aa},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:br},children:[{type:c,value:bs}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:bt},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:aa},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:bu},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:bt},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-c3adee"},children:[{type:c,value:"string"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:bx}]},{type:a,tag:b,props:{class:aa},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bs}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:u,props:{id:ar},children:[{type:c,value:as}]},{type:a,tag:j,props:{code:at,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F first we need to authorize"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"authorize"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aP}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aQ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:by}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'eth_requestAccounts'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F then we can get wallet address"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getCurrentAddressUser"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aP}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aQ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"selectedAddress"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:u,props:{id:au},children:[{type:c,value:av}]},{type:a,tag:D,props:{},children:[{type:c,value:bk},{type:a,tag:N,props:{},children:[{type:c,value:O}]},{type:c,value:bl},{type:a,tag:N,props:{},children:[{type:c,value:P}]},{type:c,value:bm}]},{type:a,tag:j,props:{code:aw,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"transfer"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ({ "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bA}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getTransactionCount"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bE}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bF}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:bG}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bH}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" gasLimit: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" gasPrice: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" nonce: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bI}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"EthUtil"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"toBuffer"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:aR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"Transaction"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"sign"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bK}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"serialize"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:"this"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"sendSignedTransaction"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"`0x${"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bK}]},{type:a,tag:b,props:{class:aS},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:aS},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'hex'"}]},{type:a,tag:b,props:{class:aS},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"}`"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bL}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:u,props:{id:ax},children:[{type:c,value:ay}]},{type:a,tag:D,props:{},children:[{type:c,value:bn}]},{type:a,tag:j,props:{code:az,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:aN}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bM}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bN}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:bO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"estimateFee"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ({"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bA}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"estimateGas"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bE}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bF}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:bG}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bH}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bI}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"asciiToHex"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })."}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"call"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"fromWei"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:aT},children:[{type:c,value:bP}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"())"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bQ}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"multiply"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:aT},children:[{type:c,value:bP}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"()))"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bQ}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"()"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bL}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:u,props:{id:aA},children:[{type:c,value:aB}]},{type:a,tag:j,props:{code:aC,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:aN}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bM}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bN}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:bO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aQ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'accountsChanged'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"callback"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]}]}]}]},{type:a,tag:u,props:{id:aD},children:[{type:c,value:aE}]},{type:a,tag:j,props:{code:aF,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'chainChanged'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"handler"}]},{type:a,tag:b,props:{class:"ct-5b649c"},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]}]}]}]}]},{type:a,tag:u,props:{id:aG},children:[{type:c,value:aH}]},{type:a,tag:j,props:{code:aI,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:aU}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bS}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'wallet_watchAsset'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" params: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" type: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'ERC20'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" options: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" address: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'0xb60e8dd61c5d32be8058bb8eb970870f07233155'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" symbol: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'FOO'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" decimals: "}]},{type:a,tag:b,props:{class:aW},children:[{type:c,value:bT}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" image: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'https:\u002F\u002Ffoo.io\u002Ftoken-image.svg'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bU}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:y},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:br},children:[{type:c,value:"then"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:"(("}]},{type:a,tag:b,props:{class:bu},children:[{type:c,value:bV}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:bx}]},{type:a,tag:b,props:{class:aa},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:bW}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aj}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"log"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'FOO successfully added to wallet!'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bY}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"else"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"throw"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:aT},children:[{type:c,value:"Error"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'Something went wrong.'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bZ}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bU}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:b_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]}]}]}]}]},{type:a,tag:u,props:{id:aJ},children:[{type:c,value:aK}]},{type:a,tag:D,props:{},children:[{type:c,value:bo}]},{type:a,tag:j,props:{code:aL,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getChainID"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aP}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:by}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'eth_chainId'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:D,props:{},children:[{type:c,value:bp}]},{type:a,tag:j,props:{code:aM,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:b$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aU}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bS}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'wallet_switchEthereumChain'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" params: [{ chainId: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:ca}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" }], "}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:cb}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"} "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"switchError"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aj}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F This error code indicates that the chain has not been added to MetaMask."}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:bW}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:b_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"==="}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:aW},children:[{type:c,value:"4902"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aj}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:b$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aU}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" method: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'wallet_addEthereumChain'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" params: [{ "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" chainId: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:ca}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:cb}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" chainName: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'Ropsten Test Network'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" nativeCurrency: { "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" name: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:cc}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" symbol: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:cc}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" decimals: "}]},{type:a,tag:b,props:{class:aW},children:[{type:c,value:bT}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" rpcUrls: ["}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'https:\u002F\u002Fropsten.infura.io\u002Fv3\u002F9aa3d95b3bc440fa88ea12eaa4456161'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"], "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" blockExplorerUrls: ["}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'https:\u002F\u002Fropsten.etherscan.io'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"] "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }] ,"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bY}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"addError"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aj}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F handle \"add\" error"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bZ}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F handle other \"switch\" errors"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-257ab4{color:#79C0FF}.ct-5b649c{color:#C9D1D9}.ct-7e4ae9{color:#79C0FF}.ct-67aa5d{color:#A5D6FF}.ct-c3adee{color:#79C0FF}.ct-5263e7{color:#FFA657}.ct-b68cca{color:#FF7B72}.ct-29d072{color:#D2A8FF}.ct-e10e80{color:#C9D1D9}.ct-eae8ac{color:#FF7B72}.ct-54055d{color:#D2A8FF}.ct-8ae2fc{color:#79C0FF}.ct-78a5db{color:#FF7B72}.ct-8e9ae2{color:#8B949E}.ct-422a59{color:#A5D6FF}.ct-98be25{color:#C9D1D9}.ct-2a2380{color:#C9D1D9}.ct-0b52da{color:#FF7B72}.light .ct-0b52da{color:#859900}.light .ct-2a2380{color:#657B83}.light .ct-98be25{color:#268BD2}.light .ct-422a59{color:#2AA198}.light .ct-8e9ae2{color:#93A1A1}.light .ct-78a5db{color:#073642}.light .ct-8ae2fc{color:#268BD2}.light .ct-54055d{color:#268BD2}.light .ct-eae8ac{color:#073642}.light .ct-e10e80{color:#657B83}.light .ct-29d072{color:#268BD2}.light .ct-b68cca{color:#859900}.light .ct-5263e7{color:#657B83}.light .ct-c3adee{color:#859900}.light .ct-67aa5d{color:#657B83}.light .ct-7e4ae9{color:#859900}.light .ct-5b649c{color:#859900}.light .ct-257ab4{color:#D33682}"}]}],toc:{title:p,searchDepth:C,depth:C,links:[{id:al,depth:C,text:am},{id:ao,depth:C,text:ap},{id:ar,depth:C,text:as},{id:au,depth:C,text:av},{id:ax,depth:C,text:ay},{id:aA,depth:C,text:aB},{id:aD,depth:C,text:aE},{id:aG,depth:C,text:aH},{id:aJ,depth:C,text:aK}]}},_type:"markdown",_id:"content:Blockchain:Common typescript examples.md",_source:"content",_file:"Blockchain\u002FCommon typescript examples.md",_extension:"md"}},prerenderedAt:1667469955066}}("element","span","text","ct-2a2380","line","ct-98be25"," ",".","ct-0b52da","code","ct-54055d","ct-422a59"," ","(","ct-78a5db","","typescript","pre","web3",",","h2","=","const","ct-8ae2fc","ct-e10e80"," {"," ",", ",2,"p"," ","utils","from","ct-8e9ae2","await",");","=\u003E","}","a","code-inline","value","memo","eth",";","async"," (","return","request","toHex","ethereum","li","https:\u002F\u002Fmetamask.github.io\u002Ftest-dapp\u002F","nofollow","Web3","ct-eae8ac","to","gasLimit","gasPrice","();","),","toString",")","({",") {",false,"connecting-to-node","Connecting to node","import Web3 from 'web3';\n\n\u002F\u002F URL of your node\nconst PROVIDER_URL = 'https:\u002F\u002F...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","getting-wallet-balance","Getting wallet balance","const getBalance = async (address: string) =\u003E {\n return await web3.eth.getBalance(address);\n}\n","getting-wallet-address","Getting wallet address","\u002F\u002F first we need to authorize\nconst authorize = async () =\u003E {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n\u002F\u002F then we can get wallet address\nconst getCurrentAddressUser = () =\u003E {\n return web3.currentProvider.selectedAddress;\n}\n","sending-transaction","Sending transaction","\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) =\u003E {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","estimating-transaction-fee","Estimating transaction FEE","import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) =\u003E {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","subscribing-to-wallet-address-change","Subscribing to wallet address change","import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","watching-network-change","Watching network change","ethereum.on('chainChanged', handler: (chainId: string) =\u003E void);\n","adding-custom-token-to-wallet","Adding custom token to wallet","window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https:\u002F\u002Ffoo.io\u002Ftoken-image.svg',\n },\n },\n })\n .then((success) =\u003E {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","changing-network-to-custom","Changing network to custom","const getChainID = async () =\u003E {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], \u002F\u002F ropsten chainID (3) in hex\n });\n} catch (switchError) {\n \u002F\u002F This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', \u002F\u002F ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https:\u002F\u002Fropsten.infura.io\u002Fv3\u002F9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https:\u002F\u002Fropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n \u002F\u002F handle \"add\" error\n }\n }\n \u002F\u002F handle other \"switch\" errors\n}\n","import","new"," () ","currentProvider","tx","ct-67aa5d","ct-7e4ae9","window"," .","ct-257ab4","catch","Common Typescript Examples","\u002Fblockchain\u002Fcommon-typescript-examples","root","ul","Simple #dapp example for tests: ","Interaction with smart contracts described in ","Smart%20contracts","Smart contracts","If #Metamask extension installed, ","Web3.givenProvider"," is available in global window. You can use ","https:\u002F\u002Finfura.io","Infura"," or your node instead:","Sending "," tokens with "," as value:","Useful to get fixed amount of tokens from user with pre-estimated fee.","Checking current chainId:","Asking wallet to change current network:","PROVIDER_URL","ct-29d072","getBalance","ct-b68cca","ct-5263e7","address",":",") ","({ method: ","privateKey","}) ","nonce","getGasPrice","rawTx"," value: ","toWei","'ether'",")),"," data: ","privateKeyBuffer","serializedTx"," );"," { "," } ","'.'","BigInt"," .","on"," method: ","18"," })","success","if","console"," } "," }","error","try","'0x03'","\u002F\u002F ropsten chainID (3) in hex","'ETH'")) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,a_,a$,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,bA,bB,bC,bD,bE,bF,bG,bH,bI,bJ,bK,bL,bM,bN,bO,bP,bQ,bR,bS,bT,bU,bV,bW,bX,bY,bZ,b_,b$,ca,cb,cc){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:aY,_path:aZ},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-84dtRQ1pg6":{_path:aZ,_dir:"blockchain",_draft:ak,_partial:ak,_locale:"en",_empty:ak,title:aY,description:p,excerpt:{type:a_,children:[{type:a,tag:a$,props:{},children:[{type:a,tag:Y,props:{},children:[{type:c,value:ba},{type:a,tag:M,props:{href:Z,rel:[_]},children:[{type:c,value:Z}]}]},{type:a,tag:Y,props:{},children:[{type:c,value:bb},{type:a,tag:M,props:{href:bc},children:[{type:c,value:bd}]}]}]},{type:a,tag:u,props:{id:al},children:[{type:c,value:am}]},{type:a,tag:D,props:{},children:[{type:c,value:be},{type:a,tag:N,props:{},children:[{type:c,value:bf}]},{type:c,value:bg},{type:a,tag:M,props:{href:bh,rel:[_]},children:[{type:c,value:bi}]},{type:c,value:bj}]},{type:a,tag:j,props:{code:an,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:an}]}]}]},{type:a,tag:u,props:{id:ao},children:[{type:c,value:ap}]},{type:a,tag:j,props:{code:aq,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aq}]}]}]},{type:a,tag:u,props:{id:ar},children:[{type:c,value:as}]},{type:a,tag:j,props:{code:at,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:at}]}]}]},{type:a,tag:u,props:{id:au},children:[{type:c,value:av}]},{type:a,tag:D,props:{},children:[{type:c,value:bk},{type:a,tag:N,props:{},children:[{type:c,value:O}]},{type:c,value:bl},{type:a,tag:N,props:{},children:[{type:c,value:P}]},{type:c,value:bm}]},{type:a,tag:j,props:{code:aw,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aw}]}]}]},{type:a,tag:u,props:{id:ax},children:[{type:c,value:ay}]},{type:a,tag:D,props:{},children:[{type:c,value:bn}]},{type:a,tag:j,props:{code:az,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:az}]}]}]},{type:a,tag:u,props:{id:aA},children:[{type:c,value:aB}]},{type:a,tag:j,props:{code:aC,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aC}]}]}]},{type:a,tag:u,props:{id:aD},children:[{type:c,value:aE}]},{type:a,tag:j,props:{code:aF,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aF}]}]}]},{type:a,tag:u,props:{id:aG},children:[{type:c,value:aH}]},{type:a,tag:j,props:{code:aI,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aI}]}]}]},{type:a,tag:u,props:{id:aJ},children:[{type:c,value:aK}]},{type:a,tag:D,props:{},children:[{type:c,value:bo}]},{type:a,tag:j,props:{code:aL,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aL}]}]}]},{type:a,tag:D,props:{},children:[{type:c,value:bp}]},{type:a,tag:j,props:{code:aM,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:c,value:aM}]}]}]}]},body:{type:a_,children:[{type:a,tag:a$,props:{},children:[{type:a,tag:Y,props:{},children:[{type:c,value:ba},{type:a,tag:M,props:{href:Z,rel:[_]},children:[{type:c,value:Z}]}]},{type:a,tag:Y,props:{},children:[{type:c,value:bb},{type:a,tag:M,props:{href:bc},children:[{type:c,value:bd}]}]}]},{type:a,tag:u,props:{id:al},children:[{type:c,value:am}]},{type:a,tag:D,props:{},children:[{type:c,value:be},{type:a,tag:N,props:{},children:[{type:c,value:bf}]},{type:c,value:bg},{type:a,tag:M,props:{href:bh,rel:[_]},children:[{type:c,value:bi}]},{type:c,value:bj}]},{type:a,tag:j,props:{code:an,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:aN}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'web3'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F URL of your node"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'https:\u002F\u002F...'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:"export"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"givenProvider"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"||"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]}]}]}]},{type:a,tag:u,props:{id:ao},children:[{type:c,value:ap}]},{type:a,tag:j,props:{code:aq,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:aa},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:br},children:[{type:c,value:bs}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:bt},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:aa},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:bu},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:bt},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-d54e3e"},children:[{type:c,value:"string"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:bx}]},{type:a,tag:b,props:{class:aa},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bs}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:u,props:{id:ar},children:[{type:c,value:as}]},{type:a,tag:j,props:{code:at,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F first we need to authorize"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"authorize"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aP}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aQ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:by}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'eth_requestAccounts'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F then we can get wallet address"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getCurrentAddressUser"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aP}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aQ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"selectedAddress"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:u,props:{id:au},children:[{type:c,value:av}]},{type:a,tag:D,props:{},children:[{type:c,value:bk},{type:a,tag:N,props:{},children:[{type:c,value:O}]},{type:c,value:bl},{type:a,tag:N,props:{},children:[{type:c,value:P}]},{type:c,value:bm}]},{type:a,tag:j,props:{code:aw,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"transfer"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ({ "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bA}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getTransactionCount"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bE}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bF}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:bG}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bH}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" gasLimit: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" gasPrice: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" nonce: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bI}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"EthUtil"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"toBuffer"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:aR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"Transaction"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"sign"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:bK}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"serialize"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:"this"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"sendSignedTransaction"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"`0x${"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bK}]},{type:a,tag:b,props:{class:aS},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:aS},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'hex'"}]},{type:a,tag:b,props:{class:aS},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"}`"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bL}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:u,props:{id:ax},children:[{type:c,value:ay}]},{type:a,tag:D,props:{},children:[{type:c,value:bn}]},{type:a,tag:j,props:{code:az,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:aN}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bM}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bN}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:bO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"estimateFee"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ({"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bA}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"estimateGas"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bE}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bF}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:bG}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bH}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bI}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"asciiToHex"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })."}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"call"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"fromWei"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:aT},children:[{type:c,value:bP}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"())"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bQ}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"multiply"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:aT},children:[{type:c,value:bP}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"()))"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bQ}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"()"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bL}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:u,props:{id:aA},children:[{type:c,value:aB}]},{type:a,tag:j,props:{code:aC,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:aN}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bM}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bN}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:bO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aQ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'accountsChanged'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"callback"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]}]}]}]},{type:a,tag:u,props:{id:aD},children:[{type:c,value:aE}]},{type:a,tag:j,props:{code:aF,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'chainChanged'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"handler"}]},{type:a,tag:b,props:{class:"ct-ee59bc"},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]}]}]}]}]},{type:a,tag:u,props:{id:aG},children:[{type:c,value:aH}]},{type:a,tag:j,props:{code:aI,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:aU}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bS}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'wallet_watchAsset'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" params: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" type: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'ERC20'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" options: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" address: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'0xb60e8dd61c5d32be8058bb8eb970870f07233155'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" symbol: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'FOO'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" decimals: "}]},{type:a,tag:b,props:{class:aW},children:[{type:c,value:bT}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" image: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'https:\u002F\u002Ffoo.io\u002Ftoken-image.svg'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bU}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:y},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:br},children:[{type:c,value:"then"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:"(("}]},{type:a,tag:b,props:{class:bu},children:[{type:c,value:bV}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:bx}]},{type:a,tag:b,props:{class:aa},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:bW}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aj}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"log"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'FOO successfully added to wallet!'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bY}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"else"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"throw"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:aT},children:[{type:c,value:"Error"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'Something went wrong.'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bZ}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bU}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:bX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:b_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]}]}]}]}]},{type:a,tag:u,props:{id:aJ},children:[{type:c,value:aK}]},{type:a,tag:D,props:{},children:[{type:c,value:bo}]},{type:a,tag:j,props:{code:aL,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:o},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getChainID"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aP}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:by}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'eth_chainId'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:D,props:{},children:[{type:c,value:bp}]},{type:a,tag:j,props:{code:aM,language:q},children:[{type:a,tag:r,props:{},children:[{type:a,tag:j,props:{__ignoreMap:p},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:b$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aU}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bS}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'wallet_switchEthereumChain'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" params: [{ chainId: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:ca}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" }], "}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:cb}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"} "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"switchError"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aj}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F This error code indicates that the chain has not been added to MetaMask."}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:bW}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:b_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"==="}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:aW},children:[{type:c,value:"4902"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aj}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:b$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aU}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" method: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'wallet_addEthereumChain'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" params: [{ "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" chainId: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:ca}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:cb}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" chainName: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'Ropsten Test Network'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" nativeCurrency: { "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" name: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:cc}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" symbol: "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:cc}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" decimals: "}]},{type:a,tag:b,props:{class:aW},children:[{type:c,value:bT}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" rpcUrls: ["}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'https:\u002F\u002Fropsten.infura.io\u002Fv3\u002F9aa3d95b3bc440fa88ea12eaa4456161'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"], "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" blockExplorerUrls: ["}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"'https:\u002F\u002Fropsten.etherscan.io'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"] "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }] ,"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bY}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"addError"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aj}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F handle \"add\" error"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bZ}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:"\u002F\u002F handle other \"switch\" errors"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-bc9ce6{color:#79C0FF}.ct-ee59bc{color:#C9D1D9}.ct-60c772{color:#79C0FF}.ct-f4b88e{color:#A5D6FF}.ct-d54e3e{color:#79C0FF}.ct-194e55{color:#FFA657}.ct-e57fac{color:#FF7B72}.ct-63eb51{color:#D2A8FF}.ct-c114df{color:#C9D1D9}.ct-4f206d{color:#FF7B72}.ct-72dc80{color:#D2A8FF}.ct-eff62d{color:#79C0FF}.ct-c4f869{color:#FF7B72}.ct-b33b32{color:#8B949E}.ct-a4c2c3{color:#A5D6FF}.ct-650166{color:#C9D1D9}.ct-11b678{color:#C9D1D9}.ct-0fbe3e{color:#FF7B72}.light .ct-0fbe3e{color:#859900}.light .ct-11b678{color:#657B83}.light .ct-650166{color:#268BD2}.light .ct-a4c2c3{color:#2AA198}.light .ct-b33b32{color:#93A1A1}.light .ct-c4f869{color:#073642}.light .ct-eff62d{color:#268BD2}.light .ct-72dc80{color:#268BD2}.light .ct-4f206d{color:#073642}.light .ct-c114df{color:#657B83}.light .ct-63eb51{color:#268BD2}.light .ct-e57fac{color:#859900}.light .ct-194e55{color:#657B83}.light .ct-d54e3e{color:#859900}.light .ct-f4b88e{color:#657B83}.light .ct-60c772{color:#859900}.light .ct-ee59bc{color:#859900}.light .ct-bc9ce6{color:#D33682}"}]}],toc:{title:p,searchDepth:C,depth:C,links:[{id:al,depth:C,text:am},{id:ao,depth:C,text:ap},{id:ar,depth:C,text:as},{id:au,depth:C,text:av},{id:ax,depth:C,text:ay},{id:aA,depth:C,text:aB},{id:aD,depth:C,text:aE},{id:aG,depth:C,text:aH},{id:aJ,depth:C,text:aK}]}},_type:"markdown",_id:"content:Blockchain:Common typescript examples.md",_source:"content",_file:"Blockchain\u002FCommon typescript examples.md",_extension:"md"}},prerenderedAt:1667480031497}}("element","span","text","ct-11b678","line","ct-650166"," ",".","ct-0fbe3e","code","ct-72dc80","ct-a4c2c3"," ","(","ct-c4f869","","typescript","pre","web3",",","h2","=","const","ct-eff62d","ct-c114df"," {"," ",", ",2,"p"," ","utils","from","ct-b33b32","await",");","=\u003E","}","a","code-inline","value","memo","eth",";","async"," (","return","request","toHex","ethereum","li","https:\u002F\u002Fmetamask.github.io\u002Ftest-dapp\u002F","nofollow","Web3","ct-4f206d","to","gasLimit","gasPrice","();","),","toString",")","({",") {",false,"connecting-to-node","Connecting to node","import Web3 from 'web3';\n\n\u002F\u002F URL of your node\nconst PROVIDER_URL = 'https:\u002F\u002F...';\n\nexport const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n","getting-wallet-balance","Getting wallet balance","const getBalance = async (address: string) =\u003E {\n return await web3.eth.getBalance(address);\n}\n","getting-wallet-address","Getting wallet address","\u002F\u002F first we need to authorize\nconst authorize = async () =\u003E {\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n}\n\n\u002F\u002F then we can get wallet address\nconst getCurrentAddressUser = () =\u003E {\n return web3.currentProvider.selectedAddress;\n}\n","sending-transaction","Sending transaction","\nconst transfer = async ({ \n from, \n to, \n value, \n memo, \n privateKey, \n gasLimit = 44000 \n}) =\u003E {\n const nonce = await web3.eth.getTransactionCount(from);\n const gasPrice = await web3.eth.getGasPrice();\n \n const rawTx = {\n from,\n to,\n value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),\n gasLimit: web3.utils.toHex(gasLimit),\n gasPrice: web3.utils.toHex(gasPrice),\n nonce: web3.utils.toHex(nonce),\n data: memo,\n };\n \n const privateKeyBuffer = EthUtil.toBuffer(privateKey);\n \n const tx = new Transaction(rawTx);\n \n tx.sign(privateKeyBuffer);\n const serializedTx = tx.serialize();\n \n return this.web3.eth.sendSignedTransaction(\n `0x${serializedTx.toString('hex')}`\n );\n}\n","estimating-transaction-fee","Estimating transaction FEE","import { web3 } from '.';\n\nconst estimateFee = async ({\n from,\n to,\n value,\n memo,\n}) =\u003E {\n const gasPrice = await web3.eth.getGasPrice();\n const gasLimit = await web3.eth.estimateGas({\n from,\n to,\n value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),\n data: web3.utils.asciiToHex(memo),\n }).call();\n \n return web3.utils.fromWei(\n BigInt(gasPrice.toString())\n .multiply(BigInt(gasLimit.toString()))\n .toString()\n );\n}\n","subscribing-to-wallet-address-change","Subscribing to wallet address change","import { web3 } from '.';\n\nweb3.currentProvider.on('accountsChanged', callback);\n","watching-network-change","Watching network change","ethereum.on('chainChanged', handler: (chainId: string) =\u003E void);\n","adding-custom-token-to-wallet","Adding custom token to wallet","window.ethereum\n .request({\n method: 'wallet_watchAsset',\n params: {\n type: 'ERC20',\n options: {\n address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',\n symbol: 'FOO',\n decimals: 18,\n image: 'https:\u002F\u002Ffoo.io\u002Ftoken-image.svg',\n },\n },\n })\n .then((success) =\u003E {\n if (success) {\n console.log('FOO successfully added to wallet!')\n } else {\n throw new Error('Something went wrong.')\n }\n })\n .catch(console.error)\n","changing-network-to-custom","Changing network to custom","const getChainID = async () =\u003E {\n return ethereum.request({ method: 'eth_chainId' })\n}\n","try {\n await window.ethereum.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: '0x03' }], \u002F\u002F ropsten chainID (3) in hex\n });\n} catch (switchError) {\n \u002F\u002F This error code indicates that the chain has not been added to MetaMask.\n if (error.code === 4902) {\n try {\n await window.ethereum.request({\n method: 'wallet_addEthereumChain',\n params: [{ \n chainId: '0x03', \u002F\u002F ropsten chainID (3) in hex\n chainName: 'Ropsten Test Network', \n nativeCurrency: { \n name: 'ETH',\n symbol: 'ETH',\n decimals: 18\n }, \n rpcUrls: ['https:\u002F\u002Fropsten.infura.io\u002Fv3\u002F9aa3d95b3bc440fa88ea12eaa4456161'], \n blockExplorerUrls: ['https:\u002F\u002Fropsten.etherscan.io'] \n }] ,\n });\n } catch (addError) {\n \u002F\u002F handle \"add\" error\n }\n }\n \u002F\u002F handle other \"switch\" errors\n}\n","import","new"," () ","currentProvider","tx","ct-f4b88e","ct-60c772","window"," .","ct-bc9ce6","catch","Common Typescript Examples","\u002Fblockchain\u002Fcommon-typescript-examples","root","ul","Simple #dapp example for tests: ","Interaction with smart contracts described in ","Smart%20contracts","Smart contracts","If #Metamask extension installed, ","Web3.givenProvider"," is available in global window. You can use ","https:\u002F\u002Finfura.io","Infura"," or your node instead:","Sending "," tokens with "," as value:","Useful to get fixed amount of tokens from user with pre-estimated fee.","Checking current chainId:","Asking wallet to change current network:","PROVIDER_URL","ct-63eb51","getBalance","ct-e57fac","ct-194e55","address",":",") ","({ method: ","privateKey","}) ","nonce","getGasPrice","rawTx"," value: ","toWei","'ether'",")),"," data: ","privateKeyBuffer","serializedTx"," );"," { "," } ","'.'","BigInt"," .","on"," method: ","18"," })","success","if","console"," } "," }","error","try","'0x03'","\u002F\u002F ropsten chainID (3) in hex","'ETH'")) \ No newline at end of file diff --git a/blockchain/common-typescript-examples/index.html b/blockchain/common-typescript-examples/index.html index b7967d1..e3f71f1 100644 --- a/blockchain/common-typescript-examples/index.html +++ b/blockchain/common-typescript-examples/index.html @@ -1,6 +1,6 @@ -Common Typescript Examples • Obsidian Garden -

Common Typescript Examples

Connecting to node

If #Metamask extension installed, Web3.givenProvider is available in global window. You can use Infura or your node instead:

import Web3 from 'web3';// URL of your nodeconst PROVIDER_URL = 'https://...';export const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);

Getting wallet balance

const getBalance = async (address: string) => {    return await web3.eth.getBalance(address);}

Getting wallet address

// first we need to authorizeconst authorize = async () => {  await web3.currentProvider.request({ method: 'eth_requestAccounts' });}// then we can get wallet addressconst getCurrentAddressUser = () => {    return web3.currentProvider.selectedAddress;}

Sending transaction

Sending value tokens with memo as value:

const transfer = async ({   from,   to,   value,   memo,   privateKey,   gasLimit = }) => {    const nonce = await web3.eth.getTransactionCount(from);    const gasPrice = await web3.eth.getGasPrice();        const rawTx = {      from,      to,      value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),      gasLimit: web3.utils.toHex(gasLimit),      gasPrice: web3.utils.toHex(gasPrice),      nonce: web3.utils.toHex(nonce),      data: memo,    };        const privateKeyBuffer = EthUtil.toBuffer(privateKey);        const tx = new Transaction(rawTx);        tx.sign(privateKeyBuffer);    const serializedTx = tx.serialize();        return this.web3.eth.sendSignedTransaction(      `0x${serializedTx.toString('hex')}`    );}

Estimating transaction FEE

Useful to get fixed amount of tokens from user with pre-estimated fee.

import { web3 } from '.';const estimateFee = async ({    from,    to,    value,    memo,}) => {    const gasPrice = await web3.eth.getGasPrice();    const gasLimit = await web3.eth.estimateGas({      from,      to,      value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),      data: web3.utils.asciiToHex(memo),    }).call();        return web3.utils.fromWei(      BigInt(gasPrice.toString())        .multiply(BigInt(gasLimit.toString()))        .toString()    );}

Subscribing to wallet address change

import { web3 } from '.';web3.currentProvider.on('accountsChanged', callback);

Watching network change

ethereum.on('chainChanged', handler: 

Adding custom token to wallet

window.ethereum  .request({    method: 'wallet_watchAsset',    params: {      type: 'ERC20',      options: {        address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',        symbol: 'FOO',        decimals: 18,        image: 'https://foo.io/token-image.svg',      },    },  })  .then((success) => {    if (success) {      console.log('FOO successfully added to wallet!')    } else {      throw new Error('Something went wrong.')    }  })  .catch(console.error)

Changing network to custom

Checking current chainId:

const getChainID = async () => {    return ethereum.request({ method: 'eth_chainId' })}

Asking wallet to change current network:

try {  await window.ethereum.request({    method: 'wallet_switchEthereumChain',    params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex  });} catch (switchError) {  // This error code indicates that the chain has not been added to MetaMask.  if (error.code === 4902) {    try {      await window.ethereum.request({        method: 'wallet_addEthereumChain',        params: [{           chainId: '0x03', // ropsten chainID (3) in hex          chainName: 'Ropsten Test Network',           nativeCurrency: {               name: 'ETH',              symbol: 'ETH',              decimals: 18          },           rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'],           blockExplorerUrls: ['https://ropsten.etherscan.io']         }] ,      });    } catch (addError) {      // handle "add" error    }  }  // handle other "switch" errors}
btw, have a nice day
(2018 - 2022) muerwre
+

Common Typescript Examples

Connecting to node

If #Metamask extension installed, Web3.givenProvider is available in global window. You can use Infura or your node instead:

import Web3 from 'web3';// URL of your nodeconst PROVIDER_URL = 'https://...';export const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);

Getting wallet balance

const getBalance = async (address: string) => {    return await web3.eth.getBalance(address);}

Getting wallet address

// first we need to authorizeconst authorize = async () => {  await web3.currentProvider.request({ method: 'eth_requestAccounts' });}// then we can get wallet addressconst getCurrentAddressUser = () => {    return web3.currentProvider.selectedAddress;}

Sending transaction

Sending value tokens with memo as value:

const transfer = async ({   from,   to,   value,   memo,   privateKey,   gasLimit = }) => {    const nonce = await web3.eth.getTransactionCount(from);    const gasPrice = await web3.eth.getGasPrice();        const rawTx = {      from,      to,      value: web3.utils.toHex(Web3.utils.toWei(value, 'ether')),      gasLimit: web3.utils.toHex(gasLimit),      gasPrice: web3.utils.toHex(gasPrice),      nonce: web3.utils.toHex(nonce),      data: memo,    };        const privateKeyBuffer = EthUtil.toBuffer(privateKey);        const tx = new Transaction(rawTx);        tx.sign(privateKeyBuffer);    const serializedTx = tx.serialize();        return this.web3.eth.sendSignedTransaction(      `0x${serializedTx.toString('hex')}`    );}

Estimating transaction FEE

Useful to get fixed amount of tokens from user with pre-estimated fee.

import { web3 } from '.';const estimateFee = async ({    from,    to,    value,    memo,}) => {    const gasPrice = await web3.eth.getGasPrice();    const gasLimit = await web3.eth.estimateGas({      from,      to,      value: web3.utils.toHex(web3.utils.toWei(value, 'ether')),      data: web3.utils.asciiToHex(memo),    }).call();        return web3.utils.fromWei(      BigInt(gasPrice.toString())        .multiply(BigInt(gasLimit.toString()))        .toString()    );}

Subscribing to wallet address change

import { web3 } from '.';web3.currentProvider.on('accountsChanged', callback);

Watching network change

ethereum.on('chainChanged', handler: 

Adding custom token to wallet

window.ethereum  .request({    method: 'wallet_watchAsset',    params: {      type: 'ERC20',      options: {        address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',        symbol: 'FOO',        decimals: 18,        image: 'https://foo.io/token-image.svg',      },    },  })  .then((success) => {    if (success) {      console.log('FOO successfully added to wallet!')    } else {      throw new Error('Something went wrong.')    }  })  .catch(console.error)

Changing network to custom

Checking current chainId:

const getChainID = async () => {    return ethereum.request({ method: 'eth_chainId' })}

Asking wallet to change current network:

try {  await window.ethereum.request({    method: 'wallet_switchEthereumChain',    params: [{ chainId: '0x03' }], // ropsten chainID (3) in hex  });} catch (switchError) {  // This error code indicates that the chain has not been added to MetaMask.  if (error.code === 4902) {    try {      await window.ethereum.request({        method: 'wallet_addEthereumChain',        params: [{           chainId: '0x03', // ropsten chainID (3) in hex          chainName: 'Ropsten Test Network',           nativeCurrency: {               name: 'ETH',              symbol: 'ETH',              decimals: 18          },           rpcUrls: ['https://ropsten.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161'],           blockExplorerUrls: ['https://ropsten.etherscan.io']         }] ,      });    } catch (addError) {      // handle "add" error    }  }  // handle other "switch" errors}
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/blockchain/smart-contracts/_payload.js b/blockchain/smart-contracts/_payload.js index 947be0f..9d2f6e0 100644 --- a/blockchain/smart-contracts/_payload.js +++ b/blockchain/smart-contracts/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,a_,a$,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,bA,bB,bC,bD,bE,bF,bG,bH,bI,bJ,bK,bL,bM,bN,bO,bP,bQ,bR,bS,bT,bU,bV,bW,bX,bY,bZ,b_,b$,ca,cb,cc,cd,ce,cf,cg,ch,ci,cj,ck,cl,cm,cn,co,cp,cq,cr,cs,ct,cu,cv,cw,cx,cy,cz,cA,cB,cC,cD,cE,cF,cG,cH,cI,cJ,cK,cL,cM,cN,cO,cP,cQ,cR,cS,cT,cU,cV,cW,cX,cY,cZ,c_,c$,da,db){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:bI,_path:bJ}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-GyYuUyCYai":{_path:bJ,_dir:"blockchain",_draft:aF,_partial:aF,_locale:"en",_empty:aF,title:bI,description:"For common functions see Common typescript examples.",excerpt:{type:bK,children:[{type:a,tag:A,props:{},children:[{type:c,value:bL},{type:a,tag:_,props:{href:bM},children:[{type:c,value:bN}]},{type:c,value:i}]},{type:a,tag:$,props:{id:aG},children:[{type:c,value:aH}]},{type:a,tag:A,props:{},children:[{type:c,value:bO}]},{type:a,tag:m,props:{code:aI,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aI}]}]}]},{type:a,tag:$,props:{id:aJ},children:[{type:c,value:aK}]},{type:a,tag:A,props:{},children:[{type:c,value:bP},{type:a,tag:G,props:{},children:[{type:c,value:bQ}]},{type:c,value:bR},{type:a,tag:G,props:{},children:[{type:c,value:bS}]},{type:c,value:bT},{type:a,tag:_,props:{href:bU,rel:[as]},children:[{type:c,value:bV}]},{type:c,value:bW}]},{type:a,tag:A,props:{},children:[{type:a,tag:G,props:{},children:[{type:c,value:bX}]},{type:c,value:bY},{type:a,tag:G,props:{},children:[{type:c,value:at}]},{type:c,value:bZ},{type:a,tag:G,props:{},children:[{type:c,value:b_}]},{type:c,value:b$},{type:a,tag:G,props:{},children:[{type:c,value:at}]},{type:c,value:ca}]},{type:a,tag:D,props:{id:aL},children:[{type:c,value:aM}]},{type:a,tag:m,props:{code:aN,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aN}]}]}]},{type:a,tag:D,props:{id:aO},children:[{type:c,value:aP}]},{type:a,tag:m,props:{code:aQ,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aQ}]}]}]},{type:a,tag:D,props:{id:aR},children:[{type:c,value:aS}]},{type:a,tag:A,props:{},children:[{type:c,value:cb}]},{type:a,tag:m,props:{code:aT,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aT}]}]}]},{type:a,tag:m,props:{code:aU,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aU}]}]}]},{type:a,tag:$,props:{id:aV},children:[{type:c,value:aW}]},{type:a,tag:A,props:{},children:[{type:c,value:cc}]},{type:a,tag:m,props:{code:aX,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aX}]}]}]},{type:a,tag:D,props:{id:aY},children:[{type:c,value:aZ}]},{type:a,tag:m,props:{code:a_,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:a_}]}]}]},{type:a,tag:D,props:{id:a$},children:[{type:c,value:ba}]},{type:a,tag:A,props:{},children:[{type:c,value:cd},{type:a,tag:au,props:{},children:[{type:c,value:af}]},{type:c,value:ce}]},{type:a,tag:m,props:{code:bb,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:bb}]}]}]},{type:a,tag:D,props:{id:bc},children:[{type:c,value:bd}]},{type:a,tag:A,props:{},children:[{type:c,value:cf}]},{type:a,tag:m,props:{code:be,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:be}]}]}]},{type:a,tag:D,props:{id:bf},children:[{type:c,value:bg}]},{type:a,tag:A,props:{},children:[{type:c,value:cg},{type:a,tag:au,props:{},children:[{type:c,value:af}]},{type:c,value:ch},{type:a,tag:_,props:{href:ci,rel:[as]},children:[{type:c,value:cj}]}]},{type:a,tag:m,props:{code:bh,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:bh}]}]}]}]},body:{type:bK,children:[{type:a,tag:A,props:{},children:[{type:c,value:bL},{type:a,tag:_,props:{href:bM},children:[{type:c,value:bN}]},{type:c,value:i}]},{type:a,tag:$,props:{id:aG},children:[{type:c,value:aH}]},{type:a,tag:A,props:{},children:[{type:c,value:bO}]},{type:a,tag:m,props:{code:aI,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bi}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'web3-eth-contract'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bj}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:I},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:"abi"}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:"object"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:bk}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:"?:"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:ck}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ak}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:cl},children:[{type:c,value:cm}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-d924d9"},children:[{type:c,value:"JSON"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:cl},children:[{type:c,value:"parse"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bi}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cm}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bk}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bl}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:bm}]},{type:a,tag:b,props:{class:av},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:cn}]},{type:a,tag:b,props:{class:av},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]}]}]}]},{type:a,tag:$,props:{id:aJ},children:[{type:c,value:aK}]},{type:a,tag:A,props:{},children:[{type:c,value:bP},{type:a,tag:G,props:{},children:[{type:c,value:bQ}]},{type:c,value:bR},{type:a,tag:G,props:{},children:[{type:c,value:bS}]},{type:c,value:bT},{type:a,tag:_,props:{href:bU,rel:[as]},children:[{type:c,value:bV}]},{type:c,value:bW}]},{type:a,tag:A,props:{},children:[{type:a,tag:G,props:{},children:[{type:c,value:bX}]},{type:c,value:bY},{type:a,tag:G,props:{},children:[{type:c,value:at}]},{type:c,value:bZ},{type:a,tag:G,props:{},children:[{type:c,value:b_}]},{type:c,value:b$},{type:a,tag:G,props:{},children:[{type:c,value:at}]},{type:c,value:ca}]},{type:a,tag:D,props:{id:aL},children:[{type:c,value:aM}]},{type:a,tag:m,props:{code:aN,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:co}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bj}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F ABI of contract"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:cp}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:cq}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F address for contract"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:cr}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:bm}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cs}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:bn}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ({}) "}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:ct}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F Calling write method"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F authorizing with Metamask"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cu}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({ method: "}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'eth_requestAccounts'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F getting wallet address"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cu}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"selectedAddress"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F calling \"store\" store method for contract"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F payload should include `from` address, that matches"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F current user's wallet"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bo}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cx}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'Parameter'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:")."}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"send"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" from: "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cy}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bp}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ao}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:br},children:[{type:c,value:cz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bs}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F calling read method"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F this method can return data"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bt}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bo}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"retrieve"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bu}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bp}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ao}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:br},children:[{type:c,value:cz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bs}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"}"}]}]}]}]}]},{type:a,tag:D,props:{id:aO},children:[{type:c,value:aP}]},{type:a,tag:m,props:{code:aQ,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:co}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bj}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F ABI контракта"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:cp}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:cq}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F contract address"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:cr}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:ct}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F account's private key"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'...'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F write-methods requires private key"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:I},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:cs}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:bn}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cA}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:"number"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bx}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bo}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cx}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"privateKeyToAccount"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" to: "}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" data: "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bx}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"encodeABI"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:cD}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" gas: "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bx}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"estimateGas"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({ from: "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bk}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" }),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" gasPrice: "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getGasPrice"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:cD}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"signTransaction"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" );"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"sendSignedTransaction"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"rawTransaction"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:cF}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bl}]}]}]}]}]},{type:a,tag:D,props:{id:aR},children:[{type:c,value:aS}]},{type:a,tag:A,props:{},children:[{type:c,value:cb}]},{type:a,tag:m,props:{code:aT,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:"requests"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ["}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cG}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cH}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"balanceOf"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bu}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cG}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cH}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getStaked"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bu}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bv}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ]"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bt}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:by}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]}]}]}]},{type:a,tag:m,props:{code:aU,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"givenProvider"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"||"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:"PROVIDER_URL"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:I},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:by}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cI}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:"any"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"[]) "}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getWeb3NoAccount"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"BatchRequest"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cI}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"map"}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:cK}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"(("}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cL}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cM}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"add"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ao}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cN}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cM}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" } "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"else"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cN}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cL}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bt}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" );"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cy}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"execute"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:br},children:[{type:c,value:cK}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"all"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bp}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-81ebef"},children:[{type:c,value:"null"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bs}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bl}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:bm}]},{type:a,tag:b,props:{class:av},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:cn}]},{type:a,tag:b,props:{class:av},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:by}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]}]}]}]},{type:a,tag:$,props:{id:aV},children:[{type:c,value:aW}]},{type:a,tag:A,props:{},children:[{type:c,value:cc}]},{type:a,tag:m,props:{code:aX,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'web3'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'YOUR_RPC_ENDPOINT_HERE'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'YOUR ABI HERE'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'YOUR CONTRACT ADDRESS HERE'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bi}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]}]}]}]},{type:a,tag:D,props:{id:aY},children:[{type:c,value:aZ}]},{type:a,tag:m,props:{code:a_,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"referralProgramContract"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cP}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"RegisterUser"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"()"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:cQ},children:[{type:c,value:bC}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:cR}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cS}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:ck}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"`| UserRegistered | events | ${"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cS}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:cT}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:bn}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cU}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:"boolean"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cV}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:cW},children:[{type:c,value:"RegisterUserResponseInterface"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }) "}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cU}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ao}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cY}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cY}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" } "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ao}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"`| ONCE | ${"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:cT}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bE}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" )"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:cQ},children:[{type:c,value:bF}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:cR}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cZ}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:cW},children:[{type:c,value:"ErrnoException"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cZ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:c_}]}]}]}]}]},{type:a,tag:D,props:{id:a$},children:[{type:c,value:ba}]},{type:a,tag:A,props:{},children:[{type:c,value:cd},{type:a,tag:au,props:{},children:[{type:c,value:af}]},{type:c,value:ce}]},{type:a,tag:m,props:{code:bb,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:c$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" value: [],"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bE}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bG}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:az}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bH}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cP}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ak}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:da}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:db}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bF}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"str"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]}]}]}]},{type:a,tag:D,props:{id:bc},children:[{type:c,value:bd}]},{type:a,tag:A,props:{},children:[{type:c,value:cf}]},{type:a,tag:m,props:{code:be,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bG}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" address: ["}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'address-1'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'address-2'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"], "}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002FOnly get events from specific addresses"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" topics: [] "}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002FWhat topics to subscribe to"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bH}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'logs'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:cF}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ak}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ak}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:c_}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bD}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:da}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:db}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bF}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bC}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"nr"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]}]}]}]},{type:a,tag:D,props:{id:bf},children:[{type:c,value:bg}]},{type:a,tag:A,props:{},children:[{type:c,value:cg},{type:a,tag:au,props:{},children:[{type:c,value:af}]},{type:c,value:ch},{type:a,tag:_,props:{href:ci,rel:[as]},children:[{type:c,value:cj}]}]},{type:a,tag:m,props:{code:bh,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002Fexample options(optional)"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:c$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F only get events where transfer value was 1000 or 1337"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" value: ["}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'1000'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'1337'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"] "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bE}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F number | \"earliest\" | \"pending\" | \"latest\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bG}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:", "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" toBlock: "}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'latest'"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bH}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getPastEvents"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'Transfer'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ak}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"then"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"results"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-3cce47{color:#FFA657}.ct-0a0823{color:#A5D6FF}.ct-81ebef{color:#79C0FF}.ct-4a0f6a{color:#79C0FF}.ct-538bd0{color:#79C0FF}.ct-047000{color:#79C0FF}.ct-307d26{color:#FF7B72}.ct-495eea{color:#8B949E}.ct-3dd077{color:#FFA657}.ct-37c069{color:#D2A8FF}.ct-d924d9{color:#79C0FF}.ct-0c16cc{color:#79C0FF}.ct-427bbc{color:#79C0FF}.ct-60e515{color:#FFA657}.ct-148471{color:#FF7B72}.ct-d6daf9{color:#D2A8FF}.ct-16c265{color:#C9D1D9}.ct-7475e8{color:#FF7B72}.ct-69a21a{color:#A5D6FF}.ct-389197{color:#C9D1D9}.ct-5f84b8{color:#C9D1D9}.ct-a00ecd{color:#FF7B72}.light .ct-a00ecd{color:#859900}.light .ct-5f84b8{color:#657B83}.light .ct-389197{color:#268BD2}.light .ct-69a21a{color:#2AA198}.light .ct-7475e8{color:#073642}.light .ct-16c265{color:#657B83}.light .ct-d6daf9{color:#268BD2}.light .ct-148471{color:#859900}.light .ct-60e515{color:#657B83}.light .ct-427bbc{color:#859900}.light .ct-0c16cc{color:#268BD2}.light .ct-d924d9{color:#657B83}.light .ct-37c069{color:#268BD2}.light .ct-3dd077{color:#657B83}.light .ct-495eea{color:#93A1A1}.light .ct-307d26{color:#073642}.light .ct-047000{color:#268BD2}.light .ct-538bd0{color:#D33682}.light .ct-4a0f6a{color:#859900}.light .ct-81ebef{color:#B58900}.light .ct-0a0823{color:#2AA198}.light .ct-3cce47{color:#268BD2}"}]}],toc:{title:v,searchDepth:ar,depth:ar,links:[{id:aG,depth:ar,text:aH},{id:aJ,depth:ar,text:aK,children:[{id:aL,depth:Z,text:aM},{id:aO,depth:Z,text:aP},{id:aR,depth:Z,text:aS}]},{id:aV,depth:ar,text:aW,children:[{id:aY,depth:Z,text:aZ},{id:a$,depth:Z,text:ba},{id:bc,depth:Z,text:bd},{id:bf,depth:Z,text:bg}]}]}},_type:"markdown",_id:"content:Blockchain:Smart contracts.md",_source:"content",_file:"Blockchain\u002FSmart contracts.md",_extension:"md"}},prerenderedAt:1667469955367}}("element","span","text","ct-5f84b8","line"," ","ct-389197","ct-a00ecd",".","ct-16c265","ct-37c069","(","code","ct-307d26","ct-69a21a","=","ct-047000","const"," "," ","ct-495eea","","typescript","pre"," {",");","p",";","ct-148471","h3",", ","=\u003E","strong","web3","ct-7475e8","log"," (","ct-60e515","on",":"," { ","new","await","options"," ","console","ct-427bbc","CONTRACT_ADDRESS","contract",",","))",3,"a","h2","getContract","e"," ","event"," .","Transfer","import"," } ","from","ct-d6daf9",")","return","eth","catch",") {","Web3","subscription",2,"nofollow","gas","code-inline","ct-3dd077","CONTRACT_ABI","try","ct-538bd0","0","();",") ","err"," .","let",false,"getting-smart-contract-instance","Getting smart contract instance","import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract =\u003E {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","executing-contract-method","Executing contract method","example-for-metamask-without-private-key","Example for #Metamask without private key","\u002F\u002F see example below\nimport { getContract } from '.';\n\n\u002F\u002F ABI of contract\nconst CONTRACT_ABI = { \u002F* ... *\u002F };\n \u002F\u002F address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) =\u003E {\n \u002F\u002F getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n \u002F\u002F Calling write method\n try {\n \u002F\u002F authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n \u002F\u002F getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n \u002F\u002F calling \"store\" store method for contract\n \u002F\u002F payload should include `from` address, that matches\n \u002F\u002F current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n \u002F\u002F calling read method\n try {\n \u002F\u002F this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","nodejs-and-react-native-example","Node.js and React Native example","\u002F\u002F see example below\nimport { getContract } from '.';\n\n\u002F\u002F ABI контракта\nconst CONTRACT_ABI = { \u002F* ... *\u002F };\n\u002F\u002F contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\u002F\u002F getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n\u002F\u002F account's private key\nconst privateKey = '...';\n\n\u002F\u002F write-methods requires private key\nconst executeContractMethod = async (val: number) =\u003E {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","calling-a-batch-of-contracts-methods","Calling a batch of contract's methods"," const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) =\u003E {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) =\u003E {\n return new Promise((resolve, reject) =\u003E {\n batch.add(\n call.request({}, (err, result) =\u003E {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","subscribing-to-smart-contract-events","Subscribing to smart contract events"," import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","by-accessing-contractevents","By accessing contract.events","referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) =\u003E {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) =\u003E {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) =\u003E {\n console.log(error);\n });\n","with-filtering","With filtering"," let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event =\u003E console.log(event))\n .on('changed', changed =\u003E console.log(changed))\n .on('error', err =\u003E throw err)\n .on('connected', str =\u003E console.log(str))\n","common-subscribe-method","Common Subscribe method"," let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], \u002F\u002FOnly get events from specific addresses\n topics: [] \u002F\u002FWhat topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) =\u003E {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event =\u003E console.log(event))\n subscription.on('changed', changed =\u003E console.log(changed))\n subscription.on('error', err =\u003E { throw err })\n subscription.on('connected', nr =\u003E console.log(nr))\n","getting-event-history","Getting event history"," \u002F\u002Fexample options(optional)\n let options = {\n filter: {\n \u002F\u002F only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n \u002F\u002F number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results =\u003E console.log(results))\n .catch(err =\u003E throw err);\n\n","Contract","'.'","address","};","export","async","methods"," } ","throw","ct-4a0f6a"," }","result","().","call","privateKey","transaction","makeBatchRequest","batch","if","myContract","'connected'","'data'"," },","'error'"," fromBlock: "," };","Smart Contracts","\u002Fblockchain\u002Fsmart-contracts","root","For common functions see ","Common%20typescript%20examples","Common typescript examples","Useful for calling smart contract methods:","Contract has ","read"," and ","write"," methods. To get a list of methods, you can paste contract address on ","https:\u002F\u002Fetherscan.io\u002Ftoken\u002F0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","https:\u002F\u002Fetherscan.io\u002F ETH"," or any other service.","Read"," methods doesn't require spending ",". ","Write"," methods cost some amount of ",", hence they will be executed with confirmation from user.","Function calls batch of requests, returning array of results. For example:","There're different ways to subscribe for contract events. For all of them you will need following variables:","We're listening to "," event here:","Filtering options can also be specified:","Getting history for "," events for specific values. More info can be found ","https:\u002F\u002Fweb3js.readthedocs.io\u002Fen\u002Fv1.2.11\u002Fweb3-eth-subscribe.html#","here","string","ct-0c16cc","abiFromJson","default","\u002F\u002F see example below","\u002F* ... *\u002F"," };","'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'","executeContractMethod","\u002F\u002F getting contract","currentProvider","request","addressUser","store"," });","Error","val","account","accounts","(),","signed","!"," ","method","calls","promises","Promise","resolve","reject"," ","ABI","events","ct-0a0823",", (","subscriptionId","}`","removed","returnValues","ct-3cce47","user","referrer","error"," });"," filter: {","'changed'","changed")) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,a_,a$,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,bA,bB,bC,bD,bE,bF,bG,bH,bI,bJ,bK,bL,bM,bN,bO,bP,bQ,bR,bS,bT,bU,bV,bW,bX,bY,bZ,b_,b$,ca,cb,cc,cd,ce,cf,cg,ch,ci,cj,ck,cl,cm,cn,co,cp,cq,cr,cs,ct,cu,cv,cw,cx,cy,cz,cA,cB,cC,cD,cE,cF,cG,cH,cI,cJ,cK,cL,cM,cN,cO,cP,cQ,cR,cS,cT,cU,cV,cW,cX,cY,cZ,c_,c$,da,db){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:bI,_path:bJ}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-GyYuUyCYai":{_path:bJ,_dir:"blockchain",_draft:aF,_partial:aF,_locale:"en",_empty:aF,title:bI,description:"For common functions see Common typescript examples.",excerpt:{type:bK,children:[{type:a,tag:A,props:{},children:[{type:c,value:bL},{type:a,tag:_,props:{href:bM},children:[{type:c,value:bN}]},{type:c,value:i}]},{type:a,tag:$,props:{id:aG},children:[{type:c,value:aH}]},{type:a,tag:A,props:{},children:[{type:c,value:bO}]},{type:a,tag:m,props:{code:aI,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aI}]}]}]},{type:a,tag:$,props:{id:aJ},children:[{type:c,value:aK}]},{type:a,tag:A,props:{},children:[{type:c,value:bP},{type:a,tag:G,props:{},children:[{type:c,value:bQ}]},{type:c,value:bR},{type:a,tag:G,props:{},children:[{type:c,value:bS}]},{type:c,value:bT},{type:a,tag:_,props:{href:bU,rel:[as]},children:[{type:c,value:bV}]},{type:c,value:bW}]},{type:a,tag:A,props:{},children:[{type:a,tag:G,props:{},children:[{type:c,value:bX}]},{type:c,value:bY},{type:a,tag:G,props:{},children:[{type:c,value:at}]},{type:c,value:bZ},{type:a,tag:G,props:{},children:[{type:c,value:b_}]},{type:c,value:b$},{type:a,tag:G,props:{},children:[{type:c,value:at}]},{type:c,value:ca}]},{type:a,tag:D,props:{id:aL},children:[{type:c,value:aM}]},{type:a,tag:m,props:{code:aN,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aN}]}]}]},{type:a,tag:D,props:{id:aO},children:[{type:c,value:aP}]},{type:a,tag:m,props:{code:aQ,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aQ}]}]}]},{type:a,tag:D,props:{id:aR},children:[{type:c,value:aS}]},{type:a,tag:A,props:{},children:[{type:c,value:cb}]},{type:a,tag:m,props:{code:aT,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aT}]}]}]},{type:a,tag:m,props:{code:aU,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aU}]}]}]},{type:a,tag:$,props:{id:aV},children:[{type:c,value:aW}]},{type:a,tag:A,props:{},children:[{type:c,value:cc}]},{type:a,tag:m,props:{code:aX,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:aX}]}]}]},{type:a,tag:D,props:{id:aY},children:[{type:c,value:aZ}]},{type:a,tag:m,props:{code:a_,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:a_}]}]}]},{type:a,tag:D,props:{id:a$},children:[{type:c,value:ba}]},{type:a,tag:A,props:{},children:[{type:c,value:cd},{type:a,tag:au,props:{},children:[{type:c,value:af}]},{type:c,value:ce}]},{type:a,tag:m,props:{code:bb,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:bb}]}]}]},{type:a,tag:D,props:{id:bc},children:[{type:c,value:bd}]},{type:a,tag:A,props:{},children:[{type:c,value:cf}]},{type:a,tag:m,props:{code:be,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:be}]}]}]},{type:a,tag:D,props:{id:bf},children:[{type:c,value:bg}]},{type:a,tag:A,props:{},children:[{type:c,value:cg},{type:a,tag:au,props:{},children:[{type:c,value:af}]},{type:c,value:ch},{type:a,tag:_,props:{href:ci,rel:[as]},children:[{type:c,value:cj}]}]},{type:a,tag:m,props:{code:bh,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:c,value:bh}]}]}]}]},body:{type:bK,children:[{type:a,tag:A,props:{},children:[{type:c,value:bL},{type:a,tag:_,props:{href:bM},children:[{type:c,value:bN}]},{type:c,value:i}]},{type:a,tag:$,props:{id:aG},children:[{type:c,value:aH}]},{type:a,tag:A,props:{},children:[{type:c,value:bO}]},{type:a,tag:m,props:{code:aI,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bi}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'web3-eth-contract'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bj}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:I},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:"abi"}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:"object"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:bk}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:"?:"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:ck}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ak}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:cl},children:[{type:c,value:cm}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-561f21"},children:[{type:c,value:"JSON"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:cl},children:[{type:c,value:"parse"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bi}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cm}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bk}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bl}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:bm}]},{type:a,tag:b,props:{class:av},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:cn}]},{type:a,tag:b,props:{class:av},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]}]}]}]},{type:a,tag:$,props:{id:aJ},children:[{type:c,value:aK}]},{type:a,tag:A,props:{},children:[{type:c,value:bP},{type:a,tag:G,props:{},children:[{type:c,value:bQ}]},{type:c,value:bR},{type:a,tag:G,props:{},children:[{type:c,value:bS}]},{type:c,value:bT},{type:a,tag:_,props:{href:bU,rel:[as]},children:[{type:c,value:bV}]},{type:c,value:bW}]},{type:a,tag:A,props:{},children:[{type:a,tag:G,props:{},children:[{type:c,value:bX}]},{type:c,value:bY},{type:a,tag:G,props:{},children:[{type:c,value:at}]},{type:c,value:bZ},{type:a,tag:G,props:{},children:[{type:c,value:b_}]},{type:c,value:b$},{type:a,tag:G,props:{},children:[{type:c,value:at}]},{type:c,value:ca}]},{type:a,tag:D,props:{id:aL},children:[{type:c,value:aM}]},{type:a,tag:m,props:{code:aN,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:co}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bj}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F ABI of contract"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:cp}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:cq}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F address for contract"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:cr}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:bm}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cs}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:bn}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ({}) "}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:ct}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F Calling write method"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F authorizing with Metamask"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cu}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({ method: "}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'eth_requestAccounts'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F getting wallet address"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cu}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"selectedAddress"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F calling \"store\" store method for contract"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F payload should include `from` address, that matches"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F current user's wallet"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bo}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cx}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'Parameter'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:")."}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"send"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" from: "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cy}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bp}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ao}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:br},children:[{type:c,value:cz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bs}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F calling read method"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F this method can return data"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bt}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bo}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"retrieve"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bu}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bp}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ao}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:br},children:[{type:c,value:cz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bs}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"}"}]}]}]}]}]},{type:a,tag:D,props:{id:aO},children:[{type:c,value:aP}]},{type:a,tag:m,props:{code:aQ,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:co}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bj}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F ABI контракта"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:cp}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:cq}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F contract address"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:cr}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:ct}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F account's private key"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'...'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F write-methods requires private key"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:I},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:cs}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:bn}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cA}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:"number"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bx}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bo}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cx}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"privateKeyToAccount"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" to: "}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" data: "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bx}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"encodeABI"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:cD}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" gas: "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bx}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"estimateGas"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({ from: "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bk}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" }),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" gasPrice: "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getGasPrice"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:cD}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"signTransaction"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" );"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"sendSignedTransaction"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"rawTransaction"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:cF}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bl}]}]}]}]}]},{type:a,tag:D,props:{id:aR},children:[{type:c,value:aS}]},{type:a,tag:A,props:{},children:[{type:c,value:cb}]},{type:a,tag:m,props:{code:aT,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:"requests"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ["}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cG}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cH}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"balanceOf"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bu}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cG}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cH}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getStaked"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bu}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bv}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ]"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bt}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:by}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]}]}]}]},{type:a,tag:m,props:{code:aU,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"givenProvider"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"||"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:"PROVIDER_URL"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:I},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:by}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cI}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:"any"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"[]) "}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getWeb3NoAccount"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"BatchRequest"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cI}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"map"}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:cK}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"(("}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cL}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cM}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"add"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ao}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cN}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cM}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" } "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"else"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cN}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:cL}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bt}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" );"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:cy}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"execute"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:br},children:[{type:c,value:cK}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"all"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bp}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-3659c7"},children:[{type:c,value:"null"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bs}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bl}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:bm}]},{type:a,tag:b,props:{class:av},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:cn}]},{type:a,tag:b,props:{class:av},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:by}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]}]}]}]},{type:a,tag:$,props:{id:aV},children:[{type:c,value:aW}]},{type:a,tag:A,props:{},children:[{type:c,value:cc}]},{type:a,tag:m,props:{code:aX,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ag}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'web3'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'YOUR_RPC_ENDPOINT_HERE'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'YOUR ABI HERE'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'YOUR CONTRACT ADDRESS HERE'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:bB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:bi}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]}]}]}]},{type:a,tag:D,props:{id:aY},children:[{type:c,value:aZ}]},{type:a,tag:m,props:{code:a_,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"referralProgramContract"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cP}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"RegisterUser"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"()"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:cQ},children:[{type:c,value:bC}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:cR}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cS}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:ck}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"`| UserRegistered | events | ${"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cS}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:cT}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:bn}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cU}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:U},children:[{type:c,value:"boolean"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cV}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:cW},children:[{type:c,value:"RegisterUserResponseInterface"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }) "}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cU}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ao}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:q},children:[{type:c,value:cY}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cY}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" } "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ao}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"`| ONCE | ${"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:cT}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bE}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" )"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:cQ},children:[{type:c,value:bF}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:cR}]},{type:a,tag:b,props:{class:L},children:[{type:c,value:cZ}]},{type:a,tag:b,props:{class:C},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:cW},children:[{type:c,value:"ErrnoException"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:I},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cZ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:c_}]}]}]}]}]},{type:a,tag:D,props:{id:a$},children:[{type:c,value:ba}]},{type:a,tag:A,props:{},children:[{type:c,value:cd},{type:a,tag:au,props:{},children:[{type:c,value:af}]},{type:c,value:ce}]},{type:a,tag:m,props:{code:bb,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:c$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" value: [],"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bE}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bG}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:az}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bH}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:cP}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ak}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:da}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:db}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bF}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"str"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]}]}]}]},{type:a,tag:D,props:{id:bc},children:[{type:c,value:bd}]},{type:a,tag:A,props:{},children:[{type:c,value:cf}]},{type:a,tag:m,props:{code:be,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bG}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" address: ["}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'address-1'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'address-2'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"], "}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002FOnly get events from specific addresses"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" topics: [] "}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002FWhat topics to subscribe to"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bH}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'logs'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:cF}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ak}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ak}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:c_}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bD}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:da}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:db}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bF}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:bC}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"nr"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]}]}]}]},{type:a,tag:D,props:{id:bf},children:[{type:c,value:bg}]},{type:a,tag:A,props:{},children:[{type:c,value:cg},{type:a,tag:au,props:{},children:[{type:c,value:af}]},{type:c,value:ch},{type:a,tag:_,props:{href:ci,rel:[as]},children:[{type:c,value:cj}]}]},{type:a,tag:m,props:{code:bh,language:w},children:[{type:a,tag:x,props:{},children:[{type:a,tag:m,props:{__ignoreMap:v},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002Fexample options(optional)"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:c$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F only get events where transfer value was 1000 or 1337"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" value: ["}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'1000'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'1337'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"] "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bE}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"\u002F\u002F number | \"earliest\" | \"pending\" | \"latest\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bG}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:", "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" toBlock: "}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'latest'"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bH}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"getPastEvents"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:"'Transfer'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ak}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"then"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"results"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-4d5c04{color:#FFA657}.ct-43fe40{color:#A5D6FF}.ct-3659c7{color:#79C0FF}.ct-612ba8{color:#79C0FF}.ct-9a1d7b{color:#79C0FF}.ct-8024fd{color:#79C0FF}.ct-8b86e9{color:#FF7B72}.ct-92b574{color:#8B949E}.ct-a644f1{color:#FFA657}.ct-3eaeba{color:#D2A8FF}.ct-561f21{color:#79C0FF}.ct-1ed0c7{color:#79C0FF}.ct-f51dd2{color:#79C0FF}.ct-05b505{color:#FFA657}.ct-cc0b53{color:#FF7B72}.ct-1d7a62{color:#D2A8FF}.ct-109f96{color:#C9D1D9}.ct-3552ef{color:#FF7B72}.ct-561e74{color:#A5D6FF}.ct-dae887{color:#C9D1D9}.ct-aa3fd5{color:#C9D1D9}.ct-c38b7d{color:#FF7B72}.light .ct-c38b7d{color:#859900}.light .ct-aa3fd5{color:#657B83}.light .ct-dae887{color:#268BD2}.light .ct-561e74{color:#2AA198}.light .ct-3552ef{color:#073642}.light .ct-109f96{color:#657B83}.light .ct-1d7a62{color:#268BD2}.light .ct-cc0b53{color:#859900}.light .ct-05b505{color:#657B83}.light .ct-f51dd2{color:#859900}.light .ct-1ed0c7{color:#268BD2}.light .ct-561f21{color:#657B83}.light .ct-3eaeba{color:#268BD2}.light .ct-a644f1{color:#657B83}.light .ct-92b574{color:#93A1A1}.light .ct-8b86e9{color:#073642}.light .ct-8024fd{color:#268BD2}.light .ct-9a1d7b{color:#D33682}.light .ct-612ba8{color:#859900}.light .ct-3659c7{color:#B58900}.light .ct-43fe40{color:#2AA198}.light .ct-4d5c04{color:#268BD2}"}]}],toc:{title:v,searchDepth:ar,depth:ar,links:[{id:aG,depth:ar,text:aH},{id:aJ,depth:ar,text:aK,children:[{id:aL,depth:Z,text:aM},{id:aO,depth:Z,text:aP},{id:aR,depth:Z,text:aS}]},{id:aV,depth:ar,text:aW,children:[{id:aY,depth:Z,text:aZ},{id:a$,depth:Z,text:ba},{id:bc,depth:Z,text:bd},{id:bf,depth:Z,text:bg}]}]}},_type:"markdown",_id:"content:Blockchain:Smart contracts.md",_source:"content",_file:"Blockchain\u002FSmart contracts.md",_extension:"md"}},prerenderedAt:1667480031798}}("element","span","text","ct-aa3fd5","line"," ","ct-dae887","ct-c38b7d",".","ct-109f96","ct-3eaeba","(","code","ct-8b86e9","ct-561e74","=","ct-8024fd","const"," "," ","ct-92b574","","typescript","pre"," {",");","p",";","ct-cc0b53","h3",", ","=\u003E","strong","web3","ct-3552ef","log"," (","ct-05b505","on",":"," { ","new","await","options"," ","console","ct-f51dd2","CONTRACT_ADDRESS","contract",",","))",3,"a","h2","getContract","e"," ","event"," .","Transfer","import"," } ","from","ct-1d7a62",")","return","eth","catch",") {","Web3","subscription",2,"nofollow","gas","code-inline","ct-a644f1","CONTRACT_ABI","try","ct-9a1d7b","0","();",") ","err"," .","let",false,"getting-smart-contract-instance","Getting smart contract instance","import { Contract } from 'web3-eth-contract';\nimport { web3 } from '.';\n\nconst getContract = (abi: object, address?: string): Contract =\u003E {\n const abiFromJson = JSON.parse(JSON.stringify(abi));\n return new web3.eth.Contract(abiFromJson, address);\n};\n\nexport default getContract;\n","executing-contract-method","Executing contract method","example-for-metamask-without-private-key","Example for #Metamask without private key","\u002F\u002F see example below\nimport { getContract } from '.';\n\n\u002F\u002F ABI of contract\nconst CONTRACT_ABI = { \u002F* ... *\u002F };\n \u002F\u002F address for contract\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\nexport const executeContractMethod = async ({}) =\u003E {\n \u002F\u002F getting contract\n const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n \n \u002F\u002F Calling write method\n try {\n \u002F\u002F authorizing with Metamask\n await web3.currentProvider.request({ method: 'eth_requestAccounts' });\n \u002F\u002F getting wallet address\n const addressUser = web3.currentProvider.selectedAddress;\n \u002F\u002F calling \"store\" store method for contract\n \u002F\u002F payload should include `from` address, that matches\n \u002F\u002F current user's wallet\n await contract.methods.store(0, 'Parameter').send({\n from: addressUser,\n });\n } catch (e) {\n throw new Error(e);\n }\n \n \u002F\u002F calling read method\n try {\n \u002F\u002F this method can return data\n const result = await contract.methods.retrieve().call();\n } catch (e) {\n throw new Error(e);\n }\n}\n","nodejs-and-react-native-example","Node.js and React Native example","\u002F\u002F see example below\nimport { getContract } from '.';\n\n\u002F\u002F ABI контракта\nconst CONTRACT_ABI = { \u002F* ... *\u002F };\n\u002F\u002F contract address\nconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';\n\u002F\u002F getting contract\nconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);\n\u002F\u002F account's private key\nconst privateKey = '...';\n\n\u002F\u002F write-methods requires private key\nconst executeContractMethod = async (val: number) =\u003E {\n const transaction = contract.methods.store(val);\n const account = web3.eth.accounts.privateKeyToAccount(privateKey);\n const options = {\n to: CONTRACT_ADDRESS,\n data: transaction.encodeABI(),\n gas: await transaction.estimateGas({ from: account.address }),\n gasPrice: await web3.eth.getGasPrice(),\n };\n const signed = await web3.eth.accounts.signTransaction(\n options,\n privateKey,\n );\n await web3.eth.sendSignedTransaction(signed.rawTransaction!);\n};\n","calling-a-batch-of-contracts-methods","Calling a batch of contract's methods"," const requests = [\n contract.method.balanceOf().call,\n contract.method.getStaked().call\n ]\n\n const result = await makeBatchRequest(request);\n","const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);\n\nconst makeBatchRequest = (calls: any[]) =\u003E {\n try {\n const web3 = getWeb3NoAccount();\n const batch = new web3.BatchRequest();\n\n const promises = calls.map((call) =\u003E {\n return new Promise((resolve, reject) =\u003E {\n batch.add(\n call.request({}, (err, result) =\u003E {\n if (err) {\n reject(err);\n } else {\n resolve(result);\n }\n })\n );\n });\n });\n\n batch.execute();\n\n return Promise.all(promises);\n } catch {\n return null;\n }\n};\n\nexport default makeBatchRequest;\n","subscribing-to-smart-contract-events","Subscribing to smart contract events"," import Web3 from 'web3';\n const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');\n const ABI = 'YOUR ABI HERE';\n const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';\n const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);\n","by-accessing-contractevents","By accessing contract.events","referralProgramContract.events\n .RegisterUser()\n .on('connected', (subscriptionId: string) =\u003E {\n console.log(`| UserRegistered | events | ${subscriptionId}`);\n })\n .on(\n 'data',\n async (event: {\n removed: boolean;\n returnValues: RegisterUserResponseInterface;\n }) =\u003E {\n try {\n if (event.removed) {\n return;\n }\n const { user, referrer } = event.returnValues;\n console.log(user, referrer);\n } catch (e) {\n console.log(`| ONCE | ${e}`);\n }\n },\n )\n .on('error', (error: ErrnoException) =\u003E {\n console.log(error);\n });\n","with-filtering","With filtering"," let options = {\n filter: {\n value: [],\n },\n fromBlock: 0\n };\n\n myContract.events.Transfer(options)\n .on('data', event =\u003E console.log(event))\n .on('changed', changed =\u003E console.log(changed))\n .on('error', err =\u003E throw err)\n .on('connected', str =\u003E console.log(str))\n","common-subscribe-method","Common Subscribe method"," let options = {\n fromBlock: 0,\n address: ['address-1', 'address-2'], \u002F\u002FOnly get events from specific addresses\n topics: [] \u002F\u002FWhat topics to subscribe to\n };\n\n let subscription = ('logs', options, (err,event) =\u003E {\n if (!err)\n console.log(event)\n });\n\n subscription.on('data', event =\u003E console.log(event))\n subscription.on('changed', changed =\u003E console.log(changed))\n subscription.on('error', err =\u003E { throw err })\n subscription.on('connected', nr =\u003E console.log(nr))\n","getting-event-history","Getting event history"," \u002F\u002Fexample options(optional)\n let options = {\n filter: {\n \u002F\u002F only get events where transfer value was 1000 or 1337\n value: ['1000', '1337'] \n },\n \u002F\u002F number | \"earliest\" | \"pending\" | \"latest\"\n fromBlock: 0, \n toBlock: 'latest'\n };\n\n myContract.getPastEvents('Transfer', options)\n .then(results =\u003E console.log(results))\n .catch(err =\u003E throw err);\n\n","Contract","'.'","address","};","export","async","methods"," } ","throw","ct-612ba8"," }","result","().","call","privateKey","transaction","makeBatchRequest","batch","if","myContract","'connected'","'data'"," },","'error'"," fromBlock: "," };","Smart Contracts","\u002Fblockchain\u002Fsmart-contracts","root","For common functions see ","Common%20typescript%20examples","Common typescript examples","Useful for calling smart contract methods:","Contract has ","read"," and ","write"," methods. To get a list of methods, you can paste contract address on ","https:\u002F\u002Fetherscan.io\u002Ftoken\u002F0xdac17f958d2ee523a2206206994597c13d831ec7#readContract","https:\u002F\u002Fetherscan.io\u002F ETH"," or any other service.","Read"," methods doesn't require spending ",". ","Write"," methods cost some amount of ",", hence they will be executed with confirmation from user.","Function calls batch of requests, returning array of results. For example:","There're different ways to subscribe for contract events. For all of them you will need following variables:","We're listening to "," event here:","Filtering options can also be specified:","Getting history for "," events for specific values. More info can be found ","https:\u002F\u002Fweb3js.readthedocs.io\u002Fen\u002Fv1.2.11\u002Fweb3-eth-subscribe.html#","here","string","ct-1ed0c7","abiFromJson","default","\u002F\u002F see example below","\u002F* ... *\u002F"," };","'0xdea164f67df4dbfe675d5271c9d404e0260f33bb'","executeContractMethod","\u002F\u002F getting contract","currentProvider","request","addressUser","store"," });","Error","val","account","accounts","(),","signed","!"," ","method","calls","promises","Promise","resolve","reject"," ","ABI","events","ct-43fe40",", (","subscriptionId","}`","removed","returnValues","ct-4d5c04","user","referrer","error"," });"," filter: {","'changed'","changed")) \ No newline at end of file diff --git a/blockchain/smart-contracts/index.html b/blockchain/smart-contracts/index.html index 3a50654..91abcc2 100644 --- a/blockchain/smart-contracts/index.html +++ b/blockchain/smart-contracts/index.html @@ -1,6 +1,6 @@ -Smart Contracts • Obsidian Garden -

Smart Contracts

For common functions see Common typescript examples.

Getting smart contract instance

Useful for calling smart contract methods:

import { Contract } from 'web3-eth-contract';import { web3 } from '.';const getContract = (abi: object, address?: string): => {  const abiFromJson = JSON.parse(  return new web3.eth.Contract(abiFromJson, address);};export default getContract;

Executing contract method

Contract has read and write methods. To get a list of methods, you can paste contract address on https://etherscan.io/ ETH or any other service.

Read methods doesn't require spending gas. Write methods cost some amount of gas, hence they will be executed with confirmation from user.

Example for #Metamask without private key

// see example belowimport { getContract } from '.';// ABI of contractconst CONTRACT_ABI = { /* ... */ }; // address for contractconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';export const executeContractMethod = async ({}) => {  // getting contract  const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);    // Calling write method  try {    // authorizing with Metamask    await web3.currentProvider.request({ method: 'eth_requestAccounts' });    // getting wallet address    const addressUser = web3.currentProvider.selectedAddress;    // calling "store" store method for contract    // payload should include `from` address, that matches    // current user's wallet    await contract.methods.store(0, 'Parameter').send({      from: addressUser,    });  } catch (e) {    throw new Error(e);  }    // calling read method  try {    // this method can return data    const result = await contract.methods.retrieve().call();  } catch (e) {    throw new Error(e);  }}

Node.js and React Native example

// see example belowimport { getContract } from '.';// ABI контрактаconst CONTRACT_ABI = { /* ... */ };// contract addressconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';// getting contractconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);// account's private keyconst privateKey = '...';// write-methods requires private keyconst executeContractMethod = async (val: number) => {    const transaction = contract.methods.store(val);    const account = web3.eth.accounts.privateKeyToAccount(privateKey);    const options = {      to: CONTRACT_ADDRESS,      data: transaction.encodeABI(),      gas: await transaction.estimateGas({ from: account.address }),      gasPrice: await web3.eth.getGasPrice(),    };    const signed = await web3.eth.accounts.signTransaction(      options,      privateKey,    );    await web3.eth.sendSignedTransaction(signed.rawTransaction!);};

Calling a batch of contract's methods

Function calls batch of requests, returning array of results. For example:

  const requests = [   contract.method.balanceOf().call,   contract.method.getStaked().call  ]  const result = await makeBatchRequest(request);
const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);const makeBatchRequest = (calls: any[]) => {  try {    const web3 = getWeb3NoAccount();    const batch = new web3.BatchRequest();    const promises = calls.map=> {      return new Promise((resolve, reject) => {        batch.add(            if (err) {              reject(err);            } else {              resolve(result);            }          })        );      });    });    batch.execute();    return Promise.all(promises);  } catch {    return null;  }};export default makeBatchRequest;

Subscribing to smart contract events

There're different ways to subscribe for contract events. For all of them you will need following variables:

  import Web3 from 'web3';  const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');  const ABI = 'YOUR ABI HERE';  const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';  const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);

By accessing contract.events

referralProgramContract.events  .RegisterUser()  .on('connected', (subscriptionId: string) => {    console.log(`| UserRegistered | events | ${subscriptionId}`);  })  .on(    'data',    async (event: {      removed: boolean;      returnValues: RegisterUserResponseInterface;    }) => {      try {        if (event.removed) {          return;        }        const { user, referrer } = event.returnValues;        console.log(user, referrer);      } catch (e) {        console.log(`| ONCE | ${e}`);      }    },  )  .on('error', (error: ErrnoException) => {    console.log(error);  });

With filtering

We're listening to Transfer event here:

  let options = {    filter: {        value: [],    },    fromBlock: 0  };  myContract.events.Transfer(options)    .on('data' log(event))    .on('changed' log(changed))    .on('error'     .on('connected' log(str))

Common Subscribe method

Filtering options can also be specified:

  let options = {    fromBlock: 0,    address: ['address-1', 'address-2'],    //Only get events from specific addresses    topics: []                              //What topics to subscribe to  };  let subscription = ('logs', options      if (!err)      console.log(event)  });  subscription.on('data'=> console.log(event))  subscription.on('changed'=> console.log(changed))  subscription.on('error'=> { throw err })  subscription.on('connected'=> console.log(nr))

Getting event history

Getting history for Transfer events for specific values. More info can be found here

  //example options(optional)  let options = {    filter: {        // only get events where transfer value was 1000 or 1337        value: ['1000', '1337']        },    // number | "earliest" | "pending" | "latest"    fromBlock: 0,                      toBlock: 'latest'  };  myContract.getPastEvents('Transfer', options)    .then log(results))    .catch 
btw, have a nice day
(2018 - 2022) muerwre
+

Smart Contracts

For common functions see Common typescript examples.

Getting smart contract instance

Useful for calling smart contract methods:

import { Contract } from 'web3-eth-contract';import { web3 } from '.';const getContract = (abi: object, address?: string): => {  const abiFromJson = JSON.parse(  return new web3.eth.Contract(abiFromJson, address);};export default getContract;

Executing contract method

Contract has read and write methods. To get a list of methods, you can paste contract address on https://etherscan.io/ ETH or any other service.

Read methods doesn't require spending gas. Write methods cost some amount of gas, hence they will be executed with confirmation from user.

Example for #Metamask without private key

// see example belowimport { getContract } from '.';// ABI of contractconst CONTRACT_ABI = { /* ... */ }; // address for contractconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';export const executeContractMethod = async ({}) => {  // getting contract  const contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);    // Calling write method  try {    // authorizing with Metamask    await web3.currentProvider.request({ method: 'eth_requestAccounts' });    // getting wallet address    const addressUser = web3.currentProvider.selectedAddress;    // calling "store" store method for contract    // payload should include `from` address, that matches    // current user's wallet    await contract.methods.store(0, 'Parameter').send({      from: addressUser,    });  } catch (e) {    throw new Error(e);  }    // calling read method  try {    // this method can return data    const result = await contract.methods.retrieve().call();  } catch (e) {    throw new Error(e);  }}

Node.js and React Native example

// see example belowimport { getContract } from '.';// ABI контрактаconst CONTRACT_ABI = { /* ... */ };// contract addressconst CONTRACT_ADDRESS = '0xdea164f67df4dbfe675d5271c9d404e0260f33bb';// getting contractconst contract = getContract(CONTRACT_ABI, CONTRACT_ADDRESS);// account's private keyconst privateKey = '...';// write-methods requires private keyconst executeContractMethod = async (val: number) => {    const transaction = contract.methods.store(val);    const account = web3.eth.accounts.privateKeyToAccount(privateKey);    const options = {      to: CONTRACT_ADDRESS,      data: transaction.encodeABI(),      gas: await transaction.estimateGas({ from: account.address }),      gasPrice: await web3.eth.getGasPrice(),    };    const signed = await web3.eth.accounts.signTransaction(      options,      privateKey,    );    await web3.eth.sendSignedTransaction(signed.rawTransaction!);};

Calling a batch of contract's methods

Function calls batch of requests, returning array of results. For example:

  const requests = [   contract.method.balanceOf().call,   contract.method.getStaked().call  ]  const result = await makeBatchRequest(request);
const web3 = new Web3(Web3.givenProvider || PROVIDER_URL);const makeBatchRequest = (calls: any[]) => {  try {    const web3 = getWeb3NoAccount();    const batch = new web3.BatchRequest();    const promises = calls.map=> {      return new Promise((resolve, reject) => {        batch.add(            if (err) {              reject(err);            } else {              resolve(result);            }          })        );      });    });    batch.execute();    return Promise.all(promises);  } catch {    return null;  }};export default makeBatchRequest;

Subscribing to smart contract events

There're different ways to subscribe for contract events. For all of them you will need following variables:

  import Web3 from 'web3';  const web3 = new Web3('YOUR_RPC_ENDPOINT_HERE');  const ABI = 'YOUR ABI HERE';  const CONTRACT_ADDRESS = 'YOUR CONTRACT ADDRESS HERE';  const myContract = new Web3.Contract(ABI, CONTRACT_ADDRESS);

By accessing contract.events

referralProgramContract.events  .RegisterUser()  .on('connected', (subscriptionId: string) => {    console.log(`| UserRegistered | events | ${subscriptionId}`);  })  .on(    'data',    async (event: {      removed: boolean;      returnValues: RegisterUserResponseInterface;    }) => {      try {        if (event.removed) {          return;        }        const { user, referrer } = event.returnValues;        console.log(user, referrer);      } catch (e) {        console.log(`| ONCE | ${e}`);      }    },  )  .on('error', (error: ErrnoException) => {    console.log(error);  });

With filtering

We're listening to Transfer event here:

  let options = {    filter: {        value: [],    },    fromBlock: 0  };  myContract.events.Transfer(options)    .on('data' log(event))    .on('changed' log(changed))    .on('error'     .on('connected' log(str))

Common Subscribe method

Filtering options can also be specified:

  let options = {    fromBlock: 0,    address: ['address-1', 'address-2'],    //Only get events from specific addresses    topics: []                              //What topics to subscribe to  };  let subscription = ('logs', options      if (!err)      console.log(event)  });  subscription.on('data'=> console.log(event))  subscription.on('changed'=> console.log(changed))  subscription.on('error'=> { throw err })  subscription.on('connected'=> console.log(nr))

Getting event history

Getting history for Transfer events for specific values. More info can be found here

  //example options(optional)  let options = {    filter: {        // only get events where transfer value was 1000 or 1337        value: ['1000', '1337']        },    // number | "earliest" | "pending" | "latest"    fromBlock: 0,                      toBlock: 'latest'  };  myContract.getPastEvents('Transfer', options)    .then log(results))    .catch 
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/css/automatic-grid-like-masonry-with-pure-css/_payload.js b/css/automatic-grid-like-masonry-with-pure-css/_payload.js index 9041371..25c6f17 100644 --- a/css/automatic-grid-like-masonry-with-pure-css/_payload.js +++ b/css/automatic-grid-like-masonry-with-pure-css/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:Q,_path:R},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-yoYMujrz1O":{_path:R,_dir:"css",_draft:y,_partial:y,_locale:"en",_empty:y,title:Q,description:z,excerpt:{type:S,children:[{type:a,tag:T,props:{},children:[{type:c,value:z}]},{type:a,tag:g,props:{code:A,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:c,value:A}]}]}]},{type:a,tag:q,props:{id:B},children:[{type:c,value:C}]},{type:a,tag:g,props:{code:D,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:c,value:D}]}]}]},{type:a,tag:q,props:{id:E},children:[{type:c,value:F}]},{type:a,tag:g,props:{code:G,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:c,value:G}]}]}]},{type:a,tag:q,props:{id:H},children:[{type:c,value:I}]},{type:a,tag:g,props:{code:J,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:c,value:J}]}]}]}]},body:{type:S,children:[{type:a,tag:T,props:{},children:[{type:c,value:z}]},{type:a,tag:g,props:{code:A,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:U},children:[{type:c,value:"$cell: "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"250"}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:U},children:[{type:c,value:"$gap: "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"20"}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:".grid"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"display"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:"grid"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"grid-template-columns"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:V},children:[{type:c,value:"repeat"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:"auto-fit"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:V},children:[{type:c,value:"minmax"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:"$cell"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:"ct-f53f0b"},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:"ct-01f19b"},children:[{type:c,value:"fr"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"));"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:"grid-auto-rows"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"256"}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"grid-auto-flow"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:"row"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:"dense"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"grid-column-gap"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"grid-row-gap"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]}]}]}]},{type:a,tag:q,props:{id:B},children:[{type:c,value:C}]},{type:a,tag:g,props:{code:D,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:".h-2"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"\u002F\u002F takes 2 columns"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:"grid-column-end"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:b}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:".v-2"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"\u002F\u002F takes 2 rows"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:"grid-row-end"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:b}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]}]}]}]},{type:a,tag:q,props:{id:E},children:[{type:c,value:F}]},{type:a,tag:g,props:{code:G,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:".full-width"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"\u002F\u002F height: 1 row"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]}]}]}]},{type:a,tag:q,props:{id:H},children:[{type:c,value:I}]},{type:a,tag:g,props:{code:J,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:".top-right"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"3"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"\u002F\u002F height here"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"-2"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"\u002F\u002F width here"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-e36f0d{color:#8B949E}.ct-557b75{color:#79C0FF}.ct-01f19b{color:#FF7B72}.ct-f53f0b{color:#79C0FF}.ct-4998ec{color:#FFA657}.ct-70e714{color:#79C0FF}.ct-745b8d{color:#79C0FF}.ct-2873e9{color:#79C0FF}.ct-de2353{color:#C9D1D9}.ct-6459ce{color:#79C0FF}.ct-7bdc6b{color:#C9D1D9}.ct-47368f{color:#FF7B72}.ct-b0def7{color:#79C0FF}.ct-405c56{color:#FFA657}.light .ct-405c56{color:#657B83}.light .ct-b0def7{color:#D33682}.light .ct-47368f{color:#859900}.light .ct-7bdc6b{color:#657B83}.light .ct-6459ce{color:#93A1A1}.light .ct-de2353{color:#657B83}.light .ct-2873e9{color:#859900}.light .ct-745b8d{color:#657B83}.light .ct-70e714{color:#268BD2}.light .ct-4998ec{color:#657B83}.light .ct-f53f0b{color:#D33682}.light .ct-01f19b{color:#859900}.light .ct-557b75{color:#859900}.light .ct-e36f0d{color:#93A1A1}"}]}],toc:{title:l,searchDepth:ae,depth:ae,links:[{id:B,depth:P,text:C},{id:E,depth:P,text:F},{id:H,depth:P,text:I}]}},_type:"markdown",_id:"content:CSS:Automatic Grid like Masonry with pure CSS.md",_source:"content",_file:"CSS\u002FAutomatic Grid like Masonry with pure CSS.md",_extension:"md"}},prerenderedAt:1667469955608}}("element","span","text","ct-7bdc6b","line","ct-de2353","code","ct-b0def7",": ",";"," ","","ct-557b75","scss","pre"," ","h3","ct-47368f","ct-6459ce","ct-2873e9","}","ct-e36f0d","ct-4998ec","1",false,"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows\u002Fcolumns.","$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","basic-elements-with-double-height-or-width","Basic elements with double height or width",".h-2 { \u002F\u002F takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { \u002F\u002F takes 2 rows\n grid-row-end: span 2;\n}\n","header-that-fills-all-columns","Header, that fills all columns",".full-width {\n grid-row: 1 \u002F 2; \u002F\u002F height: 1 row\n grid-column: 1 \u002F -1;\n}\n","stamp-element-that-takes-3-rows-in-the-top-right-corner","Stamp element, that takes 3 rows in the top right corner",".top-right {\n grid-row: 1 \u002F 3; \u002F\u002F height here\n grid-column: -2 \u002F -1; \u002F\u002F width here\n}\n","px"," {","ct-745b8d","2","; ",3,"Automatic Grid Like Masonry With Pure CSS","\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css","root","p","ct-405c56","ct-70e714","(",", ","$gap"," { "," ","grid-row","\u002F","grid-column"," \u002F ","-1",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:Q,_path:R},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-yoYMujrz1O":{_path:R,_dir:"css",_draft:y,_partial:y,_locale:"en",_empty:y,title:Q,description:z,excerpt:{type:S,children:[{type:a,tag:T,props:{},children:[{type:c,value:z}]},{type:a,tag:g,props:{code:A,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:c,value:A}]}]}]},{type:a,tag:q,props:{id:B},children:[{type:c,value:C}]},{type:a,tag:g,props:{code:D,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:c,value:D}]}]}]},{type:a,tag:q,props:{id:E},children:[{type:c,value:F}]},{type:a,tag:g,props:{code:G,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:c,value:G}]}]}]},{type:a,tag:q,props:{id:H},children:[{type:c,value:I}]},{type:a,tag:g,props:{code:J,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:c,value:J}]}]}]}]},body:{type:S,children:[{type:a,tag:T,props:{},children:[{type:c,value:z}]},{type:a,tag:g,props:{code:A,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:U},children:[{type:c,value:"$cell: "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"250"}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:U},children:[{type:c,value:"$gap: "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"20"}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:".grid"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"display"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:"grid"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"grid-template-columns"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:V},children:[{type:c,value:"repeat"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:"auto-fit"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:V},children:[{type:c,value:"minmax"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:"$cell"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:"ct-700d8c"},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:"ct-f46071"},children:[{type:c,value:"fr"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"));"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:"grid-auto-rows"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"256"}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"grid-auto-flow"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:"row"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:"dense"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"grid-column-gap"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"grid-row-gap"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]}]}]}]},{type:a,tag:q,props:{id:B},children:[{type:c,value:C}]},{type:a,tag:g,props:{code:D,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:".h-2"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"\u002F\u002F takes 2 columns"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:"grid-column-end"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:b}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:".v-2"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"\u002F\u002F takes 2 rows"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:"grid-row-end"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:b}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]}]}]}]},{type:a,tag:q,props:{id:E},children:[{type:c,value:F}]},{type:a,tag:g,props:{code:G,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:".full-width"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"\u002F\u002F height: 1 row"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]}]}]}]},{type:a,tag:q,props:{id:H},children:[{type:c,value:I}]},{type:a,tag:g,props:{code:J,language:n},children:[{type:a,tag:o,props:{},children:[{type:a,tag:g,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:".top-right"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"3"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"\u002F\u002F height here"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"-2"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"\u002F\u002F width here"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-a68783{color:#8B949E}.ct-cc4636{color:#79C0FF}.ct-f46071{color:#FF7B72}.ct-700d8c{color:#79C0FF}.ct-74d4bc{color:#FFA657}.ct-6ed2f6{color:#79C0FF}.ct-139d60{color:#79C0FF}.ct-278f2a{color:#79C0FF}.ct-1e77ad{color:#C9D1D9}.ct-0beef3{color:#79C0FF}.ct-da7a15{color:#C9D1D9}.ct-00ac1e{color:#FF7B72}.ct-2a9e54{color:#79C0FF}.ct-6fec38{color:#FFA657}.light .ct-6fec38{color:#657B83}.light .ct-2a9e54{color:#D33682}.light .ct-00ac1e{color:#859900}.light .ct-da7a15{color:#657B83}.light .ct-0beef3{color:#93A1A1}.light .ct-1e77ad{color:#657B83}.light .ct-278f2a{color:#859900}.light .ct-139d60{color:#657B83}.light .ct-6ed2f6{color:#268BD2}.light .ct-74d4bc{color:#657B83}.light .ct-700d8c{color:#D33682}.light .ct-f46071{color:#859900}.light .ct-cc4636{color:#859900}.light .ct-a68783{color:#93A1A1}"}]}],toc:{title:l,searchDepth:ae,depth:ae,links:[{id:B,depth:P,text:C},{id:E,depth:P,text:F},{id:H,depth:P,text:I}]}},_type:"markdown",_id:"content:CSS:Automatic Grid like Masonry with pure CSS.md",_source:"content",_file:"CSS\u002FAutomatic Grid like Masonry with pure CSS.md",_extension:"md"}},prerenderedAt:1667480032033}}("element","span","text","ct-da7a15","line","ct-1e77ad","code","ct-2a9e54",": ",";"," ","","ct-cc4636","scss","pre"," ","h3","ct-00ac1e","ct-0beef3","ct-278f2a","}","ct-a68783","ct-74d4bc","1",false,"Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows\u002Fcolumns.","$cell: 250px;\n$gap: 20px;\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));\n grid-auto-rows: 256px;\n grid-auto-flow: row dense;\n grid-column-gap: $gap;\n grid-row-gap: $gap;\n}\n","basic-elements-with-double-height-or-width","Basic elements with double height or width",".h-2 { \u002F\u002F takes 2 columns\n grid-column-end: span 2;\n}\n\n.v-2 { \u002F\u002F takes 2 rows\n grid-row-end: span 2;\n}\n","header-that-fills-all-columns","Header, that fills all columns",".full-width {\n grid-row: 1 \u002F 2; \u002F\u002F height: 1 row\n grid-column: 1 \u002F -1;\n}\n","stamp-element-that-takes-3-rows-in-the-top-right-corner","Stamp element, that takes 3 rows in the top right corner",".top-right {\n grid-row: 1 \u002F 3; \u002F\u002F height here\n grid-column: -2 \u002F -1; \u002F\u002F width here\n}\n","px"," {","ct-139d60","2","; ",3,"Automatic Grid Like Masonry With Pure CSS","\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css","root","p","ct-6fec38","ct-6ed2f6","(",", ","$gap"," { "," ","grid-row","\u002F","grid-column"," \u002F ","-1",2)) \ No newline at end of file diff --git a/css/automatic-grid-like-masonry-with-pure-css/index.html b/css/automatic-grid-like-masonry-with-pure-css/index.html index adaeb7e..bfaa210 100644 --- a/css/automatic-grid-like-masonry-with-pure-css/index.html +++ b/css/automatic-grid-like-masonry-with-pure-css/index.html @@ -1,6 +1,6 @@ -Automatic Grid Like Masonry With Pure CSS • Obsidian Garden -

Automatic Grid Like Masonry With Pure CSS

Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns.

$cell: 250px;$gap: 20px;.grid {  display: grid;  grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));  grid-auto-rows: 256px;  grid-auto-flow: row dense;  grid-column-gap: $gap;  grid-row-gap: $gap;}

Basic elements with double height or width

.h-2 { // takes 2 columns    grid-column-end: span 2;}.v-2 { // takes 2 rows    grid-row-end: span 2;}

Header, that fills all columns

.full-width {  grid-row: 1 / 2; // height: 1 row  grid-column: 1 / -1;}

Stamp element, that takes 3 rows in the top right corner

.top-right {  grid-row: 1 / 3; // height here  grid-column: -2 / -1; // width here}
btw, have a nice day
(2018 - 2022) muerwre
+

Automatic Grid Like Masonry With Pure CSS

Grid, that places items by density. Pure #css solution. Can be used with items, that take different amount of rows/columns.

$cell: 250px;$gap: 20px;.grid {  display: grid;  grid-template-columns: repeat(auto-fit, minmax($cell, 1fr));  grid-auto-rows: 256px;  grid-auto-flow: row dense;  grid-column-gap: $gap;  grid-row-gap: $gap;}

Basic elements with double height or width

.h-2 { // takes 2 columns    grid-column-end: span 2;}.v-2 { // takes 2 rows    grid-row-end: span 2;}

Header, that fills all columns

.full-width {  grid-row: 1 / 2; // height: 1 row  grid-column: 1 / -1;}

Stamp element, that takes 3 rows in the top right corner

.top-right {  grid-row: 1 / 3; // height here  grid-column: -2 / -1; // width here}
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/css/sass-nth-child-iterate-mixin/_payload.js b/css/sass-nth-child-iterate-mixin/_payload.js index c554e57..97e0e4e 100644 --- a/css/sass-nth-child-iterate-mixin/_payload.js +++ b/css/sass-nth-child-iterate-mixin/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:t,_path:u},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-ex7u9maCrE":{_path:u,_dir:"css",_draft:p,_partial:p,_locale:"en",_empty:p,title:t,description:"Say, we need to color n items by specific colors, which depend on its position. #SCSS supports iteration over lists for that purposes:",excerpt:{type:v,children:[{type:a,tag:l,props:{},children:[{type:b,value:w},{type:a,tag:x,props:{},children:[{type:b,value:y}]},{type:b,value:z},{type:a,tag:A,props:{href:B,rel:[C]},children:[{type:b,value:D}]},{type:b,value:E}]},{type:a,tag:g,props:{code:q,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:g,props:{__ignoreMap:i},children:[{type:b,value:q}]}]}]},{type:a,tag:l,props:{},children:[{type:b,value:F}]},{type:a,tag:g,props:{code:r,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:g,props:{__ignoreMap:i},children:[{type:b,value:r}]}]}]}]},body:{type:v,children:[{type:a,tag:l,props:{},children:[{type:b,value:w},{type:a,tag:x,props:{},children:[{type:b,value:y}]},{type:b,value:z},{type:a,tag:A,props:{href:B,rel:[C]},children:[{type:b,value:D}]},{type:b,value:E}]},{type:a,tag:g,props:{code:q,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:g,props:{__ignoreMap:i},children:[{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:s},children:[{type:b,value:"@mixin"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:"ct-970948"},children:[{type:b,value:"color-per-child"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:G}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:H}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:I}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:J}]},{type:a,tag:c,props:{class:s},children:[{type:b,value:"@each"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:K}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:s},children:[{type:b,value:"in"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:H}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:L}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:"ct-9944ba"},children:[{type:b,value:"&"}]},{type:a,tag:c,props:{class:"ct-b1fbc0"},children:[{type:b,value:":nth-child"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:G}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"#{"}]},{type:a,tag:c,props:{class:"ct-33af56"},children:[{type:b,value:"index"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"(($colors), ($color))}"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:I}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:"ct-079bc9"},children:[{type:b,value:"color"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:": "}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:K}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:";"}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" }"}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" }"}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:M}]}]}]}]}]},{type:a,tag:l,props:{},children:[{type:b,value:F}]},{type:a,tag:g,props:{code:r,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:g,props:{__ignoreMap:i},children:[{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:"ct-d733bc"},children:[{type:b,value:".item"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:L}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:J}]},{type:a,tag:c,props:{class:"ct-baf813"},children:[{type:b,value:"@include"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:"ct-90aa85"},children:[{type:b,value:"color_per_child"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:"(("}]},{type:a,tag:c,props:{class:k},children:[{type:b,value:"#ded187"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:k},children:[{type:b,value:"#dbde87"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:k},children:[{type:b,value:"#bade87"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:k},children:[{type:b,value:"#9cde87"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:k},children:[{type:b,value:"#87deaa"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:"));"}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:M}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-9ec2d3{color:#79C0FF}.ct-90aa85{color:#D2A8FF}.ct-baf813{color:#FF7B72}.ct-d733bc{color:#79C0FF}.ct-e65013{color:#C9D1D9}.ct-079bc9{color:#79C0FF}.ct-33af56{color:#79C0FF}.ct-b1fbc0{color:#79C0FF}.ct-9944ba{color:#7EE787}.ct-33b3aa{color:#FFA657}.ct-970948{color:#D2A8FF}.ct-8a61ea{color:#C9D1D9}.ct-42be13{color:#FF7B72}.light .ct-42be13{color:#859900}.light .ct-8a61ea{color:#657B83}.light .ct-970948{color:#268BD2}.light .ct-33b3aa{color:#657B83}.light .ct-9944ba{color:#268BD2}.light .ct-b1fbc0{color:#93A1A1}.light .ct-33af56{color:#268BD2}.light .ct-079bc9{color:#859900}.light .ct-e65013{color:#657B83}.light .ct-d733bc{color:#93A1A1}.light .ct-baf813{color:#859900}.light .ct-90aa85{color:#268BD2}.light .ct-9ec2d3{color:#CB4B16}"}]}],toc:{title:i,searchDepth:N,depth:N,links:[]}},_type:"markdown",_id:"content:CSS:Sass nth-child iterate mixin.md",_source:"content",_file:"CSS\u002FSass nth-child iterate mixin.md",_extension:"md"}},prerenderedAt:1667469955660}}("element","text","span","ct-8a61ea","ct-e65013","line","code","ct-33b3aa",""," ","ct-9ec2d3","p","scss","pre",", ",false,"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n",".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","ct-42be13","Sass Nth Child Iterate Mixin","\u002Fcss\u002Fsass-nth-child-iterate-mixin","root","Say, we need to color ","code-inline","n"," items by specific colors, which depend on its position. #SCSS supports ","a","https:\u002F\u002Fsass-lang.com\u002Fdocumentation\u002Fat-rules\u002Fcontrol\u002Feach","nofollow","iteration over lists"," for that purposes:","Usage is simple:","(","$colors",") {"," ","$color"," {","}",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:t,_path:u},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-ex7u9maCrE":{_path:u,_dir:"css",_draft:p,_partial:p,_locale:"en",_empty:p,title:t,description:"Say, we need to color n items by specific colors, which depend on its position. #SCSS supports iteration over lists for that purposes:",excerpt:{type:v,children:[{type:a,tag:l,props:{},children:[{type:b,value:w},{type:a,tag:x,props:{},children:[{type:b,value:y}]},{type:b,value:z},{type:a,tag:A,props:{href:B,rel:[C]},children:[{type:b,value:D}]},{type:b,value:E}]},{type:a,tag:g,props:{code:q,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:g,props:{__ignoreMap:i},children:[{type:b,value:q}]}]}]},{type:a,tag:l,props:{},children:[{type:b,value:F}]},{type:a,tag:g,props:{code:r,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:g,props:{__ignoreMap:i},children:[{type:b,value:r}]}]}]}]},body:{type:v,children:[{type:a,tag:l,props:{},children:[{type:b,value:w},{type:a,tag:x,props:{},children:[{type:b,value:y}]},{type:b,value:z},{type:a,tag:A,props:{href:B,rel:[C]},children:[{type:b,value:D}]},{type:b,value:E}]},{type:a,tag:g,props:{code:q,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:g,props:{__ignoreMap:i},children:[{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:s},children:[{type:b,value:"@mixin"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:"ct-3e86e3"},children:[{type:b,value:"color-per-child"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:G}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:H}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:I}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:J}]},{type:a,tag:c,props:{class:s},children:[{type:b,value:"@each"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:K}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:s},children:[{type:b,value:"in"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:H}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:L}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:"ct-7ceaa8"},children:[{type:b,value:"&"}]},{type:a,tag:c,props:{class:"ct-8c2245"},children:[{type:b,value:":nth-child"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:G}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"#{"}]},{type:a,tag:c,props:{class:"ct-ca9252"},children:[{type:b,value:"index"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"(($colors), ($color))}"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:I}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:"ct-47277e"},children:[{type:b,value:"color"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:": "}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:K}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:";"}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" }"}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" }"}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:M}]}]}]}]}]},{type:a,tag:l,props:{},children:[{type:b,value:F}]},{type:a,tag:g,props:{code:r,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:g,props:{__ignoreMap:i},children:[{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:"ct-b0858e"},children:[{type:b,value:".item"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:L}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:J}]},{type:a,tag:c,props:{class:"ct-0604d7"},children:[{type:b,value:"@include"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:"ct-543fff"},children:[{type:b,value:"color_per_child"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:"(("}]},{type:a,tag:c,props:{class:k},children:[{type:b,value:"#ded187"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:k},children:[{type:b,value:"#dbde87"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:k},children:[{type:b,value:"#bade87"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:k},children:[{type:b,value:"#9cde87"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:k},children:[{type:b,value:"#87deaa"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:"));"}]}]},{type:a,tag:c,props:{class:f},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:M}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-cd960d{color:#79C0FF}.ct-543fff{color:#D2A8FF}.ct-0604d7{color:#FF7B72}.ct-b0858e{color:#79C0FF}.ct-683c67{color:#C9D1D9}.ct-47277e{color:#79C0FF}.ct-ca9252{color:#79C0FF}.ct-8c2245{color:#79C0FF}.ct-7ceaa8{color:#7EE787}.ct-123e2b{color:#FFA657}.ct-3e86e3{color:#D2A8FF}.ct-b80ee6{color:#C9D1D9}.ct-44ded8{color:#FF7B72}.light .ct-44ded8{color:#859900}.light .ct-b80ee6{color:#657B83}.light .ct-3e86e3{color:#268BD2}.light .ct-123e2b{color:#657B83}.light .ct-7ceaa8{color:#268BD2}.light .ct-8c2245{color:#93A1A1}.light .ct-ca9252{color:#268BD2}.light .ct-47277e{color:#859900}.light .ct-683c67{color:#657B83}.light .ct-b0858e{color:#93A1A1}.light .ct-0604d7{color:#859900}.light .ct-543fff{color:#268BD2}.light .ct-cd960d{color:#CB4B16}"}]}],toc:{title:i,searchDepth:N,depth:N,links:[]}},_type:"markdown",_id:"content:CSS:Sass nth-child iterate mixin.md",_source:"content",_file:"CSS\u002FSass nth-child iterate mixin.md",_extension:"md"}},prerenderedAt:1667480032089}}("element","text","span","ct-b80ee6","ct-683c67","line","code","ct-123e2b",""," ","ct-cd960d","p","scss","pre",", ",false,"@mixin color-per-child($colors) {\n @each $color in $colors {\n &:nth-child(#{index(($colors), ($color))}) {\n color: $color;\n }\n }\n}\n",".item {\n @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));\n}\n","ct-44ded8","Sass Nth Child Iterate Mixin","\u002Fcss\u002Fsass-nth-child-iterate-mixin","root","Say, we need to color ","code-inline","n"," items by specific colors, which depend on its position. #SCSS supports ","a","https:\u002F\u002Fsass-lang.com\u002Fdocumentation\u002Fat-rules\u002Fcontrol\u002Feach","nofollow","iteration over lists"," for that purposes:","Usage is simple:","(","$colors",") {"," ","$color"," {","}",2)) \ No newline at end of file diff --git a/css/sass-nth-child-iterate-mixin/index.html b/css/sass-nth-child-iterate-mixin/index.html index 4b34bd2..2dc30f7 100644 --- a/css/sass-nth-child-iterate-mixin/index.html +++ b/css/sass-nth-child-iterate-mixin/index.html @@ -1,6 +1,6 @@ -Sass Nth Child Iterate Mixin • Obsidian Garden -

Sass Nth Child Iterate Mixin

Say, we need to color n items by specific colors, which depend on its position. #SCSS supports iteration over lists for that purposes:

@mixin color-per-child($colors) {  @each $color in $colors {    &:nth-child(#{index(($colors), ($color))}) {      color: $color;    }  }}

Usage is simple:

.item {  @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));}
btw, have a nice day
(2018 - 2022) muerwre
+

Sass Nth Child Iterate Mixin

Say, we need to color n items by specific colors, which depend on its position. #SCSS supports iteration over lists for that purposes:

@mixin color-per-child($colors) {  @each $color in $colors {    &:nth-child(#{index(($colors), ($color))}) {      color: $color;    }  }}

Usage is simple:

.item {  @include color_per_child((#ded187, #dbde87, #bade87, #9cde87, #87deaa));}
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/css/test-if-browser-supports-css-rules/_payload.js b/css/test-if-browser-supports-css-rules/_payload.js index 6c0b6c1..9c15bb7 100644 --- a/css/test-if-browser-supports-css-rules/_payload.js +++ b/css/test-if-browser-supports-css-rules/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:x,_path:y}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-OwjCJk80Rt":{_path:y,_dir:l,_draft:m,_partial:m,_locale:"en",_empty:m,title:x,description:n,excerpt:{type:z,children:[{type:a,tag:j,props:{},children:[{type:b,value:n}]},{type:a,tag:f,props:{code:o,language:l},children:[{type:a,tag:k,props:{},children:[{type:a,tag:f,props:{__ignoreMap:h},children:[{type:b,value:o}]}]}]},{type:a,tag:j,props:{},children:[{type:b,value:A},{type:a,tag:B,props:{},children:[{type:b,value:p}]},{type:b,value:C}]},{type:a,tag:f,props:{code:q,language:D},children:[{type:a,tag:k,props:{},children:[{type:a,tag:f,props:{__ignoreMap:h},children:[{type:b,value:q}]}]}]}]},body:{type:z,children:[{type:a,tag:j,props:{},children:[{type:b,value:n}]},{type:a,tag:f,props:{code:o,language:l},children:[{type:a,tag:k,props:{},children:[{type:a,tag:f,props:{__ignoreMap:h},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:F}]},{type:a,tag:c,props:{class:G},children:[{type:b,value:r}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:H},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:u}]},{type:a,tag:c,props:{class:I},children:[{type:b,value:v}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:")) {"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:J}]},{type:a,tag:c,props:{class:"ct-147719"},children:[{type:b,value:r}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:": blur(5px);"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:K}]}]}]}]}]},{type:a,tag:j,props:{},children:[{type:b,value:A},{type:a,tag:B,props:{},children:[{type:b,value:p}]},{type:b,value:C}]},{type:a,tag:f,props:{code:q,language:D},children:[{type:a,tag:k,props:{},children:[{type:a,tag:f,props:{__ignoreMap:h},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:L}]},{type:a,tag:c,props:{class:"ct-ee8d8a"},children:[{type:b,value:"can_backdrop"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" {"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:F}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:i},children:[{type:b,value:M}]},{type:a,tag:c,props:{class:"ct-34cfd3"},children:[{type:b,value:"-webkit-backdrop-filter"}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:"ct-4138a8"},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:u}]},{type:a,tag:c,props:{class:"ct-20b136"},children:[{type:b,value:v}]},{type:a,tag:c,props:{class:"ct-11eec6"},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:")) "}]},{type:a,tag:c,props:{class:"ct-92f797"},children:[{type:b,value:"or"}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:L}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:M}]},{type:a,tag:c,props:{class:G},children:[{type:b,value:r}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:H},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:u}]},{type:a,tag:c,props:{class:I},children:[{type:b,value:v}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"))"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" ) {"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:J}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"@content"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:";"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" }"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:K}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-92f797{color:#79C0FF}.ct-11eec6{color:#FF7B72}.ct-20b136{color:#79C0FF}.ct-4138a8{color:#79C0FF}.ct-34cfd3{color:#79C0FF}.ct-3d523b{color:#C9D1D9}.ct-ee8d8a{color:#D2A8FF}.ct-147719{color:#7EE787}.ct-b57c26{color:#79C0FF}.ct-76b142{color:#79C0FF}.ct-dc5f6f{color:#79C0FF}.ct-c068ad{color:#C9D1D9}.ct-96fe27{color:#FF7B72}.light .ct-96fe27{color:#859900}.light .ct-c068ad{color:#657B83}.light .ct-dc5f6f{color:#859900}.light .ct-76b142{color:#268BD2}.light .ct-b57c26{color:#D33682}.light .ct-147719{color:#268BD2}.light .ct-ee8d8a{color:#268BD2}.light .ct-3d523b{color:#657B83}.light .ct-34cfd3{color:#859900}.light .ct-4138a8{color:#268BD2}.light .ct-20b136{color:#D33682}.light .ct-11eec6{color:#859900}.light .ct-92f797{color:#657B83}"}]}],toc:{title:h,searchDepth:N,depth:N,links:[]}},_type:"markdown",_id:"content:CSS:Test if browser supports CSS rules.md",_source:"content",_file:"CSS\u002FTest if browser supports CSS rules.md",_extension:"md"}},prerenderedAt:1667469955700}}("element","text","span","ct-c068ad","line","code","ct-96fe27","","ct-3d523b","p","pre","css",false,"To test if browser supports some #CSS rules, do following:","@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","@mixin","@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","backdrop-filter",": ","blur","(","5","px","Test If Browser Supports CSS Rules","\u002Fcss\u002Ftest-if-browser-supports-css-rules","root","This ","code-inline"," will only apply rule if browser support backdrop filtering:","scss","@supports"," (","ct-dc5f6f","ct-76b142","ct-b57c26"," ","}"," "," (",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:x,_path:y}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-OwjCJk80Rt":{_path:y,_dir:l,_draft:m,_partial:m,_locale:"en",_empty:m,title:x,description:n,excerpt:{type:z,children:[{type:a,tag:j,props:{},children:[{type:b,value:n}]},{type:a,tag:f,props:{code:o,language:l},children:[{type:a,tag:k,props:{},children:[{type:a,tag:f,props:{__ignoreMap:h},children:[{type:b,value:o}]}]}]},{type:a,tag:j,props:{},children:[{type:b,value:A},{type:a,tag:B,props:{},children:[{type:b,value:p}]},{type:b,value:C}]},{type:a,tag:f,props:{code:q,language:D},children:[{type:a,tag:k,props:{},children:[{type:a,tag:f,props:{__ignoreMap:h},children:[{type:b,value:q}]}]}]}]},body:{type:z,children:[{type:a,tag:j,props:{},children:[{type:b,value:n}]},{type:a,tag:f,props:{code:o,language:l},children:[{type:a,tag:k,props:{},children:[{type:a,tag:f,props:{__ignoreMap:h},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:F}]},{type:a,tag:c,props:{class:G},children:[{type:b,value:r}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:H},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:u}]},{type:a,tag:c,props:{class:I},children:[{type:b,value:v}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:")) {"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:J}]},{type:a,tag:c,props:{class:"ct-670d07"},children:[{type:b,value:r}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:": blur(5px);"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:K}]}]}]}]}]},{type:a,tag:j,props:{},children:[{type:b,value:A},{type:a,tag:B,props:{},children:[{type:b,value:p}]},{type:b,value:C}]},{type:a,tag:f,props:{code:q,language:D},children:[{type:a,tag:k,props:{},children:[{type:a,tag:f,props:{__ignoreMap:h},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:L}]},{type:a,tag:c,props:{class:"ct-af03f2"},children:[{type:b,value:"can_backdrop"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" {"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:F}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:i},children:[{type:b,value:M}]},{type:a,tag:c,props:{class:"ct-a75c6d"},children:[{type:b,value:"-webkit-backdrop-filter"}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:"ct-a1a7f3"},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:u}]},{type:a,tag:c,props:{class:"ct-0906b4"},children:[{type:b,value:v}]},{type:a,tag:c,props:{class:"ct-7f4dc3"},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:")) "}]},{type:a,tag:c,props:{class:"ct-f4126f"},children:[{type:b,value:"or"}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:L}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:M}]},{type:a,tag:c,props:{class:G},children:[{type:b,value:r}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:H},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:u}]},{type:a,tag:c,props:{class:I},children:[{type:b,value:v}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"))"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" ) {"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:J}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"@content"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:";"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" }"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:K}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-f4126f{color:#79C0FF}.ct-7f4dc3{color:#FF7B72}.ct-0906b4{color:#79C0FF}.ct-a1a7f3{color:#79C0FF}.ct-a75c6d{color:#79C0FF}.ct-eb53f2{color:#C9D1D9}.ct-af03f2{color:#D2A8FF}.ct-670d07{color:#7EE787}.ct-b01425{color:#79C0FF}.ct-189c40{color:#79C0FF}.ct-4b23d2{color:#79C0FF}.ct-0e7559{color:#C9D1D9}.ct-120989{color:#FF7B72}.light .ct-120989{color:#859900}.light .ct-0e7559{color:#657B83}.light .ct-4b23d2{color:#859900}.light .ct-189c40{color:#268BD2}.light .ct-b01425{color:#D33682}.light .ct-670d07{color:#268BD2}.light .ct-af03f2{color:#268BD2}.light .ct-eb53f2{color:#657B83}.light .ct-a75c6d{color:#859900}.light .ct-a1a7f3{color:#268BD2}.light .ct-0906b4{color:#D33682}.light .ct-7f4dc3{color:#859900}.light .ct-f4126f{color:#657B83}"}]}],toc:{title:h,searchDepth:N,depth:N,links:[]}},_type:"markdown",_id:"content:CSS:Test if browser supports CSS rules.md",_source:"content",_file:"CSS\u002FTest if browser supports CSS rules.md",_extension:"md"}},prerenderedAt:1667480032130}}("element","text","span","ct-0e7559","line","code","ct-120989","","ct-eb53f2","p","pre","css",false,"To test if browser supports some #CSS rules, do following:","@supports (backdrop-filter: blur(5px)) {\n backdrop-filter: blur(5px);\n}\n","@mixin","@mixin can_backdrop {\n @supports (\n (-webkit-backdrop-filter: blur(5px)) or \n (backdrop-filter: blur(5px))\n ) {\n @content;\n }\n}\n","backdrop-filter",": ","blur","(","5","px","Test If Browser Supports CSS Rules","\u002Fcss\u002Ftest-if-browser-supports-css-rules","root","This ","code-inline"," will only apply rule if browser support backdrop filtering:","scss","@supports"," (","ct-4b23d2","ct-189c40","ct-b01425"," ","}"," "," (",2)) \ No newline at end of file diff --git a/css/test-if-browser-supports-css-rules/index.html b/css/test-if-browser-supports-css-rules/index.html index 8d53f09..8e4a4d2 100644 --- a/css/test-if-browser-supports-css-rules/index.html +++ b/css/test-if-browser-supports-css-rules/index.html @@ -1,6 +1,6 @@ -Test If Browser Supports CSS Rules • Obsidian Garden -

Test If Browser Supports CSS Rules

To test if browser supports some #CSS rules, do following:

@supports (backdrop-filter: blur(5px)) {    backdrop-filter: blur(5px);}

This @mixin will only apply rule if browser support backdrop filtering:

@mixin can_backdrop {  @supports (    (-webkit-backdrop-filter: blur(5px)) or     (backdrop-filter: blur(5px))  ) {    @content;  }}
btw, have a nice day
(2018 - 2022) muerwre
+

Test If Browser Supports CSS Rules

To test if browser supports some #CSS rules, do following:

@supports (backdrop-filter: blur(5px)) {    backdrop-filter: blur(5px);}

This @mixin will only apply rule if browser support backdrop filtering:

@mixin can_backdrop {  @supports (    (-webkit-backdrop-filter: blur(5px)) or     (backdrop-filter: blur(5px))  ) {    @content;  }}
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/docker/building-static-pages-with-docker/_payload.js b/docker/building-static-pages-with-docker/_payload.js index 10b901c..edae91a 100644 --- a/docker/building-static-pages-with-docker/_payload.js +++ b/docker/building-static-pages-with-docker/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:h,_path:i},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-QKxL2z8jga":{_path:i,_dir:"docker",_draft:d,_partial:d,_locale:"en",_empty:d,title:h,description:e,excerpt:{type:j,children:[{type:a,tag:k,props:{},children:[{type:b,value:e}]},{type:a,tag:c,props:{code:f,language:l},children:[{type:a,tag:m,props:{},children:[{type:a,tag:c,props:{__ignoreMap:g},children:[{type:b,value:f}]}]}]}]},body:{type:j,children:[{type:a,tag:k,props:{},children:[{type:b,value:e}]},{type:a,tag:c,props:{code:f,language:l},children:[{type:a,tag:m,props:{},children:[{type:a,tag:c,props:{__ignoreMap:g},children:[{type:a,tag:n,props:{class:"line"},children:[{type:a,tag:n,props:{},children:[{type:b,value:"FROM node:16-alpine as builder\nWORKDIR \u002Fapp\nCOPY package.json yarn.lock .\u002F\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder \u002Fapp\u002Fdist \u002Fusr\u002Fshare\u002Fnginx\u002Fhtml"}]}]}]}]}]}],toc:{title:g,searchDepth:o,depth:o,links:[]}},_type:"markdown",_id:"content:Docker:Building static pages with Docker.md",_source:"content",_file:"Docker\u002FBuilding static pages with Docker.md",_extension:"md"}},prerenderedAt:1667469955753}}("element","text","code",false,"Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:","FROM node:16-alpine as builder\nWORKDIR \u002Fapp\nCOPY package.json yarn.lock .\u002F\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder \u002Fapp\u002Fdist \u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\n","","Building Static Pages With Docker","\u002Fdocker\u002Fbuilding-static-pages-with-docker","root","p","Dockerfile","pre","span",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:h,_path:i},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-QKxL2z8jga":{_path:i,_dir:"docker",_draft:d,_partial:d,_locale:"en",_empty:d,title:h,description:e,excerpt:{type:j,children:[{type:a,tag:k,props:{},children:[{type:b,value:e}]},{type:a,tag:c,props:{code:f,language:l},children:[{type:a,tag:m,props:{},children:[{type:a,tag:c,props:{__ignoreMap:g},children:[{type:b,value:f}]}]}]}]},body:{type:j,children:[{type:a,tag:k,props:{},children:[{type:b,value:e}]},{type:a,tag:c,props:{code:f,language:l},children:[{type:a,tag:m,props:{},children:[{type:a,tag:c,props:{__ignoreMap:g},children:[{type:a,tag:n,props:{class:"line"},children:[{type:a,tag:n,props:{},children:[{type:b,value:"FROM node:16-alpine as builder\nWORKDIR \u002Fapp\nCOPY package.json yarn.lock .\u002F\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder \u002Fapp\u002Fdist \u002Fusr\u002Fshare\u002Fnginx\u002Fhtml"}]}]}]}]}]}],toc:{title:g,searchDepth:o,depth:o,links:[]}},_type:"markdown",_id:"content:Docker:Building static pages with Docker.md",_source:"content",_file:"Docker\u002FBuilding static pages with Docker.md",_extension:"md"}},prerenderedAt:1667480032181}}("element","text","code",false,"Sample #Dockerfile for static Typescript builds such a #nextjs, #gatsby or #nuxt:","FROM node:16-alpine as builder\nWORKDIR \u002Fapp\nCOPY package.json yarn.lock .\u002F\nRUN yarn\nCOPY . .\n\n# your generate command here\nRUN yarn generate\n\nFROM nginx\nCOPY --from=builder \u002Fapp\u002Fdist \u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\n","","Building Static Pages With Docker","\u002Fdocker\u002Fbuilding-static-pages-with-docker","root","p","Dockerfile","pre","span",2)) \ No newline at end of file diff --git a/docker/building-static-pages-with-docker/index.html b/docker/building-static-pages-with-docker/index.html index 521ca40..ada92a5 100644 --- a/docker/building-static-pages-with-docker/index.html +++ b/docker/building-static-pages-with-docker/index.html @@ -1,6 +1,6 @@ -Building Static Pages With Docker • Obsidian Garden +COPY --from=builder /app/dist /usr/share/nginx/html
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/docker/drone-ci/_payload.js b/docker/drone-ci/_payload.js index b698fe4..5f5a72c 100644 --- a/docker/drone-ci/_payload.js +++ b/docker/drone-ci/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:_,_path:$},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-uFdiCIitkN":{_path:$,_dir:aa,_draft:F,_partial:F,_locale:"en",_empty:F,title:_,description:"Can be used with Private docker registry to deploy things using #docker.",excerpt:{type:ab,children:[{type:a,tag:n,props:{},children:[{type:b,value:ac},{type:a,tag:q,props:{href:w},children:[{type:b,value:ad}]},{type:b,value:ae}]},{type:a,tag:o,props:{id:G},children:[{type:b,value:H}]},{type:a,tag:n,props:{},children:[{type:b,value:af},{type:a,tag:h,props:{},children:[{type:b,value:I}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:J}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:K}]},{type:b,value:ag},{type:a,tag:ah,props:{},children:[{type:b,value:v}]},{type:b,value:ai},{type:a,tag:h,props:{},children:[{type:b,value:L}]},{type:b,value:aj},{type:a,tag:h,props:{},children:[{type:b,value:ak}]},{type:b,value:x}]},{type:a,tag:n,props:{},children:[{type:b,value:al},{type:a,tag:h,props:{},children:[{type:b,value:am}]},{type:b,value:an},{type:a,tag:q,props:{href:w},children:[{type:b,value:ao}]},{type:b,value:i}]},{type:a,tag:k,props:{code:M,language:y},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:b,value:M}]}]}]},{type:a,tag:o,props:{id:N},children:[{type:b,value:O}]},{type:a,tag:n,props:{},children:[{type:b,value:ap},{type:a,tag:h,props:{},children:[{type:b,value:v}]},{type:b,value:aq},{type:a,tag:h,props:{},children:[{type:b,value:P}]},{type:b,value:ar}]},{type:a,tag:n,props:{},children:[{type:b,value:as},{type:a,tag:h,props:{},children:[{type:b,value:at}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:au}]},{type:b,value:av},{type:a,tag:h,props:{},children:[{type:b,value:aw}]},{type:b,value:ax}]},{type:a,tag:k,props:{code:Q,language:y},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:b,value:Q}]}]}]},{type:a,tag:o,props:{id:R},children:[{type:b,value:S}]},{type:a,tag:n,props:{},children:[{type:b,value:ay},{type:a,tag:q,props:{href:az,rel:[z]},children:[{type:b,value:aA}]},{type:b,value:aB},{type:a,tag:q,props:{href:aC,rel:[z]},children:[{type:b,value:aD}]},{type:b,value:aE}]},{type:a,tag:o,props:{id:T},children:[{type:b,value:U}]},{type:a,tag:k,props:{code:V,language:A},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:b,value:V}]}]}]},{type:a,tag:o,props:{id:W},children:[{type:b,value:X}]},{type:a,tag:n,props:{},children:[{type:b,value:aF},{type:a,tag:h,props:{},children:[{type:b,value:B}]},{type:b,value:x}]},{type:a,tag:k,props:{code:Y,language:A},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:b,value:Y}]}]}]}]},body:{type:ab,children:[{type:a,tag:n,props:{},children:[{type:b,value:ac},{type:a,tag:q,props:{href:w},children:[{type:b,value:ad}]},{type:b,value:ae}]},{type:a,tag:o,props:{id:G},children:[{type:b,value:H}]},{type:a,tag:n,props:{},children:[{type:b,value:af},{type:a,tag:h,props:{},children:[{type:b,value:I}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:J}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:K}]},{type:b,value:ag},{type:a,tag:ah,props:{},children:[{type:b,value:v}]},{type:b,value:ai},{type:a,tag:h,props:{},children:[{type:b,value:L}]},{type:b,value:aj},{type:a,tag:h,props:{},children:[{type:b,value:ak}]},{type:b,value:x}]},{type:a,tag:n,props:{},children:[{type:b,value:al},{type:a,tag:h,props:{},children:[{type:b,value:am}]},{type:b,value:an},{type:a,tag:q,props:{href:w},children:[{type:b,value:ao}]},{type:b,value:i}]},{type:a,tag:k,props:{code:M,language:y},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"kind"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"pipeline"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:aG}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"build"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"type"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aa}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"platform"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:C}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"os"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"linux"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:C}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"arch"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"amd64"}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"steps"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" - "}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aG}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"build-master"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:Z}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"plugins\u002Fdocker"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"when"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"branch"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:aH}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"master"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"settings"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"dockerfile"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"Dockerfile"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"tag"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:aH}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"${DRONE_BRANCH}"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"username"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:I}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"password"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:J}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"registry"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:K}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"repo"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:L}]}]}]}]}]},{type:a,tag:o,props:{id:N},children:[{type:b,value:O}]},{type:a,tag:n,props:{},children:[{type:b,value:ap},{type:a,tag:h,props:{},children:[{type:b,value:v}]},{type:b,value:aq},{type:a,tag:h,props:{},children:[{type:b,value:P}]},{type:b,value:ar}]},{type:a,tag:n,props:{},children:[{type:b,value:as},{type:a,tag:h,props:{},children:[{type:b,value:at}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:au}]},{type:b,value:av},{type:a,tag:h,props:{},children:[{type:b,value:aw}]},{type:b,value:ax}]},{type:a,tag:k,props:{code:Q,language:y},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"version"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"\"3\""}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"services"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:C}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:v}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aI}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:v}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:Z}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"drone\u002Fdrone:latest"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aJ}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_GITHUB_CLIENT_ID=secret_id"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_GITHUB_CLIENT_SECRET=client_secret"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aK}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_SERVER_HOST=drone.url"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_USER_CREATE=\"username:user,admin:true\""}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_SERVER_PROTO=https"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_TLS_AUTOCERT=false"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_GIT_ALWAYS_AUTH=false"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_LOGS_DEBUG=true"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_LOGS_TRACE=true"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aL}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aM}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aN}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:".\u002Fdata:\u002Fdata"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"ports"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"8090:80"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:C}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:P}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aI}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"drone__agent"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:Z}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"drone\u002Fagent:latest"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"command"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"agent"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aL}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aM}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aN}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"\u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aJ}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_RPC_SERVER=https:\u002F\u002Fdrone.url"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aK}]}]}]}]}]},{type:a,tag:o,props:{id:R},children:[{type:b,value:S}]},{type:a,tag:n,props:{},children:[{type:b,value:ay},{type:a,tag:q,props:{href:az,rel:[z]},children:[{type:b,value:aA}]},{type:b,value:aB},{type:a,tag:q,props:{href:aC,rel:[z]},children:[{type:b,value:aD}]},{type:b,value:aE}]},{type:a,tag:o,props:{id:T},children:[{type:b,value:U}]},{type:a,tag:k,props:{code:V,language:A},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:aO},children:[{type:b,value:aP}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" DRONE_SERVER=https:\u002F\u002Fdrone.url"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:aO},children:[{type:b,value:aP}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" DRONE_TOKEN=password"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"drone info"}]}]}]}]}]},{type:a,tag:o,props:{id:W},children:[{type:b,value:X}]},{type:a,tag:n,props:{},children:[{type:b,value:aF},{type:a,tag:h,props:{},children:[{type:b,value:B}]},{type:b,value:x}]},{type:a,tag:k,props:{code:Y,language:A},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"drone repo update "}]},{type:a,tag:c,props:{class:aQ},children:[{type:b,value:aR}]},{type:a,tag:c,props:{class:aS},children:[{type:b,value:B}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" --trusted=true "}]},{type:a,tag:c,props:{class:"ct-b2944d"},children:[{type:b,value:"&&"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" drone repo info "}]},{type:a,tag:c,props:{class:aQ},children:[{type:b,value:aR}]},{type:a,tag:c,props:{class:aS},children:[{type:b,value:B}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-b2944d{color:#FF7B72}.ct-0db3cf{color:#C9D1D9}.ct-7833c9{color:#C9D1D9}.ct-d6b69b{color:#FF7B72}.ct-2bd6cd{color:#A5D6FF}.ct-3abe3a{color:#C9D1D9}.ct-dd7736{color:#7EE787}.light .ct-dd7736{color:#268BD2}.light .ct-3abe3a{color:#657B83}.light .ct-2bd6cd{color:#2AA198}.light .ct-d6b69b{color:#073642}.light .ct-7833c9{color:#859900}.light .ct-0db3cf{color:#268BD2}.light .ct-b2944d{color:#859900}"}]}],toc:{title:p,searchDepth:t,depth:t,links:[{id:G,depth:t,text:H},{id:N,depth:t,text:O},{id:R,depth:t,text:S},{id:T,depth:t,text:U},{id:W,depth:t,text:X}]}},_type:"markdown",_id:"content:Docker:Drone-ci.md",_source:"content",_file:"Docker\u002FDrone-ci.md",_extension:"md"}},prerenderedAt:1667469955811}}("element","text","span","ct-3abe3a","line","ct-dd7736","ct-2bd6cd","code-inline",":",": ","code"," "," - ","p","h2","","a","pre"," ",2,", ","drone","Private%20docker%20registry",".","yaml","nofollow","shell","1"," "," ","from_secret",false,"pushing-to-private-docker_registry","Pushing to private docker_registry","global_docker_login","global_docker_password","global_docker_registry","docker_repo","kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins\u002Fdocker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","docker-compose-file-for-drone-ci","Docker-compose file for drone-ci","drone-agent","version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone\u002Fdrone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - .\u002Fdata:\u002Fdata\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone\u002Fagent:latest\n command: agent\n restart: always\n volumes:\n - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n environment:\n - DRONE_RPC_SERVER=https:\u002F\u002Fdrone.url\n - DRONE_RPC_SECRET=rpc_secret\n","caching-builds","Caching builds","get-user-info","Get user info","export DRONE_SERVER=https:\u002F\u002Fdrone.url\nexport DRONE_TOKEN=password\ndrone info\n","mark-user-as-trusted","Mark user as trusted","drone repo update $1 --trusted=true && drone repo info $1\n","image","Drone Ci","\u002Fdocker\u002Fdrone-ci","docker","root","Can be used with ","Private docker registry"," to deploy things using #docker.","You should specify "," organizations variables in your ","strong",". And "," variable for your repo as ","docker.yourdomain.com\u002Fyour-image","This is example of ",".droneci"," for ","private docker registry","The "," service is ui itself and "," is runner for builds, that can be started on different machine (or machines).","Change ","secret_id","rpc_secret"," and ","drone.url"," to something you like.","Haven't checked that yet, but there's a ","https:\u002F\u002Flaszlo.cloud\u002Fthe-ultimate-droneci-caching-guide","manual"," from ","https:\u002F\u002Flaszlo.cloud\u002F","Laszlo Fogas"," about that.","Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to ","name"," - ","container_name","environment","DRONE_RPC_SECRET=rpc_secret","restart","always","volumes","ct-d6b69b","export","ct-7833c9","$","ct-0db3cf")) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:_,_path:$},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-uFdiCIitkN":{_path:$,_dir:aa,_draft:F,_partial:F,_locale:"en",_empty:F,title:_,description:"Can be used with Private docker registry to deploy things using #docker.",excerpt:{type:ab,children:[{type:a,tag:n,props:{},children:[{type:b,value:ac},{type:a,tag:q,props:{href:w},children:[{type:b,value:ad}]},{type:b,value:ae}]},{type:a,tag:o,props:{id:G},children:[{type:b,value:H}]},{type:a,tag:n,props:{},children:[{type:b,value:af},{type:a,tag:h,props:{},children:[{type:b,value:I}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:J}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:K}]},{type:b,value:ag},{type:a,tag:ah,props:{},children:[{type:b,value:v}]},{type:b,value:ai},{type:a,tag:h,props:{},children:[{type:b,value:L}]},{type:b,value:aj},{type:a,tag:h,props:{},children:[{type:b,value:ak}]},{type:b,value:x}]},{type:a,tag:n,props:{},children:[{type:b,value:al},{type:a,tag:h,props:{},children:[{type:b,value:am}]},{type:b,value:an},{type:a,tag:q,props:{href:w},children:[{type:b,value:ao}]},{type:b,value:i}]},{type:a,tag:k,props:{code:M,language:y},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:b,value:M}]}]}]},{type:a,tag:o,props:{id:N},children:[{type:b,value:O}]},{type:a,tag:n,props:{},children:[{type:b,value:ap},{type:a,tag:h,props:{},children:[{type:b,value:v}]},{type:b,value:aq},{type:a,tag:h,props:{},children:[{type:b,value:P}]},{type:b,value:ar}]},{type:a,tag:n,props:{},children:[{type:b,value:as},{type:a,tag:h,props:{},children:[{type:b,value:at}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:au}]},{type:b,value:av},{type:a,tag:h,props:{},children:[{type:b,value:aw}]},{type:b,value:ax}]},{type:a,tag:k,props:{code:Q,language:y},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:b,value:Q}]}]}]},{type:a,tag:o,props:{id:R},children:[{type:b,value:S}]},{type:a,tag:n,props:{},children:[{type:b,value:ay},{type:a,tag:q,props:{href:az,rel:[z]},children:[{type:b,value:aA}]},{type:b,value:aB},{type:a,tag:q,props:{href:aC,rel:[z]},children:[{type:b,value:aD}]},{type:b,value:aE}]},{type:a,tag:o,props:{id:T},children:[{type:b,value:U}]},{type:a,tag:k,props:{code:V,language:A},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:b,value:V}]}]}]},{type:a,tag:o,props:{id:W},children:[{type:b,value:X}]},{type:a,tag:n,props:{},children:[{type:b,value:aF},{type:a,tag:h,props:{},children:[{type:b,value:B}]},{type:b,value:x}]},{type:a,tag:k,props:{code:Y,language:A},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:b,value:Y}]}]}]}]},body:{type:ab,children:[{type:a,tag:n,props:{},children:[{type:b,value:ac},{type:a,tag:q,props:{href:w},children:[{type:b,value:ad}]},{type:b,value:ae}]},{type:a,tag:o,props:{id:G},children:[{type:b,value:H}]},{type:a,tag:n,props:{},children:[{type:b,value:af},{type:a,tag:h,props:{},children:[{type:b,value:I}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:J}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:K}]},{type:b,value:ag},{type:a,tag:ah,props:{},children:[{type:b,value:v}]},{type:b,value:ai},{type:a,tag:h,props:{},children:[{type:b,value:L}]},{type:b,value:aj},{type:a,tag:h,props:{},children:[{type:b,value:ak}]},{type:b,value:x}]},{type:a,tag:n,props:{},children:[{type:b,value:al},{type:a,tag:h,props:{},children:[{type:b,value:am}]},{type:b,value:an},{type:a,tag:q,props:{href:w},children:[{type:b,value:ao}]},{type:b,value:i}]},{type:a,tag:k,props:{code:M,language:y},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"kind"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"pipeline"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:aG}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"build"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"type"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aa}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"platform"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:C}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"os"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"linux"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:C}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"arch"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"amd64"}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"steps"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" - "}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aG}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"build-master"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:Z}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"plugins\u002Fdocker"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"when"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"branch"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:aH}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"master"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"settings"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"dockerfile"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"Dockerfile"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"tag"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:aH}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"${DRONE_BRANCH}"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"username"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:I}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"password"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:J}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"registry"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:K}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:s}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"repo"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:L}]}]}]}]}]},{type:a,tag:o,props:{id:N},children:[{type:b,value:O}]},{type:a,tag:n,props:{},children:[{type:b,value:ap},{type:a,tag:h,props:{},children:[{type:b,value:v}]},{type:b,value:aq},{type:a,tag:h,props:{},children:[{type:b,value:P}]},{type:b,value:ar}]},{type:a,tag:n,props:{},children:[{type:b,value:as},{type:a,tag:h,props:{},children:[{type:b,value:at}]},{type:b,value:u},{type:a,tag:h,props:{},children:[{type:b,value:au}]},{type:b,value:av},{type:a,tag:h,props:{},children:[{type:b,value:aw}]},{type:b,value:ax}]},{type:a,tag:k,props:{code:Q,language:y},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"version"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"\"3\""}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"services"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:C}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:v}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aI}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:v}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:Z}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"drone\u002Fdrone:latest"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aJ}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_GITHUB_CLIENT_ID=secret_id"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_GITHUB_CLIENT_SECRET=client_secret"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aK}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_SERVER_HOST=drone.url"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_USER_CREATE=\"username:user,admin:true\""}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_SERVER_PROTO=https"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_TLS_AUTOCERT=false"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_GIT_ALWAYS_AUTH=false"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_LOGS_DEBUG=true"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_LOGS_TRACE=true"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aL}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aM}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aN}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:".\u002Fdata:\u002Fdata"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"ports"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"8090:80"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:C}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:P}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aI}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"drone__agent"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:Z}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"drone\u002Fagent:latest"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"command"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"agent"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aL}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aM}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aN}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"\u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:aJ}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"DRONE_RPC_SERVER=https:\u002F\u002Fdrone.url"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aK}]}]}]}]}]},{type:a,tag:o,props:{id:R},children:[{type:b,value:S}]},{type:a,tag:n,props:{},children:[{type:b,value:ay},{type:a,tag:q,props:{href:az,rel:[z]},children:[{type:b,value:aA}]},{type:b,value:aB},{type:a,tag:q,props:{href:aC,rel:[z]},children:[{type:b,value:aD}]},{type:b,value:aE}]},{type:a,tag:o,props:{id:T},children:[{type:b,value:U}]},{type:a,tag:k,props:{code:V,language:A},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:aO},children:[{type:b,value:aP}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" DRONE_SERVER=https:\u002F\u002Fdrone.url"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:aO},children:[{type:b,value:aP}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" DRONE_TOKEN=password"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"drone info"}]}]}]}]}]},{type:a,tag:o,props:{id:W},children:[{type:b,value:X}]},{type:a,tag:n,props:{},children:[{type:b,value:aF},{type:a,tag:h,props:{},children:[{type:b,value:B}]},{type:b,value:x}]},{type:a,tag:k,props:{code:Y,language:A},children:[{type:a,tag:r,props:{},children:[{type:a,tag:k,props:{__ignoreMap:p},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"drone repo update "}]},{type:a,tag:c,props:{class:aQ},children:[{type:b,value:aR}]},{type:a,tag:c,props:{class:aS},children:[{type:b,value:B}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" --trusted=true "}]},{type:a,tag:c,props:{class:"ct-77901b"},children:[{type:b,value:"&&"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" drone repo info "}]},{type:a,tag:c,props:{class:aQ},children:[{type:b,value:aR}]},{type:a,tag:c,props:{class:aS},children:[{type:b,value:B}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-77901b{color:#FF7B72}.ct-be3582{color:#C9D1D9}.ct-533bdf{color:#C9D1D9}.ct-f7ec05{color:#FF7B72}.ct-17515e{color:#A5D6FF}.ct-024d63{color:#C9D1D9}.ct-0f0ad9{color:#7EE787}.light .ct-0f0ad9{color:#268BD2}.light .ct-024d63{color:#657B83}.light .ct-17515e{color:#2AA198}.light .ct-f7ec05{color:#073642}.light .ct-533bdf{color:#859900}.light .ct-be3582{color:#268BD2}.light .ct-77901b{color:#859900}"}]}],toc:{title:p,searchDepth:t,depth:t,links:[{id:G,depth:t,text:H},{id:N,depth:t,text:O},{id:R,depth:t,text:S},{id:T,depth:t,text:U},{id:W,depth:t,text:X}]}},_type:"markdown",_id:"content:Docker:Drone-ci.md",_source:"content",_file:"Docker\u002FDrone-ci.md",_extension:"md"}},prerenderedAt:1667480032220}}("element","text","span","ct-024d63","line","ct-0f0ad9","ct-17515e","code-inline",":",": ","code"," "," - ","p","h2","","a","pre"," ",2,", ","drone","Private%20docker%20registry",".","yaml","nofollow","shell","1"," "," ","from_secret",false,"pushing-to-private-docker_registry","Pushing to private docker_registry","global_docker_login","global_docker_password","global_docker_registry","docker_repo","kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build-master\n image: plugins\u002Fdocker\n when:\n branch:\n - master\n settings:\n dockerfile: Dockerfile\n tag:\n - ${DRONE_BRANCH}\n username:\n from_secret: global_docker_login\n password:\n from_secret: global_docker_password\n registry:\n from_secret: global_docker_registry\n repo:\n from_secret: docker_repo\n","docker-compose-file-for-drone-ci","Docker-compose file for drone-ci","drone-agent","version: \"3\"\n\nservices:\n drone:\n container_name: drone\n image: drone\u002Fdrone:latest\n environment:\n - DRONE_GITHUB_CLIENT_ID=secret_id\n - DRONE_GITHUB_CLIENT_SECRET=client_secret\n - DRONE_RPC_SECRET=rpc_secret\n - DRONE_SERVER_HOST=drone.url\n - DRONE_USER_CREATE=\"username:user,admin:true\"\n - DRONE_SERVER_PROTO=https\n - DRONE_TLS_AUTOCERT=false\n - DRONE_GIT_ALWAYS_AUTH=false\n - DRONE_LOGS_DEBUG=true\n - DRONE_LOGS_TRACE=true\n restart: always\n volumes:\n - .\u002Fdata:\u002Fdata\n ports:\n - 8090:80\n drone-agent:\n container_name: drone__agent\n image: drone\u002Fagent:latest\n command: agent\n restart: always\n volumes:\n - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n environment:\n - DRONE_RPC_SERVER=https:\u002F\u002Fdrone.url\n - DRONE_RPC_SECRET=rpc_secret\n","caching-builds","Caching builds","get-user-info","Get user info","export DRONE_SERVER=https:\u002F\u002Fdrone.url\nexport DRONE_TOKEN=password\ndrone info\n","mark-user-as-trusted","Mark user as trusted","drone repo update $1 --trusted=true && drone repo info $1\n","image","Drone Ci","\u002Fdocker\u002Fdrone-ci","docker","root","Can be used with ","Private docker registry"," to deploy things using #docker.","You should specify "," organizations variables in your ","strong",". And "," variable for your repo as ","docker.yourdomain.com\u002Fyour-image","This is example of ",".droneci"," for ","private docker registry","The "," service is ui itself and "," is runner for builds, that can be started on different machine (or machines).","Change ","secret_id","rpc_secret"," and ","drone.url"," to something you like.","Haven't checked that yet, but there's a ","https:\u002F\u002Flaszlo.cloud\u002Fthe-ultimate-droneci-caching-guide","manual"," from ","https:\u002F\u002Flaszlo.cloud\u002F","Laszlo Fogas"," about that.","Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to ","name"," - ","container_name","environment","DRONE_RPC_SECRET=rpc_secret","restart","always","volumes","ct-f7ec05","export","ct-533bdf","$","ct-be3582")) \ No newline at end of file diff --git a/docker/drone-ci/index.html b/docker/drone-ci/index.html index 0eb100c..ecb73c1 100644 --- a/docker/drone-ci/index.html +++ b/docker/drone-ci/index.html @@ -1,6 +1,6 @@ -Drone Ci • Obsidian Garden -

Drone Ci

Can be used with Private docker registry to deploy things using #docker.

Pushing to private docker_registry

You should specify global_docker_login, global_docker_password, global_docker_registry organizations variables in your drone. And docker_repo variable for your repo as docker.yourdomain.com/your-image.

This is example of .droneci for private docker registry:

kind: pipelinename: buildtype: dockerplatform:  os: linux  arch: amd64steps:  - name: build-master    image: plugins/docker    when:      branch:        - master    settings:      dockerfile: Dockerfile      tag:        - ${DRONE_BRANCH}      username:        from_secret: global_docker_login      password:        from_secret: global_docker_password      registry:        from_secret: global_docker_registry      repo:        from_secret: docker_repo

Docker-compose file for drone-ci

The drone service is ui itself and drone-agent is runner for builds, that can be started on different machine (or machines).

Change secret_id, rpc_secret and drone.url to something you like.

version: "3"services:  drone:    container_name: drone    image: drone/drone:latest    environment:      - DRONE_GITHUB_CLIENT_ID=secret_id      - DRONE_GITHUB_CLIENT_SECRET=client_secret      - DRONE_RPC_SECRET=rpc_secret      - DRONE_SERVER_HOST=drone.url      - DRONE_USER_CREATE="username:user,admin:true"      - DRONE_SERVER_PROTO=https      - DRONE_TLS_AUTOCERT=false      - DRONE_GIT_ALWAYS_AUTH=false      - DRONE_LOGS_DEBUG=true      - DRONE_LOGS_TRACE=true    restart: always    volumes:      - ./data:/data    ports:      - 8090:80  drone-agent:    container_name: drone__agent    image: drone/agent:latest    command: agent    restart: always    volumes:      - /var/run/docker.sock:/var/run/docker.sock    environment:      - DRONE_RPC_SERVER=https://drone.url      - DRONE_RPC_SECRET=rpc_secret

Caching builds

Haven't checked that yet, but there's a manual from Laszlo Fogas about that.

Get user info

export DRONE_SERVER=https://drone.urlexport DRONE_TOKEN=passworddrone info

Mark user as trusted

Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to 1.

drone repo update $1 --trusted=true && drone repo info $1
btw, have a nice day
(2018 - 2022) muerwre
+

Drone Ci

Can be used with Private docker registry to deploy things using #docker.

Pushing to private docker_registry

You should specify global_docker_login, global_docker_password, global_docker_registry organizations variables in your drone. And docker_repo variable for your repo as docker.yourdomain.com/your-image.

This is example of .droneci for private docker registry:

kind: pipelinename: buildtype: dockerplatform:  os: linux  arch: amd64steps:  - name: build-master    image: plugins/docker    when:      branch:        - master    settings:      dockerfile: Dockerfile      tag:        - ${DRONE_BRANCH}      username:        from_secret: global_docker_login      password:        from_secret: global_docker_password      registry:        from_secret: global_docker_registry      repo:        from_secret: docker_repo

Docker-compose file for drone-ci

The drone service is ui itself and drone-agent is runner for builds, that can be started on different machine (or machines).

Change secret_id, rpc_secret and drone.url to something you like.

version: "3"services:  drone:    container_name: drone    image: drone/drone:latest    environment:      - DRONE_GITHUB_CLIENT_ID=secret_id      - DRONE_GITHUB_CLIENT_SECRET=client_secret      - DRONE_RPC_SECRET=rpc_secret      - DRONE_SERVER_HOST=drone.url      - DRONE_USER_CREATE="username:user,admin:true"      - DRONE_SERVER_PROTO=https      - DRONE_TLS_AUTOCERT=false      - DRONE_GIT_ALWAYS_AUTH=false      - DRONE_LOGS_DEBUG=true      - DRONE_LOGS_TRACE=true    restart: always    volumes:      - ./data:/data    ports:      - 8090:80  drone-agent:    container_name: drone__agent    image: drone/agent:latest    command: agent    restart: always    volumes:      - /var/run/docker.sock:/var/run/docker.sock    environment:      - DRONE_RPC_SERVER=https://drone.url      - DRONE_RPC_SECRET=rpc_secret

Caching builds

Haven't checked that yet, but there's a manual from Laszlo Fogas about that.

Get user info

export DRONE_SERVER=https://drone.urlexport DRONE_TOKEN=passworddrone info

Mark user as trusted

Sometimes it won't help, then connect to drone database with sqlite and change user's trusted flag to 1.

drone repo update $1 --trusted=true && drone repo info $1
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/docker/github-pages-with-drone-ci/_payload.js b/docker/github-pages-with-drone-ci/_payload.js index 6c7054c..222202b 100644 --- a/docker/github-pages-with-drone-ci/_payload.js +++ b/docker/github-pages-with-drone-ci/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:H,_path:I},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-ZOfNnzEGMw":{_path:I,_dir:J,_draft:x,_partial:x,_locale:"en",_empty:x,title:H,description:"To deploy github pages with Drone-ci you will need .drone.yml as specified below. You also should define secrets github_username and github_token (get it here) in your drone's repository setup.",excerpt:{type:K,children:[{type:a,tag:j,props:{},children:[{type:b,value:L},{type:a,tag:i,props:{href:p},children:[{type:b,value:p}]},{type:b,value:M},{type:a,tag:f,props:{},children:[{type:b,value:N}]},{type:b,value:O},{type:a,tag:f,props:{},children:[{type:b,value:y}]},{type:b,value:P},{type:a,tag:f,props:{},children:[{type:b,value:z}]},{type:b,value:Q},{type:a,tag:i,props:{href:R,rel:[k]},children:[{type:b,value:S}]},{type:b,value:T}]},{type:a,tag:j,props:{},children:[{type:b,value:U},{type:a,tag:f,props:{},children:[{type:b,value:V}]},{type:b,value:W},{type:a,tag:i,props:{href:q,rel:[k]},children:[{type:b,value:q}]},{type:b,value:X},{type:a,tag:i,props:{href:r,rel:[k]},children:[{type:b,value:r}]},{type:b,value:Y}]},{type:a,tag:j,props:{},children:[{type:b,value:Z},{type:a,tag:f,props:{},children:[{type:b,value:n}]},{type:b,value:_},{type:a,tag:f,props:{},children:[{type:b,value:$}]},{type:b,value:s}]},{type:a,tag:j,props:{},children:[{type:b,value:aa},{type:a,tag:f,props:{},children:[{type:b,value:n}]},{type:b,value:ab}]},{type:a,tag:t,props:{code:A,language:ac},children:[{type:a,tag:ad,props:{},children:[{type:a,tag:t,props:{__ignoreMap:B},children:[{type:b,value:A}]}]}]},{type:a,tag:j,props:{},children:[{type:b,value:ae},{type:a,tag:f,props:{},children:[{type:b,value:af}]},{type:b,value:ag},{type:a,tag:f,props:{},children:[{type:b,value:ah}]},{type:b,value:ai},{type:a,tag:f,props:{},children:[{type:b,value:aj}]},{type:b,value:ak}]},{type:a,tag:j,props:{},children:[{type:b,value:al},{type:a,tag:f,props:{},children:[{type:b,value:am}]},{type:b,value:an},{type:a,tag:i,props:{href:u,rel:[k]},children:[{type:b,value:ao}]},{type:b,value:s}]},{type:a,tag:ap,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:aq,props:{},children:[{type:a,tag:v,props:{},children:[{type:a,tag:i,props:{href:ar,rel:[k]},children:[{type:b,value:as}]}]},{type:a,tag:v,props:{},children:[{type:a,tag:i,props:{href:u,rel:[k]},children:[{type:b,value:at}]}]}]}]},body:{type:K,children:[{type:a,tag:j,props:{},children:[{type:b,value:L},{type:a,tag:i,props:{href:p},children:[{type:b,value:p}]},{type:b,value:M},{type:a,tag:f,props:{},children:[{type:b,value:N}]},{type:b,value:O},{type:a,tag:f,props:{},children:[{type:b,value:y}]},{type:b,value:P},{type:a,tag:f,props:{},children:[{type:b,value:z}]},{type:b,value:Q},{type:a,tag:i,props:{href:R,rel:[k]},children:[{type:b,value:S}]},{type:b,value:T}]},{type:a,tag:j,props:{},children:[{type:b,value:U},{type:a,tag:f,props:{},children:[{type:b,value:V}]},{type:b,value:W},{type:a,tag:i,props:{href:q,rel:[k]},children:[{type:b,value:q}]},{type:b,value:X},{type:a,tag:i,props:{href:r,rel:[k]},children:[{type:b,value:r}]},{type:b,value:Y}]},{type:a,tag:j,props:{},children:[{type:b,value:Z},{type:a,tag:f,props:{},children:[{type:b,value:n}]},{type:b,value:_},{type:a,tag:f,props:{},children:[{type:b,value:$}]},{type:b,value:s}]},{type:a,tag:j,props:{},children:[{type:b,value:aa},{type:a,tag:f,props:{},children:[{type:b,value:n}]},{type:b,value:ab}]},{type:a,tag:t,props:{code:A,language:ac},children:[{type:a,tag:ad,props:{},children:[{type:a,tag:t,props:{__ignoreMap:B},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:"kind"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"pipeline"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:au}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:"type"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:J}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:"platform"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:av}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"os"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"linux"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:av}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"arch"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"amd64"}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:"steps"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:aw}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:au}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:ax}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"node:16"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"commands"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"yarn"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"yarn generate"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"rm -rf .\u002Fdocs"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"mv .\u002F.output\u002Fpublic .\u002Fdocs"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"touch .\u002Fdocs\u002F.nojekyll"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:aw}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"publish"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:ax}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"plugins\u002Fgh-pages"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"settings"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:F}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"target_branch"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:n}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:F}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"username"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ay}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:az}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:y}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:F}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"password"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ay}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:az}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:z}]}]}]}]}]},{type:a,tag:j,props:{},children:[{type:b,value:ae},{type:a,tag:f,props:{},children:[{type:b,value:af}]},{type:b,value:ag},{type:a,tag:f,props:{},children:[{type:b,value:ah}]},{type:b,value:ai},{type:a,tag:f,props:{},children:[{type:b,value:aj}]},{type:b,value:ak}]},{type:a,tag:j,props:{},children:[{type:b,value:al},{type:a,tag:f,props:{},children:[{type:b,value:am}]},{type:b,value:an},{type:a,tag:i,props:{href:u,rel:[k]},children:[{type:b,value:ao}]},{type:b,value:s}]},{type:a,tag:ap,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:aq,props:{},children:[{type:a,tag:v,props:{},children:[{type:a,tag:i,props:{href:ar,rel:[k]},children:[{type:b,value:as}]}]},{type:a,tag:v,props:{},children:[{type:a,tag:i,props:{href:u,rel:[k]},children:[{type:b,value:at}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-97e160{color:#A5D6FF}.ct-2ae8ba{color:#C9D1D9}.ct-f2adb2{color:#7EE787}.light .ct-f2adb2{color:#268BD2}.light .ct-2ae8ba{color:#657B83}.light .ct-97e160{color:#2AA198}"}]}],toc:{title:B,searchDepth:G,depth:G,links:[{id:C,depth:G,text:D}]}},_type:"markdown",_id:"content:Docker:Github pages with drone-ci.md",_source:"content",_file:"Docker\u002FGithub pages with drone-ci.md",_extension:"md"}},prerenderedAt:1667469955896}}("element","text","span","ct-2ae8ba","line","code-inline","ct-f2adb2","ct-97e160","a","p","nofollow",": ",":","gh-pages"," - ","Drone-ci","https:\u002F\u002Fyourname.github.io\u002F","https:\u002F\u002Fyourname.github.io\u002Frepo-name\u002F",".","code","https:\u002F\u002Fgithub.blog\u002F2009-12-29-bypassing-jekyll-on-github-pages\u002F","li"," ",false,"github_username","github_token","kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf .\u002Fdocs\n - mv .\u002F.output\u002Fpublic .\u002Fdocs\n - touch .\u002Fdocs\u002F.nojekyll\n - name: publish\n image: plugins\u002Fgh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n","","additional-reading","Additional reading","name"," ",2,"Github Pages With Drone Ci","\u002Fdocker\u002Fgithub-pages-with-drone-ci","docker","root","To deploy github pages with "," you will need ",".drone.yml"," as specified below. You also should define secrets "," and "," (get it ","https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens","here",") in your drone's repository setup.","Github repository should be named as ","yourname.github.io"," and it could be accessed at ",". Otherwise it'll be available at ",", what you might not like.","You should create branch named "," in that repo and setup GH Pages at ","https:\u002F\u002Fgithub.com\u002F\u003Cyourusername\u003E\u002F\u003Cyourusername\u003E.github.io\u002Fsettings\u002Fpages","This config will update "," branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins.","yaml","pre","Here we're moving ",".\u002F.output\u002Fpublic"," to ",".\u002Fdocs",", because #nuxt creates symlink for ","docs"," and git can't work with that.","Also we create ",".nojekyll"," at the root of repo, so github's internal engine won't ","ignore files that start with underscore","h2","ul","https:\u002F\u002Fplugins.drone.io\u002Fplugins\u002Fgh-pages","Drone Github Pages Documentation","Bypassing Jekyll on GitHub Pages","build"," "," - ","image"," ","from_secret")) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:H,_path:I},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-ZOfNnzEGMw":{_path:I,_dir:J,_draft:x,_partial:x,_locale:"en",_empty:x,title:H,description:"To deploy github pages with Drone-ci you will need .drone.yml as specified below. You also should define secrets github_username and github_token (get it here) in your drone's repository setup.",excerpt:{type:K,children:[{type:a,tag:j,props:{},children:[{type:b,value:L},{type:a,tag:i,props:{href:p},children:[{type:b,value:p}]},{type:b,value:M},{type:a,tag:f,props:{},children:[{type:b,value:N}]},{type:b,value:O},{type:a,tag:f,props:{},children:[{type:b,value:y}]},{type:b,value:P},{type:a,tag:f,props:{},children:[{type:b,value:z}]},{type:b,value:Q},{type:a,tag:i,props:{href:R,rel:[k]},children:[{type:b,value:S}]},{type:b,value:T}]},{type:a,tag:j,props:{},children:[{type:b,value:U},{type:a,tag:f,props:{},children:[{type:b,value:V}]},{type:b,value:W},{type:a,tag:i,props:{href:q,rel:[k]},children:[{type:b,value:q}]},{type:b,value:X},{type:a,tag:i,props:{href:r,rel:[k]},children:[{type:b,value:r}]},{type:b,value:Y}]},{type:a,tag:j,props:{},children:[{type:b,value:Z},{type:a,tag:f,props:{},children:[{type:b,value:n}]},{type:b,value:_},{type:a,tag:f,props:{},children:[{type:b,value:$}]},{type:b,value:s}]},{type:a,tag:j,props:{},children:[{type:b,value:aa},{type:a,tag:f,props:{},children:[{type:b,value:n}]},{type:b,value:ab}]},{type:a,tag:t,props:{code:A,language:ac},children:[{type:a,tag:ad,props:{},children:[{type:a,tag:t,props:{__ignoreMap:B},children:[{type:b,value:A}]}]}]},{type:a,tag:j,props:{},children:[{type:b,value:ae},{type:a,tag:f,props:{},children:[{type:b,value:af}]},{type:b,value:ag},{type:a,tag:f,props:{},children:[{type:b,value:ah}]},{type:b,value:ai},{type:a,tag:f,props:{},children:[{type:b,value:aj}]},{type:b,value:ak}]},{type:a,tag:j,props:{},children:[{type:b,value:al},{type:a,tag:f,props:{},children:[{type:b,value:am}]},{type:b,value:an},{type:a,tag:i,props:{href:u,rel:[k]},children:[{type:b,value:ao}]},{type:b,value:s}]},{type:a,tag:ap,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:aq,props:{},children:[{type:a,tag:v,props:{},children:[{type:a,tag:i,props:{href:ar,rel:[k]},children:[{type:b,value:as}]}]},{type:a,tag:v,props:{},children:[{type:a,tag:i,props:{href:u,rel:[k]},children:[{type:b,value:at}]}]}]}]},body:{type:K,children:[{type:a,tag:j,props:{},children:[{type:b,value:L},{type:a,tag:i,props:{href:p},children:[{type:b,value:p}]},{type:b,value:M},{type:a,tag:f,props:{},children:[{type:b,value:N}]},{type:b,value:O},{type:a,tag:f,props:{},children:[{type:b,value:y}]},{type:b,value:P},{type:a,tag:f,props:{},children:[{type:b,value:z}]},{type:b,value:Q},{type:a,tag:i,props:{href:R,rel:[k]},children:[{type:b,value:S}]},{type:b,value:T}]},{type:a,tag:j,props:{},children:[{type:b,value:U},{type:a,tag:f,props:{},children:[{type:b,value:V}]},{type:b,value:W},{type:a,tag:i,props:{href:q,rel:[k]},children:[{type:b,value:q}]},{type:b,value:X},{type:a,tag:i,props:{href:r,rel:[k]},children:[{type:b,value:r}]},{type:b,value:Y}]},{type:a,tag:j,props:{},children:[{type:b,value:Z},{type:a,tag:f,props:{},children:[{type:b,value:n}]},{type:b,value:_},{type:a,tag:f,props:{},children:[{type:b,value:$}]},{type:b,value:s}]},{type:a,tag:j,props:{},children:[{type:b,value:aa},{type:a,tag:f,props:{},children:[{type:b,value:n}]},{type:b,value:ab}]},{type:a,tag:t,props:{code:A,language:ac},children:[{type:a,tag:ad,props:{},children:[{type:a,tag:t,props:{__ignoreMap:B},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:"kind"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"pipeline"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:au}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:"type"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:J}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:"platform"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:av}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"os"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"linux"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:av}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"arch"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"amd64"}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:"steps"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:aw}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:au}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:ax}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"node:16"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"commands"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"yarn"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"yarn generate"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"rm -rf .\u002Fdocs"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"mv .\u002F.output\u002Fpublic .\u002Fdocs"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"touch .\u002Fdocs\u002F.nojekyll"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:aw}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"publish"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:ax}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"plugins\u002Fgh-pages"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:w}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"settings"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:F}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"target_branch"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:n}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:F}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"username"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ay}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:az}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:y}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:F}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"password"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:m}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ay}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:az}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:z}]}]}]}]}]},{type:a,tag:j,props:{},children:[{type:b,value:ae},{type:a,tag:f,props:{},children:[{type:b,value:af}]},{type:b,value:ag},{type:a,tag:f,props:{},children:[{type:b,value:ah}]},{type:b,value:ai},{type:a,tag:f,props:{},children:[{type:b,value:aj}]},{type:b,value:ak}]},{type:a,tag:j,props:{},children:[{type:b,value:al},{type:a,tag:f,props:{},children:[{type:b,value:am}]},{type:b,value:an},{type:a,tag:i,props:{href:u,rel:[k]},children:[{type:b,value:ao}]},{type:b,value:s}]},{type:a,tag:ap,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:aq,props:{},children:[{type:a,tag:v,props:{},children:[{type:a,tag:i,props:{href:ar,rel:[k]},children:[{type:b,value:as}]}]},{type:a,tag:v,props:{},children:[{type:a,tag:i,props:{href:u,rel:[k]},children:[{type:b,value:at}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-9a1e3a{color:#A5D6FF}.ct-f503f1{color:#C9D1D9}.ct-72f2f7{color:#7EE787}.light .ct-72f2f7{color:#268BD2}.light .ct-f503f1{color:#657B83}.light .ct-9a1e3a{color:#2AA198}"}]}],toc:{title:B,searchDepth:G,depth:G,links:[{id:C,depth:G,text:D}]}},_type:"markdown",_id:"content:Docker:Github pages with drone-ci.md",_source:"content",_file:"Docker\u002FGithub pages with drone-ci.md",_extension:"md"}},prerenderedAt:1667480032325}}("element","text","span","ct-f503f1","line","code-inline","ct-72f2f7","ct-9a1e3a","a","p","nofollow",": ",":","gh-pages"," - ","Drone-ci","https:\u002F\u002Fyourname.github.io\u002F","https:\u002F\u002Fyourname.github.io\u002Frepo-name\u002F",".","code","https:\u002F\u002Fgithub.blog\u002F2009-12-29-bypassing-jekyll-on-github-pages\u002F","li"," ",false,"github_username","github_token","kind: pipeline\nname: build\ntype: docker\n\nplatform:\n os: linux\n arch: amd64\n\nsteps:\n - name: build\n image: node:16\n commands:\n - yarn\n - yarn generate\n - rm -rf .\u002Fdocs\n - mv .\u002F.output\u002Fpublic .\u002Fdocs\n - touch .\u002Fdocs\u002F.nojekyll\n - name: publish\n image: plugins\u002Fgh-pages\n settings:\n target_branch: gh-pages\n username:\n from_secret: github_username\n password:\n from_secret: github_token\n","","additional-reading","Additional reading","name"," ",2,"Github Pages With Drone Ci","\u002Fdocker\u002Fgithub-pages-with-drone-ci","docker","root","To deploy github pages with "," you will need ",".drone.yml"," as specified below. You also should define secrets "," and "," (get it ","https:\u002F\u002Fgithub.com\u002Fsettings\u002Ftokens","here",") in your drone's repository setup.","Github repository should be named as ","yourname.github.io"," and it could be accessed at ",". Otherwise it'll be available at ",", what you might not like.","You should create branch named "," in that repo and setup GH Pages at ","https:\u002F\u002Fgithub.com\u002F\u003Cyourusername\u003E\u002F\u003Cyourusername\u003E.github.io\u002Fsettings\u002Fpages","This config will update "," branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins.","yaml","pre","Here we're moving ",".\u002F.output\u002Fpublic"," to ",".\u002Fdocs",", because #nuxt creates symlink for ","docs"," and git can't work with that.","Also we create ",".nojekyll"," at the root of repo, so github's internal engine won't ","ignore files that start with underscore","h2","ul","https:\u002F\u002Fplugins.drone.io\u002Fplugins\u002Fgh-pages","Drone Github Pages Documentation","Bypassing Jekyll on GitHub Pages","build"," "," - ","image"," ","from_secret")) \ No newline at end of file diff --git a/docker/github-pages-with-drone-ci/index.html b/docker/github-pages-with-drone-ci/index.html index ce64e67..af4ff98 100644 --- a/docker/github-pages-with-drone-ci/index.html +++ b/docker/github-pages-with-drone-ci/index.html @@ -1,6 +1,6 @@ -Github Pages With Drone Ci • Obsidian Garden -

Github Pages With Drone Ci

To deploy github pages with Drone-ci you will need .drone.yml as specified below. You also should define secrets github_username and github_token (get it here) in your drone's repository setup.

Github repository should be named as yourname.github.io and it could be accessed at https://yourname.github.io/. Otherwise it'll be available at https://yourname.github.io/repo-name/, what you might not like.

You should create branch named gh-pages in that repo and setup GH Pages at https://github.com/<yourusername>/<yourusername>.github.io/settings/pages.

This config will update gh-pages branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins.

kind: pipelinename: buildtype: dockerplatform:  os: linux  arch: amd64steps:  - name: build    image: node:16    commands:      - yarn      - yarn generate      - rm -rf ./docs      - mv ./.output/public ./docs      - touch ./docs/.nojekyll  - name: publish    image: plugins/gh-pages    settings:      target_branch: gh-pages      username:        from_secret: github_username      password:        from_secret: github_token

Here we're moving ./.output/public to ./docs, because #nuxt creates symlink for docs and git can't work with that.

Also we create .nojekyll at the root of repo, so github's internal engine won't ignore files that start with underscore.

Additional reading

btw, have a nice day
(2018 - 2022) muerwre
+

Github Pages With Drone Ci

To deploy github pages with Drone-ci you will need .drone.yml as specified below. You also should define secrets github_username and github_token (get it here) in your drone's repository setup.

Github repository should be named as yourname.github.io and it could be accessed at https://yourname.github.io/. Otherwise it'll be available at https://yourname.github.io/repo-name/, what you might not like.

You should create branch named gh-pages in that repo and setup GH Pages at https://github.com/<yourusername>/<yourusername>.github.io/settings/pages.

This config will update gh-pages branch in your project, which will contain only generated content. I know, that's bad, but there's no better way to do that with generic drone plugins.

kind: pipelinename: buildtype: dockerplatform:  os: linux  arch: amd64steps:  - name: build    image: node:16    commands:      - yarn      - yarn generate      - rm -rf ./docs      - mv ./.output/public ./docs      - touch ./docs/.nojekyll  - name: publish    image: plugins/gh-pages    settings:      target_branch: gh-pages      username:        from_secret: github_username      password:        from_secret: github_token

Here we're moving ./.output/public to ./docs, because #nuxt creates symlink for docs and git can't work with that.

Also we create .nojekyll at the root of repo, so github's internal engine won't ignore files that start with underscore.

Additional reading

btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/docker/private-docker-registry/_payload.js b/docker/private-docker-registry/_payload.js index 51a95a2..627699f 100644 --- a/docker/private-docker-registry/_payload.js +++ b/docker/private-docker-registry/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:B,_path:C},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-3LsByI0Qek":{_path:C,_dir:"docker",_draft:t,_partial:t,_locale:"en",_empty:t,title:B,description:"Suitable to work with Drone-ci for hosting private #docker images.",excerpt:{type:D,children:[{type:a,tag:n,props:{},children:[{type:c,value:E},{type:a,tag:F,props:{href:p},children:[{type:c,value:p}]},{type:c,value:G}]},{type:a,tag:q,props:{id:u},children:[{type:c,value:v}]},{type:a,tag:n,props:{},children:[{type:c,value:H}]},{type:a,tag:i,props:{code:w,language:r},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:c,value:w}]}]}]},{type:a,tag:i,props:{code:x,language:I},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:c,value:x}]}]}]},{type:a,tag:q,props:{id:y},children:[{type:c,value:z}]},{type:a,tag:n,props:{},children:[{type:c,value:J}]},{type:a,tag:K,props:{},children:[{type:a,tag:L,props:{},children:[{type:c,value:M}]}]},{type:a,tag:i,props:{code:A,language:r},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:c,value:A}]}]}]}]},body:{type:D,children:[{type:a,tag:n,props:{},children:[{type:c,value:E},{type:a,tag:F,props:{href:p},children:[{type:c,value:p}]},{type:c,value:G}]},{type:a,tag:q,props:{id:u},children:[{type:c,value:v}]},{type:a,tag:n,props:{},children:[{type:c,value:H}]},{type:a,tag:i,props:{code:w,language:r},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" --entrypoint htpasswd registry:2 \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -Bbn user mypassword "}]},{type:a,tag:b,props:{class:"ct-411df8"},children:[{type:c,value:"\u003E"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" auth\u002Fregistry.password"}]}]}]}]}]},{type:a,tag:i,props:{code:x,language:I},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"version"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"3\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"services"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"registry"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"docker__registry"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"registry:2"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"5000:5000"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:U}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=\u002Fdata"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_AUTH=htpasswd"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_AUTH_HTPASSWD_REALM=Registry"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_AUTH_HTPASSWD_PATH=\u002Fauth\u002Fregistry.password"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_HTTP_SECRET=password"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_STORAGE_DELETE_ENABLED=true"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"volumes"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:".\u002Fregistry\u002Fauth:\u002Fauth"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:".\u002Fregistry\u002Fdata:\u002Fdata"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"ui"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"docker__ui"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"parabuzzle\u002Fcraneoperator:latest"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"80:80"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:U}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_HOST=registry"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_PORT=5000"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_PROTOCOL=http"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"ALLOW_REGISTRY_LOGIN=true"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_ALLOW_DELETE=true"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"USERNAME=registry"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PASSWORD=password"}]}]}]}]}]},{type:a,tag:q,props:{id:y},children:[{type:c,value:z}]},{type:a,tag:n,props:{},children:[{type:c,value:J}]},{type:a,tag:K,props:{},children:[{type:a,tag:L,props:{},children:[{type:c,value:M}]}]},{type:a,tag:i,props:{code:A,language:r},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:W},children:[{type:c,value:"# Try this first"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" --rm anoxis\u002Fregistry-cli \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -r https:\u002F\u002Fregistry.url \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -l user:password \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" --delete \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" --num 2"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:W},children:[{type:c,value:"# Then this "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"docker run -it \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -v \u002Fpath\u002Fto\u002Fregistry\u002Fdata:\u002Fregistry \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -e REGISTRY_URL=https:\u002F\u002Fregistry.url \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -e DRY_RUN="}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"false\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -e REGISTRY_AUTH="}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"user:password\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" mortensrasmussen\u002Fdocker-registry-manifest-cleanup"}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-278ecf{color:#8B949E}.ct-95d999{color:#A5D6FF}.ct-6bd705{color:#7EE787}.ct-411df8{color:#FF7B72}.ct-bf22f1{color:#C9D1D9}.light .ct-bf22f1{color:#657B83}.light .ct-411df8{color:#859900}.light .ct-6bd705{color:#268BD2}.light .ct-95d999{color:#2AA198}.light .ct-278ecf{color:#93A1A1}"}]}],toc:{title:l,searchDepth:s,depth:s,links:[{id:u,depth:s,text:v},{id:y,depth:s,text:z}]}},_type:"markdown",_id:"content:Docker:Private docker registry.md",_source:"content",_file:"Docker\u002FPrivate docker registry.md",_extension:"md"}},prerenderedAt:1667469955954}}("element","span","text","ct-bf22f1","line","ct-95d999","ct-6bd705"," - ","code"," ",":","",": ","p","pre","Drone-ci","h2","shell",2,false,"sample-docker-compose-for-custom-docker-registry","Sample docker-compose for custom docker registry","docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword \u003E auth\u002Fregistry.password\n","version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=\u002Fdata\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=\u002Fauth\u002Fregistry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - .\u002Fregistry\u002Fauth:\u002Fauth\n - .\u002Fregistry\u002Fdata:\u002Fdata\n ui:\n container_name: docker__ui\n image: parabuzzle\u002Fcraneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n","squash-layers-on-registry","Squash layers on registry","# Try this first\ndocker run \\\n --rm anoxis\u002Fregistry-cli \\\n -r https:\u002F\u002Fregistry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v \u002Fpath\u002Fto\u002Fregistry\u002Fdata:\u002Fregistry \\\n -e REGISTRY_URL=https:\u002F\u002Fregistry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen\u002Fdocker-registry-manifest-cleanup\n","Private Docker Registry","\u002Fdocker\u002Fprivate-docker-registry","root","Suitable to work with ","a"," for hosting private #docker images.","This one brings up private docker registry with ui. First you'll need to generate password for it:","yaml","Sometimes you need to squash all layers in docker registry to free up disk space.","ol","li","Run this command to mark oldest layers","docker run \\"," ","container_name","image","ports"," - ","restart","always","environment","ct-278ecf"," \\")) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:B,_path:C},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-3LsByI0Qek":{_path:C,_dir:"docker",_draft:t,_partial:t,_locale:"en",_empty:t,title:B,description:"Suitable to work with Drone-ci for hosting private #docker images.",excerpt:{type:D,children:[{type:a,tag:n,props:{},children:[{type:c,value:E},{type:a,tag:F,props:{href:p},children:[{type:c,value:p}]},{type:c,value:G}]},{type:a,tag:q,props:{id:u},children:[{type:c,value:v}]},{type:a,tag:n,props:{},children:[{type:c,value:H}]},{type:a,tag:i,props:{code:w,language:r},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:c,value:w}]}]}]},{type:a,tag:i,props:{code:x,language:I},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:c,value:x}]}]}]},{type:a,tag:q,props:{id:y},children:[{type:c,value:z}]},{type:a,tag:n,props:{},children:[{type:c,value:J}]},{type:a,tag:K,props:{},children:[{type:a,tag:L,props:{},children:[{type:c,value:M}]}]},{type:a,tag:i,props:{code:A,language:r},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:c,value:A}]}]}]}]},body:{type:D,children:[{type:a,tag:n,props:{},children:[{type:c,value:E},{type:a,tag:F,props:{href:p},children:[{type:c,value:p}]},{type:c,value:G}]},{type:a,tag:q,props:{id:u},children:[{type:c,value:v}]},{type:a,tag:n,props:{},children:[{type:c,value:H}]},{type:a,tag:i,props:{code:w,language:r},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" --entrypoint htpasswd registry:2 \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -Bbn user mypassword "}]},{type:a,tag:b,props:{class:"ct-dee827"},children:[{type:c,value:"\u003E"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" auth\u002Fregistry.password"}]}]}]}]}]},{type:a,tag:i,props:{code:x,language:I},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"version"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"3\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"services"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"registry"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"docker__registry"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"registry:2"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"5000:5000"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:U}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=\u002Fdata"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_AUTH=htpasswd"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_AUTH_HTPASSWD_REALM=Registry"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_AUTH_HTPASSWD_PATH=\u002Fauth\u002Fregistry.password"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_HTTP_SECRET=password"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_STORAGE_DELETE_ENABLED=true"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"volumes"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:".\u002Fregistry\u002Fauth:\u002Fauth"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:".\u002Fregistry\u002Fdata:\u002Fdata"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"ui"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"docker__ui"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"parabuzzle\u002Fcraneoperator:latest"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"80:80"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:U}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_HOST=registry"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_PORT=5000"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_PROTOCOL=http"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"ALLOW_REGISTRY_LOGIN=true"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"REGISTRY_ALLOW_DELETE=true"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"USERNAME=registry"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PASSWORD=password"}]}]}]}]}]},{type:a,tag:q,props:{id:y},children:[{type:c,value:z}]},{type:a,tag:n,props:{},children:[{type:c,value:J}]},{type:a,tag:K,props:{},children:[{type:a,tag:L,props:{},children:[{type:c,value:M}]}]},{type:a,tag:i,props:{code:A,language:r},children:[{type:a,tag:o,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:W},children:[{type:c,value:"# Try this first"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" --rm anoxis\u002Fregistry-cli \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -r https:\u002F\u002Fregistry.url \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -l user:password \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" --delete \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" --num 2"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:W},children:[{type:c,value:"# Then this "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"docker run -it \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -v \u002Fpath\u002Fto\u002Fregistry\u002Fdata:\u002Fregistry \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -e REGISTRY_URL=https:\u002F\u002Fregistry.url \\"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -e DRY_RUN="}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"false\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" -e REGISTRY_AUTH="}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"user:password\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:X}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" mortensrasmussen\u002Fdocker-registry-manifest-cleanup"}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-07355f{color:#8B949E}.ct-70f4bc{color:#A5D6FF}.ct-cb7cf9{color:#7EE787}.ct-dee827{color:#FF7B72}.ct-aad9c7{color:#C9D1D9}.light .ct-aad9c7{color:#657B83}.light .ct-dee827{color:#859900}.light .ct-cb7cf9{color:#268BD2}.light .ct-70f4bc{color:#2AA198}.light .ct-07355f{color:#93A1A1}"}]}],toc:{title:l,searchDepth:s,depth:s,links:[{id:u,depth:s,text:v},{id:y,depth:s,text:z}]}},_type:"markdown",_id:"content:Docker:Private docker registry.md",_source:"content",_file:"Docker\u002FPrivate docker registry.md",_extension:"md"}},prerenderedAt:1667480032389}}("element","span","text","ct-aad9c7","line","ct-70f4bc","ct-cb7cf9"," - ","code"," ",":","",": ","p","pre","Drone-ci","h2","shell",2,false,"sample-docker-compose-for-custom-docker-registry","Sample docker-compose for custom docker registry","docker run \\\n --entrypoint htpasswd registry:2 \\\n -Bbn user mypassword \u003E auth\u002Fregistry.password\n","version: \"3\"\nservices:\n registry:\n container_name: docker__registry\n image: registry:2\n ports:\n - 5000:5000\n restart: always\n environment:\n - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=\u002Fdata\n - REGISTRY_AUTH=htpasswd\n - REGISTRY_AUTH_HTPASSWD_REALM=Registry\n - REGISTRY_AUTH_HTPASSWD_PATH=\u002Fauth\u002Fregistry.password\n - REGISTRY_HTTP_SECRET=password\n - REGISTRY_STORAGE_DELETE_ENABLED=true\n volumes:\n - .\u002Fregistry\u002Fauth:\u002Fauth\n - .\u002Fregistry\u002Fdata:\u002Fdata\n ui:\n container_name: docker__ui\n image: parabuzzle\u002Fcraneoperator:latest\n ports:\n - 80:80\n restart: always\n environment:\n - REGISTRY_HOST=registry\n - REGISTRY_PORT=5000\n - REGISTRY_PROTOCOL=http\n - ALLOW_REGISTRY_LOGIN=true\n - REGISTRY_ALLOW_DELETE=true\n - USERNAME=registry\n - PASSWORD=password\n","squash-layers-on-registry","Squash layers on registry","# Try this first\ndocker run \\\n --rm anoxis\u002Fregistry-cli \\\n -r https:\u002F\u002Fregistry.url \\\n -l user:password \\\n --delete \\\n --num 2\n\n# Then this \ndocker run -it \\\n -v \u002Fpath\u002Fto\u002Fregistry\u002Fdata:\u002Fregistry \\\n -e REGISTRY_URL=https:\u002F\u002Fregistry.url \\\n -e DRY_RUN=\"false\" \\\n -e REGISTRY_AUTH=\"user:password\" \\\n mortensrasmussen\u002Fdocker-registry-manifest-cleanup\n","Private Docker Registry","\u002Fdocker\u002Fprivate-docker-registry","root","Suitable to work with ","a"," for hosting private #docker images.","This one brings up private docker registry with ui. First you'll need to generate password for it:","yaml","Sometimes you need to squash all layers in docker registry to free up disk space.","ol","li","Run this command to mark oldest layers","docker run \\"," ","container_name","image","ports"," - ","restart","always","environment","ct-07355f"," \\")) \ No newline at end of file diff --git a/docker/private-docker-registry/index.html b/docker/private-docker-registry/index.html index f62bbeb..34b9d51 100644 --- a/docker/private-docker-registry/index.html +++ b/docker/private-docker-registry/index.html @@ -1,6 +1,6 @@ -Private Docker Registry • Obsidian Garden -

Private Docker Registry

Suitable to work with Drone-ci for hosting private #docker images.

Sample docker-compose for custom docker registry

This one brings up private docker registry with ui. First you'll need to generate password for it:

docker run \  --entrypoint htpasswd registry:2 \  -Bbn user mypassword > auth/registry.password
version: "3"services:  registry:    container_name: docker__registry    image: registry:2    ports:    - 5000:5000    restart: always    environment:      - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data      - REGISTRY_AUTH=htpasswd      - REGISTRY_AUTH_HTPASSWD_REALM=Registry      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password      - REGISTRY_HTTP_SECRET=password      - REGISTRY_STORAGE_DELETE_ENABLED=true    volumes:      - ./registry/auth:/auth      - ./registry/data:/data  ui:    container_name: docker__ui    image: parabuzzle/craneoperator:latest    ports:    - 80:80    restart: always    environment:      - REGISTRY_HOST=registry      - REGISTRY_PORT=5000      - REGISTRY_PROTOCOL=http      - ALLOW_REGISTRY_LOGIN=true      - REGISTRY_ALLOW_DELETE=true      - USERNAME=registry      - PASSWORD=password

Squash layers on registry

Sometimes you need to squash all layers in docker registry to free up disk space.

  1. Run this command to mark oldest layers
# Try this firstdocker run \  --rm anoxis/registry-cli \  -r https://registry.url \  -l user:password \  --delete \  --num 2# Then this docker run -it \    -v /path/to/registry/data:/registry \    -e REGISTRY_URL=https://registry.url \    -e DRY_RUN="false" \    -e REGISTRY_AUTH="user:password" \    mortensrasmussen/docker-registry-manifest-cleanup
btw, have a nice day
(2018 - 2022) muerwre
+

Private Docker Registry

Suitable to work with Drone-ci for hosting private #docker images.

Sample docker-compose for custom docker registry

This one brings up private docker registry with ui. First you'll need to generate password for it:

docker run \  --entrypoint htpasswd registry:2 \  -Bbn user mypassword > auth/registry.password
version: "3"services:  registry:    container_name: docker__registry    image: registry:2    ports:    - 5000:5000    restart: always    environment:      - REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/data      - REGISTRY_AUTH=htpasswd      - REGISTRY_AUTH_HTPASSWD_REALM=Registry      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/registry.password      - REGISTRY_HTTP_SECRET=password      - REGISTRY_STORAGE_DELETE_ENABLED=true    volumes:      - ./registry/auth:/auth      - ./registry/data:/data  ui:    container_name: docker__ui    image: parabuzzle/craneoperator:latest    ports:    - 80:80    restart: always    environment:      - REGISTRY_HOST=registry      - REGISTRY_PORT=5000      - REGISTRY_PROTOCOL=http      - ALLOW_REGISTRY_LOGIN=true      - REGISTRY_ALLOW_DELETE=true      - USERNAME=registry      - PASSWORD=password

Squash layers on registry

Sometimes you need to squash all layers in docker registry to free up disk space.

  1. Run this command to mark oldest layers
# Try this firstdocker run \  --rm anoxis/registry-cli \  -r https://registry.url \  -l user:password \  --delete \  --num 2# Then this docker run -it \    -v /path/to/registry/data:/registry \    -e REGISTRY_URL=https://registry.url \    -e DRY_RUN="false" \    -e REGISTRY_AUTH="user:password" \    mortensrasmussen/docker-registry-manifest-cleanup
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/docker/refresh-containers-on-pull/_payload.js b/docker/refresh-containers-on-pull/_payload.js index 83f17f8..09c6074 100644 --- a/docker/refresh-containers-on-pull/_payload.js +++ b/docker/refresh-containers-on-pull/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:t,_path:u},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-8eno4meLw0":{_path:u,_dir:"docker",_draft:n,_partial:n,_locale:"en",_empty:n,title:t,description:k,excerpt:{type:v,children:[{type:a,tag:w,props:{id:o},children:[{type:b,value:p}]},{type:a,tag:x,props:{},children:[{type:a,tag:h,props:{href:y,rel:[z]},children:[{type:b,value:A}]},{type:b,value:B},{type:a,tag:h,props:{href:C},children:[{type:b,value:D}]},{type:b,value:E},{type:a,tag:h,props:{href:l},children:[{type:b,value:l}]},{type:b,value:F}]},{type:a,tag:m,props:{code:q,language:G},children:[{type:a,tag:H,props:{},children:[{type:a,tag:m,props:{__ignoreMap:k},children:[{type:b,value:q}]}]}]}]},body:{type:v,children:[{type:a,tag:w,props:{id:o},children:[{type:b,value:p}]},{type:a,tag:x,props:{},children:[{type:a,tag:h,props:{href:y,rel:[z]},children:[{type:b,value:A}]},{type:b,value:B},{type:a,tag:h,props:{href:C},children:[{type:b,value:D}]},{type:b,value:E},{type:a,tag:h,props:{href:l},children:[{type:b,value:l}]},{type:b,value:F}]},{type:a,tag:m,props:{code:q,language:G},children:[{type:a,tag:H,props:{},children:[{type:a,tag:m,props:{__ignoreMap:k},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"version"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"\"3\""}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"services"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"watchtower"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"container_name"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"docker__watchtower"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"image"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"v2tec\u002Fwatchtower"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"restart"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"always"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"volumes"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:I}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"\u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:I}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"\u002Fhome\u002Fuser\u002F.docker\u002Fconfig.json:\u002Fconfig.json"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"command"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"--interval 60 image_1 image_2"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-f5251e{color:#A5D6FF}.ct-c68bc8{color:#C9D1D9}.ct-379eb3{color:#7EE787}.light .ct-379eb3{color:#268BD2}.light .ct-c68bc8{color:#657B83}.light .ct-f5251e{color:#2AA198}"}]}],toc:{title:k,searchDepth:s,depth:s,links:[{id:o,depth:s,text:p}]}},_type:"markdown",_id:"content:Docker:Refresh containers on pull.md",_source:"content",_file:"Docker\u002FRefresh containers on pull.md",_extension:"md"}},prerenderedAt:1667469956015}}("element","text","span","ct-c68bc8","line","ct-379eb3","ct-f5251e","a",": "," ","","Drone-ci","code",false,"setting-up-watchtower","Setting up watchtower","version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec\u002Fwatchtower\n restart: always\n volumes:\n - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n - \u002Fhome\u002Fuser\u002F.docker\u002Fconfig.json:\u002Fconfig.json\n command: --interval 60 image_1 image_2\n",":",2,"Refresh Containers On Pull","\u002Fdocker\u002Frefresh-containers-on-pull","root","h2","p","https:\u002F\u002Fcontainrrr.dev\u002Fwatchtower\u002F","nofollow","Watchtower"," will automatically pull updated #docker containers. Can be used with ","Private%20docker%20registry","Private docker registry"," and ",".","yaml","pre"," - ")) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:t,_path:u},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-8eno4meLw0":{_path:u,_dir:"docker",_draft:n,_partial:n,_locale:"en",_empty:n,title:t,description:k,excerpt:{type:v,children:[{type:a,tag:w,props:{id:o},children:[{type:b,value:p}]},{type:a,tag:x,props:{},children:[{type:a,tag:h,props:{href:y,rel:[z]},children:[{type:b,value:A}]},{type:b,value:B},{type:a,tag:h,props:{href:C},children:[{type:b,value:D}]},{type:b,value:E},{type:a,tag:h,props:{href:l},children:[{type:b,value:l}]},{type:b,value:F}]},{type:a,tag:m,props:{code:q,language:G},children:[{type:a,tag:H,props:{},children:[{type:a,tag:m,props:{__ignoreMap:k},children:[{type:b,value:q}]}]}]}]},body:{type:v,children:[{type:a,tag:w,props:{id:o},children:[{type:b,value:p}]},{type:a,tag:x,props:{},children:[{type:a,tag:h,props:{href:y,rel:[z]},children:[{type:b,value:A}]},{type:b,value:B},{type:a,tag:h,props:{href:C},children:[{type:b,value:D}]},{type:b,value:E},{type:a,tag:h,props:{href:l},children:[{type:b,value:l}]},{type:b,value:F}]},{type:a,tag:m,props:{code:q,language:G},children:[{type:a,tag:H,props:{},children:[{type:a,tag:m,props:{__ignoreMap:k},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"version"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"\"3\""}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"services"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"watchtower"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"container_name"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"docker__watchtower"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"image"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"v2tec\u002Fwatchtower"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"restart"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"always"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"volumes"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:I}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"\u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:I}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"\u002Fhome\u002Fuser\u002F.docker\u002Fconfig.json:\u002Fconfig.json"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"command"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"--interval 60 image_1 image_2"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-4ffa29{color:#A5D6FF}.ct-d995bf{color:#C9D1D9}.ct-38af48{color:#7EE787}.light .ct-38af48{color:#268BD2}.light .ct-d995bf{color:#657B83}.light .ct-4ffa29{color:#2AA198}"}]}],toc:{title:k,searchDepth:s,depth:s,links:[{id:o,depth:s,text:p}]}},_type:"markdown",_id:"content:Docker:Refresh containers on pull.md",_source:"content",_file:"Docker\u002FRefresh containers on pull.md",_extension:"md"}},prerenderedAt:1667480032467}}("element","text","span","ct-d995bf","line","ct-38af48","ct-4ffa29","a",": "," ","","Drone-ci","code",false,"setting-up-watchtower","Setting up watchtower","version: \"3\"\n\nservices:\n watchtower:\n container_name: docker__watchtower\n image: v2tec\u002Fwatchtower\n restart: always\n volumes:\n - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n - \u002Fhome\u002Fuser\u002F.docker\u002Fconfig.json:\u002Fconfig.json\n command: --interval 60 image_1 image_2\n",":",2,"Refresh Containers On Pull","\u002Fdocker\u002Frefresh-containers-on-pull","root","h2","p","https:\u002F\u002Fcontainrrr.dev\u002Fwatchtower\u002F","nofollow","Watchtower"," will automatically pull updated #docker containers. Can be used with ","Private%20docker%20registry","Private docker registry"," and ",".","yaml","pre"," - ")) \ No newline at end of file diff --git a/docker/refresh-containers-on-pull/index.html b/docker/refresh-containers-on-pull/index.html index 53727ad..8ea41b1 100644 --- a/docker/refresh-containers-on-pull/index.html +++ b/docker/refresh-containers-on-pull/index.html @@ -1,6 +1,6 @@ -Refresh Containers On Pull • Obsidian Garden -

Refresh Containers On Pull

Setting up watchtower

Watchtower will automatically pull updated #docker containers. Can be used with Private docker registry and Drone-ci.

version: "3"services:  watchtower:    container_name: docker__watchtower    image: v2tec/watchtower    restart: always    volumes:      - /var/run/docker.sock:/var/run/docker.sock      - /home/user/.docker/config.json:/config.json    command: --interval 60 image_1 image_2
btw, have a nice day
(2018 - 2022) muerwre
+

Refresh Containers On Pull

Setting up watchtower

Watchtower will automatically pull updated #docker containers. Can be used with Private docker registry and Drone-ci.

version: "3"services:  watchtower:    container_name: docker__watchtower    image: v2tec/watchtower    restart: always    volumes:      - /var/run/docker.sock:/var/run/docker.sock      - /home/user/.docker/config.json:/config.json    command: --interval 60 image_1 image_2
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/docker/seed-dump-inside-docker/_payload.js b/docker/seed-dump-inside-docker/_payload.js index 7e02b86..4d3a5e6 100644 --- a/docker/seed-dump-inside-docker/_payload.js +++ b/docker/seed-dump-inside-docker/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:o,_path:p},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-TQfPEagSjQ":{_path:p,_dir:"docker",_draft:j,_partial:j,_locale:"en",_empty:j,title:o,description:"If you need to seed .sql dump in #docker container, just run this command. Also you can try to rsync file with SSH to get it from remote host.",excerpt:{type:q,children:[{type:a,tag:r,props:{},children:[{type:b,value:s},{type:a,tag:t,props:{},children:[{type:b,value:u}]},{type:b,value:v},{type:a,tag:w,props:{href:x},children:[{type:b,value:y}]},{type:b,value:z}]},{type:a,tag:i,props:{code:k,language:A},children:[{type:a,tag:B,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:b,value:k}]}]}]}]},body:{type:q,children:[{type:a,tag:r,props:{},children:[{type:b,value:s},{type:a,tag:t,props:{},children:[{type:b,value:u}]},{type:b,value:v},{type:a,tag:w,props:{href:x},children:[{type:b,value:y}]},{type:b,value:z}]},{type:a,tag:i,props:{code:k,language:A},children:[{type:a,tag:B,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:m},children:[{type:b,value:C}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:m},children:[{type:b,value:"# usage: .\u002Fscript.sh \"\u002Fpath\u002Fto\u002Fdump.sql\""}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:m},children:[{type:b,value:C}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"DUMP_PATH="}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"1"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"CONTAINER="}]},{type:a,tag:c,props:{class:n},children:[{type:b,value:"\"db\""}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"USER=root"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"PASSWORD=password"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"DB=database"}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"cat "}]},{type:a,tag:c,props:{class:n},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"DUMP_PATH"}]},{type:a,tag:c,props:{class:n},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:"ct-084b84"},children:[{type:b,value:"|"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" docker "}]},{type:a,tag:c,props:{class:"ct-371fb5"},children:[{type:b,value:"exec"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" -i "}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"CONTAINER"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" mysql -u"}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"USER"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" -p"}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"PASSWORD"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"DB"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-371fb5{color:#79C0FF}.ct-084b84{color:#FF7B72}.ct-da7cb6{color:#A5D6FF}.ct-96c3f7{color:#C9D1D9}.ct-1ae675{color:#C9D1D9}.ct-74a2bf{color:#C9D1D9}.ct-aac0b0{color:#8B949E}.light .ct-aac0b0{color:#93A1A1}.light .ct-74a2bf{color:#657B83}.light .ct-1ae675{color:#859900}.light .ct-96c3f7{color:#268BD2}.light .ct-da7cb6{color:#2AA198}.light .ct-084b84{color:#859900}.light .ct-371fb5{color:#268BD2}"}]}],toc:{title:l,searchDepth:F,depth:F,links:[]}},_type:"markdown",_id:"content:Docker:Seed dump inside docker.md",_source:"content",_file:"Docker\u002FSeed dump inside docker.md",_extension:"md"}},prerenderedAt:1667469956058}}("element","text","span","ct-74a2bf","line","ct-1ae675","$","ct-96c3f7","code",false,"#####\n# usage: .\u002Fscript.sh \"\u002Fpath\u002Fto\u002Fdump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n","","ct-aac0b0","ct-da7cb6","Seed Dump Inside Docker","\u002Fdocker\u002Fseed-dump-inside-docker","root","p","If you need to seed ","code-inline",".sql"," dump in #docker container, just run this command. Also you can try to ","a","\u002Flinux\u002FRsync%20file%20with%20SSH","rsync file with SSH"," to get it from remote host.","shell","pre","#####","\""," ",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:o,_path:p},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-TQfPEagSjQ":{_path:p,_dir:"docker",_draft:j,_partial:j,_locale:"en",_empty:j,title:o,description:"If you need to seed .sql dump in #docker container, just run this command. Also you can try to rsync file with SSH to get it from remote host.",excerpt:{type:q,children:[{type:a,tag:r,props:{},children:[{type:b,value:s},{type:a,tag:t,props:{},children:[{type:b,value:u}]},{type:b,value:v},{type:a,tag:w,props:{href:x},children:[{type:b,value:y}]},{type:b,value:z}]},{type:a,tag:i,props:{code:k,language:A},children:[{type:a,tag:B,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:b,value:k}]}]}]}]},body:{type:q,children:[{type:a,tag:r,props:{},children:[{type:b,value:s},{type:a,tag:t,props:{},children:[{type:b,value:u}]},{type:b,value:v},{type:a,tag:w,props:{href:x},children:[{type:b,value:y}]},{type:b,value:z}]},{type:a,tag:i,props:{code:k,language:A},children:[{type:a,tag:B,props:{},children:[{type:a,tag:i,props:{__ignoreMap:l},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:m},children:[{type:b,value:C}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:m},children:[{type:b,value:"# usage: .\u002Fscript.sh \"\u002Fpath\u002Fto\u002Fdump.sql\""}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:m},children:[{type:b,value:C}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"DUMP_PATH="}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"1"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"CONTAINER="}]},{type:a,tag:c,props:{class:n},children:[{type:b,value:"\"db\""}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"USER=root"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"PASSWORD=password"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"DB=database"}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"cat "}]},{type:a,tag:c,props:{class:n},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"DUMP_PATH"}]},{type:a,tag:c,props:{class:n},children:[{type:b,value:D}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:"ct-912b98"},children:[{type:b,value:"|"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" docker "}]},{type:a,tag:c,props:{class:"ct-c90fb8"},children:[{type:b,value:"exec"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" -i "}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"CONTAINER"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" mysql -u"}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"USER"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" -p"}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"PASSWORD"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"DB"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-c90fb8{color:#79C0FF}.ct-912b98{color:#FF7B72}.ct-464a66{color:#A5D6FF}.ct-a801ae{color:#C9D1D9}.ct-bfeec8{color:#C9D1D9}.ct-2efaf7{color:#C9D1D9}.ct-cec5ec{color:#8B949E}.light .ct-cec5ec{color:#93A1A1}.light .ct-2efaf7{color:#657B83}.light .ct-bfeec8{color:#859900}.light .ct-a801ae{color:#268BD2}.light .ct-464a66{color:#2AA198}.light .ct-912b98{color:#859900}.light .ct-c90fb8{color:#268BD2}"}]}],toc:{title:l,searchDepth:F,depth:F,links:[]}},_type:"markdown",_id:"content:Docker:Seed dump inside docker.md",_source:"content",_file:"Docker\u002FSeed dump inside docker.md",_extension:"md"}},prerenderedAt:1667480032509}}("element","text","span","ct-2efaf7","line","ct-bfeec8","$","ct-a801ae","code",false,"#####\n# usage: .\u002Fscript.sh \"\u002Fpath\u002Fto\u002Fdump.sql\"\n#####\n\nDUMP_PATH=$1\nCONTAINER=\"db\"\nUSER=root\nPASSWORD=password\nDB=database\n\ncat \"$DUMP_PATH\" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB\n","","ct-cec5ec","ct-464a66","Seed Dump Inside Docker","\u002Fdocker\u002Fseed-dump-inside-docker","root","p","If you need to seed ","code-inline",".sql"," dump in #docker container, just run this command. Also you can try to ","a","\u002Flinux\u002FRsync%20file%20with%20SSH","rsync file with SSH"," to get it from remote host.","shell","pre","#####","\""," ",2)) \ No newline at end of file diff --git a/docker/seed-dump-inside-docker/index.html b/docker/seed-dump-inside-docker/index.html index 04f1e26..d85c087 100644 --- a/docker/seed-dump-inside-docker/index.html +++ b/docker/seed-dump-inside-docker/index.html @@ -1,6 +1,6 @@ -Seed Dump Inside Docker • Obsidian Garden -

Seed Dump Inside Docker

If you need to seed .sql dump in #docker container, just run this command. Also you can try to rsync file with SSH to get it from remote host.

###### usage: ./script.sh "/path/to/dump.sql"#####DUMP_PATH=$1CONTAINER="db"USER=rootPASSWORD=passwordDB=databasecat "$DUMP_PATH" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB
btw, have a nice day
(2018 - 2022) muerwre
+

Seed Dump Inside Docker

If you need to seed .sql dump in #docker container, just run this command. Also you can try to rsync file with SSH to get it from remote host.

###### usage: ./script.sh "/path/to/dump.sql"#####DUMP_PATH=$1CONTAINER="db"USER=rootPASSWORD=passwordDB=databasecat "$DUMP_PATH" | docker exec -i $CONTAINER mysql -u$USER -p$PASSWORD $DB
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/docker/wait-for-mysql/_payload.js b/docker/wait-for-mysql/_payload.js index 5a1b8af..65f16a0 100644 --- a/docker/wait-for-mysql/_payload.js +++ b/docker/wait-for-mysql/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:z,_path:A},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-LRHpXC9dvS":{_path:A,_dir:"docker",_draft:r,_partial:r,_locale:"en",_empty:r,title:z,description:"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections",excerpt:{type:B,children:[{type:a,tag:i,props:{},children:[{type:a,tag:m,props:{href:C,rel:[D]},children:[{type:c,value:E}]},{type:c,value:F}]},{type:a,tag:i,props:{},children:[{type:c,value:G}]},{type:a,tag:i,props:{},children:[{type:c,value:H},{type:a,tag:I,props:{},children:[{type:c,value:J}]},{type:c,value:K}]},{type:a,tag:n,props:{code:s,language:L},children:[{type:a,tag:M,props:{},children:[{type:a,tag:n,props:{__ignoreMap:t},children:[{type:c,value:s}]}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:m,props:{href:N},children:[{type:c,value:O}]}]}]},body:{type:B,children:[{type:a,tag:i,props:{},children:[{type:a,tag:m,props:{href:C,rel:[D]},children:[{type:c,value:E}]},{type:c,value:F}]},{type:a,tag:i,props:{},children:[{type:c,value:G}]},{type:a,tag:i,props:{},children:[{type:c,value:H},{type:a,tag:I,props:{},children:[{type:c,value:J}]},{type:c,value:K}]},{type:a,tag:n,props:{code:s,language:L},children:[{type:a,tag:M,props:{},children:[{type:a,tag:n,props:{__ignoreMap:t},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"# Waits for mysql to become actually available"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:"ct-ca8f86"},children:[{type:c,value:"wait_for_mysql"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"() {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" query="}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"SELECT count(*) FROM users\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" timeout=180 "}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"# 3 minutes limit"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" i=0"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"while"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"!"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" docker "}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"exec"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" -it "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" mysql --user="}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"2"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" -e "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"query"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"do"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" sleep 1"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" i="}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"$(("}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"+"}]},{type:a,tag:b,props:{class:"ct-6aee57"},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"))"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"if"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" [[ "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"-ge"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"timeout"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ]]"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"then"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"echo"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"[Error] can't properly query MySQL after "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" secs\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"exit"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" 1"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"fi"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"done"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"# usage: wait_for_mysql miin-mysql-dev root password database"}]}]}]}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:m,props:{href:N},children:[{type:c,value:O}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-6aee57{color:#79C0FF}.ct-36fa5c{color:#C9D1D9}.ct-d3c17d{color:#C9D1D9}.ct-9ea5d9{color:#79C0FF}.ct-ec8705{color:#FF7B72}.ct-d554cb{color:#A5D6FF}.ct-d5194e{color:#C9D1D9}.ct-ca8f86{color:#D2A8FF}.ct-09c516{color:#8B949E}.light .ct-09c516{color:#93A1A1}.light .ct-ca8f86{color:#268BD2}.light .ct-d5194e{color:#657B83}.light .ct-d554cb{color:#2AA198}.light .ct-ec8705{color:#859900}.light .ct-9ea5d9{color:#268BD2}.light .ct-d3c17d{color:#859900}.light .ct-36fa5c{color:#268BD2}.light .ct-6aee57{color:#D33682}"}]}],toc:{title:t,searchDepth:S,depth:S,links:[]}},_type:"markdown",_id:"content:Docker:Wait for mysql.md",_source:"content",_file:"Docker\u002FWait for mysql.md",_extension:"md"}},prerenderedAt:1667469956093}}("element","span","text","ct-d5194e","line","ct-d554cb","ct-ec8705","ct-d3c17d","p","\"","ct-36fa5c"," ","a","code"," ","$","}",false,"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 \u003E\u002Fdev\u002Fnull 2\u003E&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n","","ct-09c516","ct-9ea5d9",";","i","${","Wait For Mysql","\u002Fdocker\u002Fwait-for-mysql","root","https:\u002F\u002Fgithub.com\u002Fvishnubob\u002Fwait-for-it","nofollow","wait-for-it.sh"," doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections","This script waits for first successful query from database or exits with non-zero status after timeout.","Don't forget to change ","code-inline","$query"," for the actually working one.","shell","pre","Wait%20for%20redis","Wait for redis","1"," "," ",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:z,_path:A},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-LRHpXC9dvS":{_path:A,_dir:"docker",_draft:r,_partial:r,_locale:"en",_empty:r,title:z,description:"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections",excerpt:{type:B,children:[{type:a,tag:i,props:{},children:[{type:a,tag:m,props:{href:C,rel:[D]},children:[{type:c,value:E}]},{type:c,value:F}]},{type:a,tag:i,props:{},children:[{type:c,value:G}]},{type:a,tag:i,props:{},children:[{type:c,value:H},{type:a,tag:I,props:{},children:[{type:c,value:J}]},{type:c,value:K}]},{type:a,tag:n,props:{code:s,language:L},children:[{type:a,tag:M,props:{},children:[{type:a,tag:n,props:{__ignoreMap:t},children:[{type:c,value:s}]}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:m,props:{href:N},children:[{type:c,value:O}]}]}]},body:{type:B,children:[{type:a,tag:i,props:{},children:[{type:a,tag:m,props:{href:C,rel:[D]},children:[{type:c,value:E}]},{type:c,value:F}]},{type:a,tag:i,props:{},children:[{type:c,value:G}]},{type:a,tag:i,props:{},children:[{type:c,value:H},{type:a,tag:I,props:{},children:[{type:c,value:J}]},{type:c,value:K}]},{type:a,tag:n,props:{code:s,language:L},children:[{type:a,tag:M,props:{},children:[{type:a,tag:n,props:{__ignoreMap:t},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"# Waits for mysql to become actually available"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:"ct-4e894a"},children:[{type:c,value:"wait_for_mysql"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"() {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" query="}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"SELECT count(*) FROM users\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" timeout=180 "}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:"# 3 minutes limit"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" i=0"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"while"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"!"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" docker "}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"exec"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" -it "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" mysql --user="}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"2"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" -e "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"query"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"do"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" sleep 1"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" i="}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"$(("}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"+"}]},{type:a,tag:b,props:{class:"ct-82e697"},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"))"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"if"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" [[ "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"-ge"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"timeout"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ]]"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"then"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"echo"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"[Error] can't properly query MySQL after "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" secs\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:v},children:[{type:c,value:"exit"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" 1"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"fi"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"done"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:u},children:[{type:c,value:"# usage: wait_for_mysql miin-mysql-dev root password database"}]}]}]}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:m,props:{href:N},children:[{type:c,value:O}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-82e697{color:#79C0FF}.ct-1e03f6{color:#C9D1D9}.ct-6132de{color:#C9D1D9}.ct-6f15dd{color:#79C0FF}.ct-170fd0{color:#FF7B72}.ct-cdfdb2{color:#A5D6FF}.ct-bf65b0{color:#C9D1D9}.ct-4e894a{color:#D2A8FF}.ct-96e909{color:#8B949E}.light .ct-96e909{color:#93A1A1}.light .ct-4e894a{color:#268BD2}.light .ct-bf65b0{color:#657B83}.light .ct-cdfdb2{color:#2AA198}.light .ct-170fd0{color:#859900}.light .ct-6f15dd{color:#268BD2}.light .ct-6132de{color:#859900}.light .ct-1e03f6{color:#268BD2}.light .ct-82e697{color:#D33682}"}]}],toc:{title:t,searchDepth:S,depth:S,links:[]}},_type:"markdown",_id:"content:Docker:Wait for mysql.md",_source:"content",_file:"Docker\u002FWait for mysql.md",_extension:"md"}},prerenderedAt:1667480032546}}("element","span","text","ct-bf65b0","line","ct-cdfdb2","ct-170fd0","ct-6132de","p","\"","ct-1e03f6"," ","a","code"," ","$","}",false,"# Waits for mysql to become actually available\nwait_for_mysql() {\n query=\"SELECT count(*) FROM users\"\n \n timeout=180 # 3 minutes limit\n i=0\n \n while ! docker exec -it \"$1\" mysql --user=\"$2\" --password=\"$3\" -e \"$query\" $4 \u003E\u002Fdev\u002Fnull 2\u003E&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly query MySQL after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_mysql miin-mysql-dev root password database\n","","ct-96e909","ct-6f15dd",";","i","${","Wait For Mysql","\u002Fdocker\u002Fwait-for-mysql","root","https:\u002F\u002Fgithub.com\u002Fvishnubob\u002Fwait-for-it","nofollow","wait-for-it.sh"," doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections","This script waits for first successful query from database or exits with non-zero status after timeout.","Don't forget to change ","code-inline","$query"," for the actually working one.","shell","pre","Wait%20for%20redis","Wait for redis","1"," "," ",2)) \ No newline at end of file diff --git a/docker/wait-for-mysql/index.html b/docker/wait-for-mysql/index.html index 7ee4ba2..b262baf 100644 --- a/docker/wait-for-mysql/index.html +++ b/docker/wait-for-mysql/index.html @@ -1,6 +1,6 @@ -Wait For Mysql • Obsidian Garden -

Wait For Mysql

wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections

This script waits for first successful query from database or exits with non-zero status after timeout.

Don't forget to change $query for the actually working one.

# Waits for mysql to become actually availablewait_for_mysql() {  query="SELECT count(*) FROM users"    timeout=180 # 3 minutes limit  i=0    while ! docker exec -it "$1" mysql --user="$2"" -e "$query" do    sleep 1;    i=$(($i+1))    if [[ ${i} -ge ${timeout} ]]; then      echo "[Error] can't properly query MySQL after ${i} secs"      exit 1;    fi  done}# usage: wait_for_mysql miin-mysql-dev root password database

Wait for redis

btw, have a nice day
(2018 - 2022) muerwre
+

Wait For Mysql

wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before #mysql is ready to accept connections

This script waits for first successful query from database or exits with non-zero status after timeout.

Don't forget to change $query for the actually working one.

# Waits for mysql to become actually availablewait_for_mysql() {  query="SELECT count(*) FROM users"    timeout=180 # 3 minutes limit  i=0    while ! docker exec -it "$1" mysql --user="$2"" -e "$query" do    sleep 1;    i=$(($i+1))    if [[ ${i} -ge ${timeout} ]]; then      echo "[Error] can't properly query MySQL after ${i} secs"      exit 1;    fi  done}# usage: wait_for_mysql miin-mysql-dev root password database

Wait for redis

btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/docker/wait-for-redis/_payload.js b/docker/wait-for-redis/_payload.js index 2855309..2b9fc57 100644 --- a/docker/wait-for-redis/_payload.js +++ b/docker/wait-for-redis/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:y,_path:z}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-Wzyty7vOmU":{_path:z,_dir:"docker",_draft:p,_partial:p,_locale:"en",_empty:p,title:y,description:"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections",excerpt:{type:A,children:[{type:a,tag:j,props:{},children:[{type:a,tag:l,props:{href:B,rel:[C]},children:[{type:c,value:D}]},{type:c,value:E}]},{type:a,tag:j,props:{},children:[{type:c,value:F}]},{type:a,tag:m,props:{code:q,language:G},children:[{type:a,tag:H,props:{},children:[{type:a,tag:m,props:{__ignoreMap:r},children:[{type:c,value:q}]}]}]},{type:a,tag:j,props:{},children:[{type:a,tag:l,props:{href:I},children:[{type:c,value:J}]}]}]},body:{type:A,children:[{type:a,tag:j,props:{},children:[{type:a,tag:l,props:{href:B,rel:[C]},children:[{type:c,value:D}]},{type:c,value:E}]},{type:a,tag:j,props:{},children:[{type:c,value:F}]},{type:a,tag:m,props:{code:q,language:G},children:[{type:a,tag:H,props:{},children:[{type:a,tag:m,props:{__ignoreMap:r},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:"# Waits for redis to become actually available"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:"ct-712eb8"},children:[{type:c,value:"wait_for_redis"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"() {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" timeout=180 "}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:"# 3 minutes"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" i=0"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"while"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"!"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" docker "}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"exec"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" -it "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" redis-cli -h localhost -p 6379 -a "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"2"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ping "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"|"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" grep "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"PONG\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\u003E"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u002Fdev\u002Fnull "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"2\u003E&1;"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"do"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" sleep 1"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" i="}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"$(("}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"+"}]},{type:a,tag:b,props:{class:"ct-c59f22"},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"))"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"if"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" [[ "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"-ge"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"timeout"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ]]"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"then"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"echo"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"[Error] can't properly ping Redis container after "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:" secs\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"exit"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" 1"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"fi"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"done"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:"# usage: wait_for_redis miin-redis-dev password"}]}]}]}]}]},{type:a,tag:j,props:{},children:[{type:a,tag:l,props:{href:I},children:[{type:c,value:J}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-c59f22{color:#79C0FF}.ct-3559ef{color:#C9D1D9}.ct-b3bdff{color:#C9D1D9}.ct-36cb98{color:#A5D6FF}.ct-3c95ff{color:#79C0FF}.ct-1d18ad{color:#FF7B72}.ct-d4fcbb{color:#C9D1D9}.ct-712eb8{color:#D2A8FF}.ct-3933ec{color:#8B949E}.light .ct-3933ec{color:#93A1A1}.light .ct-712eb8{color:#268BD2}.light .ct-d4fcbb{color:#657B83}.light .ct-1d18ad{color:#859900}.light .ct-3c95ff{color:#268BD2}.light .ct-36cb98{color:#2AA198}.light .ct-b3bdff{color:#859900}.light .ct-3559ef{color:#268BD2}.light .ct-c59f22{color:#D33682}"}]}],toc:{title:r,searchDepth:O,depth:O,links:[]}},_type:"markdown",_id:"content:Docker:Wait for redis.md",_source:"content",_file:"Docker\u002FWait for redis.md",_extension:"md"}},prerenderedAt:1667469956132}}("element","span","text","ct-d4fcbb","line","ct-1d18ad","ct-36cb98","ct-b3bdff"," ","p","ct-3559ef","a","code","\"","}",false,"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" \u003E\u002Fdev\u002Fnull 2\u003E&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n","","ct-3933ec","ct-3c95ff","$",";","i","${","Wait For Redis","\u002Fdocker\u002Fwait-for-redis","root","https:\u002F\u002Fgithub.com\u002Fvishnubob\u002Fwait-for-it","nofollow","wait-for-it.sh"," doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections","This script waits for first successful ping or exits with non-zero status after 3 minutes.","shell","pre","Wait%20for%20mysql","Wait for mysql"," ","1"," "," ",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:y,_path:z}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-Wzyty7vOmU":{_path:z,_dir:"docker",_draft:p,_partial:p,_locale:"en",_empty:p,title:y,description:"wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections",excerpt:{type:A,children:[{type:a,tag:j,props:{},children:[{type:a,tag:l,props:{href:B,rel:[C]},children:[{type:c,value:D}]},{type:c,value:E}]},{type:a,tag:j,props:{},children:[{type:c,value:F}]},{type:a,tag:m,props:{code:q,language:G},children:[{type:a,tag:H,props:{},children:[{type:a,tag:m,props:{__ignoreMap:r},children:[{type:c,value:q}]}]}]},{type:a,tag:j,props:{},children:[{type:a,tag:l,props:{href:I},children:[{type:c,value:J}]}]}]},body:{type:A,children:[{type:a,tag:j,props:{},children:[{type:a,tag:l,props:{href:B,rel:[C]},children:[{type:c,value:D}]},{type:c,value:E}]},{type:a,tag:j,props:{},children:[{type:c,value:F}]},{type:a,tag:m,props:{code:q,language:G},children:[{type:a,tag:H,props:{},children:[{type:a,tag:m,props:{__ignoreMap:r},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:"# Waits for redis to become actually available"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:"ct-aa61be"},children:[{type:c,value:"wait_for_redis"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"() {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" timeout=180 "}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:"# 3 minutes"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" i=0"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"while"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"!"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" docker "}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"exec"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" -it "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" redis-cli -h localhost -p 6379 -a "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"2"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ping "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"|"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" grep "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"PONG\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\u003E"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u002Fdev\u002Fnull "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"2\u003E&1;"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"do"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" sleep 1"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" i="}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"$(("}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"+"}]},{type:a,tag:b,props:{class:"ct-4c6ed7"},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"))"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"if"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" [[ "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"-ge"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"timeout"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ]]"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"then"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"echo"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"[Error] can't properly ping Redis container after "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:" secs\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:"exit"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" 1"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"fi"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"done"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:"# usage: wait_for_redis miin-redis-dev password"}]}]}]}]}]},{type:a,tag:j,props:{},children:[{type:a,tag:l,props:{href:I},children:[{type:c,value:J}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-4c6ed7{color:#79C0FF}.ct-6155df{color:#C9D1D9}.ct-e15e70{color:#C9D1D9}.ct-72164b{color:#A5D6FF}.ct-b696db{color:#79C0FF}.ct-1a537d{color:#FF7B72}.ct-113bf5{color:#C9D1D9}.ct-aa61be{color:#D2A8FF}.ct-1cf9ad{color:#8B949E}.light .ct-1cf9ad{color:#93A1A1}.light .ct-aa61be{color:#268BD2}.light .ct-113bf5{color:#657B83}.light .ct-1a537d{color:#859900}.light .ct-b696db{color:#268BD2}.light .ct-72164b{color:#2AA198}.light .ct-e15e70{color:#859900}.light .ct-6155df{color:#268BD2}.light .ct-4c6ed7{color:#D33682}"}]}],toc:{title:r,searchDepth:O,depth:O,links:[]}},_type:"markdown",_id:"content:Docker:Wait for redis.md",_source:"content",_file:"Docker\u002FWait for redis.md",_extension:"md"}},prerenderedAt:1667480032585}}("element","span","text","ct-113bf5","line","ct-1a537d","ct-72164b","ct-e15e70"," ","p","ct-6155df","a","code","\"","}",false,"# Waits for redis to become actually available\nwait_for_redis() {\n timeout=180 # 3 minutes\n i=0\n while ! docker exec -it \"$1\" redis-cli -h localhost -p 6379 -a \"$2\" ping | grep \"PONG\" \u003E\u002Fdev\u002Fnull 2\u003E&1; do\n sleep 1;\n\n i=$(($i+1))\n if [[ ${i} -ge ${timeout} ]]; then\n echo \"[Error] can't properly ping Redis container after ${i} secs\"\n exit 1;\n fi\n done\n}\n\n# usage: wait_for_redis miin-redis-dev password\n","","ct-1cf9ad","ct-b696db","$",";","i","${","Wait For Redis","\u002Fdocker\u002Fwait-for-redis","root","https:\u002F\u002Fgithub.com\u002Fvishnubob\u002Fwait-for-it","nofollow","wait-for-it.sh"," doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections","This script waits for first successful ping or exits with non-zero status after 3 minutes.","shell","pre","Wait%20for%20mysql","Wait for mysql"," ","1"," "," ",2)) \ No newline at end of file diff --git a/docker/wait-for-redis/index.html b/docker/wait-for-redis/index.html index 16b471a..06194df 100644 --- a/docker/wait-for-redis/index.html +++ b/docker/wait-for-redis/index.html @@ -1,6 +1,6 @@ -Wait For Redis • Obsidian Garden -

Wait For Redis

wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections

This script waits for first successful ping or exits with non-zero status after 3 minutes.

# Waits for redis to become actually availablewait_for_redis() {  timeout=180 # 3 minutes  i=0  while ! docker exec -it "$1" redis-cli -h localhost -p 6379 -a "$2" ping | grep "PONG" >/dev/null 2>&1; do    sleep 1;    i=$(($i+1))    if [[ ${i} -ge ${timeout} ]]; then      echo "[Error] can't properly ping Redis container after ${i} secs"      exit 1;    fi  done}# usage: wait_for_redis miin-redis-dev password

Wait for mysql

btw, have a nice day
(2018 - 2022) muerwre
+

Wait For Redis

wait-for-it.sh doing a great job of waiting for different services to become alive, but on #MacOs #docker is binding port on container start, seconds before redis is ready to accept connections

This script waits for first successful ping or exits with non-zero status after 3 minutes.

# Waits for redis to become actually availablewait_for_redis() {  timeout=180 # 3 minutes  i=0  while ! docker exec -it "$1" redis-cli -h localhost -p 6379 -a "$2" ping | grep "PONG" >/dev/null 2>&1; do    sleep 1;    i=$(($i+1))    if [[ ${i} -ge ${timeout} ]]; then      echo "[Error] can't properly ping Redis container after ${i} secs"      exit 1;    fi  done}# usage: wait_for_redis miin-redis-dev password

Wait for mysql

btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/frontend/react-native/oauth2-login/_payload.js b/frontend/react-native/oauth2-login/_payload.js index b9f95c3..c014563 100644 --- a/frontend/react-native/oauth2-login/_payload.js +++ b/frontend/react-native/oauth2-login/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:U,_path:V},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-zuvbG5OO4q":{_path:V,_dir:"react-native",_draft:A,_partial:A,_locale:"en",_empty:A,title:U,description:B,excerpt:{type:W,children:[{type:a,tag:l,props:{},children:[{type:b,value:B}]},{type:a,tag:r,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:l,props:{},children:[{type:b,value:X},{type:a,tag:m,props:{href:s},children:[{type:b,value:s}]},{type:b,value:Y},{type:a,tag:Z,props:{},children:[{type:b,value:_}]},{type:b,value:E}]},{type:a,tag:t,props:{id:F},children:[{type:b,value:G}]},{type:a,tag:k,props:{code:H,language:u},children:[{type:a,tag:v,props:{},children:[{type:a,tag:k,props:{__ignoreMap:q},children:[{type:b,value:H}]}]}]},{type:a,tag:t,props:{id:I},children:[{type:b,value:J}]},{type:a,tag:k,props:{code:K,language:u},children:[{type:a,tag:v,props:{},children:[{type:a,tag:k,props:{__ignoreMap:q},children:[{type:b,value:K}]}]}]},{type:a,tag:r,props:{id:L},children:[{type:b,value:M}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:$,rel:[w]},children:[{type:b,value:aa}]},{type:b,value:ab},{type:a,tag:m,props:{href:ac,rel:[w]},children:[{type:b,value:ad}]},{type:b,value:ae}]}]},body:{type:W,children:[{type:a,tag:l,props:{},children:[{type:b,value:B}]},{type:a,tag:r,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:l,props:{},children:[{type:b,value:X},{type:a,tag:m,props:{href:s},children:[{type:b,value:s}]},{type:b,value:Y},{type:a,tag:Z,props:{},children:[{type:b,value:_}]},{type:b,value:E}]},{type:a,tag:t,props:{id:F},children:[{type:b,value:G}]},{type:a,tag:k,props:{code:H,language:u},children:[{type:a,tag:v,props:{},children:[{type:a,tag:k,props:{__ignoreMap:q},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:i},children:[{type:b,value:"import"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" { "}]},{type:a,tag:c,props:{class:N},children:[{type:b,value:O}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" } "}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:"from"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'react-native-app-auth'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:x}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:af}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:P}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:x}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:Q},children:[{type:b,value:"\u002F\u002F ..."}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:R}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:ag}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:S},children:[{type:b,value:O}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:ah}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" issuer: "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'https:\u002F\u002Faccounts.google.com'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ai}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aj}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:af}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"}.apps.googleusercontent.com`"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ak}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"`com.yourapp:\u002Foauth2redirect\u002Fgoogle`"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:al}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'openid'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:am}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'profile'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:an}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ao}]},{type:a,tag:c,props:{class:ap},children:[{type:b,value:aq}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ar}]}]}]}]}]},{type:a,tag:t,props:{id:I},children:[{type:b,value:J}]},{type:a,tag:k,props:{code:K,language:u},children:[{type:a,tag:v,props:{},children:[{type:a,tag:k,props:{__ignoreMap:q},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:y}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:P}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:x}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:as}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:P}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"; "}]},{type:a,tag:c,props:{class:Q},children:[{type:b,value:"\u002F\u002F better hide it somehow"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:T}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'com.yourapp'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:x}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:R}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:ag}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:S},children:[{type:b,value:O}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:ah}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" serviceConfiguration: {"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" authorizationEndpoint: "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"`https:\u002F\u002Foauth.yandex.ru\u002Fauthorize?response_type=code&client_id=${"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:y}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"}&redirect_uri=${"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:T}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:at}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:Q},children:[{type:b,value:"\u002F\u002F TODO: replace it with your own backend to secure client_secret:"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" tokenEndpoint: "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"`https:\u002F\u002Foauth.yandex.ru\u002Ftoken?grant_type=authorization_code&client_id=${"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:y}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"}&client_secret=${"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:as}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"}`"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" },"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ai}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:y}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ak}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aj}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:T}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:at}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:al}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'login:info'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:am}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'login:avatar'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:an}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ao}]},{type:a,tag:c,props:{class:ap},children:[{type:b,value:aq}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ar}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:S},children:[{type:b,value:"callback"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"("}]},{type:a,tag:c,props:{class:N},children:[{type:b,value:R}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:N},children:[{type:b,value:"accessToken"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:");"}]}]}]}]}]},{type:a,tag:r,props:{id:L},children:[{type:b,value:M}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:$,rel:[w]},children:[{type:b,value:aa}]},{type:b,value:ab},{type:a,tag:m,props:{href:ac,rel:[w]},children:[{type:b,value:ad}]},{type:b,value:ae}]},{type:a,tag:"style",children:[{type:b,value:".ct-22f6b6{color:#79C0FF}.ct-3baf75{color:#D2A8FF}.ct-67fd92{color:#8B949E}.ct-da0e1d{color:#79C0FF}.ct-f5c383{color:#FF7B72}.ct-bfdae2{color:#A5D6FF}.ct-cd66a6{color:#C9D1D9}.ct-4619c3{color:#C9D1D9}.ct-8cda25{color:#FF7B72}.light .ct-8cda25{color:#859900}.light .ct-4619c3{color:#657B83}.light .ct-cd66a6{color:#268BD2}.light .ct-bfdae2{color:#2AA198}.light .ct-f5c383{color:#073642}.light .ct-da0e1d{color:#268BD2}.light .ct-67fd92{color:#93A1A1}.light .ct-3baf75{color:#268BD2}.light .ct-22f6b6{color:#B58900}"}]}],toc:{title:q,searchDepth:z,depth:z,links:[{id:C,depth:z,text:D,children:[{id:F,depth:au,text:G},{id:I,depth:au,text:J}]},{id:L,depth:z,text:M}]}},_type:"markdown",_id:"content:Frontend:React Native:OAuth2 login.md",_source:"content",_file:"Frontend\u002FReact Native\u002FOAuth2 login.md",_extension:"md"}},prerenderedAt:1667469956175}}("element","text","span","ct-4619c3","line"," ","ct-bfdae2","ct-da0e1d","ct-8cda25",",","code","p","a","ct-f5c383","const","=","","h2","react-native-app-auth","h3","typescript","pre","nofollow",";","YANDEX_OAUTH_CLIENT",2,false,"Use #oauth2 login with React-Native","common-oauth2-providers","Common OAuth2 providers",".","example-for-google","Example for #Google","import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n\u002F\u002F ...\nconst authState = await authorize({\n issuer: 'https:\u002F\u002Faccounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:\u002Foauth2redirect\u002Fgoogle`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n","example-for-yandex","Example for #Yandex","const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; \u002F\u002F better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https:\u002F\u002Foauth.yandex.ru\u002Fauthorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:\u002Foauth2redirect`,\n \u002F\u002F TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https:\u002F\u002Foauth.yandex.ru\u002Ftoken?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:\u002Foauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n","apple-id-login","Apple ID login","ct-cd66a6","authorize","'...'","ct-67fd92","authState","ct-3baf75","APP_ID","OAuth2 Login","\u002Ffrontend\u002Freact-native\u002Foauth2-login","root","Can be handled by "," by redirecting to url ","code-inline","com.yourapp:\u002F\u002Foauth2provider","https:\u002F\u002Fgithub.com\u002Finvertase\u002Freact-native-apple-authentication","react-native-apple-authentication"," has its own ","https:\u002F\u002Fgithub.com\u002Finvertase\u002Freact-native-apple-authentication\u002Ftree\u002Fmain\u002Fdocs","documentation"," on setting up OAuth using Apple ID.","GOOGLE_OAUTH_CLIENT","await","({"," clientId: ","`${"," redirectUrl: "," scopes: [",", ","],"," dangerouslyAllowInsecureHttpRequests: ","ct-22f6b6","true","});","YANDEX_OAUTH_SECRET","}:\u002Foauth2redirect`",3)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:U,_path:V},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-zuvbG5OO4q":{_path:V,_dir:"react-native",_draft:A,_partial:A,_locale:"en",_empty:A,title:U,description:B,excerpt:{type:W,children:[{type:a,tag:l,props:{},children:[{type:b,value:B}]},{type:a,tag:r,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:l,props:{},children:[{type:b,value:X},{type:a,tag:m,props:{href:s},children:[{type:b,value:s}]},{type:b,value:Y},{type:a,tag:Z,props:{},children:[{type:b,value:_}]},{type:b,value:E}]},{type:a,tag:t,props:{id:F},children:[{type:b,value:G}]},{type:a,tag:k,props:{code:H,language:u},children:[{type:a,tag:v,props:{},children:[{type:a,tag:k,props:{__ignoreMap:q},children:[{type:b,value:H}]}]}]},{type:a,tag:t,props:{id:I},children:[{type:b,value:J}]},{type:a,tag:k,props:{code:K,language:u},children:[{type:a,tag:v,props:{},children:[{type:a,tag:k,props:{__ignoreMap:q},children:[{type:b,value:K}]}]}]},{type:a,tag:r,props:{id:L},children:[{type:b,value:M}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:$,rel:[w]},children:[{type:b,value:aa}]},{type:b,value:ab},{type:a,tag:m,props:{href:ac,rel:[w]},children:[{type:b,value:ad}]},{type:b,value:ae}]}]},body:{type:W,children:[{type:a,tag:l,props:{},children:[{type:b,value:B}]},{type:a,tag:r,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:l,props:{},children:[{type:b,value:X},{type:a,tag:m,props:{href:s},children:[{type:b,value:s}]},{type:b,value:Y},{type:a,tag:Z,props:{},children:[{type:b,value:_}]},{type:b,value:E}]},{type:a,tag:t,props:{id:F},children:[{type:b,value:G}]},{type:a,tag:k,props:{code:H,language:u},children:[{type:a,tag:v,props:{},children:[{type:a,tag:k,props:{__ignoreMap:q},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:i},children:[{type:b,value:"import"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" { "}]},{type:a,tag:c,props:{class:N},children:[{type:b,value:O}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" } "}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:"from"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'react-native-app-auth'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:x}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:af}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:P}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:x}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:Q},children:[{type:b,value:"\u002F\u002F ..."}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:R}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:ag}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:S},children:[{type:b,value:O}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:ah}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" issuer: "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'https:\u002F\u002Faccounts.google.com'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ai}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aj}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:af}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"}.apps.googleusercontent.com`"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ak}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"`com.yourapp:\u002Foauth2redirect\u002Fgoogle`"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:al}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'openid'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:am}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'profile'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:an}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ao}]},{type:a,tag:c,props:{class:ap},children:[{type:b,value:aq}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ar}]}]}]}]}]},{type:a,tag:t,props:{id:I},children:[{type:b,value:J}]},{type:a,tag:k,props:{code:K,language:u},children:[{type:a,tag:v,props:{},children:[{type:a,tag:k,props:{__ignoreMap:q},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:y}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:P}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:x}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:as}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:P}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"; "}]},{type:a,tag:c,props:{class:Q},children:[{type:b,value:"\u002F\u002F better hide it somehow"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:T}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'com.yourapp'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:x}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:n},children:[{type:b,value:o}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:R}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:ag}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:S},children:[{type:b,value:O}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:ah}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" serviceConfiguration: {"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" authorizationEndpoint: "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"`https:\u002F\u002Foauth.yandex.ru\u002Fauthorize?response_type=code&client_id=${"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:y}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"}&redirect_uri=${"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:T}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:at}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:Q},children:[{type:b,value:"\u002F\u002F TODO: replace it with your own backend to secure client_secret:"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" tokenEndpoint: "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"`https:\u002F\u002Foauth.yandex.ru\u002Ftoken?grant_type=authorization_code&client_id=${"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:y}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"}&client_secret=${"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:as}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"}`"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" },"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ai}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:y}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ak}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:aj}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:T}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:at}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:al}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'login:info'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:am}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:"'login:avatar'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:an}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ao}]},{type:a,tag:c,props:{class:ap},children:[{type:b,value:aq}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:j}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:ar}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:S},children:[{type:b,value:"callback"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"("}]},{type:a,tag:c,props:{class:N},children:[{type:b,value:R}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:E}]},{type:a,tag:c,props:{class:N},children:[{type:b,value:"accessToken"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:");"}]}]}]}]}]},{type:a,tag:r,props:{id:L},children:[{type:b,value:M}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:$,rel:[w]},children:[{type:b,value:aa}]},{type:b,value:ab},{type:a,tag:m,props:{href:ac,rel:[w]},children:[{type:b,value:ad}]},{type:b,value:ae}]},{type:a,tag:"style",children:[{type:b,value:".ct-68f8f5{color:#79C0FF}.ct-035d5a{color:#D2A8FF}.ct-94fecd{color:#8B949E}.ct-c0142e{color:#79C0FF}.ct-9cdce7{color:#FF7B72}.ct-259179{color:#A5D6FF}.ct-09167a{color:#C9D1D9}.ct-c906eb{color:#C9D1D9}.ct-d6abe0{color:#FF7B72}.light .ct-d6abe0{color:#859900}.light .ct-c906eb{color:#657B83}.light .ct-09167a{color:#268BD2}.light .ct-259179{color:#2AA198}.light .ct-9cdce7{color:#073642}.light .ct-c0142e{color:#268BD2}.light .ct-94fecd{color:#93A1A1}.light .ct-035d5a{color:#268BD2}.light .ct-68f8f5{color:#B58900}"}]}],toc:{title:q,searchDepth:z,depth:z,links:[{id:C,depth:z,text:D,children:[{id:F,depth:au,text:G},{id:I,depth:au,text:J}]},{id:L,depth:z,text:M}]}},_type:"markdown",_id:"content:Frontend:React Native:OAuth2 login.md",_source:"content",_file:"Frontend\u002FReact Native\u002FOAuth2 login.md",_extension:"md"}},prerenderedAt:1667480032646}}("element","text","span","ct-c906eb","line"," ","ct-259179","ct-c0142e","ct-d6abe0",",","code","p","a","ct-9cdce7","const","=","","h2","react-native-app-auth","h3","typescript","pre","nofollow",";","YANDEX_OAUTH_CLIENT",2,false,"Use #oauth2 login with React-Native","common-oauth2-providers","Common OAuth2 providers",".","example-for-google","Example for #Google","import { authorize } from 'react-native-app-auth';\n\nconst GOOGLE_OAUTH_CLIENT = '...';\n\n\u002F\u002F ...\nconst authState = await authorize({\n issuer: 'https:\u002F\u002Faccounts.google.com',\n clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,\n redirectUrl: `com.yourapp:\u002Foauth2redirect\u002Fgoogle`,\n scopes: ['openid', 'profile'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n","example-for-yandex","Example for #Yandex","const YANDEX_OAUTH_CLIENT = '...';\nconst YANDEX_OAUTH_SECRET = '...'; \u002F\u002F better hide it somehow\nconst APP_ID = 'com.yourapp';\n\nconst authState = await authorize({\n serviceConfiguration: {\n authorizationEndpoint: `https:\u002F\u002Foauth.yandex.ru\u002Fauthorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:\u002Foauth2redirect`,\n \u002F\u002F TODO: replace it with your own backend to secure client_secret:\n tokenEndpoint: `https:\u002F\u002Foauth.yandex.ru\u002Ftoken?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,\n },\n clientId: YANDEX_OAUTH_CLIENT,\n redirectUrl: `${APP_ID}:\u002Foauth2redirect`,\n scopes: ['login:info', 'login:avatar'],\n dangerouslyAllowInsecureHttpRequests: true,\n});\n\ncallback(authState.accessToken);\n","apple-id-login","Apple ID login","ct-09167a","authorize","'...'","ct-94fecd","authState","ct-035d5a","APP_ID","OAuth2 Login","\u002Ffrontend\u002Freact-native\u002Foauth2-login","root","Can be handled by "," by redirecting to url ","code-inline","com.yourapp:\u002F\u002Foauth2provider","https:\u002F\u002Fgithub.com\u002Finvertase\u002Freact-native-apple-authentication","react-native-apple-authentication"," has its own ","https:\u002F\u002Fgithub.com\u002Finvertase\u002Freact-native-apple-authentication\u002Ftree\u002Fmain\u002Fdocs","documentation"," on setting up OAuth using Apple ID.","GOOGLE_OAUTH_CLIENT","await","({"," clientId: ","`${"," redirectUrl: "," scopes: [",", ","],"," dangerouslyAllowInsecureHttpRequests: ","ct-68f8f5","true","});","YANDEX_OAUTH_SECRET","}:\u002Foauth2redirect`",3)) \ No newline at end of file diff --git a/frontend/react-native/oauth2-login/index.html b/frontend/react-native/oauth2-login/index.html index fb0e8bb..ea2b4de 100644 --- a/frontend/react-native/oauth2-login/index.html +++ b/frontend/react-native/oauth2-login/index.html @@ -1,6 +1,6 @@ -OAuth2 Login • Obsidian Garden -

OAuth2 Login

Use #oauth2 login with React-Native

Common OAuth2 providers

Can be handled by react-native-app-auth by redirecting to url com.yourapp://oauth2provider.

Example for #Google

import { authorize } from 'react-native-app-auth';const GOOGLE_OAUTH_CLIENT = '...';// ...const authState = await authorize({  issuer: 'https://accounts.google.com',  clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,  redirectUrl: `com.yourapp:/oauth2redirect/google`,  scopes: ['openid', 'profile'],  dangerouslyAllowInsecureHttpRequests: true,});

Example for #Yandex

const YANDEX_OAUTH_CLIENT = '...';const YANDEX_OAUTH_SECRET = '...'; // better hide it somehowconst APP_ID = 'com.yourapp';const authState = await authorize({  serviceConfiguration: {    authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,    // TODO: replace it with your own backend to secure client_secret:    tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,  },  clientId: YANDEX_OAUTH_CLIENT,  redirectUrl: `${APP_ID}:/oauth2redirect`,  scopes: ['login:info', 'login:avatar'],  dangerouslyAllowInsecureHttpRequests: true,});callback(authState.accessToken);

Apple ID login

react-native-apple-authentication has its own documentation on setting up OAuth using Apple ID.

btw, have a nice day
(2018 - 2022) muerwre
+

OAuth2 Login

Use #oauth2 login with React-Native

Common OAuth2 providers

Can be handled by react-native-app-auth by redirecting to url com.yourapp://oauth2provider.

Example for #Google

import { authorize } from 'react-native-app-auth';const GOOGLE_OAUTH_CLIENT = '...';// ...const authState = await authorize({  issuer: 'https://accounts.google.com',  clientId: `${GOOGLE_OAUTH_CLIENT}.apps.googleusercontent.com`,  redirectUrl: `com.yourapp:/oauth2redirect/google`,  scopes: ['openid', 'profile'],  dangerouslyAllowInsecureHttpRequests: true,});

Example for #Yandex

const YANDEX_OAUTH_CLIENT = '...';const YANDEX_OAUTH_SECRET = '...'; // better hide it somehowconst APP_ID = 'com.yourapp';const authState = await authorize({  serviceConfiguration: {    authorizationEndpoint: `https://oauth.yandex.ru/authorize?response_type=code&client_id=${YANDEX_OAUTH_CLIENT}&redirect_uri=${APP_ID}:/oauth2redirect`,    // TODO: replace it with your own backend to secure client_secret:    tokenEndpoint: `https://oauth.yandex.ru/token?grant_type=authorization_code&client_id=${YANDEX_OAUTH_CLIENT}&client_secret=${YANDEX_OAUTH_SECRET}`,  },  clientId: YANDEX_OAUTH_CLIENT,  redirectUrl: `${APP_ID}:/oauth2redirect`,  scopes: ['login:info', 'login:avatar'],  dangerouslyAllowInsecureHttpRequests: true,});callback(authState.accessToken);

Apple ID login

react-native-apple-authentication has its own documentation on setting up OAuth using Apple ID.

btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/frontend/react-native/preserve-flatlist-scroll-position-in-react-native/_payload.js b/frontend/react-native/preserve-flatlist-scroll-position-in-react-native/_payload.js index 2bbf16c..50ef8b7 100644 --- a/frontend/react-native/preserve-flatlist-scroll-position-in-react-native/_payload.js +++ b/frontend/react-native/preserve-flatlist-scroll-position-in-react-native/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:$,_path:aa},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-Rv2z2spCBs":{_path:aa,_dir:"react-native",_draft:M,_partial:M,_locale:"en",_empty:M,title:$,description:"Sometimes you need to keep scroll position of FlatList in React Native after some user interactions.",excerpt:{type:ab,children:[{type:a,tag:ac,props:{},children:[{type:c,value:ad},{type:a,tag:ae,props:{},children:[{type:c,value:N}]},{type:c,value:af}]},{type:a,tag:C,props:{code:O,language:ag},children:[{type:a,tag:ah,props:{},children:[{type:a,tag:C,props:{__ignoreMap:P},children:[{type:c,value:O}]}]}]}]},body:{type:ab,children:[{type:a,tag:ac,props:{},children:[{type:c,value:ad},{type:a,tag:ae,props:{},children:[{type:c,value:N}]},{type:c,value:af}]},{type:a,tag:C,props:{code:O,language:ag},children:[{type:a,tag:ah,props:{},children:[{type:a,tag:C,props:{__ignoreMap:P},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:D},children:[{type:c,value:"\u002F\u002F interact() is doing some stuff, that changes FlatList scroll size"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:"type"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-b6859e"},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" { "}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" () "}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-671d2d"},children:[{type:c,value:"void"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"; }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:x},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:"SomeList"}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:E},children:[{type:c,value:"FC"}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:E},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"\u003E "}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:" ({ "}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:" }) "}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:D},children:[{type:c,value:"\u002F\u002F set it to `true` before interaction and back to `false` right after"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:J},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:" ("}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:ak}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:E},children:[{type:c,value:"NativeSyntheticEvent"}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:E},children:[{type:c,value:"NativeScrollEvent"}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"\u003E) "}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ak}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"nativeEvent"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"contentOffset"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"y"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:al}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" [],"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:am}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-152aab"},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"(("}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"_"}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:an},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:", "}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:an},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:") "}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"if"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"!"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:") {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"?."}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"scrollToOffset"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" offset: "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"+"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"-"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" animated: "}]},{type:a,tag:b,props:{class:J},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:","}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, []);"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:D},children:[{type:c,value:"\u002F\u002F onInteraction wraps interaction to preserve scroll position"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:"onInteraction"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" () "}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:J},children:[{type:c,value:"true"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"();"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:at}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:J},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:at}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:"500"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:al}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ["}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"setSelectedSubThemes"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"],"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:am}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:"ct-30a71a"},children:[{type:c,value:N}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:D},children:[{type:c,value:"\u002F\u002F ...required FlatList options"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"\u002F\u003E"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" )"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-30a71a{color:#FFA657}.ct-26fd42{color:#79C0FF}.ct-152aab{color:#79C0FF}.ct-0d0f2a{color:#C9D1D9}.ct-d39361{color:#79C0FF}.ct-b39378{color:#79C0FF}.ct-c02abc{color:#79C0FF}.ct-71edb3{color:#FFA657}.ct-d0748e{color:#FFA657}.ct-50c268{color:#FF7B72}.ct-c26930{color:#D2A8FF}.ct-d59891{color:#C9D1D9}.ct-0d3f63{color:#FF7B72}.ct-671d2d{color:#79C0FF}.ct-852d98{color:#D2A8FF}.ct-135a94{color:#FF7B72}.ct-b6859e{color:#FFA657}.ct-854b0c{color:#C9D1D9}.ct-088cae{color:#FF7B72}.ct-813619{color:#8B949E}.light .ct-813619{color:#93A1A1}.light .ct-088cae{color:#073642}.light .ct-854b0c{color:#657B83}.light .ct-b6859e{color:#268BD2}.light .ct-135a94{color:#859900}.light .ct-852d98{color:#268BD2}.light .ct-671d2d{color:#859900}.light .ct-0d3f63{color:#073642}.light .ct-d59891{color:#657B83}.light .ct-c26930{color:#268BD2}.light .ct-50c268{color:#859900}.light .ct-d0748e{color:#268BD2}.light .ct-71edb3{color:#657B83}.light .ct-c02abc{color:#268BD2}.light .ct-b39378{color:#D33682}.light .ct-d39361{color:#B58900}.light .ct-0d0f2a{color:#268BD2}.light .ct-152aab{color:#268BD2}.light .ct-26fd42{color:#859900}.light .ct-30a71a{color:#657B83}"}]}],toc:{title:P,searchDepth:av,depth:av,links:[]}},_type:"markdown",_id:"content:Frontend:React Native:Preserve FlatList scroll position in React Native.md",_source:"content",_file:"Frontend\u002FReact Native\u002FPreserve FlatList scroll position in React Native.md",_extension:"md"}},prerenderedAt:1667469956221}}("element","span","text","ct-854b0c","line"," ","ct-0d0f2a","ct-135a94","ct-d59891","=","."," "," ","ct-088cae","current","ct-852d98","=\u003E","const","ct-c02abc","ct-50c268"," {",";",":","ct-0d3f63","(",");"," ","}","code","ct-813619","ct-d0748e","ct-71edb3","ct-b39378","scrollHeight","shouldKeepScrollPosition","ct-d39361","h","{",false,"FlatList","\u002F\u002F interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () =\u003E void; }\n\nconst SomeList: FC\u003CProps\u003E = ({ interact }) =\u003E {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n \u002F\u002F set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent\u003CNativeScrollEvent\u003E) =\u003E {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) =\u003E {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n \u002F\u002F onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () =\u003E {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() =\u003E {\n interact();\n }, 0);\n\n setTimeout(() =\u003E {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \u003CFlatList\n \u002F\u002F ...required FlatList options\n ref={ref}\n onContentSizeChange={onContentSizeChange}\n onRefresh={onRefresh}\n onScroll={onScroll}\n \u002F\u003E\n )\n}\n","","interact","\u003C","scrollPosition","useRef","0","false","onScroll","useCallback","onContentSizeChange"," (","ref","Preserve FlatList Scroll Position In React Native","\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native","root","p","Sometimes you need to keep scroll position of ","code-inline"," in React Native after some user interactions.","typescript","pre","Props","ct-c26930","event"," },"," );","ct-26fd42","number","return","setTimeout","(() "," "," }, ","onRefresh",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:$,_path:aa},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-Rv2z2spCBs":{_path:aa,_dir:"react-native",_draft:M,_partial:M,_locale:"en",_empty:M,title:$,description:"Sometimes you need to keep scroll position of FlatList in React Native after some user interactions.",excerpt:{type:ab,children:[{type:a,tag:ac,props:{},children:[{type:c,value:ad},{type:a,tag:ae,props:{},children:[{type:c,value:N}]},{type:c,value:af}]},{type:a,tag:C,props:{code:O,language:ag},children:[{type:a,tag:ah,props:{},children:[{type:a,tag:C,props:{__ignoreMap:P},children:[{type:c,value:O}]}]}]}]},body:{type:ab,children:[{type:a,tag:ac,props:{},children:[{type:c,value:ad},{type:a,tag:ae,props:{},children:[{type:c,value:N}]},{type:c,value:af}]},{type:a,tag:C,props:{code:O,language:ag},children:[{type:a,tag:ah,props:{},children:[{type:a,tag:C,props:{__ignoreMap:P},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:D},children:[{type:c,value:"\u002F\u002F interact() is doing some stuff, that changes FlatList scroll size"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:n},children:[{type:c,value:"type"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-56a237"},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" { "}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" () "}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-27e8c9"},children:[{type:c,value:"void"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"; }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:x},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:"SomeList"}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:E},children:[{type:c,value:"FC"}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:E},children:[{type:c,value:ai}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"\u003E "}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:" ({ "}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:" }) "}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:D},children:[{type:c,value:"\u002F\u002F set it to `true` before interaction and back to `false` right after"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:J},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:" ("}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:ak}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:E},children:[{type:c,value:"NativeSyntheticEvent"}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:E},children:[{type:c,value:"NativeScrollEvent"}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"\u003E) "}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ak}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"nativeEvent"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"contentOffset"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"y"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:al}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" [],"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:am}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-846e70"},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:aj},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"(("}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"_"}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:an},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:", "}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:t},children:[{type:c,value:w}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:an},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:") "}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"if"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"!"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:") {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"?."}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"scrollToOffset"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" offset: "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"+"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"-"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" animated: "}]},{type:a,tag:b,props:{class:J},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:","}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, []);"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:D},children:[{type:c,value:"\u002F\u002F onInteraction wraps interaction to preserve scroll position"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:r}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:"onInteraction"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" () "}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:J},children:[{type:c,value:"true"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"();"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:at}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:J},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:at}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:"500"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:al}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ["}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"setSelectedSubThemes"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"],"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:am}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:"ct-b6e4ff"},children:[{type:c,value:N}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:D},children:[{type:c,value:"\u002F\u002F ...required FlatList options"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"\u002F\u003E"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" )"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-b6e4ff{color:#FFA657}.ct-a41202{color:#79C0FF}.ct-846e70{color:#79C0FF}.ct-715b00{color:#C9D1D9}.ct-ea1c0a{color:#79C0FF}.ct-9d2c22{color:#79C0FF}.ct-383d75{color:#79C0FF}.ct-81988b{color:#FFA657}.ct-173810{color:#FFA657}.ct-459bf0{color:#FF7B72}.ct-6a1d68{color:#D2A8FF}.ct-03eaac{color:#C9D1D9}.ct-5e0832{color:#FF7B72}.ct-27e8c9{color:#79C0FF}.ct-3285b3{color:#D2A8FF}.ct-ecea9a{color:#FF7B72}.ct-56a237{color:#FFA657}.ct-e5f3ab{color:#C9D1D9}.ct-18b8d0{color:#FF7B72}.ct-1b2898{color:#8B949E}.light .ct-1b2898{color:#93A1A1}.light .ct-18b8d0{color:#073642}.light .ct-e5f3ab{color:#657B83}.light .ct-56a237{color:#268BD2}.light .ct-ecea9a{color:#859900}.light .ct-3285b3{color:#268BD2}.light .ct-27e8c9{color:#859900}.light .ct-5e0832{color:#073642}.light .ct-03eaac{color:#657B83}.light .ct-6a1d68{color:#268BD2}.light .ct-459bf0{color:#859900}.light .ct-173810{color:#268BD2}.light .ct-81988b{color:#657B83}.light .ct-383d75{color:#268BD2}.light .ct-9d2c22{color:#D33682}.light .ct-ea1c0a{color:#B58900}.light .ct-715b00{color:#268BD2}.light .ct-846e70{color:#268BD2}.light .ct-a41202{color:#859900}.light .ct-b6e4ff{color:#657B83}"}]}],toc:{title:P,searchDepth:av,depth:av,links:[]}},_type:"markdown",_id:"content:Frontend:React Native:Preserve FlatList scroll position in React Native.md",_source:"content",_file:"Frontend\u002FReact Native\u002FPreserve FlatList scroll position in React Native.md",_extension:"md"}},prerenderedAt:1667480032774}}("element","span","text","ct-e5f3ab","line"," ","ct-715b00","ct-ecea9a","ct-03eaac","=","."," "," ","ct-18b8d0","current","ct-3285b3","=\u003E","const","ct-383d75","ct-459bf0"," {",";",":","ct-5e0832","(",");"," ","}","code","ct-1b2898","ct-173810","ct-81988b","ct-9d2c22","scrollHeight","shouldKeepScrollPosition","ct-ea1c0a","h","{",false,"FlatList","\u002F\u002F interact() is doing some stuff, that changes FlatList scroll size\ntype Props = { interact: () =\u003E void; }\n\nconst SomeList: FC\u003CProps\u003E = ({ interact }) =\u003E {\n const scrollPosition = useRef(0);\n const scrollHeight = useRef(0);\n \n \u002F\u002F set it to `true` before interaction and back to `false` right after\n const shouldKeepScrollPosition = useRef(false);\n\n const onScroll = useCallback(\n (event: NativeSyntheticEvent\u003CNativeScrollEvent\u003E) =\u003E {\n scrollPosition.current = event.nativeEvent.contentOffset.y;\n },\n [],\n );\n\n const onContentSizeChange = useCallback((_: number, h: number) =\u003E {\n if (!shouldKeepScrollPosition.current) {\n scrollHeight.current = h;\n return;\n }\n\n ref.current?.scrollToOffset({\n offset: scrollPosition.current + (h - scrollHeight.current),\n animated: false,\n });\n\n scrollHeight.current = h;\n }, []);\n\n \u002F\u002F onInteraction wraps interaction to preserve scroll position\n const onInteraction = useCallback(\n () =\u003E {\n shouldKeepScrollPosition.current = true;\n\n setTimeout(() =\u003E {\n interact();\n }, 0);\n\n setTimeout(() =\u003E {\n shouldKeepScrollPosition.current = false;\n }, 500);\n },\n [setSelectedSubThemes],\n );\n \n return (\n \u003CFlatList\n \u002F\u002F ...required FlatList options\n ref={ref}\n onContentSizeChange={onContentSizeChange}\n onRefresh={onRefresh}\n onScroll={onScroll}\n \u002F\u003E\n )\n}\n","","interact","\u003C","scrollPosition","useRef","0","false","onScroll","useCallback","onContentSizeChange"," (","ref","Preserve FlatList Scroll Position In React Native","\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native","root","p","Sometimes you need to keep scroll position of ","code-inline"," in React Native after some user interactions.","typescript","pre","Props","ct-6a1d68","event"," },"," );","ct-a41202","number","return","setTimeout","(() "," "," }, ","onRefresh",2)) \ No newline at end of file diff --git a/frontend/react-native/preserve-flatlist-scroll-position-in-react-native/index.html b/frontend/react-native/preserve-flatlist-scroll-position-in-react-native/index.html index 3bb64b3..ec8d710 100644 --- a/frontend/react-native/preserve-flatlist-scroll-position-in-react-native/index.html +++ b/frontend/react-native/preserve-flatlist-scroll-position-in-react-native/index.html @@ -1,6 +1,6 @@ -Preserve FlatList Scroll Position In React Native • Obsidian Garden -

Preserve FlatList Scroll Position In React Native

Sometimes you need to keep scroll position of FlatList in React Native after some user interactions.

// interact() is doing some stuff, that changes FlatList scroll sizetype Props = { interact: () => void; }const SomeList: FC<Props> = ({ interact }) => {  const scrollPosition = useRef(0);  const scrollHeight = useRef(0);    // set it to `true` before interaction and back to `false` right after  const shouldKeepScrollPosition = useRef(false);  const onScroll = useCallback(    (event: NativeSyntheticEvent<NativeScrollEvent>) => {      scrollPosition.current = event.nativeEvent.contentOffset.y;    },    [],  );  const onContentSizeChange = useCallback((_: number, h: number) => {    if (!shouldKeepScrollPosition.current) {      scrollHeight.current = h;      return;    }    ref.current?.scrollToOffset({      offset: scrollPosition.current + (h - scrollHeight.current),      animated: false,    });    scrollHeight.current = h;  }, []);  // onInteraction wraps interaction to preserve scroll position  const onInteraction = useCallback(    () => {      shouldKeepScrollPosition.current = true;      setTimeout(() => {        interact();      }, 0);      setTimeout(() => {        shouldKeepScrollPosition.current = false;      }, 500);    },    [setSelectedSubThemes],  );    return (    <FlatList      // ...required FlatList options      ref={ref}      onContentSizeChange={onContentSizeChange}      onRefresh={onRefresh}      onScroll={onScroll}    />  )}
btw, have a nice day
(2018 - 2022) muerwre
+

Preserve FlatList Scroll Position In React Native

Sometimes you need to keep scroll position of FlatList in React Native after some user interactions.

// interact() is doing some stuff, that changes FlatList scroll sizetype Props = { interact: () => void; }const SomeList: FC<Props> = ({ interact }) => {  const scrollPosition = useRef(0);  const scrollHeight = useRef(0);    // set it to `true` before interaction and back to `false` right after  const shouldKeepScrollPosition = useRef(false);  const onScroll = useCallback(    (event: NativeSyntheticEvent<NativeScrollEvent>) => {      scrollPosition.current = event.nativeEvent.contentOffset.y;    },    [],  );  const onContentSizeChange = useCallback((_: number, h: number) => {    if (!shouldKeepScrollPosition.current) {      scrollHeight.current = h;      return;    }    ref.current?.scrollToOffset({      offset: scrollPosition.current + (h - scrollHeight.current),      animated: false,    });    scrollHeight.current = h;  }, []);  // onInteraction wraps interaction to preserve scroll position  const onInteraction = useCallback(    () => {      shouldKeepScrollPosition.current = true;      setTimeout(() => {        interact();      }, 0);      setTimeout(() => {        shouldKeepScrollPosition.current = false;      }, 500);    },    [setSelectedSubThemes],  );    return (    <FlatList      // ...required FlatList options      ref={ref}      onContentSizeChange={onContentSizeChange}      onRefresh={onRefresh}      onScroll={onScroll}    />  )}
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/frontend/react-native/react-native-app-auth/_payload.js b/frontend/react-native/react-native-app-auth/_payload.js index 9a1d9d0..61576ff 100644 --- a/frontend/react-native/react-native-app-auth/_payload.js +++ b/frontend/react-native/react-native-app-auth/_payload.js @@ -1 +1 @@ -export default {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-Ul5QREg0An":null},prerenderedAt:1667469957536} \ No newline at end of file +export default {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-Ul5QREg0An":null},prerenderedAt:1667480033958} \ No newline at end of file diff --git a/frontend/react-native/react-native-app-auth/index.html b/frontend/react-native/react-native-app-auth/index.html index 04e733a..bf443b5 100644 --- a/frontend/react-native/react-native-app-auth/index.html +++ b/frontend/react-native/react-native-app-auth/index.html @@ -1,6 +1,6 @@ -Obsidian Garden - + \ No newline at end of file diff --git a/frontend/react-native/useful-comands/_payload.js b/frontend/react-native/useful-comands/_payload.js index 98cdbdc..2f74ab6 100644 --- a/frontend/react-native/useful-comands/_payload.js +++ b/frontend/react-native/useful-comands/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:X,_path:Y}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-90RMToCghI":{_path:Y,_dir:"react-native",_draft:y,_partial:y,_locale:"en",_empty:y,title:X,description:g,excerpt:{type:Z,children:[{type:a,tag:i,props:{id:z},children:[{type:b,value:A}]},{type:a,tag:f,props:{code:B,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:B}]}]}]},{type:a,tag:i,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:f,props:{code:E,language:_},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:E}]}]}]},{type:a,tag:i,props:{id:F},children:[{type:b,value:G}]},{type:a,tag:$,props:{},children:[{type:b,value:aa}]},{type:a,tag:f,props:{code:H,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:H}]}]}]},{type:a,tag:i,props:{id:I},children:[{type:b,value:J}]},{type:a,tag:f,props:{code:K,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:K}]}]}]},{type:a,tag:i,props:{id:L},children:[{type:b,value:M}]},{type:a,tag:ab,props:{},children:[{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:r,rel:[n]},children:[{type:b,value:r}]}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:s,rel:[n]},children:[{type:b,value:s}]}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:t,rel:[n]},children:[{type:b,value:t}]}]}]},{type:a,tag:u,props:{id:N},children:[{type:b,value:O}]},{type:a,tag:f,props:{code:P,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:P}]}]}]},{type:a,tag:u,props:{id:Q},children:[{type:b,value:R}]},{type:a,tag:f,props:{code:S,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:S}]}]}]}]},body:{type:Z,children:[{type:a,tag:i,props:{id:z},children:[{type:b,value:A}]},{type:a,tag:f,props:{code:B,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"adb logcat com.application:I "}]},{type:a,tag:c,props:{class:v},children:[{type:b,value:"\"*:S\""}]}]}]}]}]},{type:a,tag:i,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:f,props:{code:E,language:_},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"keytool -printcert -jarfile "}]},{type:a,tag:c,props:{class:v},children:[{type:b,value:ac}]},{type:a,tag:c,props:{class:o},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:T}]},{type:a,tag:c,props:{class:v},children:[{type:b,value:ac}]}]}]}]}]},{type:a,tag:i,props:{id:F},children:[{type:b,value:G}]},{type:a,tag:$,props:{},children:[{type:b,value:aa}]},{type:a,tag:f,props:{code:H,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"npx react-native bundle \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" --platform android \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" --dev "}]},{type:a,tag:c,props:{class:U},children:[{type:b,value:"false"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:V}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" --entry-file index.js \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" --bundle-output android\u002Fapp\u002Fsrc\u002Fmain\u002Fassets\u002Findex.android.bundle \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" --assets-dest android\u002Fapp\u002Fsrc\u002Fmain\u002Fres\u002F"}]}]},{type:a,tag:c,props:{class:d},children:[]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:U},children:[{type:b,value:ad}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" android "}]},{type:a,tag:c,props:{class:w},children:[{type:b,value:x}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" .\u002Fgradlew assembleDebug"}]}]},{type:a,tag:c,props:{class:d},children:[]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:W},children:[{type:b,value:"# do your stuff"}]}]},{type:a,tag:c,props:{class:d},children:[]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:".\u002Fgradlew clean"}]}]}]}]}]},{type:a,tag:i,props:{id:I},children:[{type:b,value:J}]},{type:a,tag:f,props:{code:K,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:U},children:[{type:b,value:ad}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" .\u002Fandroid \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:ae}]},{type:a,tag:c,props:{class:w},children:[{type:b,value:x}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" .\u002Fgradlew assembleRelease \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:ae}]},{type:a,tag:c,props:{class:w},children:[{type:b,value:x}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" adb install .\u002Fapp\u002Fbuild\u002Foutputs\u002Fapk\u002Frelease\u002Fapp-release.apk"}]}]}]}]}]},{type:a,tag:i,props:{id:L},children:[{type:b,value:M}]},{type:a,tag:ab,props:{},children:[{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:r,rel:[n]},children:[{type:b,value:r}]}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:s,rel:[n]},children:[{type:b,value:s}]}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:t,rel:[n]},children:[{type:b,value:t}]}]}]},{type:a,tag:u,props:{id:N},children:[{type:b,value:O}]},{type:a,tag:f,props:{code:P,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:W},children:[{type:b,value:"# ios "}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"xcrun simctl openurl booted "}]},{type:a,tag:c,props:{class:o},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:T}]}]},{type:a,tag:c,props:{class:d},children:[]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:W},children:[{type:b,value:"# android"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"adb shell am start -W -a android.intent.action.VIEW -d "}]},{type:a,tag:c,props:{class:o},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:T}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:V}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"com.application"}]}]}]}]}]},{type:a,tag:u,props:{id:Q},children:[{type:b,value:R}]},{type:a,tag:f,props:{code:S,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"PACKAGE="}]},{type:a,tag:c,props:{class:v},children:[{type:b,value:"\"com.application\""}]}]},{type:a,tag:c,props:{class:d},children:[]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"adb shell pm set-app-links --package "}]},{type:a,tag:c,props:{class:o},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:af}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" 0 all "}]},{type:a,tag:c,props:{class:w},children:[{type:b,value:x}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:V}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" adb shell pm verify-app-links --re-verify "}]},{type:a,tag:c,props:{class:o},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:af}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-742116{color:#8B949E}.ct-6129e7{color:#FF7B72}.ct-666406{color:#79C0FF}.ct-b1dec6{color:#C9D1D9}.ct-880203{color:#C9D1D9}.ct-582610{color:#A5D6FF}.ct-4b992d{color:#C9D1D9}.light .ct-4b992d{color:#657B83}.light .ct-582610{color:#2AA198}.light .ct-880203{color:#859900}.light .ct-b1dec6{color:#268BD2}.light .ct-666406{color:#268BD2}.light .ct-6129e7{color:#859900}.light .ct-742116{color:#93A1A1}"}]}],toc:{title:g,searchDepth:k,depth:k,links:[{id:z,depth:k,text:A},{id:C,depth:k,text:D},{id:F,depth:k,text:G},{id:I,depth:k,text:J},{id:L,depth:k,text:M,children:[{id:N,depth:ag,text:O},{id:Q,depth:ag,text:R}]}]}},_type:"markdown",_id:"content:Frontend:React Native:Useful comands.md",_source:"content",_file:"Frontend\u002FReact Native\u002FUseful comands.md",_extension:"md"}},prerenderedAt:1667469956297}}("element","text","span","line","ct-4b992d","code","","pre","h2","shell",2,"li","a","nofollow","ct-880203","$","ct-b1dec6","https:\u002F\u002Fzarah.dev\u002F2022\u002F02\u002F08\u002Fandroid12-deeplinks.html","https:\u002F\u002Fdeveloper.android.com\u002Ftraining\u002Fapp-links\u002Fverify-site-associations#invoke-domain-verification","https:\u002F\u002Fdigitalassetlinks.googleapis.com\u002Fv1\u002Fstatements:list?source.web.site=https:\u002F\u002Fmiin.ru&relation=delegate_permission\u002Fcommon.handle_all_urls","h3","ct-582610","ct-6129e7","&&",false,"show-android-logcat","Show android logcat","adb logcat com.application:I \"*:S\"\n","get-apks-sha-256","Get .apk's SHA-256","keytool -printcert -jarfile \"$1\"\n","assemble-debug-release-on-android","Assemble debug release on Android","npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android\u002Fapp\u002Fsrc\u002Fmain\u002Fassets\u002Findex.android.bundle \\\n --assets-dest android\u002Fapp\u002Fsrc\u002Fmain\u002Fres\u002F\n\ncd android && .\u002Fgradlew assembleDebug\n\n# do your stuff\n\n.\u002Fgradlew clean\n","send-release-to-android-device","Send release to Android device","cd .\u002Fandroid \\\n && .\u002Fgradlew assembleRelease \\\n && adb install .\u002Fapp\u002Fbuild\u002Foutputs\u002Fapk\u002Frelease\u002Fapp-release.apk\n","deep-links","Deep links","open-deep-links","Open deep links","# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n","reverify-links-on-android","Reverify links on Android","PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n","1","ct-666406"," \\","ct-742116","Useful Comands","\u002Ffrontend\u002Freact-native\u002Fuseful-comands","root","bash","p","Packages release with bundled resources.","ul","\"","cd"," ","PACKAGE",3)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:X,_path:Y}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-90RMToCghI":{_path:Y,_dir:"react-native",_draft:y,_partial:y,_locale:"en",_empty:y,title:X,description:g,excerpt:{type:Z,children:[{type:a,tag:i,props:{id:z},children:[{type:b,value:A}]},{type:a,tag:f,props:{code:B,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:B}]}]}]},{type:a,tag:i,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:f,props:{code:E,language:_},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:E}]}]}]},{type:a,tag:i,props:{id:F},children:[{type:b,value:G}]},{type:a,tag:$,props:{},children:[{type:b,value:aa}]},{type:a,tag:f,props:{code:H,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:H}]}]}]},{type:a,tag:i,props:{id:I},children:[{type:b,value:J}]},{type:a,tag:f,props:{code:K,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:K}]}]}]},{type:a,tag:i,props:{id:L},children:[{type:b,value:M}]},{type:a,tag:ab,props:{},children:[{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:r,rel:[n]},children:[{type:b,value:r}]}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:s,rel:[n]},children:[{type:b,value:s}]}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:t,rel:[n]},children:[{type:b,value:t}]}]}]},{type:a,tag:u,props:{id:N},children:[{type:b,value:O}]},{type:a,tag:f,props:{code:P,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:P}]}]}]},{type:a,tag:u,props:{id:Q},children:[{type:b,value:R}]},{type:a,tag:f,props:{code:S,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:b,value:S}]}]}]}]},body:{type:Z,children:[{type:a,tag:i,props:{id:z},children:[{type:b,value:A}]},{type:a,tag:f,props:{code:B,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"adb logcat com.application:I "}]},{type:a,tag:c,props:{class:v},children:[{type:b,value:"\"*:S\""}]}]}]}]}]},{type:a,tag:i,props:{id:C},children:[{type:b,value:D}]},{type:a,tag:f,props:{code:E,language:_},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"keytool -printcert -jarfile "}]},{type:a,tag:c,props:{class:v},children:[{type:b,value:ac}]},{type:a,tag:c,props:{class:o},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:T}]},{type:a,tag:c,props:{class:v},children:[{type:b,value:ac}]}]}]}]}]},{type:a,tag:i,props:{id:F},children:[{type:b,value:G}]},{type:a,tag:$,props:{},children:[{type:b,value:aa}]},{type:a,tag:f,props:{code:H,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"npx react-native bundle \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" --platform android \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" --dev "}]},{type:a,tag:c,props:{class:U},children:[{type:b,value:"false"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:V}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" --entry-file index.js \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" --bundle-output android\u002Fapp\u002Fsrc\u002Fmain\u002Fassets\u002Findex.android.bundle \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" --assets-dest android\u002Fapp\u002Fsrc\u002Fmain\u002Fres\u002F"}]}]},{type:a,tag:c,props:{class:d},children:[]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:U},children:[{type:b,value:ad}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" android "}]},{type:a,tag:c,props:{class:w},children:[{type:b,value:x}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" .\u002Fgradlew assembleDebug"}]}]},{type:a,tag:c,props:{class:d},children:[]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:W},children:[{type:b,value:"# do your stuff"}]}]},{type:a,tag:c,props:{class:d},children:[]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:".\u002Fgradlew clean"}]}]}]}]}]},{type:a,tag:i,props:{id:I},children:[{type:b,value:J}]},{type:a,tag:f,props:{code:K,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:U},children:[{type:b,value:ad}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" .\u002Fandroid \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:ae}]},{type:a,tag:c,props:{class:w},children:[{type:b,value:x}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" .\u002Fgradlew assembleRelease \\"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:ae}]},{type:a,tag:c,props:{class:w},children:[{type:b,value:x}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" adb install .\u002Fapp\u002Fbuild\u002Foutputs\u002Fapk\u002Frelease\u002Fapp-release.apk"}]}]}]}]}]},{type:a,tag:i,props:{id:L},children:[{type:b,value:M}]},{type:a,tag:ab,props:{},children:[{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:r,rel:[n]},children:[{type:b,value:r}]}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:s,rel:[n]},children:[{type:b,value:s}]}]},{type:a,tag:l,props:{},children:[{type:a,tag:m,props:{href:t,rel:[n]},children:[{type:b,value:t}]}]}]},{type:a,tag:u,props:{id:N},children:[{type:b,value:O}]},{type:a,tag:f,props:{code:P,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:W},children:[{type:b,value:"# ios "}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"xcrun simctl openurl booted "}]},{type:a,tag:c,props:{class:o},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:T}]}]},{type:a,tag:c,props:{class:d},children:[]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:W},children:[{type:b,value:"# android"}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"adb shell am start -W -a android.intent.action.VIEW -d "}]},{type:a,tag:c,props:{class:o},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:T}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:V}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"com.application"}]}]}]}]}]},{type:a,tag:u,props:{id:Q},children:[{type:b,value:R}]},{type:a,tag:f,props:{code:S,language:j},children:[{type:a,tag:h,props:{},children:[{type:a,tag:f,props:{__ignoreMap:g},children:[{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"PACKAGE="}]},{type:a,tag:c,props:{class:v},children:[{type:b,value:"\"com.application\""}]}]},{type:a,tag:c,props:{class:d},children:[]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"adb shell pm set-app-links --package "}]},{type:a,tag:c,props:{class:o},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:af}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" 0 all "}]},{type:a,tag:c,props:{class:w},children:[{type:b,value:x}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:V}]}]},{type:a,tag:c,props:{class:d},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:" adb shell pm verify-app-links --re-verify "}]},{type:a,tag:c,props:{class:o},children:[{type:b,value:p}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:af}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-4a89fe{color:#8B949E}.ct-46ff56{color:#FF7B72}.ct-75be1f{color:#79C0FF}.ct-7a7a1d{color:#C9D1D9}.ct-f5de27{color:#C9D1D9}.ct-492fb7{color:#A5D6FF}.ct-7dd2c8{color:#C9D1D9}.light .ct-7dd2c8{color:#657B83}.light .ct-492fb7{color:#2AA198}.light .ct-f5de27{color:#859900}.light .ct-7a7a1d{color:#268BD2}.light .ct-75be1f{color:#268BD2}.light .ct-46ff56{color:#859900}.light .ct-4a89fe{color:#93A1A1}"}]}],toc:{title:g,searchDepth:k,depth:k,links:[{id:z,depth:k,text:A},{id:C,depth:k,text:D},{id:F,depth:k,text:G},{id:I,depth:k,text:J},{id:L,depth:k,text:M,children:[{id:N,depth:ag,text:O},{id:Q,depth:ag,text:R}]}]}},_type:"markdown",_id:"content:Frontend:React Native:Useful comands.md",_source:"content",_file:"Frontend\u002FReact Native\u002FUseful comands.md",_extension:"md"}},prerenderedAt:1667480032844}}("element","text","span","line","ct-7dd2c8","code","","pre","h2","shell",2,"li","a","nofollow","ct-f5de27","$","ct-7a7a1d","https:\u002F\u002Fzarah.dev\u002F2022\u002F02\u002F08\u002Fandroid12-deeplinks.html","https:\u002F\u002Fdeveloper.android.com\u002Ftraining\u002Fapp-links\u002Fverify-site-associations#invoke-domain-verification","https:\u002F\u002Fdigitalassetlinks.googleapis.com\u002Fv1\u002Fstatements:list?source.web.site=https:\u002F\u002Fmiin.ru&relation=delegate_permission\u002Fcommon.handle_all_urls","h3","ct-492fb7","ct-46ff56","&&",false,"show-android-logcat","Show android logcat","adb logcat com.application:I \"*:S\"\n","get-apks-sha-256","Get .apk's SHA-256","keytool -printcert -jarfile \"$1\"\n","assemble-debug-release-on-android","Assemble debug release on Android","npx react-native bundle \\\n --platform android \\\n --dev false \\\n --entry-file index.js \\\n --bundle-output android\u002Fapp\u002Fsrc\u002Fmain\u002Fassets\u002Findex.android.bundle \\\n --assets-dest android\u002Fapp\u002Fsrc\u002Fmain\u002Fres\u002F\n\ncd android && .\u002Fgradlew assembleDebug\n\n# do your stuff\n\n.\u002Fgradlew clean\n","send-release-to-android-device","Send release to Android device","cd .\u002Fandroid \\\n && .\u002Fgradlew assembleRelease \\\n && adb install .\u002Fapp\u002Fbuild\u002Foutputs\u002Fapk\u002Frelease\u002Fapp-release.apk\n","deep-links","Deep links","open-deep-links","Open deep links","# ios \nxcrun simctl openurl booted $1\n\n# android\nadb shell am start -W -a android.intent.action.VIEW -d $1 \\\ncom.application\n","reverify-links-on-android","Reverify links on Android","PACKAGE=\"com.application\"\n\nadb shell pm set-app-links --package $PACKAGE 0 all && \\\n adb shell pm verify-app-links --re-verify $PACKAGE\n","1","ct-75be1f"," \\","ct-4a89fe","Useful Comands","\u002Ffrontend\u002Freact-native\u002Fuseful-comands","root","bash","p","Packages release with bundled resources.","ul","\"","cd"," ","PACKAGE",3)) \ No newline at end of file diff --git a/frontend/react-native/useful-comands/index.html b/frontend/react-native/useful-comands/index.html index d03edd0..398c612 100644 --- a/frontend/react-native/useful-comands/index.html +++ b/frontend/react-native/useful-comands/index.html @@ -1,6 +1,6 @@ -Useful Comands • Obsidian Garden -

Useful Comands

Show android logcat

adb logcat com.application:I "*:S"

Get .apk's SHA-256

keytool -printcert -jarfile "$1"

Assemble debug release on Android

Packages release with bundled resources.

npx react-native bundle \  --platform android \  --dev false \  --entry-file index.js \  --bundle-output android/app/src/main/assets/index.android.bundle \  --assets-dest android/app/src/main/res/cd android && ./gradlew assembleDebug# do your stuff./gradlew clean

Send release to Android device

cd ./android \  && ./gradlew assembleRelease \  && adb install ./app/build/outputs/apk/release/app-release.apk
# ios xcrun simctl openurl booted $1# androidadb shell am start -W -a android.intent.action.VIEW -d $1 \com.application
PACKAGE="com.application"adb shell pm set-app-links --package $PACKAGE 0 all && \  adb shell pm verify-app-links --re-verify $PACKAGE
btw, have a nice day
(2018 - 2022) muerwre
+

Useful Comands

Show android logcat

adb logcat com.application:I "*:S"

Get .apk's SHA-256

keytool -printcert -jarfile "$1"

Assemble debug release on Android

Packages release with bundled resources.

npx react-native bundle \  --platform android \  --dev false \  --entry-file index.js \  --bundle-output android/app/src/main/assets/index.android.bundle \  --assets-dest android/app/src/main/res/cd android && ./gradlew assembleDebug# do your stuff./gradlew clean

Send release to Android device

cd ./android \  && ./gradlew assembleRelease \  && adb install ./app/build/outputs/apk/release/app-release.apk
# ios xcrun simctl openurl booted $1# androidadb shell am start -W -a android.intent.action.VIEW -d $1 \com.application
PACKAGE="com.application"adb shell pm set-app-links --package $PACKAGE 0 all && \  adb shell pm verify-app-links --re-verify $PACKAGE
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/frontend/react/axios-refresh-token-on-react/_payload.js b/frontend/react/axios-refresh-token-on-react/_payload.js index 8e30193..3d713f2 100644 --- a/frontend/react/axios-refresh-token-on-react/_payload.js +++ b/frontend/react/axios-refresh-token-on-react/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,a_,a$,ba,bb){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:ae,_path:"\u002Ffrontend\u002Freact",children:[{title:af,_path:ag},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-lzTEE4EzmV":{_path:ag,_dir:"react",_draft:U,_partial:U,_locale:"en",_empty:U,title:af,description:"\u003CApiProvider \u002F\u003E component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props.",excerpt:{type:ah,children:[{type:a,tag:ai,props:{},children:[{type:a,tag:aj,props:{},children:[{type:c,value:ak}]},{type:c,value:al}]},{type:a,tag:M,props:{code:V,language:am},children:[{type:a,tag:an,props:{},children:[{type:a,tag:M,props:{__ignoreMap:W},children:[{type:c,value:V}]}]}]}]},body:{type:ah,children:[{type:a,tag:ai,props:{},children:[{type:a,tag:aj,props:{},children:[{type:c,value:ak}]},{type:c,value:al}]},{type:a,tag:M,props:{code:V,language:am},children:[{type:a,tag:an,props:{},children:[{type:a,tag:M,props:{__ignoreMap:W},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"\"axios\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:", {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:at}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:av}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"} "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"\"react\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:w},children:[{type:c,value:"interface"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-ee9ee3"},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:"extends"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-d45585"},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:"void"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" client: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" baseURL: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"});"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aF}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:aG},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aH}]},{type:a,tag:b,props:{class:aG},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u003E "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ({ "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aI}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"}) "}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" baseURL: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" )."}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"current"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:at}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u003C() "}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u003E(() "}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:"\u002F\u002F TODO: implement me"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"throw"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"new"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:"Error"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"\"not implemented\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:I}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, []);"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:av}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"(() "}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aK}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:"\u002F\u002F append `access` token to all requests"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:aL}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aM}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:aN}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" Authorization: "}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"`Bearer ${"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:"ct-26cf42"},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"}`"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aP}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:aQ}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:aR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aS}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:I}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aT}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aU}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:"\u002F\u002F refreshing interceptor"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aM}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:aQ}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aP}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:aN}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:"function"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"status"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"==="}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-153c3c"},children:[{type:c,value:"401"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"&&"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aK}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aW}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aW}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-382864"},children:[{type:c,value:"true"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aY}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" headers: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aY}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" Authorization: "}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"\"Bearer \""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"+"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"();"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:aR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aS}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:I}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aT}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aU}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aZ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aL}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:I}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aZ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:I}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, ["}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"]);"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aH}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:a_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"value"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"{{ "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" }}"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:a$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:" {"}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:aI}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"\u003C\u002F"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:a_}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:a$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" );"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"};"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ba}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"useAPI"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:")."}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ba}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" { "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aF}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-382864{color:#79C0FF}.ct-153c3c{color:#79C0FF}.ct-26cf42{color:#A5D6FF}.ct-5816b7{color:#8B949E}.ct-5a9bde{color:#FFA657}.ct-f5243a{color:#79C0FF}.ct-dfb75e{color:#79C0FF}.ct-3c0604{color:#FF7B72}.ct-c1cb9a{color:#D2A8FF}.ct-d30aee{color:#79C0FF}.ct-7e867e{color:#FF7B72}.ct-9ac74d{color:#FFA657}.ct-d45585{color:#79C0FF}.ct-ee9ee3{color:#FFA657}.ct-d2b589{color:#C9D1D9}.ct-ab524a{color:#FF7B72}.ct-9941db{color:#A5D6FF}.ct-507769{color:#C9D1D9}.ct-2252d3{color:#C9D1D9}.ct-c58203{color:#FF7B72}.light .ct-c58203{color:#859900}.light .ct-2252d3{color:#657B83}.light .ct-507769{color:#268BD2}.light .ct-9941db{color:#2AA198}.light .ct-ab524a{color:#073642}.light .ct-d2b589{color:#657B83}.light .ct-ee9ee3{color:#268BD2}.light .ct-d45585{color:#657B83}.light .ct-9ac74d{color:#657B83}.light .ct-7e867e{color:#859900}.light .ct-d30aee{color:#859900}.light .ct-c1cb9a{color:#268BD2}.light .ct-3c0604{color:#073642}.light .ct-dfb75e{color:#859900}.light .ct-f5243a{color:#268BD2}.light .ct-5a9bde{color:#268BD2}.light .ct-5816b7{color:#93A1A1}.light .ct-26cf42{color:#657B83}.light .ct-153c3c{color:#D33682}.light .ct-382864{color:#B58900}"}]}],toc:{title:W,searchDepth:bb,depth:bb,links:[]}},_type:"markdown",_id:"content:Frontend:React:Axios refresh token on React.md",_source:"content",_file:"Frontend\u002FReact\u002FAxios refresh token on React.md",_extension:"md"}},prerenderedAt:1667469956345}}("element","span","text","ct-2252d3","line","ct-507769"," ","ct-c58203",".","ct-d2b589","ct-c1cb9a"," ","ct-3c0604",",",";"," ","="," {","=\u003E","const","ct-f5243a","(","ct-ab524a","ct-9ac74d"," ","return","axios","ct-9941db","tokens",", ","client","error",":","ct-dfb75e",");"," ("," ","originalRequest","code","access","logout","APIContext","({","interceptors","config","response",false,"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () =\u003E void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC\u003CAPIProviderProps\u003E = ({ \n tokens, \n logout, \n children,\n}) =\u003E {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback\u003C() =\u003E string\u003E(() =\u003E {\n \u002F\u002F TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() =\u003E {\n if (!tokens.access) {\n return;\n }\n\n \u002F\u002F append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) =\u003E {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) =\u003E {\n Promise.reject(error);\n }\n );\n\n \u002F\u002F refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) =\u003E {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () =\u003E {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \u003CAPIContext.Provider value={{ client }}\u003E\n {children}\n \u003C\u002FAPIContext.Provider\u003E\n );\n};\n\nexport const useAPI = () =\u003E useContext(APIContext).client;\n\nexport { APIProvider };\n","","ct-7e867e","string"," () ","refreshTokens","ct-5816b7",") {","request",") "," ","React","Axios Refresh Token On React","\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react","root","p","code-inline","\u003CApiProvider \u002F\u003E"," component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props.","typescript","pre","import","from","createContext","FC","PropsWithChildren","useCallback","useContext","useEffect","useRef","APIProviderProps","ct-d30aee","refresh","}","create","process","env","NEXT_PUBLIC_API_ENDPOINT","APIProvider","ct-5a9bde","\u003C","children","if","!","req","use","async","headers"," },"," (","Promise","reject"," }"," );","resp","_retry","newToken","...","eject","Provider","\u003E","export",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,a_,a$,ba,bb){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:ae,_path:"\u002Ffrontend\u002Freact",children:[{title:af,_path:ag},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-lzTEE4EzmV":{_path:ag,_dir:"react",_draft:U,_partial:U,_locale:"en",_empty:U,title:af,description:"\u003CApiProvider \u002F\u003E component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props.",excerpt:{type:ah,children:[{type:a,tag:ai,props:{},children:[{type:a,tag:aj,props:{},children:[{type:c,value:ak}]},{type:c,value:al}]},{type:a,tag:M,props:{code:V,language:am},children:[{type:a,tag:an,props:{},children:[{type:a,tag:M,props:{__ignoreMap:W},children:[{type:c,value:V}]}]}]}]},body:{type:ah,children:[{type:a,tag:ai,props:{},children:[{type:a,tag:aj,props:{},children:[{type:c,value:ak}]},{type:c,value:al}]},{type:a,tag:M,props:{code:V,language:am},children:[{type:a,tag:an,props:{},children:[{type:a,tag:M,props:{__ignoreMap:W},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"\"axios\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:", {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:at}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:av}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"} "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"\"react\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:w},children:[{type:c,value:"interface"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-79a62b"},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:"extends"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-f483ca"},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:ay},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:"void"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" client: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" baseURL: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"});"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aF}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:aG},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aH}]},{type:a,tag:b,props:{class:aG},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u003E "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ({ "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aI}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"}) "}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" baseURL: "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aC}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aD}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" )."}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"current"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:at}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u003C() "}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u003E(() "}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:"\u002F\u002F TODO: implement me"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"throw"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"new"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:"Error"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"\"not implemented\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:I}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, []);"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:av}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"(() "}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aK}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:"\u002F\u002F append `access` token to all requests"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:aL}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aM}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:aN}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" Authorization: "}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"`Bearer ${"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:"ct-419752"},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"}`"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aP}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:aQ}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:aR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aS}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:I}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aT}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aU}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:"\u002F\u002F refreshing interceptor"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aM}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:aQ}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aP}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:aN}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:w},children:[{type:c,value:"function"}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"status"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"==="}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-f205aa"},children:[{type:c,value:"401"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"&&"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aK}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aW}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aW}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-2dfdaf"},children:[{type:c,value:"true"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:u},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aY}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" headers: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aY}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aO}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" Authorization: "}]},{type:a,tag:b,props:{class:B},children:[{type:c,value:"\"Bearer \""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"+"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"();"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:H},children:[{type:c,value:aR}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aS}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:I}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aT}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aU}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:r}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aZ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aL}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:I}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ab}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:aZ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:I}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, ["}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"]);"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aH}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:a_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"value"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"{{ "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" }}"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:a$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:" {"}]},{type:a,tag:b,props:{class:x},children:[{type:c,value:aI}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aA}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"\u003C\u002F"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:a_}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:a$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" );"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"};"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ba}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"useAPI"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:m},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:")."}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:o}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:ba}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" { "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:aF}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-2dfdaf{color:#79C0FF}.ct-f205aa{color:#79C0FF}.ct-419752{color:#A5D6FF}.ct-dfac5d{color:#8B949E}.ct-8bf0d3{color:#FFA657}.ct-dc0893{color:#79C0FF}.ct-a350b2{color:#79C0FF}.ct-dddbde{color:#FF7B72}.ct-4f8495{color:#D2A8FF}.ct-d927c0{color:#79C0FF}.ct-12a4da{color:#FF7B72}.ct-adcb9c{color:#FFA657}.ct-f483ca{color:#79C0FF}.ct-79a62b{color:#FFA657}.ct-bc1340{color:#C9D1D9}.ct-47b4a5{color:#FF7B72}.ct-a880fe{color:#A5D6FF}.ct-13a8d9{color:#C9D1D9}.ct-e48648{color:#C9D1D9}.ct-10bccc{color:#FF7B72}.light .ct-10bccc{color:#859900}.light .ct-e48648{color:#657B83}.light .ct-13a8d9{color:#268BD2}.light .ct-a880fe{color:#2AA198}.light .ct-47b4a5{color:#073642}.light .ct-bc1340{color:#657B83}.light .ct-79a62b{color:#268BD2}.light .ct-f483ca{color:#657B83}.light .ct-adcb9c{color:#657B83}.light .ct-12a4da{color:#859900}.light .ct-d927c0{color:#859900}.light .ct-4f8495{color:#268BD2}.light .ct-dddbde{color:#073642}.light .ct-a350b2{color:#859900}.light .ct-dc0893{color:#268BD2}.light .ct-8bf0d3{color:#268BD2}.light .ct-dfac5d{color:#93A1A1}.light .ct-419752{color:#657B83}.light .ct-f205aa{color:#D33682}.light .ct-2dfdaf{color:#B58900}"}]}],toc:{title:W,searchDepth:bb,depth:bb,links:[]}},_type:"markdown",_id:"content:Frontend:React:Axios refresh token on React.md",_source:"content",_file:"Frontend\u002FReact\u002FAxios refresh token on React.md",_extension:"md"}},prerenderedAt:1667480032898}}("element","span","text","ct-e48648","line","ct-13a8d9"," ","ct-10bccc",".","ct-bc1340","ct-4f8495"," ","ct-dddbde",",",";"," ","="," {","=\u003E","const","ct-dc0893","(","ct-47b4a5","ct-adcb9c"," ","return","axios","ct-a880fe","tokens",", ","client","error",":","ct-a350b2",");"," ("," ","originalRequest","code","access","logout","APIContext","({","interceptors","config","response",false,"import axios from \"axios\";\nimport React, {\n createContext,\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\n\ninterface APIProviderProps extends PropsWithChildren {\n tokens: {\n access: string;\n refresh: string;\n };\n logout: () =\u003E void;\n}\n\nconst APIContext = createContext({\n client: axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n }),\n});\n\nconst APIProvider: FC\u003CAPIProviderProps\u003E = ({ \n tokens, \n logout, \n children,\n}) =\u003E {\n const client = useRef(\n axios.create({\n baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,\n })\n ).current;\n\n const refreshTokens = useCallback\u003C() =\u003E string\u003E(() =\u003E {\n \u002F\u002F TODO: implement me\n throw new Error(\"not implemented\");\n }, []);\n\n useEffect(() =\u003E {\n if (!tokens.access) {\n return;\n }\n\n \u002F\u002F append `access` token to all requests\n const req = client.interceptors.request.use(\n async (config) =\u003E {\n config.headers = {\n Authorization: `Bearer ${tokens.access}`,\n };\n return config;\n },\n (error) =\u003E {\n Promise.reject(error);\n }\n );\n\n \u002F\u002F refreshing interceptor\n const resp = client.interceptors.response.use(\n (response) =\u003E {\n return response;\n },\n async function (error) {\n const originalRequest = error.config;\n\n if (error.response.status === 401 && !originalRequest._retry) {\n originalRequest._retry = true;\n\n const newToken = refreshTokens;\n\n return axios({\n ...originalRequest,\n headers: {\n ...originalRequest.headers,\n Authorization: \"Bearer \" + newToken,\n },\n });\n }\n\n logout();\n return Promise.reject(error);\n }\n );\n\n return () =\u003E {\n axios.interceptors.request.eject(req);\n axios.interceptors.request.eject(resp);\n };\n }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);\n\n return (\n \u003CAPIContext.Provider value={{ client }}\u003E\n {children}\n \u003C\u002FAPIContext.Provider\u003E\n );\n};\n\nexport const useAPI = () =\u003E useContext(APIContext).client;\n\nexport { APIProvider };\n","","ct-12a4da","string"," () ","refreshTokens","ct-dfac5d",") {","request",") "," ","React","Axios Refresh Token On React","\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react","root","p","code-inline","\u003CApiProvider \u002F\u003E"," component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props.","typescript","pre","import","from","createContext","FC","PropsWithChildren","useCallback","useContext","useEffect","useRef","APIProviderProps","ct-d927c0","refresh","}","create","process","env","NEXT_PUBLIC_API_ENDPOINT","APIProvider","ct-8bf0d3","\u003C","children","if","!","req","use","async","headers"," },"," (","Promise","reject"," }"," );","resp","_retry","newToken","...","eject","Provider","\u003E","export",2)) \ No newline at end of file diff --git a/frontend/react/axios-refresh-token-on-react/index.html b/frontend/react/axios-refresh-token-on-react/index.html index 4aa43c9..e0fe8a6 100644 --- a/frontend/react/axios-refresh-token-on-react/index.html +++ b/frontend/react/axios-refresh-token-on-react/index.html @@ -1,6 +1,6 @@ -Axios Refresh Token On React • Obsidian Garden -

Axios Refresh Token On React

<ApiProvider /> component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props.

import axios from "axios";import React, {  createContext,  FC,  PropsWithChildren,  useCallback,  useContext,  useEffect,  useRef,} from "react";interface APIProviderProps extends PropsWithChildren {  tokens: {    access: string;    refresh: string;  };  logout: () => void;}const APIContext = createContext({  client: axios.create({    baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,  }),});const APIProvider: FC<APIProviderProps> = ({     tokens,     logout,     children,}) => {  const client = useRef(    axios.create({      baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,    })  ).current;  const refreshTokens = useCallback<() => string>(() => {    // TODO: implement me    throw new Error("not implemented");  }, []);  useEffect(() => {    if (!tokens.access) {      return;    }    // append `access` token to all requests    const req = client.interceptors.request.use(      async (config) => {        config.headers = {          Authorization: `Bearer ${tokens.access}`,        };        return config;      },      (error) => {        Promise.reject(error);      }    );    // refreshing interceptor    const resp = client.interceptors.response.use(      (response) => {        return response;      },      async function (error) {        const originalRequest = error.config;        if (error.response.status === 401 && !originalRequest._retry) {          originalRequest._retry = true;          const newToken = refreshTokens;          return axios({            ...originalRequest,            headers: {              ...originalRequest.headers,              Authorization: "Bearer " + newToken,            },          });        }        logout();        return Promise.reject(error);      }    );    return () => {      axios.interceptors.request.eject(req);      axios.interceptors.request.eject(resp);    };  }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);  return (    <APIContext.Provider value={{ client }}>        {children}    </APIContext.Provider>  );};export const useAPI = () => useContext(APIContext).client;export { APIProvider };
btw, have a nice day
(2018 - 2022) muerwre
+

Axios Refresh Token On React

<ApiProvider /> component, that will handle token refresh if needed. Refresh function should, probably, be passed through component props.

import axios from "axios";import React, {  createContext,  FC,  PropsWithChildren,  useCallback,  useContext,  useEffect,  useRef,} from "react";interface APIProviderProps extends PropsWithChildren {  tokens: {    access: string;    refresh: string;  };  logout: () => void;}const APIContext = createContext({  client: axios.create({    baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,  }),});const APIProvider: FC<APIProviderProps> = ({     tokens,     logout,     children,}) => {  const client = useRef(    axios.create({      baseURL: process.env.NEXT_PUBLIC_API_ENDPOINT,    })  ).current;  const refreshTokens = useCallback<() => string>(() => {    // TODO: implement me    throw new Error("not implemented");  }, []);  useEffect(() => {    if (!tokens.access) {      return;    }    // append `access` token to all requests    const req = client.interceptors.request.use(      async (config) => {        config.headers = {          Authorization: `Bearer ${tokens.access}`,        };        return config;      },      (error) => {        Promise.reject(error);      }    );    // refreshing interceptor    const resp = client.interceptors.response.use(      (response) => {        return response;      },      async function (error) {        const originalRequest = error.config;        if (error.response.status === 401 && !originalRequest._retry) {          originalRequest._retry = true;          const newToken = refreshTokens;          return axios({            ...originalRequest,            headers: {              ...originalRequest.headers,              Authorization: "Bearer " + newToken,            },          });        }        logout();        return Promise.reject(error);      }    );    return () => {      axios.interceptors.request.eject(req);      axios.interceptors.request.eject(resp);    };  }, [client, tokens.access, tokens.refresh, refreshTokens, logout]);  return (    <APIContext.Provider value={{ client }}>        {children}    </APIContext.Provider>  );};export const useAPI = () => useContext(APIContext).client;export { APIProvider };
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/frontend/react/axios-with-abortcontroller/_payload.js b/frontend/react/axios-with-abortcontroller/_payload.js index 989f3f1..8e05108 100644 --- a/frontend/react/axios-with-abortcontroller/_payload.js +++ b/frontend/react/axios-with-abortcontroller/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:G,_path:H}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-9RFKZoeNNl":{_path:H,_dir:"react",_draft:u,_partial:u,_locale:"en",_empty:u,title:G,description:"If you need to cancel some request, use axios with AbortController. Previously axios used cancellation token, but now it's deprecated.",excerpt:{type:I,children:[{type:a,tag:r,props:{},children:[{type:c,value:J},{type:a,tag:K,props:{href:L,rel:[M]},children:[{type:c,value:N}]},{type:c,value:O}]},{type:a,tag:r,props:{},children:[{type:a,tag:P,props:{},children:[{type:c,value:s}]},{type:c,value:Q}]},{type:a,tag:t,props:{code:v,language:R},children:[{type:a,tag:S,props:{},children:[{type:a,tag:t,props:{__ignoreMap:w},children:[{type:c,value:v}]}]}]}]},body:{type:I,children:[{type:a,tag:r,props:{},children:[{type:c,value:J},{type:a,tag:K,props:{href:L,rel:[M]},children:[{type:c,value:N}]},{type:c,value:O}]},{type:a,tag:r,props:{},children:[{type:a,tag:P,props:{},children:[{type:c,value:s}]},{type:c,value:Q}]},{type:a,tag:t,props:{code:v,language:R},children:[{type:a,tag:S,props:{},children:[{type:a,tag:t,props:{__ignoreMap:w},children:[{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" } "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:"\"react\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:"'axios'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:f},children:[]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"create"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:f},children:[]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"export"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"useGetUsers"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"());"}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"async"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"await"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:"\"\u002F\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:", {"}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:"\u002F\u002F params and props here"}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" signal: "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"signal"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:","}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:f},children:[]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"data"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, []);"}]}]},{type:a,tag:b,props:{class:f},children:[]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"(() "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"abort"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:"\u002F\u002F controller should be rewritten or all requests will fail"}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, ["}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"]);"}]}]},{type:a,tag:b,props:{class:f},children:[]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"};"}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-3d579a{color:#8B949E}.ct-91a95e{color:#D2A8FF}.ct-c45372{color:#79C0FF}.ct-1b579c{color:#FF7B72}.ct-ed40b5{color:#A5D6FF}.ct-fc57c0{color:#C9D1D9}.ct-86dcb7{color:#C9D1D9}.ct-74fa66{color:#FF7B72}.light .ct-74fa66{color:#859900}.light .ct-86dcb7{color:#657B83}.light .ct-fc57c0{color:#268BD2}.light .ct-ed40b5{color:#2AA198}.light .ct-1b579c{color:#073642}.light .ct-c45372{color:#268BD2}.light .ct-91a95e{color:#268BD2}.light .ct-3d579a{color:#93A1A1}"}]}],toc:{title:w,searchDepth:ae,depth:ae,links:[]}},_type:"markdown",_id:"content:Frontend:React:Axios with AbortController.md",_source:"content",_file:"Frontend\u002FReact\u002FAxios with AbortController.md",_extension:"md"}},prerenderedAt:1667469956445}}("element","span","text","ct-86dcb7"," ","line","ct-74fa66","ct-fc57c0","ct-1b579c","ct-91a95e",".","=","const"," ","ct-c45372"," ","controller","p","AbortController","code",false,"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () =\u003E {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () =\u003E {\n const result = await client.get(\"\u002F\", {\n \u002F\u002F params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() =\u003E {\n controller.current.abort();\n \n \u002F\u002F controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","","useCallback","ct-ed40b5",";","();","=\u003E"," {","(","get","current","Axios With AbortController","\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller","root","If you need to cancel some request, use ","a","https:\u002F\u002Faxios-http.com\u002Fdocs\u002Fcancellation","nofollow","axios with AbortController",". Previously axios used cancellation token, but now it's deprecated.","code-inline"," can be used with a multiple requests to cancel them at once.","typescript","pre","import"," { ",", ","useRef","from","axios","client"," () ","new","result","ct-3d579a","return","cancel",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:G,_path:H}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-9RFKZoeNNl":{_path:H,_dir:"react",_draft:u,_partial:u,_locale:"en",_empty:u,title:G,description:"If you need to cancel some request, use axios with AbortController. Previously axios used cancellation token, but now it's deprecated.",excerpt:{type:I,children:[{type:a,tag:r,props:{},children:[{type:c,value:J},{type:a,tag:K,props:{href:L,rel:[M]},children:[{type:c,value:N}]},{type:c,value:O}]},{type:a,tag:r,props:{},children:[{type:a,tag:P,props:{},children:[{type:c,value:s}]},{type:c,value:Q}]},{type:a,tag:t,props:{code:v,language:R},children:[{type:a,tag:S,props:{},children:[{type:a,tag:t,props:{__ignoreMap:w},children:[{type:c,value:v}]}]}]}]},body:{type:I,children:[{type:a,tag:r,props:{},children:[{type:c,value:J},{type:a,tag:K,props:{href:L,rel:[M]},children:[{type:c,value:N}]},{type:c,value:O}]},{type:a,tag:r,props:{},children:[{type:a,tag:P,props:{},children:[{type:c,value:s}]},{type:c,value:Q}]},{type:a,tag:t,props:{code:v,language:R},children:[{type:a,tag:S,props:{},children:[{type:a,tag:t,props:{__ignoreMap:w},children:[{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" } "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:"\"react\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:"'axios'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:f},children:[]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"create"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:f},children:[]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"export"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"useGetUsers"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"());"}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"async"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"await"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:"\"\u002F\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:", {"}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:"\u002F\u002F params and props here"}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" signal: "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"signal"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:","}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:f},children:[]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"data"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, []);"}]}]},{type:a,tag:b,props:{class:f},children:[]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:o},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"(() "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"abort"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:"\u002F\u002F controller should be rewritten or all requests will fail"}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:e}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }, ["}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"]);"}]}]},{type:a,tag:b,props:{class:f},children:[]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:f},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"};"}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-d9a7df{color:#8B949E}.ct-74387e{color:#D2A8FF}.ct-69a5a4{color:#79C0FF}.ct-486fdb{color:#FF7B72}.ct-552880{color:#A5D6FF}.ct-e1d7ee{color:#C9D1D9}.ct-98aef3{color:#C9D1D9}.ct-7bcc7f{color:#FF7B72}.light .ct-7bcc7f{color:#859900}.light .ct-98aef3{color:#657B83}.light .ct-e1d7ee{color:#268BD2}.light .ct-552880{color:#2AA198}.light .ct-486fdb{color:#073642}.light .ct-69a5a4{color:#268BD2}.light .ct-74387e{color:#268BD2}.light .ct-d9a7df{color:#93A1A1}"}]}],toc:{title:w,searchDepth:ae,depth:ae,links:[]}},_type:"markdown",_id:"content:Frontend:React:Axios with AbortController.md",_source:"content",_file:"Frontend\u002FReact\u002FAxios with AbortController.md",_extension:"md"}},prerenderedAt:1667480032990}}("element","span","text","ct-98aef3"," ","line","ct-7bcc7f","ct-e1d7ee","ct-486fdb","ct-74387e",".","=","const"," ","ct-69a5a4"," ","controller","p","AbortController","code",false,"import { useCallback, useRef } from \"react\";\nimport axios from 'axios';\n\nconst client = axios.create();\n\nexport const useGetUsers = () =\u003E {\n const controller = useRef(new AbortController());\n \n const get = useCallback(async () =\u003E {\n const result = await client.get(\"\u002F\", {\n \u002F\u002F params and props here\n signal: controller.current.signal,\n });\n\n return result.data;\n }, []);\n\n const cancel = useCallback(() =\u003E {\n controller.current.abort();\n \n \u002F\u002F controller should be rewritten or all requests will fail\n controller.current = new AbortController();\n }, [controller]);\n\n return { get, cancel };\n};\n","","useCallback","ct-552880",";","();","=\u003E"," {","(","get","current","Axios With AbortController","\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller","root","If you need to cancel some request, use ","a","https:\u002F\u002Faxios-http.com\u002Fdocs\u002Fcancellation","nofollow","axios with AbortController",". Previously axios used cancellation token, but now it's deprecated.","code-inline"," can be used with a multiple requests to cancel them at once.","typescript","pre","import"," { ",", ","useRef","from","axios","client"," () ","new","result","ct-d9a7df","return","cancel",2)) \ No newline at end of file diff --git a/frontend/react/axios-with-abortcontroller/index.html b/frontend/react/axios-with-abortcontroller/index.html index 25a7e37..4d58521 100644 --- a/frontend/react/axios-with-abortcontroller/index.html +++ b/frontend/react/axios-with-abortcontroller/index.html @@ -1,6 +1,6 @@ -Axios With AbortController • Obsidian Garden -

Axios With AbortController

If you need to cancel some request, use axios with AbortController. Previously axios used cancellation token, but now it's deprecated.

AbortController can be used with a multiple requests to cancel them at once.

import { useCallback, useRef } from "react";import axios from 'axios';const client = axios.create();export const useGetUsers = () => {  const controller = useRef(new AbortController());    const get = useCallback(async () => {    const result = await client.get("/", {        // params and props here        signal: controller.current.signal,    });    return result.data;  }, []);  const cancel = useCallback(() => {    controller.current.abort();        // controller should be rewritten or all requests will fail    controller.current = new AbortController();  }, [controller]);  return { get, cancel };};
btw, have a nice day
(2018 - 2022) muerwre
+

Axios With AbortController

If you need to cancel some request, use axios with AbortController. Previously axios used cancellation token, but now it's deprecated.

AbortController can be used with a multiple requests to cancel them at once.

import { useCallback, useRef } from "react";import axios from 'axios';const client = axios.create();export const useGetUsers = () => {  const controller = useRef(new AbortController());    const get = useCallback(async () => {    const result = await client.get("/", {        // params and props here        signal: controller.current.signal,    });    return result.data;  }, []);  const cancel = useCallback(() => {    controller.current.abort();        // controller should be rewritten or all requests will fail    controller.current = new AbortController();  }, [controller]);  return { get, cancel };};
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/frontend/vue/add-global-variable-to-window/_payload.js b/frontend/vue/add-global-variable-to-window/_payload.js index babad37..19461f0 100644 --- a/frontend/vue/add-global-variable-to-window/_payload.js +++ b/frontend/vue/add-global-variable-to-window/_payload.js @@ -1 +1 @@ -export default {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-gf0FmfUQhH":null},prerenderedAt:1667469957594} \ No newline at end of file +export default {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-gf0FmfUQhH":null},prerenderedAt:1667480034016} \ No newline at end of file diff --git a/frontend/vue/add-global-variable-to-window/index.html b/frontend/vue/add-global-variable-to-window/index.html index 9c7dc2c..4d2c78a 100644 --- a/frontend/vue/add-global-variable-to-window/index.html +++ b/frontend/vue/add-global-variable-to-window/index.html @@ -1,6 +1,6 @@ -Obsidian Garden - + \ No newline at end of file diff --git a/frontend/vue/adding-global-properties-to-component/_payload.js b/frontend/vue/adding-global-properties-to-component/_payload.js index de495ca..3915dc4 100644 --- a/frontend/vue/adding-global-properties-to-component/_payload.js +++ b/frontend/vue/adding-global-properties-to-component/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:q,_path:r},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-gHURXJrO3C":{_path:r,_dir:"vue",_draft:l,_partial:l,_locale:"en",_empty:l,title:q,description:"The topic's fully covered in the official documentation and in Add global variable to window.",excerpt:{type:s,children:[{type:a,tag:h,props:{},children:[{type:b,value:t},{type:a,tag:i,props:{href:u,rel:[v]},children:[{type:b,value:w}]},{type:b,value:x},{type:a,tag:i,props:{href:y},children:[{type:b,value:z}]},{type:b,value:A}]},{type:a,tag:h,props:{},children:[{type:b,value:B},{type:a,tag:j,props:{},children:[{type:b,value:C}]},{type:b,value:D},{type:a,tag:j,props:{},children:[{type:b,value:m}]},{type:b,value:E}]},{type:a,tag:k,props:{code:n,language:F},children:[{type:a,tag:G,props:{},children:[{type:a,tag:k,props:{__ignoreMap:o},children:[{type:b,value:n}]}]}]}]},body:{type:s,children:[{type:a,tag:h,props:{},children:[{type:b,value:t},{type:a,tag:i,props:{href:u,rel:[v]},children:[{type:b,value:w}]},{type:b,value:x},{type:a,tag:i,props:{href:y},children:[{type:b,value:z}]},{type:b,value:A}]},{type:a,tag:h,props:{},children:[{type:b,value:B},{type:a,tag:j,props:{},children:[{type:b,value:C}]},{type:b,value:D},{type:a,tag:j,props:{},children:[{type:b,value:m}]},{type:b,value:E}]},{type:a,tag:k,props:{code:n,language:F},children:[{type:a,tag:G,props:{},children:[{type:a,tag:k,props:{__ignoreMap:o},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:"ct-0059ff"},children:[{type:b,value:"\u002F\u002F ~\u002Findex.d.ts or ~\u002Fcustom.d.ts"}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:H},children:[{type:b,value:"import"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:"ct-b56c55"},children:[{type:b,value:"axios"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:H},children:[{type:b,value:"from"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:I},children:[{type:b,value:"'axios'"}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:p},children:[{type:b,value:"declare"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:p},children:[{type:b,value:"module"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:I},children:[{type:b,value:"'vue'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:J}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:p},children:[{type:b,value:"interface"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:"ct-b09d31"},children:[{type:b,value:"ComponentCustomProperties"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:J}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:"ct-7a01b9"},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:K},children:[{type:b,value:L}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:" ("}]},{type:a,tag:c,props:{class:"ct-7d0996"},children:[{type:b,value:"key"}]},{type:a,tag:c,props:{class:K},children:[{type:b,value:L}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:M},children:[{type:b,value:N}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:") "}]},{type:a,tag:c,props:{class:"ct-312a18"},children:[{type:b,value:"=\u003E"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:M},children:[{type:b,value:N}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" }"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"}"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-312a18{color:#FF7B72}.ct-0a3a8c{color:#79C0FF}.ct-7d0996{color:#FFA657}.ct-3636dc{color:#FF7B72}.ct-7a01b9{color:#D2A8FF}.ct-dfd58b{color:#C9D1D9}.ct-b09d31{color:#FFA657}.ct-a26ced{color:#FF7B72}.ct-e6de36{color:#A5D6FF}.ct-b56c55{color:#C9D1D9}.ct-4b1946{color:#C9D1D9}.ct-5b31c6{color:#FF7B72}.ct-0059ff{color:#8B949E}.light .ct-0059ff{color:#93A1A1}.light .ct-5b31c6{color:#859900}.light .ct-4b1946{color:#657B83}.light .ct-b56c55{color:#268BD2}.light .ct-e6de36{color:#2AA198}.light .ct-a26ced{color:#073642}.light .ct-b09d31{color:#268BD2}.light .ct-dfd58b{color:#657B83}.light .ct-7a01b9{color:#268BD2}.light .ct-3636dc{color:#859900}.light .ct-7d0996{color:#657B83}.light .ct-0a3a8c{color:#859900}.light .ct-312a18{color:#073642}"}]}],toc:{title:o,searchDepth:O,depth:O,links:[]}},_type:"markdown",_id:"content:Frontend:Vue:Adding global properties to component.md",_source:"content",_file:"Frontend\u002FVue\u002FAdding global properties to component.md",_extension:"md"}},prerenderedAt:1667469956487}}("element","text","span","ct-4b1946","line"," ","ct-dfd58b","p","a","code-inline","code",false,"$translate","\u002F\u002F ~\u002Findex.d.ts or ~\u002Fcustom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) =\u003E string\n }\n}\n","","ct-a26ced","Adding Global Properties To Component","\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component","root","The topic's fully covered in the ","https:\u002F\u002Fvuejs.org\u002Fguide\u002Ftypescript\u002Foptions-api.html#augmenting-global-properties","nofollow","official documentation"," and in ","Add%20global%20variable%20to%20window","Add global variable to window",".","For example, you want to add global ","$http"," and "," services to all of project's components:","typescript","pre","ct-5b31c6","ct-e6de36"," {","ct-3636dc",":","ct-0a3a8c","string",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:q,_path:r},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-gHURXJrO3C":{_path:r,_dir:"vue",_draft:l,_partial:l,_locale:"en",_empty:l,title:q,description:"The topic's fully covered in the official documentation and in Add global variable to window.",excerpt:{type:s,children:[{type:a,tag:h,props:{},children:[{type:b,value:t},{type:a,tag:i,props:{href:u,rel:[v]},children:[{type:b,value:w}]},{type:b,value:x},{type:a,tag:i,props:{href:y},children:[{type:b,value:z}]},{type:b,value:A}]},{type:a,tag:h,props:{},children:[{type:b,value:B},{type:a,tag:j,props:{},children:[{type:b,value:C}]},{type:b,value:D},{type:a,tag:j,props:{},children:[{type:b,value:m}]},{type:b,value:E}]},{type:a,tag:k,props:{code:n,language:F},children:[{type:a,tag:G,props:{},children:[{type:a,tag:k,props:{__ignoreMap:o},children:[{type:b,value:n}]}]}]}]},body:{type:s,children:[{type:a,tag:h,props:{},children:[{type:b,value:t},{type:a,tag:i,props:{href:u,rel:[v]},children:[{type:b,value:w}]},{type:b,value:x},{type:a,tag:i,props:{href:y},children:[{type:b,value:z}]},{type:b,value:A}]},{type:a,tag:h,props:{},children:[{type:b,value:B},{type:a,tag:j,props:{},children:[{type:b,value:C}]},{type:b,value:D},{type:a,tag:j,props:{},children:[{type:b,value:m}]},{type:b,value:E}]},{type:a,tag:k,props:{code:n,language:F},children:[{type:a,tag:G,props:{},children:[{type:a,tag:k,props:{__ignoreMap:o},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:"ct-5d6cfe"},children:[{type:b,value:"\u002F\u002F ~\u002Findex.d.ts or ~\u002Fcustom.d.ts"}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:H},children:[{type:b,value:"import"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:"ct-8348df"},children:[{type:b,value:"axios"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:H},children:[{type:b,value:"from"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:I},children:[{type:b,value:"'axios'"}]}]},{type:a,tag:c,props:{class:e},children:[]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:p},children:[{type:b,value:"declare"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:p},children:[{type:b,value:"module"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:I},children:[{type:b,value:"'vue'"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:J}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:p},children:[{type:b,value:"interface"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:"ct-e97f4a"},children:[{type:b,value:"ComponentCustomProperties"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:J}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:f}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:g},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:"ct-203129"},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:K},children:[{type:b,value:L}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:" ("}]},{type:a,tag:c,props:{class:"ct-544231"},children:[{type:b,value:"key"}]},{type:a,tag:c,props:{class:K},children:[{type:b,value:L}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:M},children:[{type:b,value:N}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:") "}]},{type:a,tag:c,props:{class:"ct-ee4f6e"},children:[{type:b,value:"=\u003E"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:f}]},{type:a,tag:c,props:{class:M},children:[{type:b,value:N}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" }"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"}"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-ee4f6e{color:#FF7B72}.ct-bae14e{color:#79C0FF}.ct-544231{color:#FFA657}.ct-b51be1{color:#FF7B72}.ct-203129{color:#D2A8FF}.ct-0f59c7{color:#C9D1D9}.ct-e97f4a{color:#FFA657}.ct-1fe06c{color:#FF7B72}.ct-f10d9f{color:#A5D6FF}.ct-8348df{color:#C9D1D9}.ct-c6fc44{color:#C9D1D9}.ct-cfe987{color:#FF7B72}.ct-5d6cfe{color:#8B949E}.light .ct-5d6cfe{color:#93A1A1}.light .ct-cfe987{color:#859900}.light .ct-c6fc44{color:#657B83}.light .ct-8348df{color:#268BD2}.light .ct-f10d9f{color:#2AA198}.light .ct-1fe06c{color:#073642}.light .ct-e97f4a{color:#268BD2}.light .ct-0f59c7{color:#657B83}.light .ct-203129{color:#268BD2}.light .ct-b51be1{color:#859900}.light .ct-544231{color:#657B83}.light .ct-bae14e{color:#859900}.light .ct-ee4f6e{color:#073642}"}]}],toc:{title:o,searchDepth:O,depth:O,links:[]}},_type:"markdown",_id:"content:Frontend:Vue:Adding global properties to component.md",_source:"content",_file:"Frontend\u002FVue\u002FAdding global properties to component.md",_extension:"md"}},prerenderedAt:1667480033034}}("element","text","span","ct-c6fc44","line"," ","ct-0f59c7","p","a","code-inline","code",false,"$translate","\u002F\u002F ~\u002Findex.d.ts or ~\u002Fcustom.d.ts\n\nimport axios from 'axios'\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $http: typeof axios\n $translate: (key: string) =\u003E string\n }\n}\n","","ct-1fe06c","Adding Global Properties To Component","\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component","root","The topic's fully covered in the ","https:\u002F\u002Fvuejs.org\u002Fguide\u002Ftypescript\u002Foptions-api.html#augmenting-global-properties","nofollow","official documentation"," and in ","Add%20global%20variable%20to%20window","Add global variable to window",".","For example, you want to add global ","$http"," and "," services to all of project's components:","typescript","pre","ct-cfe987","ct-f10d9f"," {","ct-b51be1",":","ct-bae14e","string",2)) \ No newline at end of file diff --git a/frontend/vue/adding-global-properties-to-component/index.html b/frontend/vue/adding-global-properties-to-component/index.html index d5dff14..459221d 100644 --- a/frontend/vue/adding-global-properties-to-component/index.html +++ b/frontend/vue/adding-global-properties-to-component/index.html @@ -1,6 +1,6 @@ -Adding Global Properties To Component • Obsidian Garden -

Adding Global Properties To Component

The topic's fully covered in the official documentation and in Add global variable to window.

For example, you want to add global $http and $translate services to all of project's components:

// ~/index.d.ts or ~/custom.d.tsimport axios from 'axios'declare module 'vue' {  interface ComponentCustomProperties {      $translate: (key: string) => string  }}
btw, have a nice day
(2018 - 2022) muerwre
+

Adding Global Properties To Component

The topic's fully covered in the official documentation and in Add global variable to window.

For example, you want to add global $http and $translate services to all of project's components:

// ~/index.d.ts or ~/custom.d.tsimport axios from 'axios'declare module 'vue' {  interface ComponentCustomProperties {      $translate: (key: string) => string  }}
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/frontend/vue/make-nuxt-handle-obsidian-highlights/_payload.js b/frontend/vue/make-nuxt-handle-obsidian-highlights/_payload.js index 81c6699..2d87a40 100644 --- a/frontend/vue/make-nuxt-handle-obsidian-highlights/_payload.js +++ b/frontend/vue/make-nuxt-handle-obsidian-highlights/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:u,_path:v}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-JZY9J7Y59r":{_path:v,_dir:"vue",_draft:m,_partial:m,_locale:"en",_empty:m,title:u,description:"By default Nuxt Content Plugin not handling \u003Cspan class=\"highlight\"\u003Ehighlight\u003C\u002Fspan\u003E links. To fix that we will create Nitro plugin:",excerpt:{type:w,children:[{type:a,tag:x,props:{},children:[{type:b,value:y},{type:a,tag:z,props:{href:A,rel:[B]},children:[{type:b,value:C}]},{type:b,value:D},{type:a,tag:k,props:{},children:[{type:b,value:E}]},{type:b,value:F},{type:a,tag:k,props:{},children:[{type:b,value:G}]},{type:b,value:H}]},{type:a,tag:l,props:{code:n,language:I},children:[{type:a,tag:J,props:{},children:[{type:a,tag:l,props:{__ignoreMap:o},children:[{type:b,value:n}]}]}]}]},body:{type:w,children:[{type:a,tag:x,props:{},children:[{type:b,value:y},{type:a,tag:z,props:{href:A,rel:[B]},children:[{type:b,value:C}]},{type:b,value:D},{type:a,tag:k,props:{},children:[{type:b,value:E}]},{type:b,value:F},{type:a,tag:k,props:{},children:[{type:b,value:G}]},{type:b,value:H}]},{type:a,tag:l,props:{code:n,language:I},children:[{type:a,tag:J,props:{},children:[{type:a,tag:l,props:{__ignoreMap:o},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:"ct-e451d7"},children:[{type:b,value:"\u002F\u002F ~\u002Fserver\u002Fplugins\u002Fhighlight.ts"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:K},children:[{type:b,value:"export"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:K},children:[{type:b,value:"default"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:"ct-4ae78b"},children:[{type:b,value:"defineNitroPlugin"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"((nitroApp) "}]},{type:a,tag:c,props:{class:"ct-7162c0"},children:[{type:b,value:"=\u003E"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:p},children:[{type:b,value:"{"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"nitroApp"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"hooks"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:"hook"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]},{type:a,tag:c,props:{class:s},children:[{type:b,value:"\"content:file:beforeParse\""}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:j},children:[{type:b,value:"if"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" ("}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"_id"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:"endsWith"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]},{type:a,tag:c,props:{class:s},children:[{type:b,value:"\".md\""}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:")) {"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:L}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:j},children:[{type:b,value:"="}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:L}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:"replace"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:M}]},{type:a,tag:c,props:{class:N},children:[{type:b,value:"\u002F==("}]},{type:a,tag:c,props:{class:O},children:[{type:b,value:"["}]},{type:a,tag:c,props:{class:j},children:[{type:b,value:"^"}]},{type:a,tag:c,props:{class:O},children:[{type:b,value:"=]"}]},{type:a,tag:c,props:{class:j},children:[{type:b,value:"+"}]},{type:a,tag:c,props:{class:N},children:[{type:b,value:")==\u002F"}]},{type:a,tag:c,props:{class:j},children:[{type:b,value:"gs"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:","}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:M}]},{type:a,tag:c,props:{class:s},children:[{type:b,value:"`\u003Cspan class=\"highlight\"\u003E$1\u003C\u002Fspan\u003E`"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" );"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" }"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" });"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:p},children:[{type:b,value:"}"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:")"}]},{type:a,tag:c,props:{class:p},children:[{type:b,value:";"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-7da03a{color:#79C0FF}.ct-c89929{color:#A5D6FF}.ct-86fb7c{color:#FF7B72}.ct-d3beb1{color:#A5D6FF}.ct-3d30a3{color:#D2A8FF}.ct-1fb8d7{color:#C9D1D9}.ct-9ad155{color:#C9D1D9}.ct-4029a0{color:#C9D1D9}.ct-7162c0{color:#FF7B72}.ct-4ae78b{color:#D2A8FF}.ct-2996cc{color:#FFA657}.ct-c283c4{color:#FF7B72}.ct-e451d7{color:#8B949E}.light .ct-e451d7{color:#93A1A1}.light .ct-c283c4{color:#859900}.light .ct-2996cc{color:#657B83}.light .ct-4ae78b{color:#268BD2}.light .ct-7162c0{color:#073642}.light .ct-4029a0{color:#657B83}.light .ct-9ad155{color:#657B83}.light .ct-1fb8d7{color:#268BD2}.light .ct-3d30a3{color:#268BD2}.light .ct-d3beb1{color:#2AA198}.light .ct-86fb7c{color:#859900}.light .ct-c89929{color:#D30102}.light .ct-7da03a{color:#CB4B16}"}]}],toc:{title:o,searchDepth:P,depth:P,links:[]}},_type:"markdown",_id:"content:Frontend:Vue:Make Nuxt handle Obsidian highlights.md",_source:"content",_file:"Frontend\u002FVue\u002FMake Nuxt handle Obsidian highlights.md",_extension:"md"}},prerenderedAt:1667469956527}}("element","text","span","ct-9ad155","line","ct-1fb8d7",".","ct-2996cc"," ","ct-86fb7c","code-inline","code",false,"\u002F\u002F ~\u002Fserver\u002Fplugins\u002Fhighlight.ts\nexport default defineNitroPlugin((nitroApp) =\u003E {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) =\u003E {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n \u002F==([^=]+)==\u002Fgs,\n `\u003Cspan class=\"highlight\"\u003E$1\u003C\u002Fspan\u003E`\n );\n }\n });\n});\n","","ct-4029a0","ct-3d30a3","(","ct-d3beb1","file","Make Nuxt Handle Obsidian Highlights","\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights","root","p","By default ","a","https:\u002F\u002Fcontent.nuxtjs.org","nofollow","Nuxt Content Plugin"," not handling ","\u003Cspan class=\"highlight\"\u003Ehighlight\u003C\u002Fspan\u003E"," links. To fix that we will create ","Nitro"," plugin:","typescript","pre","ct-c283c4","body"," ","ct-c89929","ct-7da03a",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:u,_path:v}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-JZY9J7Y59r":{_path:v,_dir:"vue",_draft:m,_partial:m,_locale:"en",_empty:m,title:u,description:"By default Nuxt Content Plugin not handling \u003Cspan class=\"highlight\"\u003Ehighlight\u003C\u002Fspan\u003E links. To fix that we will create Nitro plugin:",excerpt:{type:w,children:[{type:a,tag:x,props:{},children:[{type:b,value:y},{type:a,tag:z,props:{href:A,rel:[B]},children:[{type:b,value:C}]},{type:b,value:D},{type:a,tag:k,props:{},children:[{type:b,value:E}]},{type:b,value:F},{type:a,tag:k,props:{},children:[{type:b,value:G}]},{type:b,value:H}]},{type:a,tag:l,props:{code:n,language:I},children:[{type:a,tag:J,props:{},children:[{type:a,tag:l,props:{__ignoreMap:o},children:[{type:b,value:n}]}]}]}]},body:{type:w,children:[{type:a,tag:x,props:{},children:[{type:b,value:y},{type:a,tag:z,props:{href:A,rel:[B]},children:[{type:b,value:C}]},{type:b,value:D},{type:a,tag:k,props:{},children:[{type:b,value:E}]},{type:b,value:F},{type:a,tag:k,props:{},children:[{type:b,value:G}]},{type:b,value:H}]},{type:a,tag:l,props:{code:n,language:I},children:[{type:a,tag:J,props:{},children:[{type:a,tag:l,props:{__ignoreMap:o},children:[{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:"ct-e7b999"},children:[{type:b,value:"\u002F\u002F ~\u002Fserver\u002Fplugins\u002Fhighlight.ts"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:K},children:[{type:b,value:"export"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:K},children:[{type:b,value:"default"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:"ct-90a102"},children:[{type:b,value:"defineNitroPlugin"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:"((nitroApp) "}]},{type:a,tag:c,props:{class:"ct-bd9257"},children:[{type:b,value:"=\u003E"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:p},children:[{type:b,value:"{"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"nitroApp"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"hooks"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:"hook"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]},{type:a,tag:c,props:{class:s},children:[{type:b,value:"\"content:file:beforeParse\""}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:j},children:[{type:b,value:"if"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" ("}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"_id"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:"endsWith"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]},{type:a,tag:c,props:{class:s},children:[{type:b,value:"\".md\""}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:")) {"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" "}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:L}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:j},children:[{type:b,value:"="}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:i}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:L}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:g}]},{type:a,tag:c,props:{class:q},children:[{type:b,value:"replace"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:r}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:M}]},{type:a,tag:c,props:{class:N},children:[{type:b,value:"\u002F==("}]},{type:a,tag:c,props:{class:O},children:[{type:b,value:"["}]},{type:a,tag:c,props:{class:j},children:[{type:b,value:"^"}]},{type:a,tag:c,props:{class:O},children:[{type:b,value:"=]"}]},{type:a,tag:c,props:{class:j},children:[{type:b,value:"+"}]},{type:a,tag:c,props:{class:N},children:[{type:b,value:")==\u002F"}]},{type:a,tag:c,props:{class:j},children:[{type:b,value:"gs"}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:","}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:M}]},{type:a,tag:c,props:{class:s},children:[{type:b,value:"`\u003Cspan class=\"highlight\"\u003E$1\u003C\u002Fspan\u003E`"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" );"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" }"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" });"}]}]},{type:a,tag:c,props:{class:e},children:[{type:a,tag:c,props:{class:p},children:[{type:b,value:"}"}]},{type:a,tag:c,props:{class:h},children:[{type:b,value:")"}]},{type:a,tag:c,props:{class:p},children:[{type:b,value:";"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-773264{color:#79C0FF}.ct-14315a{color:#A5D6FF}.ct-7385d1{color:#FF7B72}.ct-11706c{color:#A5D6FF}.ct-e84e69{color:#D2A8FF}.ct-9e7555{color:#C9D1D9}.ct-a60213{color:#C9D1D9}.ct-ed11fd{color:#C9D1D9}.ct-bd9257{color:#FF7B72}.ct-90a102{color:#D2A8FF}.ct-c61dc2{color:#FFA657}.ct-1a859c{color:#FF7B72}.ct-e7b999{color:#8B949E}.light .ct-e7b999{color:#93A1A1}.light .ct-1a859c{color:#859900}.light .ct-c61dc2{color:#657B83}.light .ct-90a102{color:#268BD2}.light .ct-bd9257{color:#073642}.light .ct-ed11fd{color:#657B83}.light .ct-a60213{color:#657B83}.light .ct-9e7555{color:#268BD2}.light .ct-e84e69{color:#268BD2}.light .ct-11706c{color:#2AA198}.light .ct-7385d1{color:#859900}.light .ct-14315a{color:#D30102}.light .ct-773264{color:#CB4B16}"}]}],toc:{title:o,searchDepth:P,depth:P,links:[]}},_type:"markdown",_id:"content:Frontend:Vue:Make Nuxt handle Obsidian highlights.md",_source:"content",_file:"Frontend\u002FVue\u002FMake Nuxt handle Obsidian highlights.md",_extension:"md"}},prerenderedAt:1667480033069}}("element","text","span","ct-a60213","line","ct-9e7555",".","ct-c61dc2"," ","ct-7385d1","code-inline","code",false,"\u002F\u002F ~\u002Fserver\u002Fplugins\u002Fhighlight.ts\nexport default defineNitroPlugin((nitroApp) =\u003E {\n nitroApp.hooks.hook(\"content:file:beforeParse\", (file) =\u003E {\n if (file._id.endsWith(\".md\")) {\n file.body = file.body.replace(\n \u002F==([^=]+)==\u002Fgs,\n `\u003Cspan class=\"highlight\"\u003E$1\u003C\u002Fspan\u003E`\n );\n }\n });\n});\n","","ct-ed11fd","ct-e84e69","(","ct-11706c","file","Make Nuxt Handle Obsidian Highlights","\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights","root","p","By default ","a","https:\u002F\u002Fcontent.nuxtjs.org","nofollow","Nuxt Content Plugin"," not handling ","\u003Cspan class=\"highlight\"\u003Ehighlight\u003C\u002Fspan\u003E"," links. To fix that we will create ","Nitro"," plugin:","typescript","pre","ct-1a859c","body"," ","ct-14315a","ct-773264",2)) \ No newline at end of file diff --git a/frontend/vue/make-nuxt-handle-obsidian-highlights/index.html b/frontend/vue/make-nuxt-handle-obsidian-highlights/index.html index 2a621b2..229a7cd 100644 --- a/frontend/vue/make-nuxt-handle-obsidian-highlights/index.html +++ b/frontend/vue/make-nuxt-handle-obsidian-highlights/index.html @@ -1,6 +1,6 @@ -Make Nuxt Handle Obsidian Highlights • Obsidian Garden -

Make Nuxt Handle Obsidian Highlights

By default Nuxt Content Plugin not handling <span class="highlight">highlight</span> links. To fix that we will create Nitro plugin:

// ~/server/plugins/highlight.tsexport default defineNitroPlugin((nitroApp) => {  nitroApp.hooks.hook("content:file:beforeParse"    if (file._id.endsWith(".md")) {      file.body = file.body.replace(        /==([^=]+)==/gs,        `<span class="highlight">$1</span>`      );    }  });});
btw, have a nice day
(2018 - 2022) muerwre
+

Make Nuxt Handle Obsidian Highlights

By default Nuxt Content Plugin not handling <span class="highlight">highlight</span> links. To fix that we will create Nitro plugin:

// ~/server/plugins/highlight.tsexport default defineNitroPlugin((nitroApp) => {  nitroApp.hooks.hook("content:file:beforeParse"    if (file._id.endsWith(".md")) {      file.body = file.body.replace(        /==([^=]+)==/gs,        `<span class="highlight">$1</span>`      );    }  });});
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/git/force-git-to-use-https/_payload.js b/git/force-git-to-use-https/_payload.js index 41006c9..dc63f82 100644 --- a/git/force-git-to-use-https/_payload.js +++ b/git/force-git-to-use-https/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:k,_path:l},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-atqGqeweL2":{_path:l,_dir:"git",_draft:g,_partial:g,_locale:"en",_empty:g,title:k,description:h,excerpt:{type:m,children:[{type:a,tag:d,props:{},children:[{type:b,value:h}]},{type:a,tag:d,props:{},children:[{type:b,value:n},{type:a,tag:o,props:{},children:[{type:b,value:p}]},{type:b,value:q}]},{type:a,tag:e,props:{code:i,language:r},children:[{type:a,tag:s,props:{},children:[{type:a,tag:e,props:{__ignoreMap:j},children:[{type:b,value:i}]}]}]}]},body:{type:m,children:[{type:a,tag:d,props:{},children:[{type:b,value:h}]},{type:a,tag:d,props:{},children:[{type:b,value:n},{type:a,tag:o,props:{},children:[{type:b,value:p}]},{type:b,value:q}]},{type:a,tag:e,props:{code:i,language:r},children:[{type:a,tag:s,props:{},children:[{type:a,tag:e,props:{__ignoreMap:j},children:[{type:a,tag:c,props:{class:t},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"[url "}]},{type:a,tag:c,props:{class:"ct-bb7a3a"},children:[{type:b,value:"\"https:\u002F\u002Fgithub.com\""}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"]"}]}]},{type:a,tag:c,props:{class:t},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:" insteadOf "}]},{type:a,tag:c,props:{class:"ct-9648cd"},children:[{type:b,value:"="}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:" git:"}]},{type:a,tag:c,props:{class:"ct-b7e81b"},children:[{type:b,value:"\u002F\u002Fgithub.com"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-b7e81b{color:#8B949E}.ct-9648cd{color:#FF7B72}.ct-bb7a3a{color:#A5D6FF}.ct-887227{color:#C9D1D9}.light .ct-887227{color:#657B83}.light .ct-bb7a3a{color:#2AA198}.light .ct-9648cd{color:#859900}.light .ct-b7e81b{color:#93A1A1}"}]}],toc:{title:j,searchDepth:u,depth:u,links:[]}},_type:"markdown",_id:"content:Git:Force git to use HTTPS.md",_source:"content",_file:"Git\u002FForce git to use HTTPS.md",_extension:"md"}},prerenderedAt:1667469956561}}("element","text","span","p","code","ct-887227",false,"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol.","[url \"https:\u002F\u002Fgithub.com\"]\n insteadOf = git:\u002F\u002Fgithub.com\n","","Force Git To Use HTTPS","\u002Fgit\u002Fforce-git-to-use-https","root","Put this inside your ","code-inline","~\u002F.gitconfig",":","c","pre","line",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:k,_path:l},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-atqGqeweL2":{_path:l,_dir:"git",_draft:g,_partial:g,_locale:"en",_empty:g,title:k,description:h,excerpt:{type:m,children:[{type:a,tag:d,props:{},children:[{type:b,value:h}]},{type:a,tag:d,props:{},children:[{type:b,value:n},{type:a,tag:o,props:{},children:[{type:b,value:p}]},{type:b,value:q}]},{type:a,tag:e,props:{code:i,language:r},children:[{type:a,tag:s,props:{},children:[{type:a,tag:e,props:{__ignoreMap:j},children:[{type:b,value:i}]}]}]}]},body:{type:m,children:[{type:a,tag:d,props:{},children:[{type:b,value:h}]},{type:a,tag:d,props:{},children:[{type:b,value:n},{type:a,tag:o,props:{},children:[{type:b,value:p}]},{type:b,value:q}]},{type:a,tag:e,props:{code:i,language:r},children:[{type:a,tag:s,props:{},children:[{type:a,tag:e,props:{__ignoreMap:j},children:[{type:a,tag:c,props:{class:t},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:"[url "}]},{type:a,tag:c,props:{class:"ct-35ba29"},children:[{type:b,value:"\"https:\u002F\u002Fgithub.com\""}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:"]"}]}]},{type:a,tag:c,props:{class:t},children:[{type:a,tag:c,props:{class:f},children:[{type:b,value:" insteadOf "}]},{type:a,tag:c,props:{class:"ct-f321ae"},children:[{type:b,value:"="}]},{type:a,tag:c,props:{class:f},children:[{type:b,value:" git:"}]},{type:a,tag:c,props:{class:"ct-071617"},children:[{type:b,value:"\u002F\u002Fgithub.com"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-071617{color:#8B949E}.ct-f321ae{color:#FF7B72}.ct-35ba29{color:#A5D6FF}.ct-b3692d{color:#C9D1D9}.light .ct-b3692d{color:#657B83}.light .ct-35ba29{color:#2AA198}.light .ct-f321ae{color:#859900}.light .ct-071617{color:#93A1A1}"}]}],toc:{title:j,searchDepth:u,depth:u,links:[]}},_type:"markdown",_id:"content:Git:Force git to use HTTPS.md",_source:"content",_file:"Git\u002FForce git to use HTTPS.md",_extension:"md"}},prerenderedAt:1667480033111}}("element","text","span","p","code","ct-b3692d",false,"Forces #git to use https even if remote url is #SSH. Useful for the networks with blocked #ssh protocol.","[url \"https:\u002F\u002Fgithub.com\"]\n insteadOf = git:\u002F\u002Fgithub.com\n","","Force Git To Use HTTPS","\u002Fgit\u002Fforce-git-to-use-https","root","Put this inside your ","code-inline","~\u002F.gitconfig",":","c","pre","line",2)) \ No newline at end of file diff --git a/git/force-git-to-use-https/index.html b/git/force-git-to-use-https/index.html index a750d9a..0507667 100644 --- a/git/force-git-to-use-https/index.html +++ b/git/force-git-to-use-https/index.html @@ -1,6 +1,6 @@ -Force Git To Use HTTPS • Obsidian Garden - + \ No newline at end of file diff --git a/git/git-aliases-and-useful-commands/_payload.js b/git/git-aliases-and-useful-commands/_payload.js index 49d895e..9706c58 100644 --- a/git/git-aliases-and-useful-commands/_payload.js +++ b/git/git-aliases-and-useful-commands/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:t,_path:u}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-VrJO0uSyzq":{_path:u,_dir:"git",_draft:q,_partial:q,_locale:"en",_empty:q,title:t,description:"Shorthands for #git commands can be specified. Should be placed at ~\u002F.gitconfig.",excerpt:{type:v,children:[{type:a,tag:w,props:{},children:[{type:b,value:x},{type:a,tag:h,props:{},children:[{type:b,value:y}]},{type:b,value:z}]},{type:a,tag:n,props:{code:r,language:A},children:[{type:a,tag:B,props:{},children:[{type:a,tag:n,props:{__ignoreMap:s},children:[{type:b,value:r}]}]}]},{type:a,tag:C,props:{},children:[{type:a,tag:D,props:{},children:[{type:a,tag:i,props:{},children:[{type:a,tag:o,props:{align:e},children:[{type:a,tag:p,props:{},children:[{type:b,value:E}]}]},{type:a,tag:o,props:{align:e},children:[{type:a,tag:p,props:{},children:[{type:b,value:F}]}]}]}]},{type:a,tag:G,props:{},children:[{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:H}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:I}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:J}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:K}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:L}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:M}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:N}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:O}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:P}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:Q}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:R}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:S}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:T}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:U}]}]}]}]}]},body:{type:v,children:[{type:a,tag:w,props:{},children:[{type:b,value:x},{type:a,tag:h,props:{},children:[{type:b,value:y}]},{type:b,value:z}]},{type:a,tag:n,props:{code:r,language:A},children:[{type:a,tag:B,props:{},children:[{type:a,tag:n,props:{__ignoreMap:s},children:[{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"[alias]"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" flush "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" git clean"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"branches branch "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:V}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" grep "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"v master "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:V}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" xargs git branch "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"D"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" lol "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" log "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"oneline "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"graph"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" l "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" lol"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" c "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:W}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:X}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" cv "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:W}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"no"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"verify "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:X}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" p "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" push"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" pf "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" p "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"force"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"with"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"lease"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" ignore"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"now "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" update"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"index "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"skip"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"worktree"}]}]}]}]}]},{type:a,tag:C,props:{},children:[{type:a,tag:D,props:{},children:[{type:a,tag:i,props:{},children:[{type:a,tag:o,props:{align:e},children:[{type:a,tag:p,props:{},children:[{type:b,value:E}]}]},{type:a,tag:o,props:{align:e},children:[{type:a,tag:p,props:{},children:[{type:b,value:F}]}]}]}]},{type:a,tag:G,props:{},children:[{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:H}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:I}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:J}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:K}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:L}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:M}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:N}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:O}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:P}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:Q}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:R}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:S}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:T}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:U}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-266817{color:#FF7B72}.ct-3013c7{color:#C9D1D9}.light .ct-3013c7{color:#657B83}.light .ct-266817{color:#859900}"}]}],toc:{title:s,searchDepth:Y,depth:Y,links:[]}},_type:"markdown",_id:"content:Git:Git aliases and useful commands.md",_source:"content",_file:"Git\u002FGit aliases and useful commands.md",_extension:"md"}},prerenderedAt:1667469956594}}("element","text","span","ct-3013c7",null,"td","ct-266817","code-inline","tr","-","line","=","--","code","th","strong",false,"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n","","Git Aliases And Useful Commands","\u002Fgit\u002Fgit-aliases-and-useful-commands","root","p","Shorthands for #git commands can be specified. Should be placed at ","~\u002F.gitconfig",".","c","pre","table","thead","command","description","tbody","git flush","drops all branches, except master","git lol","shows log","git c","commits with message","git cv","commits without hooks","git p","pushes","git pf","push with --force and additional check","git ignore-now","starts ignoring file from now on","|"," commit ","am",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:t,_path:u}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-VrJO0uSyzq":{_path:u,_dir:"git",_draft:q,_partial:q,_locale:"en",_empty:q,title:t,description:"Shorthands for #git commands can be specified. Should be placed at ~\u002F.gitconfig.",excerpt:{type:v,children:[{type:a,tag:w,props:{},children:[{type:b,value:x},{type:a,tag:h,props:{},children:[{type:b,value:y}]},{type:b,value:z}]},{type:a,tag:n,props:{code:r,language:A},children:[{type:a,tag:B,props:{},children:[{type:a,tag:n,props:{__ignoreMap:s},children:[{type:b,value:r}]}]}]},{type:a,tag:C,props:{},children:[{type:a,tag:D,props:{},children:[{type:a,tag:i,props:{},children:[{type:a,tag:o,props:{align:e},children:[{type:a,tag:p,props:{},children:[{type:b,value:E}]}]},{type:a,tag:o,props:{align:e},children:[{type:a,tag:p,props:{},children:[{type:b,value:F}]}]}]}]},{type:a,tag:G,props:{},children:[{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:H}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:I}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:J}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:K}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:L}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:M}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:N}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:O}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:P}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:Q}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:R}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:S}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:T}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:U}]}]}]}]}]},body:{type:v,children:[{type:a,tag:w,props:{},children:[{type:b,value:x},{type:a,tag:h,props:{},children:[{type:b,value:y}]},{type:b,value:z}]},{type:a,tag:n,props:{code:r,language:A},children:[{type:a,tag:B,props:{},children:[{type:a,tag:n,props:{__ignoreMap:s},children:[{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:"[alias]"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" flush "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" git clean"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"branches branch "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:V}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" grep "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"v master "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:V}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" xargs git branch "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"D"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" lol "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" log "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"oneline "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"graph"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" l "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" lol"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" c "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:W}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:X}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" cv "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:W}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"no"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"verify "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:X}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" p "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" push"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" pf "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" p "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"force"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"with"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"lease"}]}]},{type:a,tag:c,props:{class:k},children:[{type:a,tag:c,props:{class:d},children:[{type:b,value:" ignore"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"now "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:l}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:" update"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"index "}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:m}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"skip"}]},{type:a,tag:c,props:{class:g},children:[{type:b,value:j}]},{type:a,tag:c,props:{class:d},children:[{type:b,value:"worktree"}]}]}]}]}]},{type:a,tag:C,props:{},children:[{type:a,tag:D,props:{},children:[{type:a,tag:i,props:{},children:[{type:a,tag:o,props:{align:e},children:[{type:a,tag:p,props:{},children:[{type:b,value:E}]}]},{type:a,tag:o,props:{align:e},children:[{type:a,tag:p,props:{},children:[{type:b,value:F}]}]}]}]},{type:a,tag:G,props:{},children:[{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:H}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:I}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:J}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:K}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:L}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:M}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:N}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:O}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:P}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:Q}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:R}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:S}]}]},{type:a,tag:i,props:{},children:[{type:a,tag:f,props:{align:e},children:[{type:a,tag:h,props:{},children:[{type:b,value:T}]}]},{type:a,tag:f,props:{align:e},children:[{type:b,value:U}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-b9ecb8{color:#FF7B72}.ct-473820{color:#C9D1D9}.light .ct-473820{color:#657B83}.light .ct-b9ecb8{color:#859900}"}]}],toc:{title:s,searchDepth:Y,depth:Y,links:[]}},_type:"markdown",_id:"content:Git:Git aliases and useful commands.md",_source:"content",_file:"Git\u002FGit aliases and useful commands.md",_extension:"md"}},prerenderedAt:1667480033138}}("element","text","span","ct-473820",null,"td","ct-b9ecb8","code-inline","tr","-","line","=","--","code","th","strong",false,"[alias]\n flush = git clean-branches branch | grep -v master | xargs git branch -D\n lol = log --oneline --graph\n l = lol\n c = commit -am\n cv = commit --no-verify -am\n p = push\n pf = p --force-with-lease\n ignore-now = update-index --skip-worktree\n","","Git Aliases And Useful Commands","\u002Fgit\u002Fgit-aliases-and-useful-commands","root","p","Shorthands for #git commands can be specified. Should be placed at ","~\u002F.gitconfig",".","c","pre","table","thead","command","description","tbody","git flush","drops all branches, except master","git lol","shows log","git c","commits with message","git cv","commits without hooks","git p","pushes","git pf","push with --force and additional check","git ignore-now","starts ignoring file from now on","|"," commit ","am",2)) \ No newline at end of file diff --git a/git/git-aliases-and-useful-commands/index.html b/git/git-aliases-and-useful-commands/index.html index 4a74c5a..ec5f73a 100644 --- a/git/git-aliases-and-useful-commands/index.html +++ b/git/git-aliases-and-useful-commands/index.html @@ -1,6 +1,6 @@ -Git Aliases And Useful Commands • Obsidian Garden -

Git Aliases And Useful Commands

Shorthands for #git commands can be specified. Should be placed at ~/.gitconfig.

[alias]    flush = git clean-branches branch | grep -v master | xargs git branch -D    lol = log --oneline --graph    l = lol    c = commit -am    cv = commit --no-verify -am    p = push    pf = p --force-with-lease    ignore-now = update-index --skip-worktree
commanddescription
git flushdrops all branches, except master
git lolshows log
git ccommits with message
git cvcommits without hooks
git ppushes
git pfpush with --force and additional check
git ignore-nowstarts ignoring file from now on
btw, have a nice day
(2018 - 2022) muerwre
+

Git Aliases And Useful Commands

Shorthands for #git commands can be specified. Should be placed at ~/.gitconfig.

[alias]    flush = git clean-branches branch | grep -v master | xargs git branch -D    lol = log --oneline --graph    l = lol    c = commit -am    cv = commit --no-verify -am    p = push    pf = p --force-with-lease    ignore-now = update-index --skip-worktree
commanddescription
git flushdrops all branches, except master
git lolshows log
git ccommits with message
git cvcommits without hooks
git ppushes
git pfpush with --force and additional check
git ignore-nowstarts ignoring file from now on
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/graphql/apollo-client-pagination/_payload.js b/graphql/apollo-client-pagination/_payload.js index ccd6002..212266f 100644 --- a/graphql/apollo-client-pagination/_payload.js +++ b/graphql/apollo-client-pagination/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:ab,_path:ac},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-k91xxFGA5Y":{_path:ac,_dir:R,_draft:S,_partial:S,_locale:"en",_empty:S,title:ab,description:"Say, we have gql response like this and we wan't to have pagination with it. Let's merge it as it specified in official documentation",excerpt:{type:ad,children:[{type:a,tag:v,props:{},children:[{type:c,value:ae},{type:a,tag:o,props:{},children:[{type:c,value:af}]},{type:c,value:ag},{type:a,tag:ah,props:{href:ai,rel:[aj]},children:[{type:c,value:ak}]}]},{type:a,tag:k,props:{code:T,language:R},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:c,value:T}]}]}]},{type:a,tag:v,props:{},children:[{type:c,value:al},{type:a,tag:o,props:{},children:[{type:c,value:I}]},{type:c,value:am},{type:a,tag:o,props:{},children:[{type:c,value:J}]},{type:c,value:an}]},{type:a,tag:k,props:{code:U,language:K},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:c,value:U}]}]}]},{type:a,tag:v,props:{},children:[{type:c,value:ao},{type:a,tag:o,props:{},children:[{type:c,value:L}]},{type:c,value:ap}]},{type:a,tag:k,props:{code:V,language:K},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:c,value:V}]}]}]}]},body:{type:ad,children:[{type:a,tag:v,props:{},children:[{type:c,value:ae},{type:a,tag:o,props:{},children:[{type:c,value:af}]},{type:c,value:ag},{type:a,tag:ah,props:{href:ai,rel:[aj]},children:[{type:c,value:ak}]}]},{type:a,tag:k,props:{code:T,language:R},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"query"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:"listItems"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:W}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"filter"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"sort"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"limit"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"): "}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"input"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:at},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"name"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:at},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:": ["}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"Item"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"]"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"Int"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]}]}]}]}]},{type:a,tag:v,props:{},children:[{type:c,value:al},{type:a,tag:o,props:{},children:[{type:c,value:I}]},{type:c,value:am},{type:a,tag:o,props:{},children:[{type:c,value:J}]},{type:c,value:an}]},{type:a,tag:k,props:{code:U,language:K},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"import"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" { "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:av}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" } "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"from"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"'@apollo\u002Fclient'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aw}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:N},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:O},children:[{type:c,value:"client"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ay}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" cache: "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:av}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({ "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" }),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ay}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"});"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"export"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:N},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:O},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:":"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-ca850d"},children:[{type:c,value:"TypePolicies"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" Query: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" fields: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F query name"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" listItems: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F apollo will serialize and use keyArgs as unique"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F identifier in cache for every query"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F consider choosing the right fields, "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F i.e. limit and offset won't work here"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" keyArgs: ["}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"'sort'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F primitive type"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"'filter'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:", ["}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"'name'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"'type'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"] "}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F nested fields of `filter`"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ],"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" merge: "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]}]}]}]}]},{type:a,tag:v,props:{},children:[{type:c,value:ao},{type:a,tag:o,props:{},children:[{type:c,value:L}]},{type:c,value:ap}]},{type:a,tag:k,props:{code:V,language:K},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F** merges all sources with { items: unknown[], totalCount: number } *\u002F"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:aA},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-c2c491"},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:", { "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:" }) "}]},{type:a,tag:b,props:{class:aA},children:[{type:c,value:"=\u003E"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F no existing data"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"."}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\u003C"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aC}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F If hook was called multiple times"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aC}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F merge cache and incoming data"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:N},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:O},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ["}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F apply latest result for totalCount"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:N},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:O},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aw}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-c2c491{color:#D2A8FF}.ct-8a041d{color:#FF7B72}.ct-ca850d{color:#FFA657}.ct-84bc7a{color:#8B949E}.ct-bce347{color:#79C0FF}.ct-6b9c4d{color:#FF7B72}.ct-24c886{color:#A5D6FF}.ct-d98dbb{color:#C9D1D9}.ct-8bd8a4{color:#FF7B72}.ct-e65a4c{color:#79C0FF}.ct-3a8412{color:#79C0FF}.ct-ec611b{color:#FFA657}.ct-c8742a{color:#C9D1D9}.ct-938f0a{color:#D2A8FF}.ct-03a597{color:#C9D1D9}.ct-b51767{color:#FF7B72}.light .ct-b51767{color:#859900}.light .ct-03a597{color:#657B83}.light .ct-938f0a{color:#268BD2}.light .ct-c8742a{color:#657B83}.light .ct-ec611b{color:#657B83}.light .ct-3a8412{color:#859900}.light .ct-e65a4c{color:#859900}.light .ct-8bd8a4{color:#859900}.light .ct-d98dbb{color:#268BD2}.light .ct-24c886{color:#2AA198}.light .ct-6b9c4d{color:#073642}.light .ct-bce347{color:#268BD2}.light .ct-84bc7a{color:#93A1A1}.light .ct-ca850d{color:#268BD2}.light .ct-8a041d{color:#073642}.light .ct-c2c491{color:#268BD2}"}]}],toc:{title:r,searchDepth:aF,depth:aF,links:[]}},_type:"markdown",_id:"content:GraphQL:Apollo Client pagination.md",_source:"content",_file:"GraphQL\u002FApollo Client pagination.md",_extension:"md"}},prerenderedAt:1667469956771}}("element","span","text","ct-03a597","line"," ","ct-b51767","ct-c8742a","ct-d98dbb","ct-84bc7a","code","ct-ec611b"," "," ","code-inline","ct-3a8412","!","",": ","existing","||","p","pre",",","ct-8bd8a4"," ","?.",", "," {","items","totalCount","ct-24c886","const","=","ApolloClient","typePolicies","typescript","mergeItemsWithTotalCount","ct-938f0a","ct-6b9c4d","ct-bce347"," ","incoming","graphql",false,"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n","import { ApolloClient, InMemoryCache } from '@apollo\u002Fclient';\n\nconst client = new ApolloClient({\n \u002F\u002F ...\n cache: new InMemoryCache({ typePolicies }),\n \u002F\u002F ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n \u002F\u002F query name\n listItems: {\n \u002F\u002F apollo will serialize and use keyArgs as unique\n \u002F\u002F identifier in cache for every query\n \u002F\u002F consider choosing the right fields, \n \u002F\u002F i.e. limit and offset won't work here\n keyArgs: [\n 'sort', \u002F\u002F primitive type\n 'filter', ['name', 'type'] \u002F\u002F nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n","\u002F** merges all sources with { items: unknown[], totalCount: number } *\u002F\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) =\u003E {\n \u002F\u002F no existing data\n if (!existing || !args?.offset || args.offset \u003C existing.length) {\n return incoming || [];\n }\n\n \u002F\u002F If hook was called multiple times\n if (existing?.items?.length && args?.offset \u003C existing.items.length) {\n return existing || [];\n }\n\n \u002F\u002F merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n \u002F\u002F apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n","(","String","offset","}"," (","args","return","Apollo Client Pagination","\u002Fgraphql\u002Fapollo-client-pagination","root","Say, we have ","gql"," response like this and we wan't to have pagination with it. Let's merge it as it specified in ","a","https:\u002F\u002Fwww.apollographql.com\u002Fdocs\u002Freact\u002Fcaching\u002Fcache-field-behavior\u002F#the-merge-function","nofollow","official documentation","We will setup "," with "," to merge incoming data in cache:","We will need merge function ",", which will join results of query and cached data for specific key:","Filter","Number","ItemList","ct-e65a4c","type","InMemoryCache",";","new","\u002F\u002F ..."," ","ct-8a041d","if"," [];"," }","...",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:ab,_path:ac},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-k91xxFGA5Y":{_path:ac,_dir:R,_draft:S,_partial:S,_locale:"en",_empty:S,title:ab,description:"Say, we have gql response like this and we wan't to have pagination with it. Let's merge it as it specified in official documentation",excerpt:{type:ad,children:[{type:a,tag:v,props:{},children:[{type:c,value:ae},{type:a,tag:o,props:{},children:[{type:c,value:af}]},{type:c,value:ag},{type:a,tag:ah,props:{href:ai,rel:[aj]},children:[{type:c,value:ak}]}]},{type:a,tag:k,props:{code:T,language:R},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:c,value:T}]}]}]},{type:a,tag:v,props:{},children:[{type:c,value:al},{type:a,tag:o,props:{},children:[{type:c,value:I}]},{type:c,value:am},{type:a,tag:o,props:{},children:[{type:c,value:J}]},{type:c,value:an}]},{type:a,tag:k,props:{code:U,language:K},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:c,value:U}]}]}]},{type:a,tag:v,props:{},children:[{type:c,value:ao},{type:a,tag:o,props:{},children:[{type:c,value:L}]},{type:c,value:ap}]},{type:a,tag:k,props:{code:V,language:K},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:c,value:V}]}]}]}]},body:{type:ad,children:[{type:a,tag:v,props:{},children:[{type:c,value:ae},{type:a,tag:o,props:{},children:[{type:c,value:af}]},{type:c,value:ag},{type:a,tag:ah,props:{href:ai,rel:[aj]},children:[{type:c,value:ak}]}]},{type:a,tag:k,props:{code:T,language:R},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"query"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:"listItems"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:W}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"filter"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"sort"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"limit"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"): "}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"input"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:at},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:"name"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:au}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:at},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:": ["}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"Item"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"]"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:s}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"Int"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]}]}]}]}]},{type:a,tag:v,props:{},children:[{type:c,value:al},{type:a,tag:o,props:{},children:[{type:c,value:I}]},{type:c,value:am},{type:a,tag:o,props:{},children:[{type:c,value:J}]},{type:c,value:an}]},{type:a,tag:k,props:{code:U,language:K},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"import"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" { "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:av}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" } "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"from"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"'@apollo\u002Fclient'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aw}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:N},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:O},children:[{type:c,value:"client"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ay}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" cache: "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ax}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:M},children:[{type:c,value:av}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"({ "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" }),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ay}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"});"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:"export"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:N},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:O},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:":"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-597759"},children:[{type:c,value:"TypePolicies"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" Query: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" fields: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F query name"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" listItems: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F apollo will serialize and use keyArgs as unique"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F identifier in cache for every query"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F consider choosing the right fields, "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F i.e. limit and offset won't work here"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" keyArgs: ["}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"'sort'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F primitive type"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"'filter'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:", ["}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"'name'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:F},children:[{type:c,value:"'type'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"] "}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F nested fields of `filter`"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ],"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" merge: "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:Z}]}]}]}]}]},{type:a,tag:v,props:{},children:[{type:c,value:ao},{type:a,tag:o,props:{},children:[{type:c,value:L}]},{type:c,value:ap}]},{type:a,tag:k,props:{code:V,language:K},children:[{type:a,tag:w,props:{},children:[{type:a,tag:k,props:{__ignoreMap:r},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F** merges all sources with { items: unknown[], totalCount: number } *\u002F"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:aA},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-f40db7"},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:", { "}]},{type:a,tag:b,props:{class:l},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:" }) "}]},{type:a,tag:b,props:{class:aA},children:[{type:c,value:"=\u003E"}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F no existing data"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"."}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:Y}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\u003C"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aC}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F If hook was called multiple times"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aC}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F merge cache and incoming data"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:N},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:O},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" ["}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"\u002F\u002F apply latest result for totalCount"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:N},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:O},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aw}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:n}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aa}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:C}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:Q}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-f40db7{color:#D2A8FF}.ct-239e82{color:#FF7B72}.ct-597759{color:#FFA657}.ct-37e996{color:#8B949E}.ct-b6b3a1{color:#79C0FF}.ct-c33669{color:#FF7B72}.ct-81d2a2{color:#A5D6FF}.ct-e9b930{color:#C9D1D9}.ct-3c31de{color:#FF7B72}.ct-d60f88{color:#79C0FF}.ct-9d23e5{color:#79C0FF}.ct-770547{color:#FFA657}.ct-0cf362{color:#C9D1D9}.ct-a7f3fe{color:#D2A8FF}.ct-ce3c96{color:#C9D1D9}.ct-4d95b5{color:#FF7B72}.light .ct-4d95b5{color:#859900}.light .ct-ce3c96{color:#657B83}.light .ct-a7f3fe{color:#268BD2}.light .ct-0cf362{color:#657B83}.light .ct-770547{color:#657B83}.light .ct-9d23e5{color:#859900}.light .ct-d60f88{color:#859900}.light .ct-3c31de{color:#859900}.light .ct-e9b930{color:#268BD2}.light .ct-81d2a2{color:#2AA198}.light .ct-c33669{color:#073642}.light .ct-b6b3a1{color:#268BD2}.light .ct-37e996{color:#93A1A1}.light .ct-597759{color:#268BD2}.light .ct-239e82{color:#073642}.light .ct-f40db7{color:#268BD2}"}]}],toc:{title:r,searchDepth:aF,depth:aF,links:[]}},_type:"markdown",_id:"content:GraphQL:Apollo Client pagination.md",_source:"content",_file:"GraphQL\u002FApollo Client pagination.md",_extension:"md"}},prerenderedAt:1667480033232}}("element","span","text","ct-ce3c96","line"," ","ct-4d95b5","ct-0cf362","ct-e9b930","ct-37e996","code","ct-770547"," "," ","code-inline","ct-9d23e5","!","",": ","existing","||","p","pre",",","ct-3c31de"," ","?.",", "," {","items","totalCount","ct-81d2a2","const","=","ApolloClient","typePolicies","typescript","mergeItemsWithTotalCount","ct-a7f3fe","ct-c33669","ct-b6b3a1"," ","incoming","graphql",false,"query listItems(\n filter: Filter, \n sort: String,\n limit: Number,\n offset: Number,\n): ItemList!\n\ninput Filter {\n name: String!\n type: String!\n}\n\ntype ItemList {\n items: [Item!]!\n totalCount: Int!\n}\n","import { ApolloClient, InMemoryCache } from '@apollo\u002Fclient';\n\nconst client = new ApolloClient({\n \u002F\u002F ...\n cache: new InMemoryCache({ typePolicies }),\n \u002F\u002F ...\n});\n\nexport const typePolicies: TypePolicies = {\n Query: {\n fields: {\n \u002F\u002F query name\n listItems: {\n \u002F\u002F apollo will serialize and use keyArgs as unique\n \u002F\u002F identifier in cache for every query\n \u002F\u002F consider choosing the right fields, \n \u002F\u002F i.e. limit and offset won't work here\n keyArgs: [\n 'sort', \u002F\u002F primitive type\n 'filter', ['name', 'type'] \u002F\u002F nested fields of `filter`\n ],\n merge: mergeItemsWithTotalCount,\n },\n }\n}\n","\u002F** merges all sources with { items: unknown[], totalCount: number } *\u002F\nconst mergeItemsWithTotalCount = (existing, incoming, { args }) =\u003E {\n \u002F\u002F no existing data\n if (!existing || !args?.offset || args.offset \u003C existing.length) {\n return incoming || [];\n }\n\n \u002F\u002F If hook was called multiple times\n if (existing?.items?.length && args?.offset \u003C existing.items.length) {\n return existing || [];\n }\n\n \u002F\u002F merge cache and incoming data\n const items = [...(existing?.items || []), ...(incoming?.items || [])];\n\n \u002F\u002F apply latest result for totalCount\n const totalCount = incoming?.totalCount || existing?.totalCount;\n\n return {\n ...(incoming || existing || {}),\n items,\n totalCount,\n };\n };\n","(","String","offset","}"," (","args","return","Apollo Client Pagination","\u002Fgraphql\u002Fapollo-client-pagination","root","Say, we have ","gql"," response like this and we wan't to have pagination with it. Let's merge it as it specified in ","a","https:\u002F\u002Fwww.apollographql.com\u002Fdocs\u002Freact\u002Fcaching\u002Fcache-field-behavior\u002F#the-merge-function","nofollow","official documentation","We will setup "," with "," to merge incoming data in cache:","We will need merge function ",", which will join results of query and cached data for specific key:","Filter","Number","ItemList","ct-d60f88","type","InMemoryCache",";","new","\u002F\u002F ..."," ","ct-239e82","if"," [];"," }","...",2)) \ No newline at end of file diff --git a/graphql/apollo-client-pagination/index.html b/graphql/apollo-client-pagination/index.html index 40c44d4..c2f86e4 100644 --- a/graphql/apollo-client-pagination/index.html +++ b/graphql/apollo-client-pagination/index.html @@ -1,6 +1,6 @@ -Apollo Client Pagination • Obsidian Garden -

Apollo Client Pagination

Say, we have gql response like this and we wan't to have pagination with it. Let's merge it as it specified in official documentation

query listItems(  filter: Filter,   sort: String,  limit: Number,  offset: Number,): ItemList!input Filter {  name: String!  type: String!}type ItemList {  items: [Item!]!  totalCount: Int!}

We will setup ApolloClient with typePolicies to merge incoming data in cache:

import { ApolloClient, InMemoryCache } from '@apollo/client';const client = new ApolloClient({  // ...  cache: new InMemoryCache({ typePolicies }),  // ...});export const typePolicies: TypePolicies = {  Query: {    fields: {      // query name      listItems: {        // apollo will serialize and use keyArgs as unique        // identifier in cache for every query        // consider choosing the right fields,         // i.e. limit and offset won't work here        keyArgs: [          'sort', // primitive type          'filter', ['name', 'type'] // nested fields of `filter`        ],        merge: mergeItemsWithTotalCount,      },  }}

We will need merge function mergeItemsWithTotalCount, which will join results of query and cached data for specific key:

/** merges all sources with { items: unknown[], totalCount: number } */const mergeItemsWithTotalCount = (existing, incoming, { args }) => {    // no existing data    if (!existing || !args?.offset || args.offset < existing      return incoming || [];    }    // If hook was called multiple times    if (existing?.items?.      return existing || [];    }    // merge cache and incoming data    const items = [...(existing?.items ||     // apply latest result for totalCount    const totalCount = incoming?.totalCount || existing?.totalCount;    return {      ...(incoming ||       items,      totalCount,    };  };
btw, have a nice day
(2018 - 2022) muerwre
+

Apollo Client Pagination

Say, we have gql response like this and we wan't to have pagination with it. Let's merge it as it specified in official documentation

query listItems(  filter: Filter,   sort: String,  limit: Number,  offset: Number,): ItemList!input Filter {  name: String!  type: String!}type ItemList {  items: [Item!]!  totalCount: Int!}

We will setup ApolloClient with typePolicies to merge incoming data in cache:

import { ApolloClient, InMemoryCache } from '@apollo/client';const client = new ApolloClient({  // ...  cache: new InMemoryCache({ typePolicies }),  // ...});export const typePolicies: TypePolicies = {  Query: {    fields: {      // query name      listItems: {        // apollo will serialize and use keyArgs as unique        // identifier in cache for every query        // consider choosing the right fields,         // i.e. limit and offset won't work here        keyArgs: [          'sort', // primitive type          'filter', ['name', 'type'] // nested fields of `filter`        ],        merge: mergeItemsWithTotalCount,      },  }}

We will need merge function mergeItemsWithTotalCount, which will join results of query and cached data for specific key:

/** merges all sources with { items: unknown[], totalCount: number } */const mergeItemsWithTotalCount = (existing, incoming, { args }) => {    // no existing data    if (!existing || !args?.offset || args.offset < existing      return incoming || [];    }    // If hook was called multiple times    if (existing?.items?.      return existing || [];    }    // merge cache and incoming data    const items = [...(existing?.items ||     // apply latest result for totalCount    const totalCount = incoming?.totalCount || existing?.totalCount;    return {      ...(incoming ||       items,      totalCount,    };  };
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/graphql/refresh-token-in-apollo-client/_payload.js b/graphql/refresh-token-in-apollo-client/_payload.js index 52455ed..138fd9a 100644 --- a/graphql/refresh-token-in-apollo-client/_payload.js +++ b/graphql/refresh-token-in-apollo-client/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,a_,a$,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,bA,bB){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:aN,_path:aO}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-4TVlzFXfLi":{_path:aO,_dir:"graphql",_draft:at,_partial:at,_locale:"en",_empty:at,title:aN,description:au,excerpt:{type:aP,children:[{type:a,tag:ag,props:{},children:[{type:c,value:au}]},{type:a,tag:E,props:{code:av,language:ah},children:[{type:a,tag:ai,props:{},children:[{type:a,tag:E,props:{__ignoreMap:Y},children:[{type:c,value:av}]}]}]},{type:a,tag:ag,props:{},children:[{type:c,value:aQ},{type:a,tag:aj,props:{},children:[{type:c,value:ak}]},{type:c,value:aR},{type:a,tag:aj,props:{},children:[{type:c,value:Z}]},{type:c,value:aS}]},{type:a,tag:E,props:{code:aw,language:ah},children:[{type:a,tag:ai,props:{},children:[{type:a,tag:E,props:{__ignoreMap:Y},children:[{type:c,value:aw}]}]}]}]},body:{type:aP,children:[{type:a,tag:ag,props:{},children:[{type:c,value:au}]},{type:a,tag:E,props:{code:av,language:ah},children:[{type:a,tag:ai,props:{},children:[{type:a,tag:E,props:{__ignoreMap:Y},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:aT}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"createApolloClient"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:aU}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:aW}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:" { "}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:ax},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:" { "}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:ay}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aY}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:aA}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:aZ}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" \u003E,"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"ApolloClientBase"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:a_}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:a$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" link: "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"ApolloLink"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"from"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"(["}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:a$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:"setContext"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:"_"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:", { "}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:" }) "}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" headers: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aW}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"(),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ba}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bb}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"HttpLink"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:a_}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" uri: "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aU}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" fetch: "}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:bc}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bb}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ]),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bd}]}]}]}]}]},{type:a,tag:ag,props:{},children:[{type:c,value:aQ},{type:a,tag:aj,props:{},children:[{type:c,value:ak}]},{type:c,value:aR},{type:a,tag:aj,props:{},children:[{type:c,value:Z}]},{type:c,value:aS}]},{type:a,tag:E,props:{code:aw,language:ah},children:[{type:a,tag:ai,props:{},children:[{type:a,tag:E,props:{__ignoreMap:Y},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F** Global singleton for refreshing promise *\u002F"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:k},children:[{type:c,value:"let"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:ax},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F** Checks if GraphQl errors has unauthenticated error *\u002F"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:ak}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:be}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\u003C{ "}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:"?:"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:"ErrorCode"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:" }\u003E)"}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:be}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"isArray"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aC}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"some"}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"error"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"status"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bf}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-02349f"},children:[{type:c,value:"401"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F Distinguish unauthorized error here"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bd}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F** Detects if customFetch is sending refresh request *\u002F"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:bg}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"try"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:bh}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:bh}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"operationName"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bf}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:"'RefreshToken'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" } "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"e"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:"false"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"};"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo *\u002F"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:aT}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:bc}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ("}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bi}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bi}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" { accessToken: "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aY}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:aZ}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"\u003E"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ) "}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:bg}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aF}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:"Response"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F already refreshing token, wait for it and then use refreshed token"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F or use empty authorization if refreshing failed"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aC}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aC}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ("}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"as"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:ax},children:[{type:c,value:"Record"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u003E)?."}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aX}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ) {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bj}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aG}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bk}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:bl}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:bm}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bn}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aH}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" authorization: "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aI}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:")."}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:c}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bj}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:bo}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:c}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bp}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F check for unauthorized errors, if not present, just return result"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aK}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ak}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aF}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ) {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:bo}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ok: "}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:"true"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:"unknown"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:br}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:c}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:c}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:br}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ba}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bs}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F If unauthorized, refresh token and try again"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"()"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:bt}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:aJ}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:aL}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aF}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aL}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aK}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ay}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bu}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aL}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aK}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ay}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bt}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bk}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F can't refresh token. logging out"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bp}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bu}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aM}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bs}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F success or any non-auth error"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:aG}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:aJ}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F wait for other request's refreshing query to finish, when retry"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aI}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bx}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:by}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aH}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bA}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aM}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aG}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:bl}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aI}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bx}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:by}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aH}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:bm}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bA}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aM}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bn}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-779e2f{color:#A5D6FF}.ct-a95fcd{color:#79C0FF}.ct-02349f{color:#79C0FF}.ct-1fdb5c{color:#FFA657}.ct-840d6e{color:#79C0FF}.ct-c7113f{color:#C9D1D9}.ct-3c9ca1{color:#8B949E}.ct-1e8a25{color:#FFA657}.ct-9d4795{color:#FF7B72}.ct-3d67cf{color:#D2A8FF}.ct-665308{color:#79C0FF}.ct-8d2815{color:#79C0FF}.ct-f90941{color:#FF7B72}.ct-b61e12{color:#FFA657}.ct-de8287{color:#C9D1D9}.ct-78ba42{color:#D2A8FF}.ct-1a781c{color:#FF7B72}.ct-0fd30a{color:#C9D1D9}.ct-62900c{color:#FF7B72}.light .ct-62900c{color:#859900}.light .ct-0fd30a{color:#657B83}.light .ct-1a781c{color:#073642}.light .ct-78ba42{color:#268BD2}.light .ct-de8287{color:#657B83}.light .ct-b61e12{color:#657B83}.light .ct-f90941{color:#859900}.light .ct-8d2815{color:#859900}.light .ct-665308{color:#859900}.light .ct-3d67cf{color:#268BD2}.light .ct-9d4795{color:#073642}.light .ct-1e8a25{color:#268BD2}.light .ct-3c9ca1{color:#93A1A1}.light .ct-c7113f{color:#268BD2}.light .ct-840d6e{color:#B58900}.light .ct-1fdb5c{color:#268BD2}.light .ct-02349f{color:#D33682}.light .ct-a95fcd{color:#268BD2}.light .ct-779e2f{color:#2AA198}"}]}],toc:{title:Y,searchDepth:bB,depth:bB,links:[]}},_type:"markdown",_id:"content:GraphQL:Refresh token in Apollo client.md",_source:"content",_file:"GraphQL\u002FRefresh token in Apollo client.md",_extension:"md"}},prerenderedAt:1667469956849}}("element","span","text","ct-0fd30a","line"," ","ct-de8287","ct-62900c","ct-c7113f","ct-78ba42","ct-1a781c","=\u003E","(","ct-f90941",":","ct-3c9ca1"," ","ct-b61e12","ct-9d4795"," {","string","=",","," "," (","ct-8d2815"," ",".","options","return","code"," ","ct-665308"," ","const","async"," ","...","refreshingPromise","\u003C","headers",";","ct-1fdb5c"," () ","ct-3d67cf","refreshToken","Promise",") ","new","ct-840d6e","","isRefreshRequestOptions","errors","ct-a95fcd",");","ct-779e2f","!","||","json"," ","p","typescript","pre","code-inline","hasUnauthorizedError","logout",", ","null","catch","uri","if","newAccessToken","resolve",false,"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client.","export const createApolloClient = (\n url: string,\n logout: () =\u003E void,\n getAuthorizationData: () =\u003E { authorization: string },\n refreshToken: () =\u003E Promise\u003C\n { accessToken: string; refreshToken: string } | undefined\n \u003E,\n) =\u003E\n new ApolloClientBase({\n \u002F\u002F ...other options\n link: ApolloLink.from([\n \u002F\u002F ...other options\n setContext(async (_, { headers }) =\u003E {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","\u002F** Global singleton for refreshing promise *\u002F\nlet refreshingPromise: Promise\u003Cstring\u003E | null = null;\n\n\u002F** Checks if GraphQl errors has unauthenticated error *\u002F\nconst hasUnauthorizedError = (errors: Array\u003C{ code?: ErrorCode }\u003E): boolean =\u003E\n Array.isArray(errors) &&\n errors.some(error =\u003E {\n return error.status === 401; \u002F\u002F Distinguish unauthorized error here\n });\n\n\u002F** Detects if customFetch is sending refresh request *\u002F\nconst isRefreshRequestOptions = (options: RequestInit) =\u003E {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n\u002F** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo *\u002F\nexport const fetchWithTokenRefresh =\n (\n logout: () =\u003E void,\n refreshToken: () =\u003E Promise\u003C\n { accessToken: string; refreshToken: string } | undefined\n \u003E,\n ) =\u003E\n async (uri: string, options: RequestInit): Promise\u003CResponse\u003E =\u003E {\n \u002F\u002F already refreshing token, wait for it and then use refreshed token\n \u002F\u002F or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record\u003Cstring, string\u003E)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() =\u003E {\n \u002F\u002F refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response =\u003E {\n const text = await response.text();\n const json = JSON.parse(text);\n\n \u002F\u002F check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =\u003E\n new Promise\u003Cunknown\u003E(resolve =\u003E {\n resolve(json);\n }),\n text: async () =\u003E\n new Promise\u003Cstring\u003E(resolve =\u003E {\n resolve(text);\n }),\n };\n }\n\n \u002F\u002F If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise\u003Cstring\u003E =\u003E {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() =\u003E {\n refreshingPromise = null;\n\n \u002F\u002F can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n \u002F\u002F success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) =\u003E {\n \u002F\u002F wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () =\u003E {\n \u002F\u002F refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","ct-1e8a25","accessToken","; ","|","\u003E ","&&",") {",": ",")"," ."," {}),","fetch","then","?.","tokens"," });","Refresh Token In Apollo Client","\u002Fgraphql\u002Frefresh-token-in-apollo-client","root","Custom fetch function for this request. You should tune "," and\n"," to match your api.","export","url","void","getAuthorizationData","authorization"," } ","undefined","({","\u002F\u002F ...other options"," };"," }),","fetchWithTokenRefresh"," });","Array","===","RequestInit","body",": () ","await","(() ","\u002F\u002F refreshing token from other request failed, retry without authorization","''"," });","response","();","\u003E("," }),"," }"," .","throw","Error","'Session expired'",", {"," headers: {"," authorization: "," },",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az,aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM,aN,aO,aP,aQ,aR,aS,aT,aU,aV,aW,aX,aY,aZ,a_,a$,ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz,bA,bB){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:aN,_path:aO}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-4TVlzFXfLi":{_path:aO,_dir:"graphql",_draft:at,_partial:at,_locale:"en",_empty:at,title:aN,description:au,excerpt:{type:aP,children:[{type:a,tag:ag,props:{},children:[{type:c,value:au}]},{type:a,tag:E,props:{code:av,language:ah},children:[{type:a,tag:ai,props:{},children:[{type:a,tag:E,props:{__ignoreMap:Y},children:[{type:c,value:av}]}]}]},{type:a,tag:ag,props:{},children:[{type:c,value:aQ},{type:a,tag:aj,props:{},children:[{type:c,value:ak}]},{type:c,value:aR},{type:a,tag:aj,props:{},children:[{type:c,value:Z}]},{type:c,value:aS}]},{type:a,tag:E,props:{code:aw,language:ah},children:[{type:a,tag:ai,props:{},children:[{type:a,tag:E,props:{__ignoreMap:Y},children:[{type:c,value:aw}]}]}]}]},body:{type:aP,children:[{type:a,tag:ag,props:{},children:[{type:c,value:au}]},{type:a,tag:E,props:{code:av,language:ah},children:[{type:a,tag:ai,props:{},children:[{type:a,tag:E,props:{__ignoreMap:Y},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:aT}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"createApolloClient"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:aU}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:aW}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:" { "}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:aX}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:ax},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:" { "}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:ay}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aY}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:aA}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:aZ}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" \u003E,"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"ApolloClientBase"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:a_}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:a$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" link: "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"ApolloLink"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"from"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"(["}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:a$}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:"setContext"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:"_"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:", { "}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:" }) "}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" headers: {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aW}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"(),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" },"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ba}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bb}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"HttpLink"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:a_}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" uri: "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aU}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" fetch: "}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:bc}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bb}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ]),"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bd}]}]}]}]}]},{type:a,tag:ag,props:{},children:[{type:c,value:aQ},{type:a,tag:aj,props:{},children:[{type:c,value:ak}]},{type:c,value:aR},{type:a,tag:aj,props:{},children:[{type:c,value:Z}]},{type:c,value:aS}]},{type:a,tag:E,props:{code:aw,language:ah},children:[{type:a,tag:ai,props:{},children:[{type:a,tag:E,props:{__ignoreMap:Y},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F** Global singleton for refreshing promise *\u002F"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:k},children:[{type:c,value:"let"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:ax},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F** Checks if GraphQl errors has unauthenticated error *\u002F"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:ak}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:be}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\u003C{ "}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:E}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:"?:"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:"ErrorCode"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:" }\u003E)"}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:be}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"isArray"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aC}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:"some"}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"error"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"status"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bf}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:"ct-f935d9"},children:[{type:c,value:"401"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F Distinguish unauthorized error here"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bd}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F** Detects if customFetch is sending refresh request *\u002F"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:s},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:bg}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"try"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:bh}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:bh}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"operationName"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bf}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:"'RefreshToken'"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" } "}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"e"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:"false"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"};"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo *\u002F"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:h},children:[{type:c,value:aT}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:bc}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ("}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bi}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aV}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bi}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" { accessToken: "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:az}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aY}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aA}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:aZ}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"\u003E"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ) "}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:bg}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aF}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:"Response"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F already refreshing token, wait for it and then use refreshed token"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F or use empty authorization if refreshing failed"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aC}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aC}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ("}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:"as"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:ax},children:[{type:c,value:"Record"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u003E)?."}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aX}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ) {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bj}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aG}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bk}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:bl}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:bm}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bn}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aH}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" authorization: "}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aI}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:am}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:")."}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aJ}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:c}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bj}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:bo}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:c}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bp}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:I}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:$},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F check for unauthorized errors, if not present, just return result"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:Z}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aK}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ak}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:_}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aF}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ) {"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:bo}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" ok: "}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:"true"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:"unknown"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:br}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:c}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aE}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:bq}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:as}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:c}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:br}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ba}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bs}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F If unauthorized, refresh token and try again"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:K}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"()"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:bt}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:aJ}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:aL}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aF}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:Q},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:aB}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:aq}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aL}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aK}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ay}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aD}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bu}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" }"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:aL}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aK}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ay}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bt}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bk}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:X},children:[{type:c,value:an}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:P}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F can't refresh token. logging out"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:al}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bp}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:bu}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:W}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:G},children:[{type:c,value:bv}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:bw}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aM}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bs}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F success or any non-auth error"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:M}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:g},children:[{type:c,value:aG}]},{type:a,tag:b,props:{class:S},children:[{type:c,value:aJ}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:y}]},{type:a,tag:b,props:{class:r},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:n},children:[{type:c,value:o}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:z},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:s},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:"\u002F\u002F wait for other request's refreshing query to finish, when retry"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aI}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bx}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:by}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aH}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ar}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bA}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aM}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" })"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aG}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:ao}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:J}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:R}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:bl}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:H}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:D}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:j},children:[{type:c,value:aI}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:ap}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:bx}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:by}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:af}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:L}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:C}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:f}]},{type:a,tag:b,props:{class:h},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aH}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bz}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:bm}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bA}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:aM}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:bn}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" });"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" };"}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-e3b437{color:#A5D6FF}.ct-9586d0{color:#79C0FF}.ct-f935d9{color:#79C0FF}.ct-5e6318{color:#FFA657}.ct-70d1ab{color:#79C0FF}.ct-41ca16{color:#C9D1D9}.ct-f65bc2{color:#8B949E}.ct-caad5f{color:#FFA657}.ct-756d5d{color:#FF7B72}.ct-315120{color:#D2A8FF}.ct-bc5ac0{color:#79C0FF}.ct-844354{color:#79C0FF}.ct-394a5b{color:#FF7B72}.ct-944ca4{color:#FFA657}.ct-64c2d8{color:#C9D1D9}.ct-aad558{color:#D2A8FF}.ct-f19b0f{color:#FF7B72}.ct-288d63{color:#C9D1D9}.ct-2d6f1f{color:#FF7B72}.light .ct-2d6f1f{color:#859900}.light .ct-288d63{color:#657B83}.light .ct-f19b0f{color:#073642}.light .ct-aad558{color:#268BD2}.light .ct-64c2d8{color:#657B83}.light .ct-944ca4{color:#657B83}.light .ct-394a5b{color:#859900}.light .ct-844354{color:#859900}.light .ct-bc5ac0{color:#859900}.light .ct-315120{color:#268BD2}.light .ct-756d5d{color:#073642}.light .ct-caad5f{color:#268BD2}.light .ct-f65bc2{color:#93A1A1}.light .ct-41ca16{color:#268BD2}.light .ct-70d1ab{color:#B58900}.light .ct-5e6318{color:#268BD2}.light .ct-f935d9{color:#D33682}.light .ct-9586d0{color:#268BD2}.light .ct-e3b437{color:#2AA198}"}]}],toc:{title:Y,searchDepth:bB,depth:bB,links:[]}},_type:"markdown",_id:"content:GraphQL:Refresh token in Apollo client.md",_source:"content",_file:"GraphQL\u002FRefresh token in Apollo client.md",_extension:"md"}},prerenderedAt:1667480033301}}("element","span","text","ct-288d63","line"," ","ct-64c2d8","ct-2d6f1f","ct-41ca16","ct-aad558","ct-f19b0f","=\u003E","(","ct-394a5b",":","ct-f65bc2"," ","ct-944ca4","ct-756d5d"," {","string","=",","," "," (","ct-844354"," ",".","options","return","code"," ","ct-bc5ac0"," ","const","async"," ","...","refreshingPromise","\u003C","headers",";","ct-5e6318"," () ","ct-315120","refreshToken","Promise",") ","new","ct-70d1ab","","isRefreshRequestOptions","errors","ct-9586d0",");","ct-e3b437","!","||","json"," ","p","typescript","pre","code-inline","hasUnauthorizedError","logout",", ","null","catch","uri","if","newAccessToken","resolve",false,"If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client.","export const createApolloClient = (\n url: string,\n logout: () =\u003E void,\n getAuthorizationData: () =\u003E { authorization: string },\n refreshToken: () =\u003E Promise\u003C\n { accessToken: string; refreshToken: string } | undefined\n \u003E,\n) =\u003E\n new ApolloClientBase({\n \u002F\u002F ...other options\n link: ApolloLink.from([\n \u002F\u002F ...other options\n setContext(async (_, { headers }) =\u003E {\n return {\n headers: {\n ...headers,\n ...getAuthorizationData(),\n },\n };\n }),\n new HttpLink({\n uri: url,\n fetch: fetchWithTokenRefresh(logout, refreshToken),\n }),\n ]),\n });\n","\u002F** Global singleton for refreshing promise *\u002F\nlet refreshingPromise: Promise\u003Cstring\u003E | null = null;\n\n\u002F** Checks if GraphQl errors has unauthenticated error *\u002F\nconst hasUnauthorizedError = (errors: Array\u003C{ code?: ErrorCode }\u003E): boolean =\u003E\n Array.isArray(errors) &&\n errors.some(error =\u003E {\n return error.status === 401; \u002F\u002F Distinguish unauthorized error here\n });\n\n\u002F** Detects if customFetch is sending refresh request *\u002F\nconst isRefreshRequestOptions = (options: RequestInit) =\u003E {\n try {\n const body = JSON.parse(options?.body as string);\n return body.operationName === 'RefreshToken';\n } catch (e) {\n return false;\n }\n};\n\n\u002F** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo *\u002F\nexport const fetchWithTokenRefresh =\n (\n logout: () =\u003E void,\n refreshToken: () =\u003E Promise\u003C\n { accessToken: string; refreshToken: string } | undefined\n \u003E,\n ) =\u003E\n async (uri: string, options: RequestInit): Promise\u003CResponse\u003E =\u003E {\n \u002F\u002F already refreshing token, wait for it and then use refreshed token\n \u002F\u002F or use empty authorization if refreshing failed\n if (\n !isRefreshRequestOptions(options) &&\n refreshingPromise &&\n (options.headers as Record\u003Cstring, string\u003E)?.authorization\n ) {\n const newAccessToken = await refreshingPromise\n .catch(() =\u003E {\n \u002F\u002F refreshing token from other request failed, retry without authorization\n return '';\n });\n \n options.headers = {\n ...(options.headers || {}),\n authorization: newAccessToken,\n };\n }\n\n return fetch(uri, options).then(async response =\u003E {\n const text = await response.text();\n const json = JSON.parse(text);\n\n \u002F\u002F check for unauthorized errors, if not present, just return result\n if (\n isRefreshRequestOptions(options) ||\n !json?.errors ||\n !Array.isArray(json.errors) ||\n !hasUnauthorizedError(json.errors)\n ) {\n return {\n ...response,\n ok: true,\n json: async () =\u003E\n new Promise\u003Cunknown\u003E(resolve =\u003E {\n resolve(json);\n }),\n text: async () =\u003E\n new Promise\u003Cstring\u003E(resolve =\u003E {\n resolve(text);\n }),\n };\n }\n\n \u002F\u002F If unauthorized, refresh token and try again\n if (!refreshingPromise) {\n refreshingPromise = refreshToken()\n .then(async (tokens): Promise\u003Cstring\u003E =\u003E {\n refreshingPromise = null;\n\n if (!tokens?.accessToken) {\n throw new Error('Session expired');\n }\n\n return tokens?.accessToken;\n })\n .catch(() =\u003E {\n refreshingPromise = null;\n\n \u002F\u002F can't refresh token. logging out\n logout();\n throw new Error('Session expired');\n });\n }\n\n \u002F\u002F success or any non-auth error\n return refreshingPromise\n .then(async (newAccessToken: string) =\u003E {\n \u002F\u002F wait for other request's refreshing query to finish, when retry\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: newAccessToken,\n },\n });\n })\n .catch(async () =\u003E {\n \u002F\u002F refreshing token from other request failed, retry without authorization\n\n return fetch(uri, {\n ...options,\n headers: {\n ...(options.headers || {}),\n authorization: '',\n },\n });\n });\n });\n };\n\n","ct-caad5f","accessToken","; ","|","\u003E ","&&",") {",": ",")"," ."," {}),","fetch","then","?.","tokens"," });","Refresh Token In Apollo Client","\u002Fgraphql\u002Frefresh-token-in-apollo-client","root","Custom fetch function for this request. You should tune "," and\n"," to match your api.","export","url","void","getAuthorizationData","authorization"," } ","undefined","({","\u002F\u002F ...other options"," };"," }),","fetchWithTokenRefresh"," });","Array","===","RequestInit","body",": () ","await","(() ","\u002F\u002F refreshing token from other request failed, retry without authorization","''"," });","response","();","\u003E("," }),"," }"," .","throw","Error","'Session expired'",", {"," headers: {"," authorization: "," },",2)) \ No newline at end of file diff --git a/graphql/refresh-token-in-apollo-client/index.html b/graphql/refresh-token-in-apollo-client/index.html index 60d9363..adb2580 100644 --- a/graphql/refresh-token-in-apollo-client/index.html +++ b/graphql/refresh-token-in-apollo-client/index.html @@ -1,7 +1,7 @@ -Refresh Token In Apollo Client • Obsidian Garden -

Refresh Token In Apollo Client

If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client.

export const createApolloClient = (  url: string,  logout: () => void,  getAuthorizationData: () => { authorization: string },  refreshToken: () => Promise<    { accessToken: string; refreshToken: string } | undefined  >,) =>  new ApolloClientBase({    // ...other options    link: ApolloLink.from([      // ...other options      setContext(async (_, { headers }) => {        return {          headers: {            ...headers,            ...getAuthorizationData(),          },        };      }),      new HttpLink({        uri: url,        fetch: fetchWithTokenRefresh(logout, refreshToken),      }),    ]),  });

Custom fetch function for this request. You should tune hasUnauthorizedError and -isRefreshRequestOptions to match your api.

/** Global singleton for refreshing promise */let refreshingPromise: Promise<string> | null = null;/** Checks if GraphQl errors has unauthenticated error */const hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): =>  Array.isArray(errors) &&  errors.some=> {    return error.status === 401; // Distinguish unauthorized error here  });/** Detects if customFetch is sending refresh request */const isRefreshRequestOptions = (options: RequestInit) => {  try {    const body = string);    return body.operationName === 'RefreshToken';  } catch (e) {    return false;  }};/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */export const fetchWithTokenRefresh =  (    logout: () => void,    refreshToken: () =>       { accessToken: string; refreshToken: string } | undefined    >,  ) =>  async (uri: string, options: RequestInit): Promise<Response> => {    // already refreshing token, wait for it and then use refreshed token    // or use empty authorization if refreshing failed    if (      !isRefreshRequestOptions(options) &&      refreshingPromise &&      (options.headers as Record<string, string>)?.authorization    ) {      const newAccessToken = await refreshingPromise        .catch(() => {          // refreshing token from other request failed, retry without authorization          return '';        });            options.headers = {        ...(options.headers || {}),        authorization: newAccessToken,      };    }    return fetch(uri, options).then(async      const text = await response.text();      const json =      // check for unauthorized errors, if not present, just return result      if (        isRefreshRequestOptions(options) ||        !json?.errors ||                !hasUnauthorizedError(json.errors)      ) {        return {          ...response,          ok: true,          json: async () =>            new Promise<unknown>(resolve => {              resolve(json);            }),          text: async () =>            new Promise<string>(resolve => {              resolve(text);            }),        };      }      // If unauthorized, refresh token and try again      if (!refreshingPromise) {        refreshingPromise = refreshToken()          .then(async (tokens): Promise<string> => {            refreshingPromise = null;            if (!tokens?.accessToken) {              throw new Error('Session expired');            }            return tokens?.accessToken;          })          .catch(() => {            refreshingPromise = null;            // can't refresh token. logging out            logout();            throw new Error('Session expired');          });      }      // success or any non-auth error      return refreshingPromise        .then(async (newAccessToken: string) => {          // wait for other request's refreshing query to finish, when retry          return fetch(uri, {            ...options,            headers: {              ...(options.headers || {}),              authorization: newAccessToken,            },          });        })        .catch(async () => {          // refreshing token from other request failed, retry without authorization          return fetch(uri, {            ...options,            headers: {              ...(options.headers || {}),              authorization: '',            },          });        });    });  };
btw, have a nice day
(2018 - 2022) muerwre
+

Refresh Token In Apollo Client

If your GraphQL api needs token refresh option, you can pass custom fetch function for Apollo Client.

export const createApolloClient = (  url: string,  logout: () => void,  getAuthorizationData: () => { authorization: string },  refreshToken: () => Promise<    { accessToken: string; refreshToken: string } | undefined  >,) =>  new ApolloClientBase({    // ...other options    link: ApolloLink.from([      // ...other options      setContext(async (_, { headers }) => {        return {          headers: {            ...headers,            ...getAuthorizationData(),          },        };      }),      new HttpLink({        uri: url,        fetch: fetchWithTokenRefresh(logout, refreshToken),      }),    ]),  });

Custom fetch function for this request. You should tune hasUnauthorizedError and +isRefreshRequestOptions to match your api.

/** Global singleton for refreshing promise */let refreshingPromise: Promise<string> | null = null;/** Checks if GraphQl errors has unauthenticated error */const hasUnauthorizedError = (errors: Array<{ code?: ErrorCode }>): =>  Array.isArray(errors) &&  errors.some=> {    return error.status === 401; // Distinguish unauthorized error here  });/** Detects if customFetch is sending refresh request */const isRefreshRequestOptions = (options: RequestInit) => {  try {    const body = string);    return body.operationName === 'RefreshToken';  } catch (e) {    return false;  }};/** fetchWithTokenRefresh is a custom fetch function with token refresh for apollo */export const fetchWithTokenRefresh =  (    logout: () => void,    refreshToken: () =>       { accessToken: string; refreshToken: string } | undefined    >,  ) =>  async (uri: string, options: RequestInit): Promise<Response> => {    // already refreshing token, wait for it and then use refreshed token    // or use empty authorization if refreshing failed    if (      !isRefreshRequestOptions(options) &&      refreshingPromise &&      (options.headers as Record<string, string>)?.authorization    ) {      const newAccessToken = await refreshingPromise        .catch(() => {          // refreshing token from other request failed, retry without authorization          return '';        });            options.headers = {        ...(options.headers || {}),        authorization: newAccessToken,      };    }    return fetch(uri, options).then(async      const text = await response.text();      const json =      // check for unauthorized errors, if not present, just return result      if (        isRefreshRequestOptions(options) ||        !json?.errors ||                !hasUnauthorizedError(json.errors)      ) {        return {          ...response,          ok: true,          json: async () =>            new Promise<unknown>(resolve => {              resolve(json);            }),          text: async () =>            new Promise<string>(resolve => {              resolve(text);            }),        };      }      // If unauthorized, refresh token and try again      if (!refreshingPromise) {        refreshingPromise = refreshToken()          .then(async (tokens): Promise<string> => {            refreshingPromise = null;            if (!tokens?.accessToken) {              throw new Error('Session expired');            }            return tokens?.accessToken;          })          .catch(() => {            refreshingPromise = null;            // can't refresh token. logging out            logout();            throw new Error('Session expired');          });      }      // success or any non-auth error      return refreshingPromise        .then(async (newAccessToken: string) => {          // wait for other request's refreshing query to finish, when retry          return fetch(uri, {            ...options,            headers: {              ...(options.headers || {}),              authorization: newAccessToken,            },          });        })        .catch(async () => {          // refreshing token from other request failed, retry without authorization          return fetch(uri, {            ...options,            headers: {              ...(options.headers || {}),              authorization: '',            },          });        });    });  };
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/index.html b/index.html index ad1b1c7..0bb5c61 100644 --- a/index.html +++ b/index.html @@ -1,6 +1,6 @@ -Obsidian Garden - + \ No newline at end of file diff --git a/linux/gitea-for-git-hosting/_payload.js b/linux/gitea-for-git-hosting/_payload.js index ea1ed2f..b683a48 100644 --- a/linux/gitea-for-git-hosting/_payload.js +++ b/linux/gitea-for-git-hosting/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:t,_path:u},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-t1CslyFV8V":{_path:u,_dir:"linux",_draft:n,_partial:n,_locale:"en",_empty:n,title:t,description:"Self-hosted #git repositories with gitea and #docker.",excerpt:{type:v,children:[{type:a,tag:w,props:{},children:[{type:c,value:x},{type:a,tag:y,props:{href:z,rel:[A]},children:[{type:c,value:k}]},{type:c,value:B}]},{type:a,tag:C,props:{id:o},children:[{type:c,value:p}]},{type:a,tag:m,props:{code:q,language:D},children:[{type:a,tag:E,props:{},children:[{type:a,tag:m,props:{__ignoreMap:r},children:[{type:c,value:q}]}]}]}]},body:{type:v,children:[{type:a,tag:w,props:{},children:[{type:c,value:x},{type:a,tag:y,props:{href:z,rel:[A]},children:[{type:c,value:k}]},{type:c,value:B}]},{type:a,tag:C,props:{id:o},children:[{type:c,value:p}]},{type:a,tag:m,props:{code:q,language:D},children:[{type:a,tag:E,props:{},children:[{type:a,tag:m,props:{__ignoreMap:r},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:"version"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"3\""}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"external"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:"ct-d97ebb"},children:[{type:c,value:"false"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:"services"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"server"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"image"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"gitea\u002Fgitea:latest"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"container_name"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"environment"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"USER_UID=1000"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"USER_GID=1000"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"restart"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"always"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"volumes"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:".\u002Fvar\u002Flib\u002Fgitea:\u002Fdata"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:".\u002Fetc\u002Fgitea:\u002Fetc\u002Fgitea"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\u002Fetc\u002Ftimezone:\u002Fetc\u002Ftimezone:ro"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\u002Fetc\u002Flocaltime:\u002Fetc\u002Flocaltime:ro"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"ports"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"3000:3000\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"222:22\""}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-d97ebb{color:#79C0FF}.ct-bf81c9{color:#A5D6FF}.ct-ce386f{color:#C9D1D9}.ct-c39ea1{color:#7EE787}.light .ct-c39ea1{color:#268BD2}.light .ct-ce386f{color:#657B83}.light .ct-bf81c9{color:#2AA198}.light .ct-d97ebb{color:#B58900}"}]}],toc:{title:r,searchDepth:s,depth:s,links:[{id:o,depth:s,text:p}]}},_type:"markdown",_id:"content:Linux:Gitea for git hosting.md",_source:"content",_file:"Linux\u002FGitea for git hosting.md",_extension:"md"}},prerenderedAt:1667469956959}}("element","span","text","ct-ce386f","line","ct-c39ea1","ct-bf81c9"," - ",":"," ","gitea",": ","code",false,"setting-up-with-docker-compose","Setting up with docker-compose","version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea\u002Fgitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - .\u002Fvar\u002Flib\u002Fgitea:\u002Fdata\n - .\u002Fetc\u002Fgitea:\u002Fetc\u002Fgitea\n - \u002Fetc\u002Ftimezone:\u002Fetc\u002Ftimezone:ro\n - \u002Fetc\u002Flocaltime:\u002Fetc\u002Flocaltime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n","",2,"Gitea For Git Hosting","\u002Flinux\u002Fgitea-for-git-hosting","root","p","Self-hosted #git repositories with ","a","https:\u002F\u002Fgitea.io\u002Fru-ru\u002F","nofollow"," and #docker.","h2","yaml","pre","networks"," ")) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:t,_path:u},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-t1CslyFV8V":{_path:u,_dir:"linux",_draft:n,_partial:n,_locale:"en",_empty:n,title:t,description:"Self-hosted #git repositories with gitea and #docker.",excerpt:{type:v,children:[{type:a,tag:w,props:{},children:[{type:c,value:x},{type:a,tag:y,props:{href:z,rel:[A]},children:[{type:c,value:k}]},{type:c,value:B}]},{type:a,tag:C,props:{id:o},children:[{type:c,value:p}]},{type:a,tag:m,props:{code:q,language:D},children:[{type:a,tag:E,props:{},children:[{type:a,tag:m,props:{__ignoreMap:r},children:[{type:c,value:q}]}]}]}]},body:{type:v,children:[{type:a,tag:w,props:{},children:[{type:c,value:x},{type:a,tag:y,props:{href:z,rel:[A]},children:[{type:c,value:k}]},{type:c,value:B}]},{type:a,tag:C,props:{id:o},children:[{type:c,value:p}]},{type:a,tag:m,props:{code:q,language:D},children:[{type:a,tag:E,props:{},children:[{type:a,tag:m,props:{__ignoreMap:r},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:"version"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"3\""}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:k}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"external"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:"ct-bb8b11"},children:[{type:c,value:"false"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:"services"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:G}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"server"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"image"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"gitea\u002Fgitea:latest"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"container_name"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"environment"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"USER_UID=1000"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"USER_GID=1000"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"restart"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"always"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:F}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"volumes"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:".\u002Fvar\u002Flib\u002Fgitea:\u002Fdata"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:".\u002Fetc\u002Fgitea:\u002Fetc\u002Fgitea"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\u002Fetc\u002Ftimezone:\u002Fetc\u002Ftimezone:ro"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\u002Fetc\u002Flocaltime:\u002Fetc\u002Flocaltime:ro"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"ports"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"3000:3000\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"222:22\""}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-bb8b11{color:#79C0FF}.ct-7df5b4{color:#A5D6FF}.ct-348279{color:#C9D1D9}.ct-7bf0c6{color:#7EE787}.light .ct-7bf0c6{color:#268BD2}.light .ct-348279{color:#657B83}.light .ct-7df5b4{color:#2AA198}.light .ct-bb8b11{color:#B58900}"}]}],toc:{title:r,searchDepth:s,depth:s,links:[{id:o,depth:s,text:p}]}},_type:"markdown",_id:"content:Linux:Gitea for git hosting.md",_source:"content",_file:"Linux\u002FGitea for git hosting.md",_extension:"md"}},prerenderedAt:1667480033416}}("element","span","text","ct-348279","line","ct-7bf0c6","ct-7df5b4"," - ",":"," ","gitea",": ","code",false,"setting-up-with-docker-compose","Setting up with docker-compose","version: \"3\"\n\nnetworks:\n gitea:\n external: false\nservices:\n server:\n image: gitea\u002Fgitea:latest\n container_name: gitea\n environment:\n - USER_UID=1000\n - USER_GID=1000\n restart: always\n networks:\n - gitea\n volumes:\n - .\u002Fvar\u002Flib\u002Fgitea:\u002Fdata\n - .\u002Fetc\u002Fgitea:\u002Fetc\u002Fgitea\n - \u002Fetc\u002Ftimezone:\u002Fetc\u002Ftimezone:ro\n - \u002Fetc\u002Flocaltime:\u002Fetc\u002Flocaltime:ro\n ports:\n - \"3000:3000\"\n - \"222:22\"\n","",2,"Gitea For Git Hosting","\u002Flinux\u002Fgitea-for-git-hosting","root","p","Self-hosted #git repositories with ","a","https:\u002F\u002Fgitea.io\u002Fru-ru\u002F","nofollow"," and #docker.","h2","yaml","pre","networks"," ")) \ No newline at end of file diff --git a/linux/gitea-for-git-hosting/index.html b/linux/gitea-for-git-hosting/index.html index 23c0292..a65663b 100644 --- a/linux/gitea-for-git-hosting/index.html +++ b/linux/gitea-for-git-hosting/index.html @@ -1,6 +1,6 @@ -Gitea For Git Hosting • Obsidian Garden -

Gitea For Git Hosting

Self-hosted #git repositories with gitea and #docker.

Setting up with docker-compose

version: "3"networks:  gitea:    external: falseservices:  server:    image: gitea/gitea:latest    container_name: gitea    environment:      - USER_UID=1000      - USER_GID=1000    restart: always    networks:      - gitea    volumes:      - ./var/lib/gitea:/data      - ./etc/gitea:/etc/gitea      - /etc/timezone:/etc/timezone:ro      - /etc/localtime:/etc/localtime:ro    ports:      - "3000:3000"      - "222:22"
btw, have a nice day
(2018 - 2022) muerwre
+

Gitea For Git Hosting

Self-hosted #git repositories with gitea and #docker.

Setting up with docker-compose

version: "3"networks:  gitea:    external: falseservices:  server:    image: gitea/gitea:latest    container_name: gitea    environment:      - USER_UID=1000      - USER_GID=1000    restart: always    networks:      - gitea    volumes:      - ./var/lib/gitea:/data      - ./etc/gitea:/etc/gitea      - /etc/timezone:/etc/timezone:ro      - /etc/localtime:/etc/localtime:ro    ports:      - "3000:3000"      - "222:22"
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/linux/google-photos-alternative-with-photoprism/_payload.js b/linux/google-photos-alternative-with-photoprism/_payload.js index 72139fd..29b5265 100644 --- a/linux/google-photos-alternative-with-photoprism/_payload.js +++ b/linux/google-photos-alternative-with-photoprism/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:C,_path:D},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-N7FETNtB3c":{_path:D,_dir:"linux",_draft:v,_partial:v,_locale:"en",_empty:v,title:C,description:"Photo Prism is a free alternative to Google photos, can be set up with #docker.",excerpt:{type:E,children:[{type:a,tag:r,props:{},children:[{type:a,tag:n,props:{href:F,rel:[o]},children:[{type:c,value:G}]},{type:c,value:H}]},{type:a,tag:I,props:{id:w},children:[{type:c,value:x}]},{type:a,tag:r,props:{},children:[{type:c,value:J},{type:a,tag:n,props:{href:K,rel:[o]},children:[{type:c,value:L}]},{type:c,value:M},{type:a,tag:n,props:{href:N,rel:[o]},children:[{type:c,value:O}]},{type:c,value:P}]},{type:a,tag:s,props:{code:y,language:Q},children:[{type:a,tag:R,props:{},children:[{type:a,tag:s,props:{__ignoreMap:z},children:[{type:c,value:y}]}]}]}]},body:{type:E,children:[{type:a,tag:r,props:{},children:[{type:a,tag:n,props:{href:F,rel:[o]},children:[{type:c,value:G}]},{type:c,value:H}]},{type:a,tag:I,props:{id:w},children:[{type:c,value:x}]},{type:a,tag:r,props:{},children:[{type:c,value:J},{type:a,tag:n,props:{href:K,rel:[o]},children:[{type:c,value:L}]},{type:c,value:M},{type:a,tag:n,props:{href:N,rel:[o]},children:[{type:c,value:O}]},{type:c,value:P}]},{type:a,tag:s,props:{code:y,language:Q},children:[{type:a,tag:R,props:{},children:[{type:a,tag:s,props:{__ignoreMap:z},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:"version"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"'3.5'"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:"services"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"photoprism__app"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"photoprism\u002Fphotoprism:latest"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"depends_on"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:U}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"ports"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"2342:2342"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:_},children:[{type:c,value:"# HTTP port (host:container)"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_ADMIN_PASSWORD"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"password\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_SITE_URL"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"https:\u002F\u002Fservice.url\u002F\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_ORIGINALS_LIMIT"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:"ct-0d1cbf"},children:[{type:c,value:"5000"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_HTTP_COMPRESSION"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"gzip\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DEBUG"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_PUBLIC"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_READONLY"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_EXPERIMENTAL"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_CHOWN"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_WEBDAV"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_SETTINGS"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_TENSORFLOW"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_FACES"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_CLASSIFICATION"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DARKTABLE_PRESETS"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DETECT_NSFW"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_UPLOAD_NSFW"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"true\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DATABASE_DRIVER"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"mysql\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DATABASE_SERVER"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"mariadb:3306\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DATABASE_NAME"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"photoprism\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DATABASE_USER"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"root\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DATABASE_PASSWORD"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"insecure\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_SITE_TITLE"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"PhotoPrism\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_SITE_CAPTION"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"Browse Your Life\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_SITE_DESCRIPTION"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_SITE_AUTHOR"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"HOME"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ac}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"working_dir"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ac}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\".\u002Fdata\u002Foriginals:\u002Fphotoprism\u002Foriginals\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"    "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\".\u002Fdata\u002Fimports:\u002Fphotoprism\u002Fimport\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\".\u002Fdata\u002Fstorage:\u002Fphotoprism\u002Fstorage\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"  "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"photoprism__db"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"mariadb:10.6"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"command"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\".\u002Fdatabase:\u002Fvar\u002Flib\u002Fmysql\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:_},children:[{type:c,value:"# Important, don't remove"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"MYSQL_ROOT_PASSWORD"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ae}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"MYSQL_DATABASE"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"MYSQL_USER"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"MYSQL_PASSWORD"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ae}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-0d1cbf{color:#79C0FF}.ct-67dd99{color:#8B949E}.ct-d2fbc5{color:#A5D6FF}.ct-fafdca{color:#C9D1D9}.ct-f5da4b{color:#7EE787}.light .ct-f5da4b{color:#268BD2}.light .ct-fafdca{color:#657B83}.light .ct-d2fbc5{color:#2AA198}.light .ct-67dd99{color:#93A1A1}.light .ct-0d1cbf{color:#D33682}"}]}],toc:{title:z,searchDepth:B,depth:B,links:[{id:w,depth:B,text:x}]}},_type:"markdown",_id:"content:Linux:Google photos alternative with Photoprism.md",_source:"content",_file:"Linux\u002FGoogle photos alternative with Photoprism.md",_extension:"md"}},prerenderedAt:1667469957000}}("element","span","text","ct-fafdca","line","ct-f5da4b","ct-d2fbc5",": "," ","\"false\"",":"," ","    ","a","nofollow","      ","      - ","p","code"," - "," ",false,"docker-compose-file-to-run-it","Docker compose file to run it","version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism\u002Fphotoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https:\u002F\u002Fservice.url\u002F\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"\u002Fphotoprism\"\n    working_dir: \"\u002Fphotoprism\"\n    volumes:\n      - \".\u002Fdata\u002Foriginals:\u002Fphotoprism\u002Foriginals\"    \n      - \".\u002Fdata\u002Fimports:\u002Fphotoprism\u002Fimport\"\n      - \".\u002Fdata\u002Fstorage:\u002Fphotoprism\u002Fstorage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \".\u002Fdatabase:\u002Fvar\u002Flib\u002Fmysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n","","photoprism",2,"Google Photos Alternative With Photoprism","\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism","root","https:\u002F\u002Fphotoprism.app\u002F","Photo Prism"," is a free alternative to Google photos, can be set up with #docker.","h2","Check out current ","https:\u002F\u002Fdl.photoprism.app\u002Fdocker\u002Fdocker-compose.yml","example"," at photoprism's ","https:\u002F\u002Fdocs.photoprism.app\u002Fgetting-started\u002Fdocker-compose\u002F","documentation",".","yaml","pre","container_name","image","mariadb","restart","unless-stopped","security_opt","seccomp:unconfined","apparmor:unconfined","ct-67dd99","environment"," ","\"\"","\"\u002Fphotoprism\"","volumes","insecure")) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:C,_path:D},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-N7FETNtB3c":{_path:D,_dir:"linux",_draft:v,_partial:v,_locale:"en",_empty:v,title:C,description:"Photo Prism is a free alternative to Google photos, can be set up with #docker.",excerpt:{type:E,children:[{type:a,tag:r,props:{},children:[{type:a,tag:n,props:{href:F,rel:[o]},children:[{type:c,value:G}]},{type:c,value:H}]},{type:a,tag:I,props:{id:w},children:[{type:c,value:x}]},{type:a,tag:r,props:{},children:[{type:c,value:J},{type:a,tag:n,props:{href:K,rel:[o]},children:[{type:c,value:L}]},{type:c,value:M},{type:a,tag:n,props:{href:N,rel:[o]},children:[{type:c,value:O}]},{type:c,value:P}]},{type:a,tag:s,props:{code:y,language:Q},children:[{type:a,tag:R,props:{},children:[{type:a,tag:s,props:{__ignoreMap:z},children:[{type:c,value:y}]}]}]}]},body:{type:E,children:[{type:a,tag:r,props:{},children:[{type:a,tag:n,props:{href:F,rel:[o]},children:[{type:c,value:G}]},{type:c,value:H}]},{type:a,tag:I,props:{id:w},children:[{type:c,value:x}]},{type:a,tag:r,props:{},children:[{type:c,value:J},{type:a,tag:n,props:{href:K,rel:[o]},children:[{type:c,value:L}]},{type:c,value:M},{type:a,tag:n,props:{href:N,rel:[o]},children:[{type:c,value:O}]},{type:c,value:P}]},{type:a,tag:s,props:{code:y,language:Q},children:[{type:a,tag:R,props:{},children:[{type:a,tag:s,props:{__ignoreMap:z},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:"version"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"'3.5'"}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:f},children:[{type:c,value:"services"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:A}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"photoprism__app"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"photoprism\u002Fphotoprism:latest"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"depends_on"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:U}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"ports"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:t}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"2342:2342"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:_},children:[{type:c,value:"# HTTP port (host:container)"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_ADMIN_PASSWORD"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"password\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_SITE_URL"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"https:\u002F\u002Fservice.url\u002F\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_ORIGINALS_LIMIT"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:"ct-2abf7f"},children:[{type:c,value:"5000"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_HTTP_COMPRESSION"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"gzip\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DEBUG"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_PUBLIC"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_READONLY"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_EXPERIMENTAL"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_CHOWN"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_WEBDAV"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_SETTINGS"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_TENSORFLOW"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_FACES"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DISABLE_CLASSIFICATION"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DARKTABLE_PRESETS"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:aa}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DETECT_NSFW"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_UPLOAD_NSFW"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"true\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DATABASE_DRIVER"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"mysql\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DATABASE_SERVER"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"mariadb:3306\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DATABASE_NAME"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"photoprism\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:l}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DATABASE_USER"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"root\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_DATABASE_PASSWORD"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"insecure\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_SITE_TITLE"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"PhotoPrism\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_SITE_CAPTION"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\"Browse Your Life\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_SITE_DESCRIPTION"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"PHOTOPRISM_SITE_AUTHOR"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ab}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"HOME"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ac}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"working_dir"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ac}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\".\u002Fdata\u002Foriginals:\u002Fphotoprism\u002Foriginals\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"    "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\".\u002Fdata\u002Fimports:\u002Fphotoprism\u002Fimport\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\".\u002Fdata\u002Fstorage:\u002Fphotoprism\u002Fstorage\""}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:"  "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:U}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:S}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"photoprism__db"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:V}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:W}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:T}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"mariadb:10.6"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:X}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Y}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:Z}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"command"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ad}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:"\".\u002Fdatabase:\u002Fvar\u002Flib\u002Fmysql\""}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:_},children:[{type:c,value:"# Important, don't remove"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:m}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:$}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:k}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"MYSQL_ROOT_PASSWORD"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ae}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"MYSQL_DATABASE"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"MYSQL_USER"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:A}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:p}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"MYSQL_PASSWORD"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:ae}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-2abf7f{color:#79C0FF}.ct-35ae50{color:#8B949E}.ct-cc2293{color:#A5D6FF}.ct-bff125{color:#C9D1D9}.ct-c91294{color:#7EE787}.light .ct-c91294{color:#268BD2}.light .ct-bff125{color:#657B83}.light .ct-cc2293{color:#2AA198}.light .ct-35ae50{color:#93A1A1}.light .ct-2abf7f{color:#D33682}"}]}],toc:{title:z,searchDepth:B,depth:B,links:[{id:w,depth:B,text:x}]}},_type:"markdown",_id:"content:Linux:Google photos alternative with Photoprism.md",_source:"content",_file:"Linux\u002FGoogle photos alternative with Photoprism.md",_extension:"md"}},prerenderedAt:1667480033452}}("element","span","text","ct-bff125","line","ct-c91294","ct-cc2293",": "," ","\"false\"",":"," ","    ","a","nofollow","      ","      - ","p","code"," - "," ",false,"docker-compose-file-to-run-it","Docker compose file to run it","version: '3.5'\n\nservices:\n photoprism:\n container_name: photoprism__app\n image: photoprism\u002Fphotoprism:latest\n depends_on:\n - mariadb\n restart: unless-stopped\n security_opt:\n - seccomp:unconfined\n - apparmor:unconfined\n ports:\n - 2342:2342 # HTTP port (host:container)\n environment:\n PHOTOPRISM_ADMIN_PASSWORD: \"password\"\n PHOTOPRISM_SITE_URL: \"https:\u002F\u002Fservice.url\u002F\"\n PHOTOPRISM_ORIGINALS_LIMIT: 5000\n PHOTOPRISM_HTTP_COMPRESSION: \"gzip\"\n PHOTOPRISM_DEBUG: \"false\" \n PHOTOPRISM_PUBLIC: \"false\" \n PHOTOPRISM_READONLY: \"false\" \n PHOTOPRISM_EXPERIMENTAL: \"false\"\n PHOTOPRISM_DISABLE_CHOWN: \"false\"\n PHOTOPRISM_DISABLE_WEBDAV: \"false\" \n PHOTOPRISM_DISABLE_SETTINGS: \"false\"\n PHOTOPRISM_DISABLE_TENSORFLOW: \"false\"\n PHOTOPRISM_DISABLE_FACES: \"false\" \n PHOTOPRISM_DISABLE_CLASSIFICATION: \"false\"\n PHOTOPRISM_DARKTABLE_PRESETS: \"false\" \n PHOTOPRISM_DETECT_NSFW: \"false\" \n PHOTOPRISM_UPLOAD_NSFW: \"true\" \n PHOTOPRISM_DATABASE_DRIVER: \"mysql\" \n PHOTOPRISM_DATABASE_SERVER: \"mariadb:3306\"\n PHOTOPRISM_DATABASE_NAME: \"photoprism\" \n PHOTOPRISM_DATABASE_USER: \"root\" \n PHOTOPRISM_DATABASE_PASSWORD: \"insecure\" \n PHOTOPRISM_SITE_TITLE: \"PhotoPrism\"\n PHOTOPRISM_SITE_CAPTION: \"Browse Your Life\"\n PHOTOPRISM_SITE_DESCRIPTION: \"\"\n      PHOTOPRISM_SITE_AUTHOR: \"\"\n      HOME: \"\u002Fphotoprism\"\n    working_dir: \"\u002Fphotoprism\"\n    volumes:\n      - \".\u002Fdata\u002Foriginals:\u002Fphotoprism\u002Foriginals\"    \n      - \".\u002Fdata\u002Fimports:\u002Fphotoprism\u002Fimport\"\n      - \".\u002Fdata\u002Fstorage:\u002Fphotoprism\u002Fstorage\"\n  mariadb:\n    container_name: photoprism__db\n    restart: unless-stopped\n    image: mariadb:10.6\n    security_opt:\n      - seccomp:unconfined\n      - apparmor:unconfined\n    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120\n    volumes:\n      - \".\u002Fdatabase:\u002Fvar\u002Flib\u002Fmysql\" # Important, don't remove\n    environment:\n      MYSQL_ROOT_PASSWORD: insecure\n      MYSQL_DATABASE: photoprism\n      MYSQL_USER: photoprism\n      MYSQL_PASSWORD: insecure\n","","photoprism",2,"Google Photos Alternative With Photoprism","\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism","root","https:\u002F\u002Fphotoprism.app\u002F","Photo Prism"," is a free alternative to Google photos, can be set up with #docker.","h2","Check out current ","https:\u002F\u002Fdl.photoprism.app\u002Fdocker\u002Fdocker-compose.yml","example"," at photoprism's ","https:\u002F\u002Fdocs.photoprism.app\u002Fgetting-started\u002Fdocker-compose\u002F","documentation",".","yaml","pre","container_name","image","mariadb","restart","unless-stopped","security_opt","seccomp:unconfined","apparmor:unconfined","ct-35ae50","environment"," ","\"\"","\"\u002Fphotoprism\"","volumes","insecure")) \ No newline at end of file diff --git a/linux/google-photos-alternative-with-photoprism/index.html b/linux/google-photos-alternative-with-photoprism/index.html index e1754db..d6fa241 100644 --- a/linux/google-photos-alternative-with-photoprism/index.html +++ b/linux/google-photos-alternative-with-photoprism/index.html @@ -1,6 +1,6 @@ -Google Photos Alternative With Photoprism • Obsidian Garden -

Google Photos Alternative With Photoprism

Photo Prism is a free alternative to Google photos, can be set up with #docker.

Docker compose file to run it

Check out current example at photoprism's documentation.

version: '3.5'services:  photoprism:    container_name: photoprism__app    image: photoprism/photoprism:latest    depends_on:      - mariadb    restart: unless-stopped    security_opt:      - seccomp:unconfined      - apparmor:unconfined    ports:      - 2342:2342 # HTTP port (host:container)    environment:      PHOTOPRISM_ADMIN_PASSWORD: "password"      PHOTOPRISM_SITE_URL: "https://service.url/"      PHOTOPRISM_ORIGINALS_LIMIT: 5000      PHOTOPRISM_HTTP_COMPRESSION: "gzip"      PHOTOPRISM_DEBUG: "false"                PHOTOPRISM_PUBLIC: "false"            PHOTOPRISM_READONLY: "false"          PHOTOPRISM_EXPERIMENTAL: "false"      PHOTOPRISM_DISABLE_CHOWN: "false"      PHOTOPRISM_DISABLE_WEBDAV: "false"       PHOTOPRISM_DISABLE_SETTINGS: "false"      PHOTOPRISM_DISABLE_TENSORFLOW: "false"      PHOTOPRISM_DISABLE_FACES: "false"           PHOTOPRISM_DISABLE_CLASSIFICATION: "false"      PHOTOPRISM_DARKTABLE_PRESETS: "false"           PHOTOPRISM_DETECT_NSFW: "false"                 PHOTOPRISM_UPLOAD_NSFW: "true"                  PHOTOPRISM_DATABASE_DRIVER: "mysql"             PHOTOPRISM_DATABASE_SERVER: "mariadb:3306"      PHOTOPRISM_DATABASE_NAME: "photoprism"          PHOTOPRISM_DATABASE_USER: "root"               PHOTOPRISM_DATABASE_PASSWORD: "insecure"       PHOTOPRISM_SITE_TITLE: "PhotoPrism"      PHOTOPRISM_SITE_CAPTION: "Browse Your Life"      PHOTOPRISM_SITE_DESCRIPTION: ""      PHOTOPRISM_SITE_AUTHOR: ""      HOME: "/photoprism"    working_dir: "/photoprism"    volumes:      - "./data/originals:/photoprism/originals"          - "./data/imports:/photoprism/import"      - "./data/storage:/photoprism/storage"  mariadb:    container_name: photoprism__db    restart: unless-stopped    image: mariadb:10.6    security_opt:      - seccomp:unconfined      - apparmor:unconfined    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120    volumes:      - "./database:/var/lib/mysql" # Important, don't remove    environment:      MYSQL_ROOT_PASSWORD: insecure      MYSQL_DATABASE: photoprism      MYSQL_USER: photoprism      MYSQL_PASSWORD: insecure
btw, have a nice day
(2018 - 2022) muerwre
+

Google Photos Alternative With Photoprism

Photo Prism is a free alternative to Google photos, can be set up with #docker.

Docker compose file to run it

Check out current example at photoprism's documentation.

version: '3.5'services:  photoprism:    container_name: photoprism__app    image: photoprism/photoprism:latest    depends_on:      - mariadb    restart: unless-stopped    security_opt:      - seccomp:unconfined      - apparmor:unconfined    ports:      - 2342:2342 # HTTP port (host:container)    environment:      PHOTOPRISM_ADMIN_PASSWORD: "password"      PHOTOPRISM_SITE_URL: "https://service.url/"      PHOTOPRISM_ORIGINALS_LIMIT: 5000      PHOTOPRISM_HTTP_COMPRESSION: "gzip"      PHOTOPRISM_DEBUG: "false"                PHOTOPRISM_PUBLIC: "false"            PHOTOPRISM_READONLY: "false"          PHOTOPRISM_EXPERIMENTAL: "false"      PHOTOPRISM_DISABLE_CHOWN: "false"      PHOTOPRISM_DISABLE_WEBDAV: "false"       PHOTOPRISM_DISABLE_SETTINGS: "false"      PHOTOPRISM_DISABLE_TENSORFLOW: "false"      PHOTOPRISM_DISABLE_FACES: "false"           PHOTOPRISM_DISABLE_CLASSIFICATION: "false"      PHOTOPRISM_DARKTABLE_PRESETS: "false"           PHOTOPRISM_DETECT_NSFW: "false"                 PHOTOPRISM_UPLOAD_NSFW: "true"                  PHOTOPRISM_DATABASE_DRIVER: "mysql"             PHOTOPRISM_DATABASE_SERVER: "mariadb:3306"      PHOTOPRISM_DATABASE_NAME: "photoprism"          PHOTOPRISM_DATABASE_USER: "root"               PHOTOPRISM_DATABASE_PASSWORD: "insecure"       PHOTOPRISM_SITE_TITLE: "PhotoPrism"      PHOTOPRISM_SITE_CAPTION: "Browse Your Life"      PHOTOPRISM_SITE_DESCRIPTION: ""      PHOTOPRISM_SITE_AUTHOR: ""      HOME: "/photoprism"    working_dir: "/photoprism"    volumes:      - "./data/originals:/photoprism/originals"          - "./data/imports:/photoprism/import"      - "./data/storage:/photoprism/storage"  mariadb:    container_name: photoprism__db    restart: unless-stopped    image: mariadb:10.6    security_opt:      - seccomp:unconfined      - apparmor:unconfined    command: mysqld --innodb-buffer-pool-size=128M --transaction-isolation=READ-COMMITTED --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --max-connections=512 --innodb-rollback-on-timeout=OFF --innodb-lock-wait-timeout=120    volumes:      - "./database:/var/lib/mysql" # Important, don't remove    environment:      MYSQL_ROOT_PASSWORD: insecure      MYSQL_DATABASE: photoprism      MYSQL_USER: photoprism      MYSQL_PASSWORD: insecure
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/linux/resume-or-start-screen-session/_payload.js b/linux/resume-or-start-screen-session/_payload.js index f7badb3..a276c1f 100644 --- a/linux/resume-or-start-screen-session/_payload.js +++ b/linux/resume-or-start-screen-session/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:j,_path:k},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-KZPaWw5ajQ":{_path:k,_dir:"linux",_draft:f,_partial:f,_locale:"en",_empty:f,title:j,description:"Running this script will enter currently running screen session or will start new one.",excerpt:{type:l,children:[{type:a,tag:m,props:{},children:[{type:b,value:n},{type:a,tag:o,props:{},children:[{type:b,value:p}]},{type:b,value:q}]},{type:a,tag:d,props:{code:g,language:r},children:[{type:a,tag:s,props:{},children:[{type:a,tag:d,props:{__ignoreMap:h},children:[{type:b,value:g}]}]}]}]},body:{type:l,children:[{type:a,tag:m,props:{},children:[{type:b,value:n},{type:a,tag:o,props:{},children:[{type:b,value:p}]},{type:b,value:q}]},{type:a,tag:d,props:{code:g,language:r},children:[{type:a,tag:s,props:{},children:[{type:a,tag:d,props:{__ignoreMap:h},children:[{type:a,tag:c,props:{class:"line"},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"( screen -r bash "}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" ( screen -d bash "}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:"&&"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" screen -r bash "}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" screen -SAm bash bash ) )"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-fa5ecd{color:#FF7B72}.ct-7286cb{color:#C9D1D9}.light .ct-7286cb{color:#657B83}.light .ct-fa5ecd{color:#859900}"}]}],toc:{title:h,searchDepth:u,depth:u,links:[]}},_type:"markdown",_id:"content:Linux:Resume or start screen session.md",_source:"content",_file:"Linux\u002FResume or start screen session.md",_extension:"md"}},prerenderedAt:1667469957056}}("element","text","span","code","ct-7286cb",false,"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n","","ct-fa5ecd","Resume Or Start Screen Session","\u002Flinux\u002Fresume-or-start-screen-session","root","p","Running this script will enter currently running ","code-inline","screen"," session or will start new one.","shell","pre","||",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:j,_path:k},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-KZPaWw5ajQ":{_path:k,_dir:"linux",_draft:f,_partial:f,_locale:"en",_empty:f,title:j,description:"Running this script will enter currently running screen session or will start new one.",excerpt:{type:l,children:[{type:a,tag:m,props:{},children:[{type:b,value:n},{type:a,tag:o,props:{},children:[{type:b,value:p}]},{type:b,value:q}]},{type:a,tag:d,props:{code:g,language:r},children:[{type:a,tag:s,props:{},children:[{type:a,tag:d,props:{__ignoreMap:h},children:[{type:b,value:g}]}]}]}]},body:{type:l,children:[{type:a,tag:m,props:{},children:[{type:b,value:n},{type:a,tag:o,props:{},children:[{type:b,value:p}]},{type:b,value:q}]},{type:a,tag:d,props:{code:g,language:r},children:[{type:a,tag:s,props:{},children:[{type:a,tag:d,props:{__ignoreMap:h},children:[{type:a,tag:c,props:{class:"line"},children:[{type:a,tag:c,props:{class:e},children:[{type:b,value:"( screen -r bash "}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" ( screen -d bash "}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:"&&"}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" screen -r bash "}]},{type:a,tag:c,props:{class:i},children:[{type:b,value:t}]},{type:a,tag:c,props:{class:e},children:[{type:b,value:" screen -SAm bash bash ) )"}]}]}]}]}]},{type:a,tag:"style",children:[{type:b,value:".ct-d79ad9{color:#FF7B72}.ct-33f6fa{color:#C9D1D9}.light .ct-33f6fa{color:#657B83}.light .ct-d79ad9{color:#859900}"}]}],toc:{title:h,searchDepth:u,depth:u,links:[]}},_type:"markdown",_id:"content:Linux:Resume or start screen session.md",_source:"content",_file:"Linux\u002FResume or start screen session.md",_extension:"md"}},prerenderedAt:1667480033513}}("element","text","span","code","ct-33f6fa",false,"( screen -r bash || ( screen -d bash && screen -r bash || screen -SAm bash bash ) )\n","","ct-d79ad9","Resume Or Start Screen Session","\u002Flinux\u002Fresume-or-start-screen-session","root","p","Running this script will enter currently running ","code-inline","screen"," session or will start new one.","shell","pre","||",2)) \ No newline at end of file diff --git a/linux/resume-or-start-screen-session/index.html b/linux/resume-or-start-screen-session/index.html index f564aab..2b92427 100644 --- a/linux/resume-or-start-screen-session/index.html +++ b/linux/resume-or-start-screen-session/index.html @@ -1,6 +1,6 @@ -Resume Or Start Screen Session • Obsidian Garden - + \ No newline at end of file diff --git a/linux/rsync-file-with-ssh/_payload.js b/linux/rsync-file-with-ssh/_payload.js index ee55313..5ce3bd6 100644 --- a/linux/rsync-file-with-ssh/_payload.js +++ b/linux/rsync-file-with-ssh/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:p,_path:q},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-3kXgAF354y":{_path:q,_dir:"linux",_draft:l,_partial:l,_locale:"en",_empty:l,title:p,description:m,excerpt:{type:r,children:[{type:a,tag:s,props:{},children:[{type:c,value:m}]},{type:a,tag:k,props:{code:n,language:t},children:[{type:a,tag:u,props:{},children:[{type:a,tag:k,props:{__ignoreMap:o},children:[{type:c,value:n}]}]}]}]},body:{type:r,children:[{type:a,tag:s,props:{},children:[{type:c,value:m}]},{type:a,tag:k,props:{code:n,language:t},children:[{type:a,tag:u,props:{},children:[{type:a,tag:k,props:{__ignoreMap:o},children:[{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:"ct-06e70b"},children:[{type:c,value:"#!\u002Fbin\u002Fbash"}]}]},{type:a,tag:b,props:{class:d},children:[]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"PORT=22"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"USER=user"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"HOST=example.com"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"REMOTE_PATH=\u002Ftmp"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"REMOTE_FILE=sample.text"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"DEST_PATH=.\u002F"}]}]},{type:a,tag:b,props:{class:d},children:[]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"rsync -a -e "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"ssh -p "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"PORT"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:e},children:[{type:c,value:" -P -v \\"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"USER"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"@"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"HOST"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:":"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"REMOTE_PATH"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\u002F"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"REMOTE_FILE"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:e},children:[{type:c,value:" \\"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"DEST_PATH"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-231d22{color:#C9D1D9}.ct-39f251{color:#C9D1D9}.ct-354ab7{color:#A5D6FF}.ct-d3a694{color:#C9D1D9}.ct-06e70b{color:#8B949E}.light .ct-06e70b{color:#93A1A1}.light .ct-d3a694{color:#657B83}.light .ct-354ab7{color:#2AA198}.light .ct-39f251{color:#859900}.light .ct-231d22{color:#268BD2}"}]}],toc:{title:o,searchDepth:w,depth:w,links:[]}},_type:"markdown",_id:"content:Linux:Rsync file with SSH.md",_source:"content",_file:"Linux\u002FRsync file with SSH.md",_extension:"md"}},prerenderedAt:1667469957089}}("element","span","text","line","ct-d3a694","ct-354ab7","ct-39f251","$","ct-231d22","\"","code",false,"Downloads file from #SSH with rsync and puts it in current folder.","#!\u002Fbin\u002Fbash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=\u002Ftmp\nREMOTE_FILE=sample.text\nDEST_PATH=.\u002F\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH\u002F$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n","","Rsync File With SSH","\u002Flinux\u002Frsync-file-with-ssh","root","p","bash","pre"," ",2)) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:p,_path:q},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-3kXgAF354y":{_path:q,_dir:"linux",_draft:l,_partial:l,_locale:"en",_empty:l,title:p,description:m,excerpt:{type:r,children:[{type:a,tag:s,props:{},children:[{type:c,value:m}]},{type:a,tag:k,props:{code:n,language:t},children:[{type:a,tag:u,props:{},children:[{type:a,tag:k,props:{__ignoreMap:o},children:[{type:c,value:n}]}]}]}]},body:{type:r,children:[{type:a,tag:s,props:{},children:[{type:c,value:m}]},{type:a,tag:k,props:{code:n,language:t},children:[{type:a,tag:u,props:{},children:[{type:a,tag:k,props:{__ignoreMap:o},children:[{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:"ct-772071"},children:[{type:c,value:"#!\u002Fbin\u002Fbash"}]}]},{type:a,tag:b,props:{class:d},children:[]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"PORT=22"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"USER=user"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"HOST=example.com"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"REMOTE_PATH=\u002Ftmp"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"REMOTE_FILE=sample.text"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"DEST_PATH=.\u002F"}]}]},{type:a,tag:b,props:{class:d},children:[]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:"rsync -a -e "}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\"ssh -p "}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"PORT"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:e},children:[{type:c,value:" -P -v \\"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"USER"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"@"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"HOST"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:":"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"REMOTE_PATH"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"\u002F"}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"REMOTE_FILE"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:e},children:[{type:c,value:" \\"}]}]},{type:a,tag:b,props:{class:d},children:[{type:a,tag:b,props:{class:e},children:[{type:c,value:v}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]},{type:a,tag:b,props:{class:g},children:[{type:c,value:h}]},{type:a,tag:b,props:{class:i},children:[{type:c,value:"DEST_PATH"}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:j}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-bccbfa{color:#C9D1D9}.ct-5fce1c{color:#C9D1D9}.ct-9b3752{color:#A5D6FF}.ct-abc278{color:#C9D1D9}.ct-772071{color:#8B949E}.light .ct-772071{color:#93A1A1}.light .ct-abc278{color:#657B83}.light .ct-9b3752{color:#2AA198}.light .ct-5fce1c{color:#859900}.light .ct-bccbfa{color:#268BD2}"}]}],toc:{title:o,searchDepth:w,depth:w,links:[]}},_type:"markdown",_id:"content:Linux:Rsync file with SSH.md",_source:"content",_file:"Linux\u002FRsync file with SSH.md",_extension:"md"}},prerenderedAt:1667480033543}}("element","span","text","line","ct-abc278","ct-9b3752","ct-5fce1c","$","ct-bccbfa","\"","code",false,"Downloads file from #SSH with rsync and puts it in current folder.","#!\u002Fbin\u002Fbash\n\nPORT=22\nUSER=user\nHOST=example.com\nREMOTE_PATH=\u002Ftmp\nREMOTE_FILE=sample.text\nDEST_PATH=.\u002F\n\nrsync -a -e \"ssh -p $PORT\" -P -v \\\n \"$USER@$HOST:$REMOTE_PATH\u002F$REMOTE_FILE\" \\\n \"$DEST_PATH\"\n","","Rsync File With SSH","\u002Flinux\u002Frsync-file-with-ssh","root","p","bash","pre"," ",2)) \ No newline at end of file diff --git a/linux/rsync-file-with-ssh/index.html b/linux/rsync-file-with-ssh/index.html index e320e52..b14d613 100644 --- a/linux/rsync-file-with-ssh/index.html +++ b/linux/rsync-file-with-ssh/index.html @@ -1,6 +1,6 @@ -Rsync File With SSH • Obsidian Garden -

Rsync File With SSH

Downloads file from #SSH with rsync and puts it in current folder.

#!/bin/bashPORT=22USER=userHOST=example.comREMOTE_PATH=/tmpREMOTE_FILE=sample.textDEST_PATH=./rsync -a -e "ssh -p $PORT" -P -v \    "$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE" \    "$DEST_PATH"
btw, have a nice day
(2018 - 2022) muerwre
+

Rsync File With SSH

Downloads file from #SSH with rsync and puts it in current folder.

#!/bin/bashPORT=22USER=userHOST=example.comREMOTE_PATH=/tmpREMOTE_FILE=sample.textDEST_PATH=./rsync -a -e "ssh -p $PORT" -P -v \    "$USER@$HOST:$REMOTE_PATH/$REMOTE_FILE" \    "$DEST_PATH"
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/linux/setting-up-nginx/_payload.js b/linux/setting-up-nginx/_payload.js index cf02e34..ff79cb3 100644 --- a/linux/setting-up-nginx/_payload.js +++ b/linux/setting-up-nginx/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:P,_path:Q},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-jVEFIZPtgx":{_path:Q,_dir:"linux",_draft:C,_partial:C,_locale:"en",_empty:C,title:P,description:j,excerpt:{type:R,children:[{type:a,tag:l,props:{id:D},children:[{type:c,value:E}]},{type:a,tag:h,props:{code:F,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:c,value:F}]}]}]},{type:a,tag:l,props:{id:G},children:[{type:c,value:H}]},{type:a,tag:h,props:{code:I,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:c,value:I}]}]}]},{type:a,tag:l,props:{id:J},children:[{type:c,value:K}]},{type:a,tag:S,props:{},children:[{type:c,value:T},{type:a,tag:o,props:{},children:[{type:c,value:U}]},{type:c,value:V},{type:a,tag:o,props:{},children:[{type:c,value:W}]},{type:c,value:X},{type:a,tag:o,props:{},children:[{type:c,value:Y}]},{type:c,value:Z},{type:a,tag:_,props:{href:s,rel:[$]},children:[{type:c,value:s}]},{type:c,value:aa}]},{type:a,tag:h,props:{code:L,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:c,value:L}]}]}]}]},body:{type:R,children:[{type:a,tag:l,props:{id:D},children:[{type:c,value:E}]},{type:a,tag:h,props:{code:F,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:t},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:ad},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"# First attempt to serve request as file, then"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"# as directory, then fall back to displaying a 404."}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:"ct-e3a827"},children:[{type:c,value:g}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ag}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]}]}]}]},{type:a,tag:l,props:{id:G},children:[{type:c,value:H}]},{type:a,tag:h,props:{code:I,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:t},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" client_max_body_size "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"200M;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]}]}]}]},{type:a,tag:l,props:{id:J},children:[{type:c,value:K}]},{type:a,tag:S,props:{},children:[{type:c,value:T},{type:a,tag:o,props:{},children:[{type:c,value:U}]},{type:c,value:V},{type:a,tag:o,props:{},children:[{type:c,value:W}]},{type:c,value:X},{type:a,tag:o,props:{},children:[{type:c,value:Y}]},{type:c,value:Z},{type:a,tag:_,props:{href:s,rel:[$]},children:[{type:c,value:s}]},{type:c,value:aa}]},{type:a,tag:h,props:{code:L,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:t},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"80;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"return"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-01c24c"},children:[{type:c,value:"301"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" https:\u002F\u002Fnext.vault48.org"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:A},children:[{type:c,value:"request_uri"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:t},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"443 ssl http2;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"[::]:443 ssl http2;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"# managed by Certbot"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" ssl_certificate "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Ffullchain.pem; "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" ssl_certificate_key "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Fprivkey.pem; "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" ssl_trusted_certificate "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Fchain.pem;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:ad},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" proxy_redirect "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"off;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"Host "}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:A},children:[{type:c,value:"host"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"X-Real-IP "}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:A},children:[{type:c,value:"remote_addr"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"X-Forwarded-For "}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:A},children:[{type:c,value:"proxy_add_x_forwarded_for"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:M}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" proxy_pass "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"http:\u002F\u002F127.0.0.1:8080;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ag}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-04bc3c{color:#C9D1D9}.ct-25244f{color:#C9D1D9}.ct-01c24c{color:#79C0FF}.ct-8d2cf3{color:#FF7B72}.ct-e3a827{color:#FF7B72}.ct-aff5a8{color:#FFA657}.ct-ab78ad{color:#FF7B72}.ct-4da7da{color:#C9D1D9}.ct-69e464{color:#8B949E}.ct-0bc476{color:#C9D1D9}.ct-25edfe{color:#FF7B72}.light .ct-25edfe{color:#073642}.light .ct-0bc476{color:#657B83}.light .ct-69e464{color:#93A1A1}.light .ct-4da7da{color:#657B83}.light .ct-ab78ad{color:#073642}.light .ct-aff5a8{color:#657B83}.light .ct-e3a827{color:#657B83}.light .ct-8d2cf3{color:#859900}.light .ct-01c24c{color:#D33682}.light .ct-25244f{color:#859900}.light .ct-04bc3c{color:#268BD2}"}]}],toc:{title:j,searchDepth:r,depth:r,links:[{id:D,depth:r,text:E},{id:G,depth:r,text:H},{id:J,depth:r,text:K}]}},_type:"markdown",_id:"content:Linux:Setting up NGINX.md",_source:"content",_file:"Linux\u002FSetting up NGINX.md",_extension:"md"}},prerenderedAt:1667469957118}}("element","span","text","ct-0bc476","line","ct-8d2cf3"," ","code"," ","","ct-69e464","h2","nginx","pre","code-inline","ct-4da7da"," ",2,"https:\u002F\u002Fnext.vault48.org","ct-25edfe","server"," {","# ...","}","ct-25244f","$","ct-04bc3c",";",false,"fallback-url-for-spa-s","Fallback url for SPA-s","server {\n # ...\n location \u002F {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri\u002F =404;\n }\n # ...\n}\n","set-up-for-uploads","Set up for uploads","server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n","reverse-proxy-for-https","Reverse proxy for https","server {\n listen 80;\n server_name next.vault48.org;\n return 301 https:\u002F\u002Fnext.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Ffullchain.pem; \n ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Fprivkey.pem; \n ssl_trusted_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Fchain.pem;\n \n server_name next.vault48.org;\n \n location \u002F {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http:\u002F\u002F127.0.0.1:8080;\n }\n}\n"," "," listen "," proxy_set_header ","Setting Up NGINX","\u002Flinux\u002Fsetting-up-nginx","root","p","Given config forwards ","https"," traffic to ","http"," on port ","8080"," for ","a","nofollow","\nwith http2 support if possible.","ct-ab78ad","location","ct-aff5a8","\u002F ","{"," }"," server_name ","next.vault48.org;")) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,$,aa,ab,ac,ad,ae,af,ag,ah,ai){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:P,_path:Q},{title:"SSH",_path:"\u002Flinux\u002Fssh"}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-jVEFIZPtgx":{_path:Q,_dir:"linux",_draft:C,_partial:C,_locale:"en",_empty:C,title:P,description:j,excerpt:{type:R,children:[{type:a,tag:l,props:{id:D},children:[{type:c,value:E}]},{type:a,tag:h,props:{code:F,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:c,value:F}]}]}]},{type:a,tag:l,props:{id:G},children:[{type:c,value:H}]},{type:a,tag:h,props:{code:I,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:c,value:I}]}]}]},{type:a,tag:l,props:{id:J},children:[{type:c,value:K}]},{type:a,tag:S,props:{},children:[{type:c,value:T},{type:a,tag:o,props:{},children:[{type:c,value:U}]},{type:c,value:V},{type:a,tag:o,props:{},children:[{type:c,value:W}]},{type:c,value:X},{type:a,tag:o,props:{},children:[{type:c,value:Y}]},{type:c,value:Z},{type:a,tag:_,props:{href:s,rel:[$]},children:[{type:c,value:s}]},{type:c,value:aa}]},{type:a,tag:h,props:{code:L,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:c,value:L}]}]}]}]},body:{type:R,children:[{type:a,tag:l,props:{id:D},children:[{type:c,value:E}]},{type:a,tag:h,props:{code:F,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:t},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:ad},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"# First attempt to serve request as file, then"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:M}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"# as directory, then fall back to displaying a 404."}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:"ct-a1d2b8"},children:[{type:c,value:g}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ag}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]}]}]}]},{type:a,tag:l,props:{id:G},children:[{type:c,value:H}]},{type:a,tag:h,props:{code:I,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:t},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" client_max_body_size "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"200M;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:w}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]}]}]}]},{type:a,tag:l,props:{id:J},children:[{type:c,value:K}]},{type:a,tag:S,props:{},children:[{type:c,value:T},{type:a,tag:o,props:{},children:[{type:c,value:U}]},{type:c,value:V},{type:a,tag:o,props:{},children:[{type:c,value:W}]},{type:c,value:X},{type:a,tag:o,props:{},children:[{type:c,value:Y}]},{type:c,value:Z},{type:a,tag:_,props:{href:s,rel:[$]},children:[{type:c,value:s}]},{type:c,value:aa}]},{type:a,tag:h,props:{code:L,language:m},children:[{type:a,tag:n,props:{},children:[{type:a,tag:h,props:{__ignoreMap:j},children:[{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:t},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"80;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:"return"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:"ct-20379f"},children:[{type:c,value:"301"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:" https:\u002F\u002Fnext.vault48.org"}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:A},children:[{type:c,value:"request_uri"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]},{type:a,tag:b,props:{class:e},children:[]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:t},children:[{type:c,value:u}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:v}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"443 ssl http2;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:N}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"[::]:443 ssl http2;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:k},children:[{type:c,value:"# managed by Certbot"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" ssl_certificate "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Ffullchain.pem; "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" ssl_certificate_key "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Fprivkey.pem; "}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" ssl_trusted_certificate "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"\u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Fchain.pem;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:ah}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:ai}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:i}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:p},children:[{type:c,value:i}]},{type:a,tag:b,props:{class:ab},children:[{type:c,value:ac}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:g}]},{type:a,tag:b,props:{class:ad},children:[{type:c,value:ae}]},{type:a,tag:b,props:{class:p},children:[{type:c,value:af}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" proxy_redirect "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"off;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"Host "}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:A},children:[{type:c,value:"host"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"X-Real-IP "}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:A},children:[{type:c,value:"remote_addr"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:O}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"X-Forwarded-For "}]},{type:a,tag:b,props:{class:y},children:[{type:c,value:z}]},{type:a,tag:b,props:{class:A},children:[{type:c,value:"proxy_add_x_forwarded_for"}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:B}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:M}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:q}]},{type:a,tag:b,props:{class:f},children:[{type:c,value:" proxy_pass "}]},{type:a,tag:b,props:{class:d},children:[{type:c,value:"http:\u002F\u002F127.0.0.1:8080;"}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:ag}]}]},{type:a,tag:b,props:{class:e},children:[{type:a,tag:b,props:{class:d},children:[{type:c,value:x}]}]}]}]}]},{type:a,tag:"style",children:[{type:c,value:".ct-162f27{color:#C9D1D9}.ct-f8f6bb{color:#C9D1D9}.ct-20379f{color:#79C0FF}.ct-24380b{color:#FF7B72}.ct-a1d2b8{color:#FF7B72}.ct-689b80{color:#FFA657}.ct-d15a59{color:#FF7B72}.ct-b09c3f{color:#C9D1D9}.ct-f2c9af{color:#8B949E}.ct-bd3f01{color:#C9D1D9}.ct-987db0{color:#FF7B72}.light .ct-987db0{color:#073642}.light .ct-bd3f01{color:#657B83}.light .ct-f2c9af{color:#93A1A1}.light .ct-b09c3f{color:#657B83}.light .ct-d15a59{color:#073642}.light .ct-689b80{color:#657B83}.light .ct-a1d2b8{color:#657B83}.light .ct-24380b{color:#859900}.light .ct-20379f{color:#D33682}.light .ct-f8f6bb{color:#859900}.light .ct-162f27{color:#268BD2}"}]}],toc:{title:j,searchDepth:r,depth:r,links:[{id:D,depth:r,text:E},{id:G,depth:r,text:H},{id:J,depth:r,text:K}]}},_type:"markdown",_id:"content:Linux:Setting up NGINX.md",_source:"content",_file:"Linux\u002FSetting up NGINX.md",_extension:"md"}},prerenderedAt:1667480033578}}("element","span","text","ct-bd3f01","line","ct-24380b"," ","code"," ","","ct-f2c9af","h2","nginx","pre","code-inline","ct-b09c3f"," ",2,"https:\u002F\u002Fnext.vault48.org","ct-987db0","server"," {","# ...","}","ct-f8f6bb","$","ct-162f27",";",false,"fallback-url-for-spa-s","Fallback url for SPA-s","server {\n # ...\n location \u002F {\n # First attempt to serve request as file, then\n # as directory, then fall back to displaying a 404.\n try_files $uri $uri\u002F =404;\n }\n # ...\n}\n","set-up-for-uploads","Set up for uploads","server {\n # ...\n client_max_body_size 200M;\n # ...\n}\n","reverse-proxy-for-https","Reverse proxy for https","server {\n listen 80;\n server_name next.vault48.org;\n return 301 https:\u002F\u002Fnext.vault48.org$request_uri;\n}\n\nserver {\n listen 443 ssl http2;\n listen [::]:443 ssl http2;\n \n # managed by Certbot\n ssl_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Ffullchain.pem; \n ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Fprivkey.pem; \n ssl_trusted_certificate \u002Fetc\u002Fletsencrypt\u002Flive\u002Fvault48.org\u002Fchain.pem;\n \n server_name next.vault48.org;\n \n location \u002F {\n proxy_redirect off;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n \n proxy_pass http:\u002F\u002F127.0.0.1:8080;\n }\n}\n"," "," listen "," proxy_set_header ","Setting Up NGINX","\u002Flinux\u002Fsetting-up-nginx","root","p","Given config forwards ","https"," traffic to ","http"," on port ","8080"," for ","a","nofollow","\nwith http2 support if possible.","ct-d15a59","location","ct-689b80","\u002F ","{"," }"," server_name ","next.vault48.org;")) \ No newline at end of file diff --git a/linux/setting-up-nginx/index.html b/linux/setting-up-nginx/index.html index fdb6745..46191e6 100644 --- a/linux/setting-up-nginx/index.html +++ b/linux/setting-up-nginx/index.html @@ -1,7 +1,7 @@ -Setting Up NGINX • Obsidian Garden -

Setting Up NGINX

Fallback url for SPA-s

server {  # ...  location / {    # First attempt to serve request as file, then    # as directory, then fall back to displaying a 404.      }  # ...}

Set up for uploads

server {  # ...  client_max_body_size 200M;  # ...}

Reverse proxy for https

Given config forwards https traffic to http on port 8080 for https://next.vault48.org -with http2 support if possible.

server {  listen 80;  server_name next.vault48.org;  return 301 https://next.vault48.org$request_uri;}server {  listen 443 ssl http2;  listen [::]:443 ssl http2;    # managed by Certbot  ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem;   ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem;   ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;    server_name next.vault48.org;    location / {    proxy_redirect off;    proxy_set_header Host $host;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_pass http://127.0.0.1:8080;  }}
btw, have a nice day
(2018 - 2022) muerwre
+

Setting Up NGINX

Fallback url for SPA-s

server {  # ...  location / {    # First attempt to serve request as file, then    # as directory, then fall back to displaying a 404.      }  # ...}

Set up for uploads

server {  # ...  client_max_body_size 200M;  # ...}

Reverse proxy for https

Given config forwards https traffic to http on port 8080 for https://next.vault48.org +with http2 support if possible.

server {  listen 80;  server_name next.vault48.org;  return 301 https://next.vault48.org$request_uri;}server {  listen 443 ssl http2;  listen [::]:443 ssl http2;    # managed by Certbot  ssl_certificate /etc/letsencrypt/live/vault48.org/fullchain.pem;   ssl_certificate_key /etc/letsencrypt/live/vault48.org/privkey.pem;   ssl_trusted_certificate /etc/letsencrypt/live/vault48.org/chain.pem;    server_name next.vault48.org;    location / {    proxy_redirect off;    proxy_set_header Host $host;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_pass http://127.0.0.1:8080;  }}
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/linux/ssh/_payload.js b/linux/ssh/_payload.js index 51bb460..4a71d63 100644 --- a/linux/ssh/_payload.js +++ b/linux/ssh/_payload.js @@ -1 +1 @@ -export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:k,_path:l}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-501XFnutIe":{_path:l,_dir:"linux",_draft:f,_partial:f,_locale:"en",_empty:f,title:k,description:c,excerpt:{type:m,children:[{type:a,tag:n,props:{id:g},children:[{type:b,value:h}]},{type:a,tag:o,props:{},children:[{type:b,value:p},{type:a,tag:d,props:{},children:[{type:b,value:q}]},{type:b,value:r},{type:a,tag:d,props:{},children:[{type:b,value:s}]},{type:b,value:t}]},{type:a,tag:e,props:{code:i},children:[{type:a,tag:u,props:{},children:[{type:a,tag:e,props:{__ignoreMap:c},children:[{type:b,value:i}]}]}]}]},body:{type:m,children:[{type:a,tag:n,props:{id:g},children:[{type:b,value:h}]},{type:a,tag:o,props:{},children:[{type:b,value:p},{type:a,tag:d,props:{},children:[{type:b,value:q}]},{type:b,value:r},{type:a,tag:d,props:{},children:[{type:b,value:s}]},{type:b,value:t}]},{type:a,tag:e,props:{code:i},children:[{type:a,tag:u,props:{},children:[{type:a,tag:e,props:{__ignoreMap:c},children:[{type:a,tag:v,props:{class:"line"},children:[{type:a,tag:v,props:{},children:[{type:b,value:"Host router\n HostName 192.168.0.1\n IdentityFile ~\u002F.ssh\u002Fid_rsa\n User root\n Port 22522"}]}]}]}]}]}],toc:{title:c,searchDepth:j,depth:j,links:[{id:g,depth:j,text:h}]}},_type:"markdown",_id:"content:Linux:SSH.md",_source:"content",_file:"Linux\u002FSSH.md",_extension:"md"}},prerenderedAt:1667469957163}}("element","text","","code-inline","code",false,"config-aliases-for-ssh-hosts","Config aliases for #SSH hosts","Host router\n HostName 192.168.0.1\n IdentityFile ~\u002F.ssh\u002Fid_rsa\n User root\n Port 22522\n",2,"SSH","\u002Flinux\u002Fssh","root","h2","p","#SSH config can be used to made aliases for different hosts. Should be put at ","~\u002F.ssh\u002Fconfig",". To simply call ","ssh router"," without parameters, use this:","pre","span")) \ No newline at end of file +export default (function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v){return {data:{navigation:[{title:"Blockchain",_path:"\u002Fblockchain",children:[{title:"Common Typescript Examples",_path:"\u002Fblockchain\u002Fcommon-typescript-examples"},{title:"Smart Contracts",_path:"\u002Fblockchain\u002Fsmart-contracts"}]},{title:"Css",_path:"\u002Fcss",children:[{title:"Automatic Grid Like Masonry With Pure CSS",_path:"\u002Fcss\u002Fautomatic-grid-like-masonry-with-pure-css"},{title:"Sass Nth Child Iterate Mixin",_path:"\u002Fcss\u002Fsass-nth-child-iterate-mixin"},{title:"Test If Browser Supports CSS Rules",_path:"\u002Fcss\u002Ftest-if-browser-supports-css-rules"}]},{title:"Docker",_path:"\u002Fdocker",children:[{title:"Building Static Pages With Docker",_path:"\u002Fdocker\u002Fbuilding-static-pages-with-docker"},{title:"Drone Ci",_path:"\u002Fdocker\u002Fdrone-ci"},{title:"Github Pages With Drone Ci",_path:"\u002Fdocker\u002Fgithub-pages-with-drone-ci"},{title:"Private Docker Registry",_path:"\u002Fdocker\u002Fprivate-docker-registry"},{title:"Refresh Containers On Pull",_path:"\u002Fdocker\u002Frefresh-containers-on-pull"},{title:"Seed Dump Inside Docker",_path:"\u002Fdocker\u002Fseed-dump-inside-docker"},{title:"Wait For Mysql",_path:"\u002Fdocker\u002Fwait-for-mysql"},{title:"Wait For Redis",_path:"\u002Fdocker\u002Fwait-for-redis"}]},{title:"Frontend",_path:"\u002Ffrontend",children:[{title:"React Native",_path:"\u002Ffrontend\u002Freact-native",children:[{title:"OAuth2 Login",_path:"\u002Ffrontend\u002Freact-native\u002Foauth2-login"},{title:"Preserve FlatList Scroll Position In React Native",_path:"\u002Ffrontend\u002Freact-native\u002Fpreserve-flatlist-scroll-position-in-react-native"},{title:"Useful Comands",_path:"\u002Ffrontend\u002Freact-native\u002Fuseful-comands"}]},{title:"React",_path:"\u002Ffrontend\u002Freact",children:[{title:"Axios Refresh Token On React",_path:"\u002Ffrontend\u002Freact\u002Faxios-refresh-token-on-react"},{title:"Axios With AbortController",_path:"\u002Ffrontend\u002Freact\u002Faxios-with-abortcontroller"}]},{title:"Vue",_path:"\u002Ffrontend\u002Fvue",children:[{title:"Adding Global Properties To Component",_path:"\u002Ffrontend\u002Fvue\u002Fadding-global-properties-to-component"},{title:"Make Nuxt Handle Obsidian Highlights",_path:"\u002Ffrontend\u002Fvue\u002Fmake-nuxt-handle-obsidian-highlights"}]}]},{title:"Git",_path:"\u002Fgit",children:[{title:"Force Git To Use HTTPS",_path:"\u002Fgit\u002Fforce-git-to-use-https"},{title:"Git Aliases And Useful Commands",_path:"\u002Fgit\u002Fgit-aliases-and-useful-commands"}]},{title:"Graphql",_path:"\u002Fgraphql",children:[{title:"Apollo Client Pagination",_path:"\u002Fgraphql\u002Fapollo-client-pagination"},{title:"Refresh Token In Apollo Client",_path:"\u002Fgraphql\u002Frefresh-token-in-apollo-client"}]},{title:"Linux",_path:"\u002Flinux",children:[{title:"Gitea For Git Hosting",_path:"\u002Flinux\u002Fgitea-for-git-hosting"},{title:"Google Photos Alternative With Photoprism",_path:"\u002Flinux\u002Fgoogle-photos-alternative-with-photoprism"},{title:"Resume Or Start Screen Session",_path:"\u002Flinux\u002Fresume-or-start-screen-session"},{title:"Rsync File With SSH",_path:"\u002Flinux\u002Frsync-file-with-ssh"},{title:"Setting Up NGINX",_path:"\u002Flinux\u002Fsetting-up-nginx"},{title:k,_path:l}]},{title:"Sql",_path:"\u002Fsql",children:[{title:"MySQL And MariaDB Setup",_path:"\u002Fsql\u002Fmysql-and-mariadb-setup"},{title:"Postgress Setup",_path:"\u002Fsql\u002Fpostgress-setup"}]},{title:"Typescript",_path:"\u002Ftypescript",children:[{title:"Add Global Variable To Window",_path:"\u002Ftypescript\u002Fadd-global-variable-to-window"},{title:"Flatten Object With Periods",_path:"\u002Ftypescript\u002Fflatten-object-with-periods"},{title:"Type Guards",_path:"\u002Ftypescript\u002Ftype-guards"}]}],"content-query-501XFnutIe":{_path:l,_dir:"linux",_draft:f,_partial:f,_locale:"en",_empty:f,title:k,description:c,excerpt:{type:m,children:[{type:a,tag:n,props:{id:g},children:[{type:b,value:h}]},{type:a,tag:o,props:{},children:[{type:b,value:p},{type:a,tag:d,props:{},children:[{type:b,value:q}]},{type:b,value:r},{type:a,tag:d,props:{},children:[{type:b,value:s}]},{type:b,value:t}]},{type:a,tag:e,props:{code:i},children:[{type:a,tag:u,props:{},children:[{type:a,tag:e,props:{__ignoreMap:c},children:[{type:b,value:i}]}]}]}]},body:{type:m,children:[{type:a,tag:n,props:{id:g},children:[{type:b,value:h}]},{type:a,tag:o,props:{},children:[{type:b,value:p},{type:a,tag:d,props:{},children:[{type:b,value:q}]},{type:b,value:r},{type:a,tag:d,props:{},children:[{type:b,value:s}]},{type:b,value:t}]},{type:a,tag:e,props:{code:i},children:[{type:a,tag:u,props:{},children:[{type:a,tag:e,props:{__ignoreMap:c},children:[{type:a,tag:v,props:{class:"line"},children:[{type:a,tag:v,props:{},children:[{type:b,value:"Host router\n HostName 192.168.0.1\n IdentityFile ~\u002F.ssh\u002Fid_rsa\n User root\n Port 22522"}]}]}]}]}]}],toc:{title:c,searchDepth:j,depth:j,links:[{id:g,depth:j,text:h}]}},_type:"markdown",_id:"content:Linux:SSH.md",_source:"content",_file:"Linux\u002FSSH.md",_extension:"md"}},prerenderedAt:1667480033628}}("element","text","","code-inline","code",false,"config-aliases-for-ssh-hosts","Config aliases for #SSH hosts","Host router\n HostName 192.168.0.1\n IdentityFile ~\u002F.ssh\u002Fid_rsa\n User root\n Port 22522\n",2,"SSH","\u002Flinux\u002Fssh","root","h2","p","#SSH config can be used to made aliases for different hosts. Should be put at ","~\u002F.ssh\u002Fconfig",". To simply call ","ssh router"," without parameters, use this:","pre","span")) \ No newline at end of file diff --git a/linux/ssh/index.html b/linux/ssh/index.html index 15455bc..5735be9 100644 --- a/linux/ssh/index.html +++ b/linux/ssh/index.html @@ -1,10 +1,10 @@ -SSH • Obsidian Garden + Port 22522
btw, have a nice day
(2018 - 2022) muerwre
\ No newline at end of file diff --git a/nuxt/ArrowRight.c0024fca.js b/nuxt/ArrowRight.d464538e.js similarity index 81% rename from nuxt/ArrowRight.c0024fca.js rename to nuxt/ArrowRight.d464538e.js index 8602a11..1a9a5e1 100644 --- a/nuxt/ArrowRight.c0024fca.js +++ b/nuxt/ArrowRight.d464538e.js @@ -1 +1 @@ -import{k as e,o as t,e as o,f as s}from"./entry.38f1b559.js";const n={},_={xmlns:"http://www.w3.org/2000/svg",height:"48",width:"48",viewBox:"0 0 48 48"},c=s("path",{d:"m24 40-2.1-2.15L34.25 25.5H8v-3h26.25L21.9 10.15 24 8l16 16Z"},null,-1),r=[c];function a(h,d){return t(),o("svg",_,r)}const l=e(n,[["render",a]]);export{l as default}; +import{k as e,o as t,e as o,f as s}from"./entry.418f6f87.js";const n={},_={xmlns:"http://www.w3.org/2000/svg",height:"48",width:"48",viewBox:"0 0 48 48"},c=s("path",{d:"m24 40-2.1-2.15L34.25 25.5H8v-3h26.25L21.9 10.15 24 8l16 16Z"},null,-1),r=[c];function a(h,d){return t(),o("svg",_,r)}const l=e(n,[["render",a]]);export{l as default}; diff --git a/nuxt/BioCareer.5609c742.js b/nuxt/BioCareer.5609c742.js new file mode 100644 index 0000000..fd93b04 --- /dev/null +++ b/nuxt/BioCareer.5609c742.js @@ -0,0 +1 @@ +import{k as e,o,e as t,f as n}from"./entry.418f6f87.js";const c={},_=n("h2",null,"Career",-1),s=[_];function r(a,l){return o(),t("div",null,s)}const f=e(c,[["render",r]]);export{f as default}; diff --git a/nuxt/BioHeading.2631b812.js b/nuxt/BioHeading.2631b812.js new file mode 100644 index 0000000..40e1eee --- /dev/null +++ b/nuxt/BioHeading.2631b812.js @@ -0,0 +1 @@ +import{k as t,o as a,e as r,f as e,h as o,V as n,W as c}from"./entry.418f6f87.js";const l=""+new URL("howdy.824e8e62.svg",import.meta.url).href,d={},i=e("div",null,[e("img",{src:l})],-1),_=c("

Howdy!

My name is Fedor Katurov, I'm a fullstack developer from Siberia.

I develop frontend applications with React, Vue and numerous other frameworks for the most of my time, but I'm also capable of doing Typescript and Golang backend.

",3),m=[_];function p(s,b){return a(),r("div",{class:o(s.$style.grid)},[i,e("div",{class:o(s.$style.text)},m,2)],2)}const f={$style:n},h=t(d,[["render",p],["__cssModules",f]]);export{h as default}; diff --git a/nuxt/BioHeading.c969c966.js b/nuxt/BioHeading.c969c966.js deleted file mode 100644 index bf9bd54..0000000 --- a/nuxt/BioHeading.c969c966.js +++ /dev/null @@ -1 +0,0 @@ -import{k as t,o as a,e as n,f as e,h as o,V as r,W as c}from"./entry.38f1b559.js";const l=""+new URL("howdy.824e8e62.svg",import.meta.url).href,i={},d=e("div",null,[e("img",{src:l})],-1),_=c("

Howdy!

My name is Fedor Katurov, I'm a fullstack developer from Siberia.

I develop frontend applications with React, Vue and numerous other frameworks for the most of my time, but I'm also capable of doing Typescript and Golang backend.

",3),m=[_];function p(s,b){return a(),n("section",{class:o(s.$style.grid)},[d,e("div",{class:o(s.$style.text)},m,2)],2)}const f={$style:r},h=t(i,[["render",p],["__cssModules",f]]);export{h as default}; diff --git a/nuxt/BioProjectCard.d54d8b6e.js b/nuxt/BioProjectCard.d54d8b6e.js new file mode 100644 index 0000000..66d8082 --- /dev/null +++ b/nuxt/BioProjectCard.d54d8b6e.js @@ -0,0 +1 @@ +import{a as _,o as f,c as h,w as s,f as e,h as n,t as a,i as l,T as i,b as p,k as y,a1 as $}from"./entry.418f6f87.js";import g from"./IconsCode.6140a935.js";import v from"./UiActionButton.14e166c9.js";import C from"./ArrowRight.d464538e.js";import k from"./UiCard.2d5cc08c.js";const w=["src","alt"],b=_({__name:"BioProjectCard",props:{name:null,description:null,url:null,source:null,image:null},setup(o){return(t,B)=>{const c=p,u=g,r=v,m=C,d=k;return f(),h(d,null,{default:s(()=>[e("div",{class:n(t.$style.card)},[e("div",{class:n(t.$style.thumbnail)},[e("img",{src:o.image,class:n(t.$style.image),alt:o.name},null,10,w)],2),e("div",{class:n(t.$style.content)},[e("div",{class:n(t.$style.head)},[e("h3",{class:n(t.$style.title)},a(o.name),3),e("div",{class:n(t.$style.url)},[l(c,{to:o.url},{default:s(()=>[i(a(o.url),1)]),_:1},8,["to"])],2)],2),e("div",{class:n(t.$style.description)},a(o.description),3)],2),e("div",{class:n(t.$style.buttons)},[l(r,{href:o.source,variant:"outline",_target:"blank"},{prefix:s(()=>[l(u,{width:"22",height:"22",fill:"currentColor"})]),default:s(()=>[i(" View Code ")]),_:1},8,["href"]),l(r,{href:o.url,variant:"primary",_target:"blank"},{suffix:s(()=>[l(m,{width:"22",height:"22",fill:"currentColor"})]),default:s(()=>[i(" Visit Page ")]),_:1},8,["href"])],2)],2)]),_:1})}}}),x={$style:$},P=y(b,[["__cssModules",x]]);export{P as default}; diff --git a/nuxt/BioProjects.2f45c15c.js b/nuxt/BioProjects.2f45c15c.js deleted file mode 100644 index df47e05..0000000 --- a/nuxt/BioProjects.2f45c15c.js +++ /dev/null @@ -1 +0,0 @@ -import{s as o}from"./ContentNavigation.0324933a.js";import{k as t,o as i,e as r,h as a,f as s}from"./entry.38f1b559.js";import"./navigation.ce71bb44.js";import"./ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js";import"./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js";import"./LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js";import"./ContentList.0bd16ed1.js";import"./ContentSlot.493c190c.js";import"./DocumentDrivenEmpty.b2333dde.js";import"./DocumentDrivenNotFound.3c77d0e3.js";import"./Markdown.3aab9649.js";const c={},m=s("h2",null,"My Projects",-1),n=s("p",null," Lorem ipsum dolor sit amet consectetur adipisicing elit. Quaerat natus perspiciatis ad voluptatum nisi saepe, molestiae autem dolores est modi quod inventore similique omnis asperiores. Qui beatae magnam ab consequatur. ",-1),p=[m,n];function l(e,d){return i(),r("section",{class:a(e.$style.projects)},p,2)}const u={$style:o},v=t(c,[["render",l],["__cssModules",u]]);export{v as default}; diff --git a/nuxt/BioProjects.d72fc041.js b/nuxt/BioProjects.d72fc041.js new file mode 100644 index 0000000..71ea639 --- /dev/null +++ b/nuxt/BioProjects.d72fc041.js @@ -0,0 +1 @@ +import c from"./BioProjectCard.d54d8b6e.js";import{a as i,o as s,e as t,f as r,R as l,S as m,c as _,u,h as n,Z as p,k as d,$ as f}from"./entry.418f6f87.js";import"./IconsCode.6140a935.js";import"./UiActionButton.14e166c9.js";import"./ArrowRight.d464538e.js";import"./UiCard.2d5cc08c.js";const g=r("h2",null,"Pet Projects",-1),B=i({__name:"BioProjects",setup(y){return(o,h)=>{const a=c;return s(),t("div",{class:n(o.$style.projects)},[g,r("div",{class:n(o.$style.grid)},[(s(!0),t(l,null,m(u(p),e=>(s(),_(a,{key:e.name,name:e.name,description:e.description,url:e.pageUrl,source:e.codeUrl,image:e.image},null,8,["name","description","url","source","image"]))),128))],2)],2)}}}),k={$style:f},U=d(B,[["__cssModules",k]]);export{U as default}; diff --git a/nuxt/BioSkills.696c43e3.js b/nuxt/BioSkills.696c43e3.js new file mode 100644 index 0000000..1d94fce --- /dev/null +++ b/nuxt/BioSkills.696c43e3.js @@ -0,0 +1 @@ +import r from"./BioSkillsCard.ae8b4645.js";import{a,o as t,e as n,f as s,R as c,S as _,c as p,w as m,u,h as d,X as f,k as h,Y as B}from"./entry.418f6f87.js";import"./UiStars.1877968e.js";import"./IconStar.339079de.js";import"./UiCard.2d5cc08c.js";const k=s("h2",null,"Skills",-1),v=["src"],x=a({__name:"BioSkills",setup(C){return(l,S)=>{const i=r;return t(),n("div",null,[k,s("div",{class:d(l.$style.list)},[(t(!0),n(c,null,_(u(f),e=>{var o;return t(),p(i,{title:e.title,level:e.level,description:(o=e.description)!=null?o:"",key:e.title},{default:m(()=>[s("img",{src:e.icon,width:"48",height:"48"},null,8,v)]),_:2},1032,["title","level","description"])}),128))],2)])}}}),y={$style:B},E=h(x,[["__cssModules",y]]);export{E as default}; diff --git a/nuxt/BioSkills.e52e3858.js b/nuxt/BioSkills.e52e3858.js deleted file mode 100644 index fc6ed23..0000000 --- a/nuxt/BioSkills.e52e3858.js +++ /dev/null @@ -1 +0,0 @@ -import l from"./SkillsCard.31659d77.js";import{a as c,o,e as n,f as t,R as a,S as p,c as d,w as g,u as m,h as u,k as h,X as v}from"./entry.38f1b559.js";import"./UiStars.6c60e157.js";import"./IconStar.3878a425.js";const f=""+new URL("react-logo.8351f38f.svg",import.meta.url).href,L=""+new URL("react-native-logo.bdbaa7c9.svg",import.meta.url).href,_=""+new URL("react-ssr-logo.3593105e.svg",import.meta.url).href,R=""+new URL("ts-logo.5847c362.svg",import.meta.url).href,w=""+new URL("golang-logo.f772e478.svg",import.meta.url).href,S=""+new URL("html-logo.1f694231.svg",import.meta.url).href,x=""+new URL("arch-logo.838efbc7.svg",import.meta.url).href,k=""+new URL("gql-logo.1e66e5b3.svg",import.meta.url).href,b=""+new URL("swagger-logo.b314537c.svg",import.meta.url).href,U=""+new URL("vue-logo.17ff892a.svg",import.meta.url).href,C=""+new URL("postgres-logo.d981f813.svg",import.meta.url).href,y=""+new URL("docker-logo.7f942bd1.svg",import.meta.url).href,B=[{title:"React",description:"Classes and FC-s, hooks, context, redux, redux-saga, mobx",level:5,icon:f},{title:"Typescript",description:"For both frontend and backend development: generics, guards, infers",level:4,icon:R},{title:"SSR (Next, Gatsby)",description:"Automated generation, incremental, static, and dynamic rendering",level:4,icon:_},{title:"Vue.js & Nuxt",description:"Common SPA-s and SSR blogs like this one, with composition API, and Vuex",level:3,icon:U},{title:"React Native",description:"Basic developing and releasing experience without native modules",level:3,icon:L},{title:"Golang",description:"Monolith and microservice apps with REST, GraphQL, and GRPC",level:2,icon:w},{title:"Docker",description:"Docker, docker-compose, private registries, gitlab-ci, and drone-ci",level:4,icon:y},{title:"HTML, CSS, SVG",description:"Adaptive markup, all modern techniques, preprocessors, and CSS-in-JS",level:5,icon:S},{title:"Linux Shell",description:"Linux user since 2003, can write scripts to automate my work. BTW, I use Arch!",level:4,icon:x},{title:"GraphQL",description:"Both server- and client-side. Queries, mutations, cache manipulation",level:4,icon:k},{title:"REST API",description:"With Axios, fetch, express, gorilla-mux, and gin-gonic",level:4,icon:b},{title:"SQL",description:"Base queries, JOIN-s, indexes and simpl query optimizations",level:2,icon:C}],A=t("h2",null,"Skills",-1),G=["src"],T=c({__name:"BioSkills",setup(M){return(s,P)=>{const r=l;return o(),n("div",null,[A,t("div",{class:u(s.$style.list)},[(o(!0),n(a,null,p(m(B),e=>{var i;return o(),d(r,{title:e.title,level:e.level,description:(i=e.description)!=null?i:"",key:e.title},{default:g(()=>[t("img",{src:e.icon,width:"48",height:"48"},null,8,G)]),_:2},1032,["title","level","description"])}),128))],2)])}}}),N={$style:v},D=h(T,[["__cssModules",N]]);export{D as default}; diff --git a/nuxt/BioSkillsCard.ae8b4645.js b/nuxt/BioSkillsCard.ae8b4645.js new file mode 100644 index 0000000..e412fa4 --- /dev/null +++ b/nuxt/BioSkillsCard.ae8b4645.js @@ -0,0 +1 @@ +import i from"./UiStars.1877968e.js";import c from"./UiCard.2d5cc08c.js";import{a as r,o as d,c as u,w as _,f as t,h as e,r as m,t as l,i as p,k as f,a0 as y}from"./entry.418f6f87.js";import"./IconStar.339079de.js";const $=r({__name:"BioSkillsCard",props:{title:null,description:null,level:null},setup(o){return(s,C)=>{const n=i,a=c;return d(),u(a,null,{default:_(()=>[t("div",{class:e(s.$style.grid)},[t("div",{class:e(s.$style.icon)},[m(s.$slots,"default")],2),t("div",{class:e(s.$style.text)},[t("h3",{class:e(s.$style.title)},l(o.title),3),p(n,{count:o.level},null,8,["count"])],2)],2),t("div",{class:e(s.$style.description)},l(o.description),3)]),_:3})}}}),v={$style:y},g=f($,[["__cssModules",v]]);export{g as default}; diff --git a/nuxt/ContentList.0bd16ed1.js b/nuxt/ContentList.cf0afcb7.js similarity index 92% rename from nuxt/ContentList.0bd16ed1.js rename to nuxt/ContentList.cf0afcb7.js index 95d23c9..a974286 100644 --- a/nuxt/ContentList.0bd16ed1.js +++ b/nuxt/ContentList.cf0afcb7.js @@ -1 +1 @@ -import{a as i,l as m,m as f,p as c}from"./entry.38f1b559.js";const l=i({name:"ContentList",props:{path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0}},render(o){const e=m(),{path:p,query:a}=o,r={...a||{},path:p||(a==null?void 0:a.path)||"/"},u=(t,n)=>f("pre",null,JSON.stringify({message:"You should use slots with ",slot:t,data:n},null,2));return f(c,r,{default:e!=null&&e.default?({data:t,refresh:n,isPartial:d})=>e==null?void 0:e.default({list:t,refresh:n,isPartial:d,...this.$attrs}):({data:t})=>u("default",t),empty:t=>e!=null&&e.empty?e.empty(t):({data:n})=>u("default",n),"not-found":t=>{var n;return e!=null&&e["not-found"]?(n=e==null?void 0:e["not-found"])==null?void 0:n.call(e,t):({data:d})=>u("not-found",d)}})}});export{l as default}; +import{a as i,l as m,m as f,p as c}from"./entry.418f6f87.js";const l=i({name:"ContentList",props:{path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0}},render(o){const e=m(),{path:p,query:a}=o,r={...a||{},path:p||(a==null?void 0:a.path)||"/"},u=(t,n)=>f("pre",null,JSON.stringify({message:"You should use slots with ",slot:t,data:n},null,2));return f(c,r,{default:e!=null&&e.default?({data:t,refresh:n,isPartial:d})=>e==null?void 0:e.default({list:t,refresh:n,isPartial:d,...this.$attrs}):({data:t})=>u("default",t),empty:t=>e!=null&&e.empty?e.empty(t):({data:n})=>u("default",n),"not-found":t=>{var n;return e!=null&&e["not-found"]?(n=e==null?void 0:e["not-found"])==null?void 0:n.call(e,t):({data:d})=>u("not-found",d)}})}});export{l as default}; diff --git a/nuxt/ContentNavigation.0324933a.js b/nuxt/ContentNavigation.0324933a.js deleted file mode 100644 index ba518b7..0000000 --- a/nuxt/ContentNavigation.0324933a.js +++ /dev/null @@ -1 +0,0 @@ -import{a as l,q as E,s as g,v as O,e as T,x as L,m as f,y as P,z as I,d as e,_ as r,A as y,B as D,C as R,D as V,E as b,l as B,b as x}from"./entry.38f1b559.js";import{f as N}from"./navigation.ce71bb44.js";import"./ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js";import"./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js";import"./LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js";import"./ContentList.0bd16ed1.js";import"./ContentSlot.493c190c.js";import"./DocumentDrivenEmpty.b2333dde.js";import"./DocumentDrivenNotFound.3c77d0e3.js";import"./Markdown.3aab9649.js";const j="_projects_1y2ci_1",pt={projects:j};const C=l({emits:{error(t){return!0}},setup(t,{slots:i,emit:o}){const n=E(null),_=g();return O(a=>{if(!_.isHydrating)return o("error",a),n.value=a,!1}),()=>{var a,u;return n.value?(a=i.error)==null?void 0:a.call(i,{error:n}):(u=i.default)==null?void 0:u.call(i)}}}),q=Object.freeze(Object.defineProperty({__proto__:null,default:C},Symbol.toStringTag,{value:"Module"})),z=l({name:"ServerPlaceholder",render(){return T("div")}}),M=Object.freeze(Object.defineProperty({__proto__:null,default:z},Symbol.toStringTag,{value:"Module"})),k=l({name:"NuxtLoadingIndicator",props:{throttle:{type:Number,default:200},duration:{type:Number,default:2e3},height:{type:Number,default:3},color:{type:String,default:"repeating-linear-gradient(to right,#00dc82 0%,#34cdfe 50%,#0047e1 100%)"}},setup(t,{slots:i}){const o=H({duration:t.duration,throttle:t.throttle}),n=g();return n.hook("page:start",o.start),n.hook("page:finish",o.finish),L(()=>o.clear),()=>f("div",{class:"nuxt-loading-indicator",style:{position:"fixed",top:0,right:0,left:0,pointerEvents:"none",width:`${o.progress.value}%`,height:`${t.height}px`,opacity:o.isLoading.value?1:0,background:t.color,backgroundSize:`${100/o.progress.value*100}% auto`,transition:"width 0.1s, height 0.4s, opacity 0.4s",zIndex:999999}},i)}});function H(t){const i=E(0),o=E(!1),n=P(()=>1e4/t.duration);let _=null,a=null;function u(){p(),i.value=0,o.value=!0,t.throttle?a=setTimeout(v,t.throttle):v()}function h(){i.value=100,c()}function p(){clearInterval(_),clearTimeout(a),_=null,a=null}function S(A){i.value=Math.min(100,i.value+A)}function c(){p(),setTimeout(()=>{o.value=!1,setTimeout(()=>{i.value=0},400)},500)}function v(){_=setInterval(()=>{S(n.value)},100)}return{progress:i,isLoading:o,start:u,finish:h,clear:p}}const $=Object.freeze(Object.defineProperty({__proto__:null,default:k},Symbol.toStringTag,{value:"Module"})),w=t=>Object.fromEntries(Object.entries(t).filter(([,i])=>i!==void 0)),d=(t,i)=>(o,n)=>(I(()=>t({...w(o),...n.attrs},n)),()=>{var _,a;return i?(a=(_=n.slots).default)==null?void 0:a.call(_):null}),s={accesskey:String,autocapitalize:String,autofocus:{type:Boolean,default:void 0},class:String,contenteditable:{type:Boolean,default:void 0},contextmenu:String,dir:String,draggable:{type:Boolean,default:void 0},enterkeyhint:String,exportparts:String,hidden:{type:Boolean,default:void 0},id:String,inputmode:String,is:String,itemid:String,itemprop:String,itemref:String,itemscope:String,itemtype:String,lang:String,nonce:String,part:String,slot:String,spellcheck:{type:Boolean,default:void 0},style:String,tabindex:String,title:String,translate:String},U=l({name:"Script",inheritAttrs:!1,props:{...s,async:Boolean,crossorigin:{type:[Boolean,String],default:void 0},defer:Boolean,fetchpriority:String,integrity:String,nomodule:Boolean,nonce:String,referrerpolicy:String,src:String,type:String,charset:String,language:String,body:Boolean,renderPriority:[String,Number]},setup:d((t,{slots:i})=>{var _;const o={...t},n=(((_=i.default)==null?void 0:_.call(i))||[]).filter(({children:a})=>a).map(({children:a})=>a).join("");return n&&(o.children=n),{script:[o]}})}),F=l({name:"NoScript",inheritAttrs:!1,props:{...s,title:String,body:Boolean,renderPriority:[String,Number]},setup:d((t,{slots:i})=>{var _;const o={...t},n=(((_=i.default)==null?void 0:_.call(i))||[]).filter(({children:a})=>a).map(({children:a})=>a).join("");return n&&(o.children=n),{noscript:[o]}})}),G=l({name:"Link",inheritAttrs:!1,props:{...s,as:String,crossorigin:String,disabled:Boolean,fetchpriority:String,href:String,hreflang:String,imagesizes:String,imagesrcset:String,integrity:String,media:String,prefetch:{type:Boolean,default:void 0},referrerpolicy:String,rel:String,sizes:String,title:String,type:String,methods:String,target:String,body:Boolean,renderPriority:[String,Number]},setup:d(t=>({link:[t]}))}),J=l({name:"Base",inheritAttrs:!1,props:{...s,href:String,target:String},setup:d(t=>({base:t}))}),K=l({name:"Title",inheritAttrs:!1,setup:d((t,{slots:i})=>{var n,_,a;return{title:((a=(_=(n=i.default)==null?void 0:n.call(i))==null?void 0:_[0])==null?void 0:a.children)||null}})}),Q=l({name:"Meta",inheritAttrs:!1,props:{...s,charset:String,content:String,httpEquiv:String,name:String,body:Boolean,renderPriority:[String,Number]},setup:d(t=>{const i={...t};return i.httpEquiv&&(i["http-equiv"]=i.httpEquiv,delete i.httpEquiv),{meta:[i]}})}),W=l({name:"Style",inheritAttrs:!1,props:{...s,type:String,media:String,nonce:String,title:String,scoped:{type:Boolean,default:void 0},body:Boolean,renderPriority:[String,Number]},setup:d((t,{slots:i})=>{var _,a,u;const o={...t},n=(u=(a=(_=i.default)==null?void 0:_.call(i))==null?void 0:a[0])==null?void 0:u.children;return n&&(o.children=n),{style:[o]}})}),X=l({name:"Head",inheritAttrs:!1,setup:(t,i)=>()=>{var o,n;return(n=(o=i.slots).default)==null?void 0:n.call(o)}}),Y=l({name:"Html",inheritAttrs:!1,props:{...s,manifest:String,version:String,xmlns:String,renderPriority:[String,Number]},setup:d(t=>({htmlAttrs:t}),!0)}),Z=l({name:"Body",inheritAttrs:!1,props:{...s,renderPriority:[String,Number]},setup:d(t=>({bodyAttrs:t}),!0)}),m=Object.freeze(Object.defineProperty({__proto__:null,Script:U,NoScript:F,Link:G,Base:J,Title:K,Meta:Q,Style:W,Head:X,Html:Y,Body:Z},Symbol.toStringTag,{value:"Module"}));e(()=>r(()=>import("./ProseA.7e12c275.js"),["ProseA.7e12c275.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseCode.344aba07.js"),["ProseCode.344aba07.js","UiIconCopy.feb163da.js","entry.38f1b559.js","entry.ec051a30.css","ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js","ProseCode.vue_used_vue_type_style_index_1_lang.24930a5d.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./BioHeading.c969c966.js"),["BioHeading.c969c966.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./BioProjects.2f45c15c.js"),["BioProjects.2f45c15c.js","entry.38f1b559.js","entry.ec051a30.css","navigation.ce71bb44.js","ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js","ProseCode.vue_used_vue_type_style_index_1_lang.24930a5d.css","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.5944fda9.css","ContentList.0bd16ed1.js","ContentSlot.493c190c.js","DocumentDrivenEmpty.b2333dde.js","DocumentDrivenNotFound.3c77d0e3.js","Markdown.3aab9649.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./BioSkills.e52e3858.js"),["BioSkills.e52e3858.js","SkillsCard.31659d77.js","UiStars.6c60e157.js","IconStar.3878a425.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./HomeContentList.46ff1ce1.js"),["HomeContentList.46ff1ce1.js","entry.38f1b559.js","entry.ec051a30.css","navigation.ce71bb44.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./HomeHeader.2d7392ee.js"),["HomeHeader.2d7392ee.js","entry.38f1b559.js","entry.ec051a30.css","ArrowRight.c0024fca.js","UiActionButton.00b8dbe7.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./HomeReference.c4305aa0.js"),["HomeReference.c4305aa0.js","entry.38f1b559.js","entry.ec051a30.css","navigation.ce71bb44.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ArrowRight.c0024fca.js"),["ArrowRight.c0024fca.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./IconStar.3878a425.js"),["IconStar.3878a425.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js").then(t=>t.M),["LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js").then(t=>t.S),["LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutFooter.a16d87cb.js"),["LayoutFooter.a16d87cb.js","entry.38f1b559.js","entry.ec051a30.css","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutMainMenu.f0c8d2bf.js"),["LayoutMainMenu.f0c8d2bf.js","entry.38f1b559.js","entry.ec051a30.css","navigation.ce71bb44.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.5944fda9.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.38f1b559.js").then(t=>t.as),["entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutMainMenuToggle.b8360182.js"),["LayoutMainMenuToggle.b8360182.js","entry.38f1b559.js","entry.ec051a30.css","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.5944fda9.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutThemeToggle.15266736.js"),["LayoutThemeToggle.15266736.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./SkillsCard.31659d77.js"),["SkillsCard.31659d77.js","UiStars.6c60e157.js","IconStar.3878a425.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./UiActionButton.00b8dbe7.js"),["UiActionButton.00b8dbe7.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./UiIconCopy.feb163da.js"),["UiIconCopy.feb163da.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./UiStars.6c60e157.js"),["UiStars.6c60e157.js","IconStar.3878a425.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.38f1b559.js").then(t=>t.ar),["entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ContentList.0bd16ed1.js"),["ContentList.0bd16ed1.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>Promise.resolve().then(()=>et),void 0,import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.38f1b559.js").then(t=>t.aq),["entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.38f1b559.js").then(t=>t.ap),["entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.38f1b559.js").then(t=>t.ao),["entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ContentSlot.493c190c.js"),["ContentSlot.493c190c.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./DocumentDrivenEmpty.b2333dde.js"),["DocumentDrivenEmpty.b2333dde.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./DocumentDrivenNotFound.3c77d0e3.js"),["DocumentDrivenNotFound.3c77d0e3.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./Markdown.3aab9649.js"),["Markdown.3aab9649.js","ContentSlot.493c190c.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseBlockquote.23ea93eb.js"),["ProseBlockquote.23ea93eb.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseCodeInline.3710a525.js"),["ProseCodeInline.3710a525.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseEm.8384abd2.js"),["ProseEm.8384abd2.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH1.30a3226a.js"),["ProseH1.30a3226a.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH2.713a1428.js"),["ProseH2.713a1428.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH3.d55803cb.js"),["ProseH3.d55803cb.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH4.99c4bbf1.js"),["ProseH4.99c4bbf1.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH5.3055fe9b.js"),["ProseH5.3055fe9b.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH6.dd45b49c.js"),["ProseH6.dd45b49c.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseHr.a12a2694.js"),["ProseHr.a12a2694.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseImg.10476274.js"),["ProseImg.10476274.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseLi.4aa2c1e5.js"),["ProseLi.4aa2c1e5.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseOl.f051d6b1.js"),["ProseOl.f051d6b1.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseP.c8adea50.js"),["ProseP.c8adea50.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseStrong.fc69a1d3.js"),["ProseStrong.fc69a1d3.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseTable.1153aba7.js"),["ProseTable.1153aba7.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseTbody.3b14efe4.js"),["ProseTbody.3b14efe4.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseTd.92dfa71d.js"),["ProseTd.92dfa71d.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseTh.d8019ce9.js"),["ProseTh.d8019ce9.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseThead.cbcdaf65.js"),["ProseThead.cbcdaf65.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseTr.20da6eb7.js"),["ProseTr.20da6eb7.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseUl.835c32e2.js"),["ProseUl.835c32e2.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./welcome.2e977bc0.js"),["welcome.2e977bc0.js","entry.38f1b559.js","entry.ec051a30.css","navigation.ce71bb44.js","ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js","ProseCode.vue_used_vue_type_style_index_1_lang.24930a5d.css","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.5944fda9.css","ContentList.0bd16ed1.js","ContentSlot.493c190c.js","DocumentDrivenEmpty.b2333dde.js","DocumentDrivenNotFound.3c77d0e3.js","Markdown.3aab9649.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.38f1b559.js").then(t=>t.at),["entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>Promise.resolve().then(()=>q),void 0,import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js").then(t=>t.c),["LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>Promise.resolve().then(()=>M),void 0,import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.38f1b559.js").then(t=>t.an),["entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>Promise.resolve().then(()=>$),void 0,import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./component.vue3.785c8108.js"),["component.vue3.785c8108.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.38f1b559.js").then(t=>t.au),["entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Script));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.NoScript));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Link));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Base));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Title));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Meta));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Style));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Head));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Html));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Body));const tt=l({name:"ContentNavigation",props:{query:{type:Object,required:!1,default:void 0}},async setup(t){const{query:i}=y(t),o=P(()=>{var _;return typeof((_=i.value)==null?void 0:_.params)=="function"?i.value.params():i.value});if(!o.value&&D("dd-navigation").value){const{navigation:_}=R();return{navigation:_}}const{data:n}=await V(`content-navigation-${b(o.value)}`,()=>N(o.value));return{navigation:n}},render(t){const i=B(),{navigation:o}=t,n=u=>f(x,{to:u._path},()=>u.title),_=(u,h)=>f("ul",h?{"data-level":h}:null,u.map(p=>p.children?f("li",null,[n(p),_(p.children,h+1)]):f("li",null,n(p)))),a=u=>_(u,0);return i!=null&&i.default?i.default({navigation:o,...this.$attrs}):a(o)}}),et=Object.freeze(Object.defineProperty({__proto__:null,default:tt},Symbol.toStringTag,{value:"Module"}));export{et as C,pt as s}; diff --git a/nuxt/ContentNavigation.82aba83b.css b/nuxt/ContentNavigation.82aba83b.css deleted file mode 100644 index e002791..0000000 --- a/nuxt/ContentNavigation.82aba83b.css +++ /dev/null @@ -1 +0,0 @@ -._projects_1y2ci_1{text-align:center}.spotlight[data-v-25102a06]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-40vh;filter:blur(20vh);height:50vh}.spotlight-wrapper[data-v-25102a06]{opacity:.5;transition:opacity .4s ease-in}.nuxt-logo:hover~.spotlight-wrapper[data-v-25102a06]{opacity:.95}.gradient-border[data-v-25102a06]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative;width:100%}@media (prefers-color-scheme:light){.gradient-border[data-v-25102a06]{background-color:#ffffff4d}.gradient-border[data-v-25102a06]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82 50%,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-25102a06]{background-color:#1414144d}.gradient-border[data-v-25102a06]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82 50%,#36e4da 75%,#0047e1)}}.gradient-border[data-v-25102a06]:before{background-position:0 0;background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-25102a06]:hover:before{background-position:-50% 0;opacity:1}.bg-white[data-v-25102a06]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-100[data-v-25102a06]{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.rounded[data-v-25102a06]{border-radius:.25rem}.cursor-pointer[data-v-25102a06]{cursor:pointer}.flex[data-v-25102a06]{display:flex}.grid[data-v-25102a06]{display:grid}.flex-col[data-v-25102a06]{flex-direction:column}.place-content-center[data-v-25102a06]{place-content:center}.items-end[data-v-25102a06]{align-items:flex-end}.items-center[data-v-25102a06]{align-items:center}.justify-end[data-v-25102a06]{justify-content:flex-end}.justify-center[data-v-25102a06]{justify-content:center}.justify-between[data-v-25102a06]{justify-content:space-between}.font-sans[data-v-25102a06]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono[data-v-25102a06]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-medium[data-v-25102a06]{font-weight:500}.font-bold[data-v-25102a06]{font-weight:700}.font-semibold[data-v-25102a06]{font-weight:600}.text-xl[data-v-25102a06]{font-size:1.25rem;line-height:1.75rem}.text-sm[data-v-25102a06]{font-size:.875rem;line-height:1.25rem}.text-2xl[data-v-25102a06]{font-size:1.5rem;line-height:2rem}.mb-2[data-v-25102a06]{margin-bottom:.5rem}.mb-4[data-v-25102a06]{margin-bottom:1rem}.mt-4[data-v-25102a06]{margin-top:1rem}.mt-2[data-v-25102a06]{margin-top:.5rem}.max-w-5xl[data-v-25102a06]{max-width:64rem}.min-h-screen[data-v-25102a06]{min-height:100vh}.p-4[data-v-25102a06]{padding:1rem}.p-8[data-v-25102a06]{padding:2rem}.p-1[data-v-25102a06]{padding:.25rem}.pb-1[data-v-25102a06]{padding-bottom:.25rem}.fixed[data-v-25102a06]{position:fixed}.left-0[data-v-25102a06]{left:0}.right-0[data-v-25102a06]{right:0}.text-black[data-v-25102a06]{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.antialiased[data-v-25102a06]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-full[data-v-25102a06]{width:100%}.w-40[data-v-25102a06]{width:10rem}.z-10[data-v-25102a06]{z-index:10}.z-20[data-v-25102a06]{z-index:20}.gap-4[data-v-25102a06]{grid-gap:1rem;gap:1rem}.grid-cols-3[data-v-25102a06]{grid-template-columns:repeat(3,minmax(0,1fr))}.col-span-3[data-v-25102a06]{-ms-grid-column-span:span 3/span 3;grid-column:span 3/span 3}@media (min-width:640px){.sm\:text-base[data-v-25102a06]{font-size:1rem;line-height:1.5rem}.sm\:pb-2[data-v-25102a06]{padding-bottom:.5rem}.sm\:col-span-1[data-v-25102a06]{-ms-grid-column-span:span 1/span 1;grid-column:span 1/span 1}}@media (min-width:768px){.md\:gap-8[data-v-25102a06]{grid-gap:2rem;gap:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-25102a06]{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.dark\:bg-white\/10[data-v-25102a06]{--tw-bg-opacity:.1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.dark\:text-white[data-v-25102a06]{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}} diff --git a/nuxt/ContentNavigation.eba111bf.css b/nuxt/ContentNavigation.eba111bf.css new file mode 100644 index 0000000..a825eb0 --- /dev/null +++ b/nuxt/ContentNavigation.eba111bf.css @@ -0,0 +1 @@ +.spotlight[data-v-25102a06]{background:linear-gradient(45deg,#00dc82,#36e4da 50%,#0047e1);bottom:-40vh;filter:blur(20vh);height:50vh}.spotlight-wrapper[data-v-25102a06]{opacity:.5;transition:opacity .4s ease-in}.nuxt-logo:hover~.spotlight-wrapper[data-v-25102a06]{opacity:.95}.gradient-border[data-v-25102a06]{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:.5rem;position:relative;width:100%}@media (prefers-color-scheme:light){.gradient-border[data-v-25102a06]{background-color:#ffffff4d}.gradient-border[data-v-25102a06]:before{background:linear-gradient(90deg,#e2e2e2,#e2e2e2 25%,#00dc82 50%,#36e4da 75%,#0047e1)}}@media (prefers-color-scheme:dark){.gradient-border[data-v-25102a06]{background-color:#1414144d}.gradient-border[data-v-25102a06]:before{background:linear-gradient(90deg,#303030,#303030 25%,#00dc82 50%,#36e4da 75%,#0047e1)}}.gradient-border[data-v-25102a06]:before{background-position:0 0;background-size:400% auto;border-radius:.5rem;bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:.5;padding:2px;position:absolute;right:0;top:0;transition:background-position .3s ease-in-out,opacity .2s ease-in-out;width:100%}.gradient-border[data-v-25102a06]:hover:before{background-position:-50% 0;opacity:1}.bg-white[data-v-25102a06]{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-100[data-v-25102a06]{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.rounded[data-v-25102a06]{border-radius:.25rem}.cursor-pointer[data-v-25102a06]{cursor:pointer}.flex[data-v-25102a06]{display:flex}.grid[data-v-25102a06]{display:grid}.flex-col[data-v-25102a06]{flex-direction:column}.place-content-center[data-v-25102a06]{place-content:center}.items-end[data-v-25102a06]{align-items:flex-end}.items-center[data-v-25102a06]{align-items:center}.justify-end[data-v-25102a06]{justify-content:flex-end}.justify-center[data-v-25102a06]{justify-content:center}.justify-between[data-v-25102a06]{justify-content:space-between}.font-sans[data-v-25102a06]{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono[data-v-25102a06]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-medium[data-v-25102a06]{font-weight:500}.font-bold[data-v-25102a06]{font-weight:700}.font-semibold[data-v-25102a06]{font-weight:600}.text-xl[data-v-25102a06]{font-size:1.25rem;line-height:1.75rem}.text-sm[data-v-25102a06]{font-size:.875rem;line-height:1.25rem}.text-2xl[data-v-25102a06]{font-size:1.5rem;line-height:2rem}.mb-2[data-v-25102a06]{margin-bottom:.5rem}.mb-4[data-v-25102a06]{margin-bottom:1rem}.mt-4[data-v-25102a06]{margin-top:1rem}.mt-2[data-v-25102a06]{margin-top:.5rem}.max-w-5xl[data-v-25102a06]{max-width:64rem}.min-h-screen[data-v-25102a06]{min-height:100vh}.p-4[data-v-25102a06]{padding:1rem}.p-8[data-v-25102a06]{padding:2rem}.p-1[data-v-25102a06]{padding:.25rem}.pb-1[data-v-25102a06]{padding-bottom:.25rem}.fixed[data-v-25102a06]{position:fixed}.left-0[data-v-25102a06]{left:0}.right-0[data-v-25102a06]{right:0}.text-black[data-v-25102a06]{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.antialiased[data-v-25102a06]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-full[data-v-25102a06]{width:100%}.w-40[data-v-25102a06]{width:10rem}.z-10[data-v-25102a06]{z-index:10}.z-20[data-v-25102a06]{z-index:20}.gap-4[data-v-25102a06]{grid-gap:1rem;gap:1rem}.grid-cols-3[data-v-25102a06]{grid-template-columns:repeat(3,minmax(0,1fr))}.col-span-3[data-v-25102a06]{-ms-grid-column-span:span 3/span 3;grid-column:span 3/span 3}@media (min-width:640px){.sm\:text-base[data-v-25102a06]{font-size:1rem;line-height:1.5rem}.sm\:pb-2[data-v-25102a06]{padding-bottom:.5rem}.sm\:col-span-1[data-v-25102a06]{-ms-grid-column-span:span 1/span 1;grid-column:span 1/span 1}}@media (min-width:768px){.md\:gap-8[data-v-25102a06]{grid-gap:2rem;gap:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-black[data-v-25102a06]{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.dark\:bg-white\/10[data-v-25102a06]{--tw-bg-opacity:.1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.dark\:text-white[data-v-25102a06]{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}} diff --git a/nuxt/ContentNavigation.f1db37c2.js b/nuxt/ContentNavigation.f1db37c2.js new file mode 100644 index 0000000..74abd1f --- /dev/null +++ b/nuxt/ContentNavigation.f1db37c2.js @@ -0,0 +1 @@ +import{a as l,q as E,s as g,v as T,e as L,x as I,m as h,y as P,z as c,d as e,_ as r,A as D,B as R,C as V,D as y,E as b,l as B,b as x}from"./entry.418f6f87.js";import{f as N}from"./navigation.123e305f.js";import"./ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js";import"./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js";import"./LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js";import"./ContentList.cf0afcb7.js";import"./ContentSlot.4744181a.js";import"./DocumentDrivenEmpty.c1fa2173.js";import"./DocumentDrivenNotFound.e036e24d.js";import"./Markdown.3365dbff.js";const j=l({emits:{error(t){return!0}},setup(t,{slots:i,emit:o}){const n=E(null),_=g();return T(a=>{if(!_.isHydrating)return o("error",a),n.value=a,!1}),()=>{var a,u;return n.value?(a=i.error)==null?void 0:a.call(i,{error:n}):(u=i.default)==null?void 0:u.call(i)}}}),z=Object.freeze(Object.defineProperty({__proto__:null,default:j},Symbol.toStringTag,{value:"Module"})),C=l({name:"ServerPlaceholder",render(){return L("div")}}),M=Object.freeze(Object.defineProperty({__proto__:null,default:C},Symbol.toStringTag,{value:"Module"})),k=l({name:"NuxtLoadingIndicator",props:{throttle:{type:Number,default:200},duration:{type:Number,default:2e3},height:{type:Number,default:3},color:{type:String,default:"repeating-linear-gradient(to right,#00dc82 0%,#34cdfe 50%,#0047e1 100%)"}},setup(t,{slots:i}){const o=q({duration:t.duration,throttle:t.throttle}),n=g();return n.hook("page:start",o.start),n.hook("page:finish",o.finish),I(()=>o.clear),()=>h("div",{class:"nuxt-loading-indicator",style:{position:"fixed",top:0,right:0,left:0,pointerEvents:"none",width:`${o.progress.value}%`,height:`${t.height}px`,opacity:o.isLoading.value?1:0,background:t.color,backgroundSize:`${100/o.progress.value*100}% auto`,transition:"width 0.1s, height 0.4s, opacity 0.4s",zIndex:999999}},i)}});function q(t){const i=E(0),o=E(!1),n=P(()=>1e4/t.duration);let _=null,a=null;function u(){p(),i.value=0,o.value=!0,t.throttle?a=setTimeout(v,t.throttle):v()}function f(){i.value=100,A()}function p(){clearInterval(_),clearTimeout(a),_=null,a=null}function S(O){i.value=Math.min(100,i.value+O)}function A(){p(),setTimeout(()=>{o.value=!1,setTimeout(()=>{i.value=0},400)},500)}function v(){_=setInterval(()=>{S(n.value)},100)}return{progress:i,isLoading:o,start:u,finish:f,clear:p}}const H=Object.freeze(Object.defineProperty({__proto__:null,default:k},Symbol.toStringTag,{value:"Module"})),$=t=>Object.fromEntries(Object.entries(t).filter(([,i])=>i!==void 0)),d=(t,i)=>(o,n)=>(c(()=>t({...$(o),...n.attrs},n)),()=>{var _,a;return i?(a=(_=n.slots).default)==null?void 0:a.call(_):null}),s={accesskey:String,autocapitalize:String,autofocus:{type:Boolean,default:void 0},class:String,contenteditable:{type:Boolean,default:void 0},contextmenu:String,dir:String,draggable:{type:Boolean,default:void 0},enterkeyhint:String,exportparts:String,hidden:{type:Boolean,default:void 0},id:String,inputmode:String,is:String,itemid:String,itemprop:String,itemref:String,itemscope:String,itemtype:String,lang:String,nonce:String,part:String,slot:String,spellcheck:{type:Boolean,default:void 0},style:String,tabindex:String,title:String,translate:String},w=l({name:"Script",inheritAttrs:!1,props:{...s,async:Boolean,crossorigin:{type:[Boolean,String],default:void 0},defer:Boolean,fetchpriority:String,integrity:String,nomodule:Boolean,nonce:String,referrerpolicy:String,src:String,type:String,charset:String,language:String,body:Boolean,renderPriority:[String,Number]},setup:d((t,{slots:i})=>{var _;const o={...t},n=(((_=i.default)==null?void 0:_.call(i))||[]).filter(({children:a})=>a).map(({children:a})=>a).join("");return n&&(o.children=n),{script:[o]}})}),U=l({name:"NoScript",inheritAttrs:!1,props:{...s,title:String,body:Boolean,renderPriority:[String,Number]},setup:d((t,{slots:i})=>{var _;const o={...t},n=(((_=i.default)==null?void 0:_.call(i))||[]).filter(({children:a})=>a).map(({children:a})=>a).join("");return n&&(o.children=n),{noscript:[o]}})}),F=l({name:"Link",inheritAttrs:!1,props:{...s,as:String,crossorigin:String,disabled:Boolean,fetchpriority:String,href:String,hreflang:String,imagesizes:String,imagesrcset:String,integrity:String,media:String,prefetch:{type:Boolean,default:void 0},referrerpolicy:String,rel:String,sizes:String,title:String,type:String,methods:String,target:String,body:Boolean,renderPriority:[String,Number]},setup:d(t=>({link:[t]}))}),G=l({name:"Base",inheritAttrs:!1,props:{...s,href:String,target:String},setup:d(t=>({base:t}))}),J=l({name:"Title",inheritAttrs:!1,setup:d((t,{slots:i})=>{var n,_,a;return{title:((a=(_=(n=i.default)==null?void 0:n.call(i))==null?void 0:_[0])==null?void 0:a.children)||null}})}),K=l({name:"Meta",inheritAttrs:!1,props:{...s,charset:String,content:String,httpEquiv:String,name:String,body:Boolean,renderPriority:[String,Number]},setup:d(t=>{const i={...t};return i.httpEquiv&&(i["http-equiv"]=i.httpEquiv,delete i.httpEquiv),{meta:[i]}})}),Q=l({name:"Style",inheritAttrs:!1,props:{...s,type:String,media:String,nonce:String,title:String,scoped:{type:Boolean,default:void 0},body:Boolean,renderPriority:[String,Number]},setup:d((t,{slots:i})=>{var _,a,u;const o={...t},n=(u=(a=(_=i.default)==null?void 0:_.call(i))==null?void 0:a[0])==null?void 0:u.children;return n&&(o.children=n),{style:[o]}})}),W=l({name:"Head",inheritAttrs:!1,setup:(t,i)=>()=>{var o,n;return(n=(o=i.slots).default)==null?void 0:n.call(o)}}),X=l({name:"Html",inheritAttrs:!1,props:{...s,manifest:String,version:String,xmlns:String,renderPriority:[String,Number]},setup:d(t=>({htmlAttrs:t}),!0)}),Y=l({name:"Body",inheritAttrs:!1,props:{...s,renderPriority:[String,Number]},setup:d(t=>({bodyAttrs:t}),!0)}),m=Object.freeze(Object.defineProperty({__proto__:null,Script:w,NoScript:U,Link:F,Base:G,Title:J,Meta:K,Style:Q,Head:W,Html:X,Body:Y},Symbol.toStringTag,{value:"Module"}));e(()=>r(()=>import("./ProseA.51266783.js"),["ProseA.51266783.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseCode.3a4bf644.js"),["ProseCode.3a4bf644.js","UiIconCopy.76853494.js","entry.418f6f87.js","entry.deeb6f50.css","ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js","ProseCode.vue_used_vue_type_style_index_1_lang.24930a5d.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./BioCareer.5609c742.js"),["BioCareer.5609c742.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./BioHeading.2631b812.js"),["BioHeading.2631b812.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./BioProjectCard.d54d8b6e.js"),["BioProjectCard.d54d8b6e.js","entry.418f6f87.js","entry.deeb6f50.css","IconsCode.6140a935.js","UiActionButton.14e166c9.js","ArrowRight.d464538e.js","UiCard.2d5cc08c.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./BioProjects.d72fc041.js"),["BioProjects.d72fc041.js","BioProjectCard.d54d8b6e.js","entry.418f6f87.js","entry.deeb6f50.css","IconsCode.6140a935.js","UiActionButton.14e166c9.js","ArrowRight.d464538e.js","UiCard.2d5cc08c.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./BioSkills.696c43e3.js"),["BioSkills.696c43e3.js","BioSkillsCard.ae8b4645.js","UiStars.1877968e.js","IconStar.339079de.js","entry.418f6f87.js","entry.deeb6f50.css","UiCard.2d5cc08c.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./BioSkillsCard.ae8b4645.js"),["BioSkillsCard.ae8b4645.js","UiStars.1877968e.js","IconStar.339079de.js","entry.418f6f87.js","entry.deeb6f50.css","UiCard.2d5cc08c.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./HomeContentList.e0ad0179.js"),["HomeContentList.e0ad0179.js","entry.418f6f87.js","entry.deeb6f50.css","navigation.123e305f.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./HomeHeader.60c8d60d.js"),["HomeHeader.60c8d60d.js","entry.418f6f87.js","entry.deeb6f50.css","ArrowRight.d464538e.js","UiActionButton.14e166c9.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./HomeReference.2316c826.js"),["HomeReference.2316c826.js","entry.418f6f87.js","entry.deeb6f50.css","navigation.123e305f.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ArrowRight.d464538e.js"),["ArrowRight.d464538e.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./IconStar.339079de.js"),["IconStar.339079de.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./IconsCode.6140a935.js"),["IconsCode.6140a935.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js").then(t=>t.M),["LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js").then(t=>t.S),["LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutFooter.142f4d00.js"),["LayoutFooter.142f4d00.js","entry.418f6f87.js","entry.deeb6f50.css","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutMainMenu.ff316230.js"),["LayoutMainMenu.ff316230.js","entry.418f6f87.js","entry.deeb6f50.css","navigation.123e305f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.5944fda9.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.418f6f87.js").then(t=>t.ax),["entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutMainMenuToggle.2e207927.js"),["LayoutMainMenuToggle.2e207927.js","entry.418f6f87.js","entry.deeb6f50.css","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.5944fda9.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutThemeToggle.44c0caaa.js"),["LayoutThemeToggle.44c0caaa.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./UiActionButton.14e166c9.js"),["UiActionButton.14e166c9.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./UiCard.2d5cc08c.js"),["UiCard.2d5cc08c.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./UiIconCopy.76853494.js"),["UiIconCopy.76853494.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./UiStars.1877968e.js"),["UiStars.1877968e.js","IconStar.339079de.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.418f6f87.js").then(t=>t.aw),["entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ContentList.cf0afcb7.js"),["ContentList.cf0afcb7.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>Promise.resolve().then(()=>tt),void 0,import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.418f6f87.js").then(t=>t.av),["entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.418f6f87.js").then(t=>t.au),["entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.418f6f87.js").then(t=>t.at),["entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ContentSlot.4744181a.js"),["ContentSlot.4744181a.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./DocumentDrivenEmpty.c1fa2173.js"),["DocumentDrivenEmpty.c1fa2173.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./DocumentDrivenNotFound.e036e24d.js"),["DocumentDrivenNotFound.e036e24d.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./Markdown.3365dbff.js"),["Markdown.3365dbff.js","ContentSlot.4744181a.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseBlockquote.c3f8360b.js"),["ProseBlockquote.c3f8360b.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseCodeInline.48628627.js"),["ProseCodeInline.48628627.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseEm.35b844dc.js"),["ProseEm.35b844dc.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH1.ebf7ce2a.js"),["ProseH1.ebf7ce2a.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH2.7ef5d565.js"),["ProseH2.7ef5d565.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH3.c6034a12.js"),["ProseH3.c6034a12.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH4.74105bc8.js"),["ProseH4.74105bc8.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH5.169298fa.js"),["ProseH5.169298fa.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseH6.62bf17fb.js"),["ProseH6.62bf17fb.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseHr.9c93dfae.js"),["ProseHr.9c93dfae.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseImg.07f10b54.js"),["ProseImg.07f10b54.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseLi.f35f697c.js"),["ProseLi.f35f697c.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseOl.68fa8258.js"),["ProseOl.68fa8258.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseP.9a7d03df.js"),["ProseP.9a7d03df.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseStrong.c2c2a1c5.js"),["ProseStrong.c2c2a1c5.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseTable.39e3be33.js"),["ProseTable.39e3be33.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseTbody.a87c57af.js"),["ProseTbody.a87c57af.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseTd.54ae6f37.js"),["ProseTd.54ae6f37.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseTh.2185040d.js"),["ProseTh.2185040d.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseThead.e0d17643.js"),["ProseThead.e0d17643.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseTr.1b0548ab.js"),["ProseTr.1b0548ab.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./ProseUl.45cfd40a.js"),["ProseUl.45cfd40a.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./welcome.652ad9d8.js"),["welcome.652ad9d8.js","entry.418f6f87.js","entry.deeb6f50.css","navigation.123e305f.js","ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js","ProseCode.vue_used_vue_type_style_index_1_lang.24930a5d.css","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.5944fda9.css","ContentList.cf0afcb7.js","ContentSlot.4744181a.js","DocumentDrivenEmpty.c1fa2173.js","DocumentDrivenNotFound.e036e24d.js","Markdown.3365dbff.js"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.418f6f87.js").then(t=>t.ay),["entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>Promise.resolve().then(()=>z),void 0,import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js").then(t=>t.c),["LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>Promise.resolve().then(()=>M),void 0,import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.418f6f87.js").then(t=>t.as),["entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>Promise.resolve().then(()=>H),void 0,import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./component.vue3.75c601e5.js"),["component.vue3.75c601e5.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>import("./entry.418f6f87.js").then(t=>t.az),["entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(t=>t.default||t));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Script));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.NoScript));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Link));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Base));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Title));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Meta));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Style));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Head));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Html));e(()=>r(()=>Promise.resolve().then(()=>m),void 0,import.meta.url).then(t=>t.Body));const Z=l({name:"ContentNavigation",props:{query:{type:Object,required:!1,default:void 0}},async setup(t){const{query:i}=D(t),o=P(()=>{var _;return typeof((_=i.value)==null?void 0:_.params)=="function"?i.value.params():i.value});if(!o.value&&R("dd-navigation").value){const{navigation:_}=V();return{navigation:_}}const{data:n}=await y(`content-navigation-${b(o.value)}`,()=>N(o.value));return{navigation:n}},render(t){const i=B(),{navigation:o}=t,n=u=>h(x,{to:u._path},()=>u.title),_=(u,f)=>h("ul",f?{"data-level":f}:null,u.map(p=>p.children?h("li",null,[n(p),_(p.children,f+1)]):h("li",null,n(p)))),a=u=>_(u,0);return i!=null&&i.default?i.default({navigation:o,...this.$attrs}):a(o)}}),tt=Object.freeze(Object.defineProperty({__proto__:null,default:Z},Symbol.toStringTag,{value:"Module"}));export{Z as default}; diff --git a/nuxt/ContentSlot.493c190c.js b/nuxt/ContentSlot.4744181a.js similarity index 86% rename from nuxt/ContentSlot.493c190c.js rename to nuxt/ContentSlot.4744181a.js index ddc11c0..baa53a9 100644 --- a/nuxt/ContentSlot.493c190c.js +++ b/nuxt/ContentSlot.4744181a.js @@ -1 +1 @@ -import{a as g,l as h,y,m as p,K as c,L as w}from"./entry.38f1b559.js";const C=g({name:"ContentSlot",functional:!0,props:{use:{type:Function,default:void 0},unwrap:{type:[Boolean,String],default:!1}},setup(e){const{parent:u}=w(),{between:o,default:l}=h(),i=y(()=>typeof e.unwrap=="string"?e.unwrap.split(" "):["*"]);return{fallbackSlot:l,tags:i,between:o,parent:u}},render({use:e,unwrap:u,fallbackSlot:o,between:l,tags:i,parent:n}){var f;try{let r=e;if(typeof e=="string"&&(r=(n==null?void 0:n.slots[e])||((f=n==null?void 0:n.parent)==null?void 0:f.slots[e]),console.warn(`Please set :use="$slots.${e}" in component to enable reactivity`)),!r)return o?o():p("div");if(!u)return[r()];const{flatUnwrap:d}=c(),a=d(r(),i);return l?a.flatMap((t,s)=>s===0?[t]:[l(),t]):a.reduce((t,s)=>(typeof s.children=="string"?typeof t[t.length-1]=="string"?t[t.length-1]+=s.children:t.push(s.children):t.push(s),t),[])}catch{return p("div")}}});export{C as default}; +import{a as g,l as h,y,m as p,K as c,L as w}from"./entry.418f6f87.js";const C=g({name:"ContentSlot",functional:!0,props:{use:{type:Function,default:void 0},unwrap:{type:[Boolean,String],default:!1}},setup(e){const{parent:u}=w(),{between:o,default:l}=h(),i=y(()=>typeof e.unwrap=="string"?e.unwrap.split(" "):["*"]);return{fallbackSlot:l,tags:i,between:o,parent:u}},render({use:e,unwrap:u,fallbackSlot:o,between:l,tags:i,parent:n}){var f;try{let r=e;if(typeof e=="string"&&(r=(n==null?void 0:n.slots[e])||((f=n==null?void 0:n.parent)==null?void 0:f.slots[e]),console.warn(`Please set :use="$slots.${e}" in component to enable reactivity`)),!r)return o?o():p("div");if(!u)return[r()];const{flatUnwrap:d}=c(),a=d(r(),i);return l?a.flatMap((t,s)=>s===0?[t]:[l(),t]):a.reduce((t,s)=>(typeof s.children=="string"?typeof t[t.length-1]=="string"?t[t.length-1]+=s.children:t.push(s.children):t.push(s),t),[])}catch{return p("div")}}});export{C as default}; diff --git a/nuxt/DocumentDrivenEmpty.b2333dde.js b/nuxt/DocumentDrivenEmpty.c1fa2173.js similarity index 77% rename from nuxt/DocumentDrivenEmpty.b2333dde.js rename to nuxt/DocumentDrivenEmpty.c1fa2173.js index c2648ec..d121a82 100644 --- a/nuxt/DocumentDrivenEmpty.b2333dde.js +++ b/nuxt/DocumentDrivenEmpty.c1fa2173.js @@ -1 +1 @@ -import{a as n,m as e}from"./entry.38f1b559.js";const r=n({name:"DocumentDrivenEmpty",props:{value:{type:Object,required:!0}},render({value:t}){return e("div",void 0,[e("p","Document is empty"),e("p",`Add content to it by opening ${t._source}/${t._file} file.`)])}});export{r as default}; +import{a as n,m as e}from"./entry.418f6f87.js";const r=n({name:"DocumentDrivenEmpty",props:{value:{type:Object,required:!0}},render({value:t}){return e("div",void 0,[e("p","Document is empty"),e("p",`Add content to it by opening ${t._source}/${t._file} file.`)])}});export{r as default}; diff --git a/nuxt/DocumentDrivenNotFound.3c77d0e3.js b/nuxt/DocumentDrivenNotFound.e036e24d.js similarity index 59% rename from nuxt/DocumentDrivenNotFound.3c77d0e3.js rename to nuxt/DocumentDrivenNotFound.e036e24d.js index 00f5cd1..f08cd8e 100644 --- a/nuxt/DocumentDrivenNotFound.3c77d0e3.js +++ b/nuxt/DocumentDrivenNotFound.e036e24d.js @@ -1 +1 @@ -import{a as n,m as e}from"./entry.38f1b559.js";const t=n({name:"DocumentDrivenNotFound",render(){return e("div","Document not found")}});export{t as default}; +import{a as n,m as e}from"./entry.418f6f87.js";const t=n({name:"DocumentDrivenNotFound",render(){return e("div","Document not found")}});export{t as default}; diff --git a/nuxt/HomeContentList.46ff1ce1.js b/nuxt/HomeContentList.e0ad0179.js similarity index 55% rename from nuxt/HomeContentList.46ff1ce1.js rename to nuxt/HomeContentList.e0ad0179.js index 6384418..389b114 100644 --- a/nuxt/HomeContentList.46ff1ce1.js +++ b/nuxt/HomeContentList.e0ad0179.js @@ -1 +1 @@ -import{k as c,Q as _,D as i,a2 as u,o as m,c as p,w as d,f as h,h as f,i as y,u as w,a3 as v,a4 as x}from"./entry.38f1b559.js";import{f as C}from"./navigation.ce71bb44.js";const g={__name:"HomeContentList",async setup(M){let e,n;const{data:a}=([e,n]=_(()=>i("navigation",()=>C())),e=await e,n(),e),o=a.value.filter(t=>t.children&&Array.isArray(t.children)&&t.children.length>0);return(t,k)=>{const r=x,l=u("masonry-wall");return m(),p(l,{items:w(o),"ssr-columns":1,"column-width":300,gap:10},{default:d(({item:s})=>[h("div",{class:f(t.$style.row)},[y(r,{title:s.title,url:s.url,children:s.children},null,8,["title","url","children"])],2)]),_:1},8,["items"])}}},A={$style:v},$=c(g,[["__cssModules",A]]);export{$ as default}; +import{k as c,Q as _,D as i,a8 as u,o as m,c as p,w as d,f as h,h as f,i as y,u as w,a9 as v,aa as x}from"./entry.418f6f87.js";import{f as C}from"./navigation.123e305f.js";const g={__name:"HomeContentList",async setup(M){let e,a;const{data:n}=([e,a]=_(()=>i("navigation",()=>C())),e=await e,a(),e),o=n.value.filter(t=>t.children&&Array.isArray(t.children)&&t.children.length>0);return(t,k)=>{const r=x,l=u("masonry-wall");return m(),p(l,{items:w(o),"ssr-columns":1,"column-width":300,gap:10},{default:d(({item:s})=>[h("div",{class:f(t.$style.row)},[y(r,{title:s.title,url:s.url,children:s.children},null,8,["title","url","children"])],2)]),_:1},8,["items"])}}},A={$style:v},$=c(g,[["__cssModules",A]]);export{$ as default}; diff --git a/nuxt/HomeHeader.2d7392ee.js b/nuxt/HomeHeader.60c8d60d.js similarity index 89% rename from nuxt/HomeHeader.2d7392ee.js rename to nuxt/HomeHeader.60c8d60d.js index a2b2712..9adefd5 100644 --- a/nuxt/HomeHeader.2d7392ee.js +++ b/nuxt/HomeHeader.60c8d60d.js @@ -1 +1 @@ -import{k as r,o as _,e as m,f as t,h as s,i as o,w as n,T as a,a1 as d,b as u}from"./entry.38f1b559.js";import h from"./ArrowRight.c0024fca.js";import p from"./UiActionButton.00b8dbe7.js";const f=""+new URL("obsidian.8dc2a844.svg",import.meta.url).href,g=""+new URL("desk.fcd75862.svg",import.meta.url).href,b={},y=t("img",{src:f,alt:"",width:"14",height:"14"},null,-1);function k(e,$){const i=u,c=h,l=p;return _(),m("section",null,[t("div",{class:s(e.$style.grid)},[t("div",{class:s(e.$style.text)},[t("h1",{class:s(e.$style.title)},"Welcome to\xA0my Obsidian\xA0Garden",2),t("p",{class:s(e.$style.subtitle)},[y,o(i,{to:"https://obsidian.md",target:"_blank"},{default:n(()=>[a("Obsidian")]),_:1}),a(" is a note-taking app, that I use to store chunks of code and technical documentation. ")],2),t("div",{class:s(e.$style.buttons)},[o(l,{href:"https://github.com/muerwre",target:"_blank",variant:"outline"},{suffix:n(()=>[o(c,{width:"22",height:"22",fill:"currentColor"})]),default:n(()=>[a(" Visit my Github ")]),_:1})],2)],2),t("div",{class:s(e.$style.image)},[t("img",{src:g,class:s(e.$style.desk),alt:"It's me, muerwre"},null,2)],2)],2)])}const w={$style:d},N=r(b,[["render",k],["__cssModules",w]]);export{N as default}; +import{k as r,o as _,e as m,f as t,h as s,i as o,w as n,T as a,a7 as d,b as u}from"./entry.418f6f87.js";import h from"./ArrowRight.d464538e.js";import p from"./UiActionButton.14e166c9.js";const f=""+new URL("obsidian.8dc2a844.svg",import.meta.url).href,g=""+new URL("desk.fcd75862.svg",import.meta.url).href,b={},y=t("img",{src:f,alt:"",width:"14",height:"14"},null,-1);function k(e,$){const i=u,c=h,l=p;return _(),m("section",null,[t("div",{class:s(e.$style.grid)},[t("div",{class:s(e.$style.text)},[t("h1",{class:s(e.$style.title)},"Welcome to\xA0my Obsidian\xA0Garden",2),t("p",{class:s(e.$style.subtitle)},[y,o(i,{to:"https://obsidian.md",target:"_blank"},{default:n(()=>[a("Obsidian")]),_:1}),a(" is a note-taking app, that I use to store chunks of code and technical documentation. ")],2),t("div",{class:s(e.$style.buttons)},[o(l,{href:"https://github.com/muerwre",target:"_blank",variant:"outline"},{suffix:n(()=>[o(c,{width:"22",height:"22",fill:"currentColor"})]),default:n(()=>[a(" Visit my Github ")]),_:1})],2)],2),t("div",{class:s(e.$style.image)},[t("img",{src:g,class:s(e.$style.desk),alt:"It's me, muerwre"},null,2)],2)],2)])}const w={$style:d},N=r(b,[["render",k],["__cssModules",w]]);export{N as default}; diff --git a/nuxt/HomeReference.c4305aa0.js b/nuxt/HomeReference.2316c826.js similarity index 87% rename from nuxt/HomeReference.c4305aa0.js rename to nuxt/HomeReference.2316c826.js index a9f525d..5deebed 100644 --- a/nuxt/HomeReference.c4305aa0.js +++ b/nuxt/HomeReference.2316c826.js @@ -1 +1 @@ -import{a as x,Q as k,o as r,e as c,f as C,t as f,u as i,h as N,R as v,S as w,i as D,w as V,T as B,j as A,D as L,b as M,k as R,U as S}from"./entry.38f1b559.js";import{f as T}from"./navigation.ce71bb44.js";const $=x({__name:"HomeReference",props:{url:null},async setup(p){let a,u;const h=p,_=(n,e)=>{var s;const t=n.find(l=>l._path.endsWith(e[0]));return!t||e.length>1&&!((s=t.children)!=null&&s.length)?null:e.length===1?t:_(t.children,e.slice(1,e.length))},{data:g}=([a,u]=k(()=>L("navigation",()=>T())),a=await a,u(),a),y=h.url.split("/").filter(n=>n),o=_(g.value,y);return(n,e)=>{var s,l,m;const t=M;return r(),c("article",null,[C("h1",null,f((s=i(o))==null?void 0:s.title),1),(m=(l=i(o))==null?void 0:l.children)!=null&&m.length?(r(),c("ul",{key:0,class:N(n.$style.list)},[(r(!0),c(v,null,w(i(o).children,d=>(r(),c("li",{key:i(o)._id},[D(t,{to:d._path},{default:V(()=>[B(f(d.title),1)]),_:2},1032,["to"])]))),128))],2)):A("",!0)])}}}),b={$style:S},E=R($,[["__cssModules",b]]);export{E as default}; +import{a as x,Q as k,o as r,e as c,f as C,t as f,u as i,h as N,R as v,S as w,i as D,w as V,T as B,j as A,D as L,b as M,k as R,U as S}from"./entry.418f6f87.js";import{f as T}from"./navigation.123e305f.js";const $=x({__name:"HomeReference",props:{url:null},async setup(p){let a,u;const h=p,_=(n,e)=>{var s;const t=n.find(l=>l._path.endsWith(e[0]));return!t||e.length>1&&!((s=t.children)!=null&&s.length)?null:e.length===1?t:_(t.children,e.slice(1,e.length))},{data:g}=([a,u]=k(()=>L("navigation",()=>T())),a=await a,u(),a),y=h.url.split("/").filter(n=>n),o=_(g.value,y);return(n,e)=>{var s,l,m;const t=M;return r(),c("article",null,[C("h1",null,f((s=i(o))==null?void 0:s.title),1),(m=(l=i(o))==null?void 0:l.children)!=null&&m.length?(r(),c("ul",{key:0,class:N(n.$style.list)},[(r(!0),c(v,null,w(i(o).children,d=>(r(),c("li",{key:i(o)._id},[D(t,{to:d._path},{default:V(()=>[B(f(d.title),1)]),_:2},1032,["to"])]))),128))],2)):A("",!0)])}}}),b={$style:S},E=R($,[["__cssModules",b]]);export{E as default}; diff --git a/nuxt/IconStar.3878a425.js b/nuxt/IconStar.339079de.js similarity index 82% rename from nuxt/IconStar.3878a425.js rename to nuxt/IconStar.339079de.js index c7266a1..3683bd6 100644 --- a/nuxt/IconStar.3878a425.js +++ b/nuxt/IconStar.339079de.js @@ -1 +1 @@ -import{k as e,o as t,e as o,f as s}from"./entry.38f1b559.js";const n={},_={xmlns:"http://www.w3.org/2000/svg",height:"48",width:"48",viewBox:"0 0 48 48"},c=s("path",{d:"m11.65 44 3.25-14.05L4 20.5l14.4-1.25L24 6l5.6 13.25L44 20.5l-10.9 9.45L36.35 44 24 36.55Z"},null,-1),r=[c];function a(l,d){return t(),o("svg",_,r)}const i=e(n,[["render",a]]);export{i as default}; +import{k as e,o as t,e as o,f as s}from"./entry.418f6f87.js";const n={},_={xmlns:"http://www.w3.org/2000/svg",height:"48",width:"48",viewBox:"0 0 48 48"},c=s("path",{d:"m11.65 44 3.25-14.05L4 20.5l14.4-1.25L24 6l5.6 13.25L44 20.5l-10.9 9.45L36.35 44 24 36.55Z"},null,-1),r=[c];function a(l,d){return t(),o("svg",_,r)}const i=e(n,[["render",a]]);export{i as default}; diff --git a/nuxt/IconsCode.6140a935.js b/nuxt/IconsCode.6140a935.js new file mode 100644 index 0000000..1b151ef --- /dev/null +++ b/nuxt/IconsCode.6140a935.js @@ -0,0 +1 @@ +import{k as t,o as e,e as o,f as s}from"./entry.418f6f87.js";const n={},_={xmlns:"http://www.w3.org/2000/svg",height:"48",width:"48",viewBox:"0 0 48 48"},c=s("path",{xmlns:"http://www.w3.org/2000/svg",d:"m16 35.9-12-12 12.1-12.1 2.15 2.15L8.3 23.9l9.85 9.85Zm15.9.1-2.15-2.15 9.95-9.95-9.85-9.85L32 11.9l12 12Z"},null,-1),r=[c];function a(h,l){return e(),o("svg",_,r)}const d=t(n,[["render",a]]);export{d as default}; diff --git a/nuxt/LayoutFooter.a16d87cb.js b/nuxt/LayoutFooter.142f4d00.js similarity index 69% rename from nuxt/LayoutFooter.a16d87cb.js rename to nuxt/LayoutFooter.142f4d00.js index 2bc411b..639b8f6 100644 --- a/nuxt/LayoutFooter.a16d87cb.js +++ b/nuxt/LayoutFooter.142f4d00.js @@ -1 +1 @@ -import{k as n,o as l,e as r,f as t,h as s,T as a,t as c,i as _,w as i,b as u}from"./entry.38f1b559.js";import{a as d}from"./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js";const m={},f=t("div",null,"btw, have a nice day",-1);function p(e,w){const o=u;return l(),r("footer",{class:s([e.$style.footer,e.$attrs.class])},[f,t("div",{class:s(e.$style.filler)},null,2),t("div",null,[a(" (2018 - "+c(new Date().getFullYear())+") ",1),_(o,{to:"https://github.com/muerwre/",target:"_blank"},{default:i(()=>[a("muerwre")]),_:1})])],2)}const h={$style:d},x=n(m,[["render",p],["__cssModules",h]]);export{x as default}; +import{k as n,o as l,e as r,f as t,h as s,T as a,t as c,i as _,w as i,b as u}from"./entry.418f6f87.js";import{a as d}from"./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js";const m={},f=t("div",null,"btw, have a nice day",-1);function p(e,w){const o=u;return l(),r("footer",{class:s([e.$style.footer,e.$attrs.class])},[f,t("div",{class:s(e.$style.filler)},null,2),t("div",null,[a(" (2018 - "+c(new Date().getFullYear())+") ",1),_(o,{to:"https://github.com/muerwre/",target:"_blank"},{default:i(()=>[a("muerwre")]),_:1})])],2)}const h={$style:d},x=n(m,[["render",p],["__cssModules",h]]);export{x as default}; diff --git a/nuxt/LayoutMainMenu.f0c8d2bf.js b/nuxt/LayoutMainMenu.ff316230.js similarity index 87% rename from nuxt/LayoutMainMenu.f0c8d2bf.js rename to nuxt/LayoutMainMenu.ff316230.js index 68565b1..36f3844 100644 --- a/nuxt/LayoutMainMenu.f0c8d2bf.js +++ b/nuxt/LayoutMainMenu.ff316230.js @@ -1 +1 @@ -import{k as m,Q as p,D as h,o,e as l,f as a,i,w as y,h as t,R as f,S as v,u as w,b as $,a4 as g}from"./entry.38f1b559.js";import{f as M}from"./navigation.ce71bb44.js";import{a as k}from"./LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js";const C={__name:"LayoutMainMenu",async setup(x){let s,r;const{data:c}=([s,r]=p(()=>h("navigation",()=>M())),s=await s,r(),s),_=c.value.filter(e=>e.children&&Array.isArray(e.children)&&e.children.length>0);return(e,A)=>{const u=$,d=g;return o(),l("nav",null,[a("div",{class:t(e.$style.logo)},[i(u,{to:"/"},{default:y(()=>[a("div",{class:t(e.$style.title)},"Obsidian Garden",2),a("div",{class:t(e.$style.subtitle)},"by muerwre",2)]),_:1})],2),a("div",{class:t(e.$style.section_title)},"Cheatsheet",2),(o(!0),l(f,null,v(w(_),n=>(o(),l("div",{key:"item._path",class:t(e.$style.row)},[i(d,{title:n.title,url:n._path,children:n.children},null,8,["title","url","children"])],2))),128))])}}},b={$style:k},D=m(C,[["__cssModules",b]]);export{D as default}; +import{k as m,Q as p,D as h,o,e as l,f as a,i,w as y,h as t,R as f,S as v,u as w,b as $,aa as g}from"./entry.418f6f87.js";import{f as M}from"./navigation.123e305f.js";import{a as k}from"./LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js";const C={__name:"LayoutMainMenu",async setup(x){let s,r;const{data:c}=([s,r]=p(()=>h("navigation",()=>M())),s=await s,r(),s),_=c.value.filter(e=>e.children&&Array.isArray(e.children)&&e.children.length>0);return(e,A)=>{const u=$,d=g;return o(),l("nav",null,[a("div",{class:t(e.$style.logo)},[i(u,{to:"/"},{default:y(()=>[a("div",{class:t(e.$style.title)},"Obsidian Garden",2),a("div",{class:t(e.$style.subtitle)},"by muerwre",2)]),_:1})],2),a("div",{class:t(e.$style.section_title)},"Cheatsheet",2),(o(!0),l(f,null,v(w(_),n=>(o(),l("div",{key:"item._path",class:t(e.$style.row)},[i(d,{title:n.title,url:n._path,children:n.children},null,8,["title","url","children"])],2))),128))])}}},b={$style:k},D=m(C,[["__cssModules",b]]);export{D as default}; diff --git a/nuxt/LayoutMainMenuToggle.b8360182.js b/nuxt/LayoutMainMenuToggle.2e207927.js similarity index 82% rename from nuxt/LayoutMainMenuToggle.b8360182.js rename to nuxt/LayoutMainMenuToggle.2e207927.js index 75c2034..8bf0094 100644 --- a/nuxt/LayoutMainMenuToggle.b8360182.js +++ b/nuxt/LayoutMainMenuToggle.2e207927.js @@ -1 +1 @@ -import{a as l,o as s,e as o,h as a,f as e,k as c}from"./entry.38f1b559.js";import{s as i}from"./LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js";const r=e("rect",{x:"0",y:"3",width:"24",height:"2"},null,-1),h=e("rect",{x:"0",y:"11",width:"24",height:"2"},null,-1),_=e("rect",{x:"0",y:"19",width:"24",height:"2"},null,-1),u=[r,h,_],f=l({__name:"LayoutMainMenuToggle",props:{active:{type:Boolean}},setup(n){return(t,m)=>(s(),o("button",{class:a([t.$attrs.class,t.$style.button])},[(s(),o("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24",viewBox:"0 0 24 24",width:"24",fill:"#ffffff",class:a([t.$style.hamburger,{[t.$style.active]:n.active}])},u,2))],2))}}),d={$style:i},y=c(f,[["__cssModules",d]]);export{y as default}; +import{a as l,o as s,e as o,h as a,f as e,k as c}from"./entry.418f6f87.js";import{s as i}from"./LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js";const r=e("rect",{x:"0",y:"3",width:"24",height:"2"},null,-1),h=e("rect",{x:"0",y:"11",width:"24",height:"2"},null,-1),_=e("rect",{x:"0",y:"19",width:"24",height:"2"},null,-1),u=[r,h,_],f=l({__name:"LayoutMainMenuToggle",props:{active:{type:Boolean}},setup(n){return(t,m)=>(s(),o("button",{class:a([t.$attrs.class,t.$style.button])},[(s(),o("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24",viewBox:"0 0 24 24",width:"24",fill:"#ffffff",class:a([t.$style.hamburger,{[t.$style.active]:n.active}])},u,2))],2))}}),d={$style:i},y=c(f,[["__cssModules",d]]);export{y as default}; diff --git a/nuxt/LayoutThemeToggle.15266736.js b/nuxt/LayoutThemeToggle.15266736.js deleted file mode 100644 index acd6d83..0000000 --- a/nuxt/LayoutThemeToggle.15266736.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,s as o}from"./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js";import{k as t}from"./entry.38f1b559.js";const _={$style:o},a=t(s,[["__cssModules",_]]);export{a as default}; diff --git a/nuxt/LayoutThemeToggle.44c0caaa.js b/nuxt/LayoutThemeToggle.44c0caaa.js new file mode 100644 index 0000000..c420d67 --- /dev/null +++ b/nuxt/LayoutThemeToggle.44c0caaa.js @@ -0,0 +1 @@ +import{_ as s,s as o}from"./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js";import{k as t}from"./entry.418f6f87.js";const _={$style:o},a=t(s,[["__cssModules",_]]);export{a as default}; diff --git a/nuxt/LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js b/nuxt/LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js similarity index 98% rename from nuxt/LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js rename to nuxt/LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js index 30affad..7b19076 100644 --- a/nuxt/LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js +++ b/nuxt/LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js @@ -1,4 +1,4 @@ -import{k as v,o as i,e as d,f as u,a as h,q as p,J as q,m as _,i as M,w as T,c as g,j as m,h as $}from"./entry.38f1b559.js";const w={},Q={xmlns:"http://www.w3.org/2000/svg",height:"48",width:"48",viewBox:"0 0 48 48"},Z=u("path",{d:"M17.85 7.55q-.7 0-1.45.075t-1.3.125q3.05 3.45 4.675 7.6Q21.4 19.5 21.4 24t-1.625 8.65Q18.15 36.8 15.15 40.2q.5.1 1.225.175.725.075 1.525.075 6.8 0 11.6-4.775T34.3 24q0-6.9-4.825-11.675T17.85 7.55Zm.25-1.5q3.6 0 6.85 1.375 3.25 1.375 5.65 3.8 2.4 2.425 3.8 5.7 1.4 3.275 1.4 7.025 0 3.75-1.425 7.05t-3.8 5.75Q28.2 39.2 24.95 40.575t-6.9 1.375q-1.65 0-3.125-.275t-2.675-.725q3.65-3.35 5.65-7.725 2-4.375 2-9.225 0-4.75-2-9.175-2-4.425-5.65-7.775 1.15-.45 2.675-.725Q16.45 6.05 18.1 6.05ZM21.4 24Z"},null,-1),C=[Z];function O(l,e){return i(),d("svg",Q,C)}const b=v(w,[["render",O]]),E=Object.freeze(Object.defineProperty({__proto__:null,default:b},Symbol.toStringTag,{value:"Module"})),j={},S={xmlns:"http://www.w3.org/2000/svg",height:"48",width:"48",viewBox:"0 0 48 48"},z=u("path",{d:"M24 30.45q2.65 0 4.55-1.875T30.45 24q0-2.65-1.875-4.55T24 17.55q-2.65 0-4.55 1.875T17.55 24q0 2.65 1.875 4.55T24 30.45ZM24 32q-3.35 0-5.675-2.325Q16 27.35 16 24q0-3.35 2.325-5.675Q20.65 16 24 16q3.35 0 5.675 2.325Q32 20.65 32 24q0 3.35-2.325 5.675Q27.35 32 24 32ZM3.75 24.75q-.3 0-.525-.225Q3 24.3 3 24q0-.35.225-.55.225-.2.525-.2h5.5q.3 0 .525.225Q10 23.7 10 24q0 .35-.225.55-.225.2-.525.2Zm35 0q-.3 0-.525-.225Q38 24.3 38 24q0-.35.225-.55.225-.2.525-.2h5.5q.3 0 .525.225Q45 23.7 45 24q0 .35-.225.55-.225.2-.525.2ZM24 10q-.35 0-.55-.225-.2-.225-.2-.525v-5.5q0-.3.225-.525Q23.7 3 24 3q.35 0 .55.225.2.225.2.525v5.5q0 .3-.225.525Q24.3 10 24 10Zm0 35q-.35 0-.55-.225-.2-.225-.2-.525v-5.5q0-.3.225-.525Q23.7 38 24 38q.35 0 .55.225.2.225.2.525v5.5q0 .3-.225.525Q24.3 45 24 45ZM13.05 14.05l-3.2-3.1q-.25-.2-.225-.525.025-.325.225-.575.25-.25.55-.25.3 0 .55.25L14.1 13q.25.25.25.55 0 .3-.25.55-.2.2-.5.2t-.55-.25Zm24 24.1L33.9 35q-.25-.25-.25-.55 0-.3.3-.55.15-.25.45-.225.3.025.55.275l3.2 3.1q.25.2.225.525-.025.325-.225.575-.25.25-.55.25-.3 0-.55-.25ZM33.9 14.1q-.25-.2-.225-.5.025-.3.275-.55l3.1-3.2q.2-.25.525-.225.325.025.575.225.25.25.25.55 0 .3-.25.55L35 14.1q-.25.25-.55.25-.3 0-.55-.25ZM9.85 38.15q-.25-.25-.25-.55 0-.3.25-.55L13 33.9q.25-.25.55-.25.3 0 .55.25.2.2.2.5t-.25.55l-3.1 3.2q-.25.25-.55.25-.3 0-.55-.25ZM24 24Z"},null,-1),B=[z];function P(l,e){return i(),d("svg",S,B)}const y=v(j,[["render",P]]),J=Object.freeze(Object.defineProperty({__proto__:null,default:y},Symbol.toStringTag,{value:"Module"})),L="_footer_ogxvf_1",x="_filler_ogxvf_9",W={footer:L,filler:x},k=h({name:"ClientOnly",props:["fallback","placeholder","placeholderTag","fallbackTag"],setup(l,{slots:e}){const t=p(!1);return q(()=>{t.value=!0}),r=>{var c;if(t.value)return(c=e.default)==null?void 0:c.call(e);const o=e.fallback||e.placeholder;if(o)return o();const n=r.fallback||r.placeholder||"",s=r.fallbackTag||r.placeholderTag||"span";return d(s,null,n)}}}),f=new WeakMap;function F(l){if(f.has(l))return f.get(l);const e={...l};return e.render?e.render=(t,...r)=>{var o;if(t.mounted$){const n=l.render(t,...r);return n.children===null||typeof n.children=="string"?u(n.type,n.props,n.children,n.patchFlag,n.dynamicProps,n.shapeFlag):_(n)}else return _("div",(o=t.$attrs)!=null?o:t._.attrs)}:e.template&&(e.template=` +import{k as v,o as i,e as d,f as u,a as h,q as p,J as q,m as _,i as M,w as T,c as g,j as m,h as $}from"./entry.418f6f87.js";const w={},Q={xmlns:"http://www.w3.org/2000/svg",height:"48",width:"48",viewBox:"0 0 48 48"},Z=u("path",{d:"M17.85 7.55q-.7 0-1.45.075t-1.3.125q3.05 3.45 4.675 7.6Q21.4 19.5 21.4 24t-1.625 8.65Q18.15 36.8 15.15 40.2q.5.1 1.225.175.725.075 1.525.075 6.8 0 11.6-4.775T34.3 24q0-6.9-4.825-11.675T17.85 7.55Zm.25-1.5q3.6 0 6.85 1.375 3.25 1.375 5.65 3.8 2.4 2.425 3.8 5.7 1.4 3.275 1.4 7.025 0 3.75-1.425 7.05t-3.8 5.75Q28.2 39.2 24.95 40.575t-6.9 1.375q-1.65 0-3.125-.275t-2.675-.725q3.65-3.35 5.65-7.725 2-4.375 2-9.225 0-4.75-2-9.175-2-4.425-5.65-7.775 1.15-.45 2.675-.725Q16.45 6.05 18.1 6.05ZM21.4 24Z"},null,-1),C=[Z];function O(l,e){return i(),d("svg",Q,C)}const b=v(w,[["render",O]]),E=Object.freeze(Object.defineProperty({__proto__:null,default:b},Symbol.toStringTag,{value:"Module"})),j={},S={xmlns:"http://www.w3.org/2000/svg",height:"48",width:"48",viewBox:"0 0 48 48"},z=u("path",{d:"M24 30.45q2.65 0 4.55-1.875T30.45 24q0-2.65-1.875-4.55T24 17.55q-2.65 0-4.55 1.875T17.55 24q0 2.65 1.875 4.55T24 30.45ZM24 32q-3.35 0-5.675-2.325Q16 27.35 16 24q0-3.35 2.325-5.675Q20.65 16 24 16q3.35 0 5.675 2.325Q32 20.65 32 24q0 3.35-2.325 5.675Q27.35 32 24 32ZM3.75 24.75q-.3 0-.525-.225Q3 24.3 3 24q0-.35.225-.55.225-.2.525-.2h5.5q.3 0 .525.225Q10 23.7 10 24q0 .35-.225.55-.225.2-.525.2Zm35 0q-.3 0-.525-.225Q38 24.3 38 24q0-.35.225-.55.225-.2.525-.2h5.5q.3 0 .525.225Q45 23.7 45 24q0 .35-.225.55-.225.2-.525.2ZM24 10q-.35 0-.55-.225-.2-.225-.2-.525v-5.5q0-.3.225-.525Q23.7 3 24 3q.35 0 .55.225.2.225.2.525v5.5q0 .3-.225.525Q24.3 10 24 10Zm0 35q-.35 0-.55-.225-.2-.225-.2-.525v-5.5q0-.3.225-.525Q23.7 38 24 38q.35 0 .55.225.2.225.2.525v5.5q0 .3-.225.525Q24.3 45 24 45ZM13.05 14.05l-3.2-3.1q-.25-.2-.225-.525.025-.325.225-.575.25-.25.55-.25.3 0 .55.25L14.1 13q.25.25.25.55 0 .3-.25.55-.2.2-.5.2t-.55-.25Zm24 24.1L33.9 35q-.25-.25-.25-.55 0-.3.3-.55.15-.25.45-.225.3.025.55.275l3.2 3.1q.25.2.225.525-.025.325-.225.575-.25.25-.55.25-.3 0-.55-.25ZM33.9 14.1q-.25-.2-.225-.5.025-.3.275-.55l3.1-3.2q.2-.25.525-.225.325.025.575.225.25.25.25.55 0 .3-.25.55L35 14.1q-.25.25-.55.25-.3 0-.55-.25ZM9.85 38.15q-.25-.25-.25-.55 0-.3.25-.55L13 33.9q.25-.25.55-.25.3 0 .55.25.2.2.2.5t-.25.55l-3.1 3.2q-.25.25-.55.25-.3 0-.55-.25ZM24 24Z"},null,-1),B=[z];function P(l,e){return i(),d("svg",S,B)}const y=v(j,[["render",P]]),J=Object.freeze(Object.defineProperty({__proto__:null,default:y},Symbol.toStringTag,{value:"Module"})),L="_footer_ogxvf_1",x="_filler_ogxvf_9",W={footer:L,filler:x},k=h({name:"ClientOnly",props:["fallback","placeholder","placeholderTag","fallbackTag"],setup(l,{slots:e}){const t=p(!1);return q(()=>{t.value=!0}),r=>{var c;if(t.value)return(c=e.default)==null?void 0:c.call(e);const o=e.fallback||e.placeholder;if(o)return o();const n=r.fallback||r.placeholder||"",s=r.fallbackTag||r.placeholderTag||"span";return d(s,null,n)}}}),f=new WeakMap;function F(l){if(f.has(l))return f.get(l);const e={...l};return e.render?e.render=(t,...r)=>{var o;if(t.mounted$){const n=l.render(t,...r);return n.children===null||typeof n.children=="string"?u(n.type,n.props,n.children,n.patchFlag,n.dynamicProps,n.shapeFlag):_(n)}else return _("div",(o=t.$attrs)!=null?o:t._.attrs)}:e.template&&(e.template=` `),e.setup=(t,r)=>{var n;const o=p(!1);return q(()=>{o.value=!0}),Promise.resolve(((n=l.setup)==null?void 0:n.call(l,t,r))||{}).then(s=>typeof s!="function"?{...s,mounted$:o}:(...c)=>{if(o.value){const a=s(...c);return a.children===null||typeof a.children=="string"?u(a.type,a.props,a.children,a.patchFlag,a.dynamicProps,a.shapeFlag):_(a)}else return _("div",r.attrs)})},f.set(l,e),e}const A=Object.freeze(Object.defineProperty({__proto__:null,default:k,createClientOnly:F},Symbol.toStringTag,{value:"Module"})),D=h({methods:{toggleTheme(){this.$colorMode.preference=this.$colorMode.preference==="dark"?"light":"dark"}},computed:{isDark(){return this.$colorMode.preference==="dark"}}}),G=h({...D,__name:"LayoutThemeToggle",setup(l){const e=p(!1);return q(()=>{e.value=!0}),(t,r)=>{const o=b,n=y,s=k;return i(),d("button",{onClick:r[0]||(r[0]=(...c)=>t.toggleTheme&&t.toggleTheme(...c)),class:$([t.$attrs.class,t.$style.button,{[t.$style.visible]:e.value}])},[M(s,null,{default:T(()=>[t.isDark?(i(),g(o,{key:0,fill:"currentColor",width:"32",height:"32"})):m("",!0),t.isDark?m("",!0):(i(),g(n,{key:1,fill:"currentColor",width:"32",height:"32"}))]),_:1})],2)}}}),N="_button_jz7in_1",V="_visible_jz7in_7",H={button:N,visible:V};export{E as M,J as S,G as _,W as a,k as b,A as c,H as s}; diff --git a/nuxt/Markdown.3aab9649.js b/nuxt/Markdown.3365dbff.js similarity index 61% rename from nuxt/Markdown.3aab9649.js rename to nuxt/Markdown.3365dbff.js index 4d312d4..69860fe 100644 --- a/nuxt/Markdown.3aab9649.js +++ b/nuxt/Markdown.3365dbff.js @@ -1 +1 @@ -import r from"./ContentSlot.493c190c.js";import{a as o,l as u,y as f,L as c}from"./entry.38f1b559.js";const i=o({name:"Markdown",extends:r,setup(t){const{parent:e}=c(),{between:n,default:a}=u(),s=f(()=>typeof t.unwrap=="string"?t.unwrap.split(" "):["*"]);return{fallbackSlot:a,tags:s,between:n,parent:e}}});export{i as default}; +import r from"./ContentSlot.4744181a.js";import{a as o,l as u,y as f,L as c}from"./entry.418f6f87.js";const i=o({name:"Markdown",extends:r,setup(t){const{parent:e}=c(),{between:n,default:a}=u(),s=f(()=>typeof t.unwrap=="string"?t.unwrap.split(" "):["*"]);return{fallbackSlot:a,tags:s,between:n,parent:e}}});export{i as default}; diff --git a/nuxt/ProseA.7e12c275.js b/nuxt/ProseA.51266783.js similarity index 73% rename from nuxt/ProseA.7e12c275.js rename to nuxt/ProseA.51266783.js index 9657ca7..7fe424d 100644 --- a/nuxt/ProseA.7e12c275.js +++ b/nuxt/ProseA.51266783.js @@ -1 +1 @@ -import{a as o,o as l,c as s,w as c,r as f,b as u}from"./entry.38f1b559.js";const i=o({__name:"ProseA",props:{href:{default:""},blank:{type:Boolean,default:!1}},setup(t){const a=e=>!e.match(/^\w+\:\/\//),n=e=>a(e)?e.toLowerCase().replaceAll("%20"," ").replace(/\d+/g,"").trim().replaceAll(" ","-"):e;return(e,p)=>{const r=u;return l(),s(r,{href:n(t.href),target:a(t.href)?"":"_blank"},{default:c(()=>[f(e.$slots,"default")]),_:3},8,["href","target"])}}});export{i as default}; +import{a as o,o as l,c as s,w as c,r as f,b as u}from"./entry.418f6f87.js";const i=o({__name:"ProseA",props:{href:{default:""},blank:{type:Boolean,default:!1}},setup(t){const a=e=>!e.match(/^\w+\:\/\//),n=e=>a(e)?e.toLowerCase().replaceAll("%20"," ").replace(/\d+/g,"").trim().replaceAll(" ","-"):e;return(e,p)=>{const r=u;return l(),s(r,{href:n(t.href),target:a(t.href)?"":"_blank"},{default:c(()=>[f(e.$slots,"default")]),_:3},8,["href","target"])}}});export{i as default}; diff --git a/nuxt/ProseBlockquote.23ea93eb.js b/nuxt/ProseBlockquote.c3f8360b.js similarity index 67% rename from nuxt/ProseBlockquote.23ea93eb.js rename to nuxt/ProseBlockquote.c3f8360b.js index 188e6f2..368d573 100644 --- a/nuxt/ProseBlockquote.23ea93eb.js +++ b/nuxt/ProseBlockquote.c3f8360b.js @@ -1 +1 @@ -import{k as o,o as r,e as t,r as c}from"./entry.38f1b559.js";const s={};function n(e,l){return r(),t("blockquote",null,[c(e.$slots,"default")])}const f=o(s,[["render",n]]);export{f as default}; +import{k as o,o as r,e as t,r as c}from"./entry.418f6f87.js";const s={};function n(e,l){return r(),t("blockquote",null,[c(e.$slots,"default")])}const f=o(s,[["render",n]]);export{f as default}; diff --git a/nuxt/ProseCode.344aba07.js b/nuxt/ProseCode.3a4bf644.js similarity index 83% rename from nuxt/ProseCode.344aba07.js rename to nuxt/ProseCode.3a4bf644.js index 55ae8d5..ccadb0c 100644 --- a/nuxt/ProseCode.344aba07.js +++ b/nuxt/ProseCode.3a4bf644.js @@ -1 +1 @@ -import i from"./UiIconCopy.feb163da.js";import{a as u,o as t,e as a,f as n,h as s,i as d,t as p,j as m,r as f,k as g}from"./entry.38f1b559.js";import{s as _}from"./ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js";const h={key:0},y=u({__name:"ProseCode",props:{code:null,language:{default:null},filename:{default:null},highlights:{default:()=>[]}},setup(o){const l=o,r=()=>{navigator.clipboard.writeText(l.code)};return(e,k)=>{const c=i;return t(),a("div",{class:s(e.$style.wrapper)},[n("button",{class:s(e.$style.language),onClick:r},[n("span",{class:s(e.$style.icon)},[d(c,{width:"12",height:"12",fill:"currentColor"})],2),o.language?(t(),a("span",h,p(o.language),1)):m("",!0)],2),f(e.$slots,"default")],2)}}}),C={$style:_},N=g(y,[["__cssModules",C]]);export{N as default}; +import i from"./UiIconCopy.76853494.js";import{a as u,o as t,e as a,f as n,h as s,i as d,t as p,j as m,r as f,k as g}from"./entry.418f6f87.js";import{s as _}from"./ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js";const h={key:0},y=u({__name:"ProseCode",props:{code:null,language:{default:null},filename:{default:null},highlights:{default:()=>[]}},setup(o){const l=o,r=()=>{navigator.clipboard.writeText(l.code)};return(e,k)=>{const c=i;return t(),a("div",{class:s(e.$style.wrapper)},[n("button",{class:s(e.$style.language),onClick:r},[n("span",{class:s(e.$style.icon)},[d(c,{width:"12",height:"12",fill:"currentColor"})],2),o.language?(t(),a("span",h,p(o.language),1)):m("",!0)],2),f(e.$slots,"default")],2)}}}),C={$style:_},N=g(y,[["__cssModules",C]]);export{N as default}; diff --git a/nuxt/ProseCodeInline.3710a525.js b/nuxt/ProseCodeInline.48628627.js similarity index 65% rename from nuxt/ProseCodeInline.3710a525.js rename to nuxt/ProseCodeInline.48628627.js index 6e262f7..e49ecf2 100644 --- a/nuxt/ProseCodeInline.3710a525.js +++ b/nuxt/ProseCodeInline.48628627.js @@ -1 +1 @@ -import{k as o,o as r,e as n,r as s}from"./entry.38f1b559.js";const t={};function c(e,a){return r(),n("code",null,[s(e.$slots,"default")])}const d=o(t,[["render",c]]);export{d as default}; +import{k as o,o as r,e as n,r as s}from"./entry.418f6f87.js";const t={};function c(e,a){return r(),n("code",null,[s(e.$slots,"default")])}const d=o(t,[["render",c]]);export{d as default}; diff --git a/nuxt/ProseEm.8384abd2.js b/nuxt/ProseEm.35b844dc.js similarity index 64% rename from nuxt/ProseEm.8384abd2.js rename to nuxt/ProseEm.35b844dc.js index 498eb5f..8e2dc49 100644 --- a/nuxt/ProseEm.8384abd2.js +++ b/nuxt/ProseEm.35b844dc.js @@ -1 +1 @@ -import{k as r,o,e as s,r as t}from"./entry.38f1b559.js";const n={};function c(e,a){return o(),s("em",null,[t(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; +import{k as r,o,e as s,r as t}from"./entry.418f6f87.js";const n={};function c(e,a){return o(),s("em",null,[t(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; diff --git a/nuxt/ProseH1.30a3226a.js b/nuxt/ProseH1.ebf7ce2a.js similarity index 69% rename from nuxt/ProseH1.30a3226a.js rename to nuxt/ProseH1.ebf7ce2a.js index 085a6b9..870c680 100644 --- a/nuxt/ProseH1.30a3226a.js +++ b/nuxt/ProseH1.ebf7ce2a.js @@ -1 +1 @@ -import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.38f1b559.js";const r=["id"],c=["href"],p=i({__name:"ProseH1",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=1&&!(e!=null&&e.exclude.includes(1));return(n,h)=>(s(),o("h1",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; +import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.418f6f87.js";const r=["id"],c=["href"],p=i({__name:"ProseH1",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=1&&!(e!=null&&e.exclude.includes(1));return(n,h)=>(s(),o("h1",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; diff --git a/nuxt/ProseH2.713a1428.js b/nuxt/ProseH2.7ef5d565.js similarity index 69% rename from nuxt/ProseH2.713a1428.js rename to nuxt/ProseH2.7ef5d565.js index 9411a32..a208e94 100644 --- a/nuxt/ProseH2.713a1428.js +++ b/nuxt/ProseH2.7ef5d565.js @@ -1 +1 @@ -import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.38f1b559.js";const r=["id"],c=["href"],p=i({__name:"ProseH2",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=2&&!(e!=null&&e.exclude.includes(2));return(n,h)=>(s(),o("h2",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; +import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.418f6f87.js";const r=["id"],c=["href"],p=i({__name:"ProseH2",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=2&&!(e!=null&&e.exclude.includes(2));return(n,h)=>(s(),o("h2",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; diff --git a/nuxt/ProseH3.d55803cb.js b/nuxt/ProseH3.c6034a12.js similarity index 69% rename from nuxt/ProseH3.d55803cb.js rename to nuxt/ProseH3.c6034a12.js index a2fec55..50e432b 100644 --- a/nuxt/ProseH3.d55803cb.js +++ b/nuxt/ProseH3.c6034a12.js @@ -1 +1 @@ -import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.38f1b559.js";const r=["id"],c=["href"],p=i({__name:"ProseH3",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=3&&!(e!=null&&e.exclude.includes(3));return(n,h)=>(s(),o("h3",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; +import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.418f6f87.js";const r=["id"],c=["href"],p=i({__name:"ProseH3",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=3&&!(e!=null&&e.exclude.includes(3));return(n,h)=>(s(),o("h3",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; diff --git a/nuxt/ProseH4.99c4bbf1.js b/nuxt/ProseH4.74105bc8.js similarity index 69% rename from nuxt/ProseH4.99c4bbf1.js rename to nuxt/ProseH4.74105bc8.js index 4d82053..c1c6072 100644 --- a/nuxt/ProseH4.99c4bbf1.js +++ b/nuxt/ProseH4.74105bc8.js @@ -1 +1 @@ -import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.38f1b559.js";const r=["id"],c=["href"],p=i({__name:"ProseH4",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=4&&!(e!=null&&e.exclude.includes(4));return(n,h)=>(s(),o("h4",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; +import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.418f6f87.js";const r=["id"],c=["href"],p=i({__name:"ProseH4",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=4&&!(e!=null&&e.exclude.includes(4));return(n,h)=>(s(),o("h4",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; diff --git a/nuxt/ProseH5.3055fe9b.js b/nuxt/ProseH5.169298fa.js similarity index 69% rename from nuxt/ProseH5.3055fe9b.js rename to nuxt/ProseH5.169298fa.js index 379f95d..416a261 100644 --- a/nuxt/ProseH5.3055fe9b.js +++ b/nuxt/ProseH5.169298fa.js @@ -1 +1 @@ -import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.38f1b559.js";const r=["id"],c=["href"],p=i({__name:"ProseH5",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=5&&!(e!=null&&e.exclude.includes(5));return(n,h)=>(s(),o("h5",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; +import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.418f6f87.js";const r=["id"],c=["href"],p=i({__name:"ProseH5",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=5&&!(e!=null&&e.exclude.includes(5));return(n,h)=>(s(),o("h5",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; diff --git a/nuxt/ProseH6.dd45b49c.js b/nuxt/ProseH6.62bf17fb.js similarity index 69% rename from nuxt/ProseH6.dd45b49c.js rename to nuxt/ProseH6.62bf17fb.js index 416849b..9a91720 100644 --- a/nuxt/ProseH6.dd45b49c.js +++ b/nuxt/ProseH6.62bf17fb.js @@ -1 +1 @@ -import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.38f1b559.js";const r=["id"],c=["href"],p=i({__name:"ProseH6",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=6&&!(e!=null&&e.exclude.includes(6));return(n,h)=>(s(),o("h6",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; +import{a as i,M as l,o as s,e as o,u,r as d}from"./entry.418f6f87.js";const r=["id"],c=["href"],p=i({__name:"ProseH6",props:{id:null},setup(t){const{anchorLinks:e}=l().public.content,a=(e==null?void 0:e.depth)>=6&&!(e!=null&&e.exclude.includes(6));return(n,h)=>(s(),o("h6",{id:t.id},[u(a)?(s(),o("a",{key:0,href:`#${t.id}`},[d(n.$slots,"default")],8,c)):d(n.$slots,"default",{key:1})],8,r))}});export{p as default}; diff --git a/nuxt/ProseHr.a12a2694.js b/nuxt/ProseHr.9c93dfae.js similarity index 57% rename from nuxt/ProseHr.a12a2694.js rename to nuxt/ProseHr.9c93dfae.js index 40e42ec..fdf198e 100644 --- a/nuxt/ProseHr.a12a2694.js +++ b/nuxt/ProseHr.9c93dfae.js @@ -1 +1 @@ -import{k as e,o as r,e as c}from"./entry.38f1b559.js";const o={};function t(n,s){return r(),c("hr")}const _=e(o,[["render",t]]);export{_ as default}; +import{k as e,o as r,e as c}from"./entry.418f6f87.js";const o={};function t(n,s){return r(),c("hr")}const _=e(o,[["render",t]]);export{_ as default}; diff --git a/nuxt/ProseImg.10476274.js b/nuxt/ProseImg.07f10b54.js similarity index 83% rename from nuxt/ProseImg.10476274.js rename to nuxt/ProseImg.07f10b54.js index cc840a9..ad046c8 100644 --- a/nuxt/ProseImg.10476274.js +++ b/nuxt/ProseImg.07f10b54.js @@ -1 +1 @@ -import{a as e,o as i,e as a}from"./entry.38f1b559.js";const r=["src","alt","width","height"],c=e({__name:"ProseImg",props:{src:{type:String,default:""},alt:{type:String,default:""},width:{type:[String,Number],default:void 0},height:{type:[String,Number],default:void 0}},setup(t){return(n,h)=>(i(),a("img",{src:t.src,alt:t.alt,width:t.width,height:t.height},null,8,r))}});export{c as default}; +import{a as e,o as i,e as a}from"./entry.418f6f87.js";const r=["src","alt","width","height"],c=e({__name:"ProseImg",props:{src:{type:String,default:""},alt:{type:String,default:""},width:{type:[String,Number],default:void 0},height:{type:[String,Number],default:void 0}},setup(t){return(n,h)=>(i(),a("img",{src:t.src,alt:t.alt,width:t.width,height:t.height},null,8,r))}});export{c as default}; diff --git a/nuxt/ProseLi.4aa2c1e5.js b/nuxt/ProseLi.f35f697c.js similarity index 64% rename from nuxt/ProseLi.4aa2c1e5.js rename to nuxt/ProseLi.f35f697c.js index 9f3d9bc..7466141 100644 --- a/nuxt/ProseLi.4aa2c1e5.js +++ b/nuxt/ProseLi.f35f697c.js @@ -1 +1 @@ -import{k as r,o,e as s,r as t}from"./entry.38f1b559.js";const n={};function c(e,a){return o(),s("li",null,[t(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; +import{k as r,o,e as s,r as t}from"./entry.418f6f87.js";const n={};function c(e,a){return o(),s("li",null,[t(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; diff --git a/nuxt/ProseOl.f051d6b1.js b/nuxt/ProseOl.68fa8258.js similarity index 65% rename from nuxt/ProseOl.f051d6b1.js rename to nuxt/ProseOl.68fa8258.js index 11875bf..ce35adb 100644 --- a/nuxt/ProseOl.f051d6b1.js +++ b/nuxt/ProseOl.68fa8258.js @@ -1 +1 @@ -import{k as o,o as r,e as s,r as t}from"./entry.38f1b559.js";const n={};function c(e,l){return r(),s("ol",null,[t(e.$slots,"default")])}const f=o(n,[["render",c]]);export{f as default}; +import{k as o,o as r,e as s,r as t}from"./entry.418f6f87.js";const n={};function c(e,l){return r(),s("ol",null,[t(e.$slots,"default")])}const f=o(n,[["render",c]]);export{f as default}; diff --git a/nuxt/ProseP.c8adea50.js b/nuxt/ProseP.9a7d03df.js similarity index 64% rename from nuxt/ProseP.c8adea50.js rename to nuxt/ProseP.9a7d03df.js index 0af4528..d5f4808 100644 --- a/nuxt/ProseP.c8adea50.js +++ b/nuxt/ProseP.9a7d03df.js @@ -1 +1 @@ -import{k as r,o,e as s,r as t}from"./entry.38f1b559.js";const n={};function c(e,a){return o(),s("p",null,[t(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; +import{k as r,o,e as s,r as t}from"./entry.418f6f87.js";const n={};function c(e,a){return o(),s("p",null,[t(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; diff --git a/nuxt/ProseStrong.fc69a1d3.js b/nuxt/ProseStrong.c2c2a1c5.js similarity index 65% rename from nuxt/ProseStrong.fc69a1d3.js rename to nuxt/ProseStrong.c2c2a1c5.js index 70070d9..17204de 100644 --- a/nuxt/ProseStrong.fc69a1d3.js +++ b/nuxt/ProseStrong.c2c2a1c5.js @@ -1 +1 @@ -import{k as r,o,e as t,r as n}from"./entry.38f1b559.js";const s={};function c(e,a){return o(),t("strong",null,[n(e.$slots,"default")])}const f=r(s,[["render",c]]);export{f as default}; +import{k as r,o,e as t,r as n}from"./entry.418f6f87.js";const s={};function c(e,a){return o(),t("strong",null,[n(e.$slots,"default")])}const f=r(s,[["render",c]]);export{f as default}; diff --git a/nuxt/ProseTable.1153aba7.js b/nuxt/ProseTable.39e3be33.js similarity index 65% rename from nuxt/ProseTable.1153aba7.js rename to nuxt/ProseTable.39e3be33.js index 7a786a5..100e4a1 100644 --- a/nuxt/ProseTable.1153aba7.js +++ b/nuxt/ProseTable.39e3be33.js @@ -1 +1 @@ -import{k as r,o,e as t,r as s}from"./entry.38f1b559.js";const a={};function n(e,c){return o(),t("table",null,[s(e.$slots,"default")])}const f=r(a,[["render",n]]);export{f as default}; +import{k as r,o,e as t,r as s}from"./entry.418f6f87.js";const a={};function n(e,c){return o(),t("table",null,[s(e.$slots,"default")])}const f=r(a,[["render",n]]);export{f as default}; diff --git a/nuxt/ProseTbody.3b14efe4.js b/nuxt/ProseTbody.a87c57af.js similarity index 66% rename from nuxt/ProseTbody.3b14efe4.js rename to nuxt/ProseTbody.a87c57af.js index e544567..a4c9526 100644 --- a/nuxt/ProseTbody.3b14efe4.js +++ b/nuxt/ProseTbody.a87c57af.js @@ -1 +1 @@ -import{k as o,o as r,e as t,r as s}from"./entry.38f1b559.js";const n={};function c(e,a){return r(),t("tbody",null,[s(e.$slots,"default")])}const d=o(n,[["render",c]]);export{d as default}; +import{k as o,o as r,e as t,r as s}from"./entry.418f6f87.js";const n={};function c(e,a){return r(),t("tbody",null,[s(e.$slots,"default")])}const d=o(n,[["render",c]]);export{d as default}; diff --git a/nuxt/ProseTd.92dfa71d.js b/nuxt/ProseTd.54ae6f37.js similarity index 64% rename from nuxt/ProseTd.92dfa71d.js rename to nuxt/ProseTd.54ae6f37.js index 216d989..b7cc3cc 100644 --- a/nuxt/ProseTd.92dfa71d.js +++ b/nuxt/ProseTd.54ae6f37.js @@ -1 +1 @@ -import{k as r,o,e as t,r as s}from"./entry.38f1b559.js";const n={};function c(e,a){return o(),t("td",null,[s(e.$slots,"default")])}const d=r(n,[["render",c]]);export{d as default}; +import{k as r,o,e as t,r as s}from"./entry.418f6f87.js";const n={};function c(e,a){return o(),t("td",null,[s(e.$slots,"default")])}const d=r(n,[["render",c]]);export{d as default}; diff --git a/nuxt/ProseTh.d8019ce9.js b/nuxt/ProseTh.2185040d.js similarity index 64% rename from nuxt/ProseTh.d8019ce9.js rename to nuxt/ProseTh.2185040d.js index 0b360c6..df4a191 100644 --- a/nuxt/ProseTh.d8019ce9.js +++ b/nuxt/ProseTh.2185040d.js @@ -1 +1 @@ -import{k as r,o,e as t,r as s}from"./entry.38f1b559.js";const n={};function c(e,a){return o(),t("th",null,[s(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; +import{k as r,o,e as t,r as s}from"./entry.418f6f87.js";const n={};function c(e,a){return o(),t("th",null,[s(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; diff --git a/nuxt/ProseThead.cbcdaf65.js b/nuxt/ProseThead.e0d17643.js similarity index 65% rename from nuxt/ProseThead.cbcdaf65.js rename to nuxt/ProseThead.e0d17643.js index f0d21da..bd4274e 100644 --- a/nuxt/ProseThead.cbcdaf65.js +++ b/nuxt/ProseThead.e0d17643.js @@ -1 +1 @@ -import{k as r,o,e as t,r as s}from"./entry.38f1b559.js";const a={};function n(e,c){return o(),t("thead",null,[s(e.$slots,"default")])}const d=r(a,[["render",n]]);export{d as default}; +import{k as r,o,e as t,r as s}from"./entry.418f6f87.js";const a={};function n(e,c){return o(),t("thead",null,[s(e.$slots,"default")])}const d=r(a,[["render",n]]);export{d as default}; diff --git a/nuxt/ProseTr.20da6eb7.js b/nuxt/ProseTr.1b0548ab.js similarity index 64% rename from nuxt/ProseTr.20da6eb7.js rename to nuxt/ProseTr.1b0548ab.js index 771b98b..1117363 100644 --- a/nuxt/ProseTr.20da6eb7.js +++ b/nuxt/ProseTr.1b0548ab.js @@ -1 +1 @@ -import{k as r,o,e as t,r as s}from"./entry.38f1b559.js";const n={};function c(e,a){return o(),t("tr",null,[s(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; +import{k as r,o,e as t,r as s}from"./entry.418f6f87.js";const n={};function c(e,a){return o(),t("tr",null,[s(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; diff --git a/nuxt/ProseUl.835c32e2.js b/nuxt/ProseUl.45cfd40a.js similarity index 64% rename from nuxt/ProseUl.835c32e2.js rename to nuxt/ProseUl.45cfd40a.js index 60c986e..37d7e0d 100644 --- a/nuxt/ProseUl.835c32e2.js +++ b/nuxt/ProseUl.45cfd40a.js @@ -1 +1 @@ -import{k as r,o,e as s,r as t}from"./entry.38f1b559.js";const n={};function c(e,l){return o(),s("ul",null,[t(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; +import{k as r,o,e as s,r as t}from"./entry.418f6f87.js";const n={};function c(e,l){return o(),s("ul",null,[t(e.$slots,"default")])}const f=r(n,[["render",c]]);export{f as default}; diff --git a/nuxt/SkillsCard.31659d77.js b/nuxt/SkillsCard.31659d77.js deleted file mode 100644 index 38bced3..0000000 --- a/nuxt/SkillsCard.31659d77.js +++ /dev/null @@ -1 +0,0 @@ -import a from"./UiStars.6c60e157.js";import{a as i,o as c,e as r,f as t,h as e,r as d,t as o,i as u,k as m,Y as p}from"./entry.38f1b559.js";import"./IconStar.3878a425.js";const y=i({__name:"SkillsCard",props:{title:null,description:null,level:null},setup(l){return(s,$)=>{const n=a;return c(),r("div",{class:e(s.$style.card)},[t("div",{class:e(s.$style.grid)},[t("div",{class:e(s.$style.icon)},[d(s.$slots,"default")],2),t("div",{class:e(s.$style.text)},[t("h3",{class:e(s.$style.title)},o(l.title),3),u(n,{count:l.level},null,8,["count"])],2)],2),t("div",{class:e(s.$style.description)},o(l.description),3)],2)}}}),_={$style:p},S=m(y,[["__cssModules",_]]);export{S as default}; diff --git a/nuxt/UiActionButton.00b8dbe7.js b/nuxt/UiActionButton.14e166c9.js similarity index 92% rename from nuxt/UiActionButton.00b8dbe7.js rename to nuxt/UiActionButton.14e166c9.js index 6d1ffa8..2a8a79f 100644 --- a/nuxt/UiActionButton.00b8dbe7.js +++ b/nuxt/UiActionButton.14e166c9.js @@ -1 +1 @@ -import{a as f,o as a,c as i,w as u,e as o,r as l,h as e,j as n,f as $,b as p,k as d,a5 as m}from"./entry.38f1b559.js";const y=f({__name:"UiActionButton",props:{href:null,size:{default:"md"},variant:{default:"outline"}},setup(t){return(s,k)=>{const r=p;return a(),i(r,{class:e([s.$style.button,s.$attrs.style,s.$style[`variant-${t.variant}`],s.$style[`size-${t.size}`],{[s.$style.prefixed]:s.$slots.prefix,[s.$style.suffixed]:s.$slots.suffix}]),to:t.href},{default:u(()=>[s.$slots.prefix?(a(),o("span",{key:0,class:e(s.$style.prefix)},[l(s.$slots,"prefix")],2)):n("",!0),$("span",{class:e(s.$style.title)},[l(s.$slots,"default")],2),s.$slots.suffix?(a(),o("span",{key:1,class:e(s.$style.suffix)},[l(s.$slots,"suffix")],2)):n("",!0)]),_:3},8,["class","to"])}}}),c={$style:m},B=d(y,[["__cssModules",c]]);export{B as default}; +import{a as f,o as a,c as i,w as u,e as o,r as l,h as e,j as n,f as $,b as p,k as d,a4 as m}from"./entry.418f6f87.js";const y=f({__name:"UiActionButton",props:{href:null,size:{default:"md"},variant:{default:"outline"}},setup(t){return(s,k)=>{const r=p;return a(),i(r,{class:e([s.$style.button,s.$attrs.style,s.$style[`variant-${t.variant}`],s.$style[`size-${t.size}`],{[s.$style.prefixed]:s.$slots.prefix,[s.$style.suffixed]:s.$slots.suffix}]),to:t.href},{default:u(()=>[s.$slots.prefix?(a(),o("span",{key:0,class:e(s.$style.prefix)},[l(s.$slots,"prefix")],2)):n("",!0),$("span",{class:e(s.$style.title)},[l(s.$slots,"default")],2),s.$slots.suffix?(a(),o("span",{key:1,class:e(s.$style.suffix)},[l(s.$slots,"suffix")],2)):n("",!0)]),_:3},8,["class","to"])}}}),c={$style:m},B=d(y,[["__cssModules",c]]);export{B as default}; diff --git a/nuxt/UiCard.2d5cc08c.js b/nuxt/UiCard.2d5cc08c.js new file mode 100644 index 0000000..4dce955 --- /dev/null +++ b/nuxt/UiCard.2d5cc08c.js @@ -0,0 +1 @@ +import{k as e,o as a,e as o,r as t,h as r,a3 as c}from"./entry.418f6f87.js";const l={};function n(s,d){return a(),o("div",{class:r([s.$style.card,s.$attrs.class])},[t(s.$slots,"default")],2)}const _={$style:c},u=e(l,[["render",n],["__cssModules",_]]);export{u as default}; diff --git a/nuxt/UiIconCopy.feb163da.js b/nuxt/UiIconCopy.76853494.js similarity index 86% rename from nuxt/UiIconCopy.feb163da.js rename to nuxt/UiIconCopy.76853494.js index c4a490c..d9b94d7 100644 --- a/nuxt/UiIconCopy.feb163da.js +++ b/nuxt/UiIconCopy.76853494.js @@ -1 +1 @@ -import{k as e,o,e as c,f as t}from"./entry.38f1b559.js";const n={},s={xmlns:"http://www.w3.org/2000/svg",height:"24px",viewBox:"0 0 24 24",width:"24px",fill:"#ffffff"},_=t("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),h=t("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"},null,-1),f=[_,h];function a(l,r){return o(),c("svg",s,f)}const d=e(n,[["render",a]]);export{d as default}; +import{k as e,o,e as c,f as t}from"./entry.418f6f87.js";const n={},s={xmlns:"http://www.w3.org/2000/svg",height:"24px",viewBox:"0 0 24 24",width:"24px",fill:"#ffffff"},_=t("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),h=t("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z"},null,-1),f=[_,h];function a(l,r){return o(),c("svg",s,f)}const d=e(n,[["render",a]]);export{d as default}; diff --git a/nuxt/UiStars.1877968e.js b/nuxt/UiStars.1877968e.js new file mode 100644 index 0000000..7ed2109 --- /dev/null +++ b/nuxt/UiStars.1877968e.js @@ -0,0 +1 @@ +import r from"./IconStar.339079de.js";import{a as c,o as e,e as t,R as _,S as u,i,h as n,k as m,a2 as p}from"./entry.418f6f87.js";const d=c({__name:"UiStars",props:{count:null},setup(o){return(s,h)=>{const a=r;return e(),t("div",{class:n(s.$style.rating)},[(e(),t(_,null,u(5,l=>i(a,{width:22,height:"22",class:n([s.$style.star,{[s.$style.filled]:l>o.count}])},null,8,["class"])),64))],2)}}}),f={$style:p},g=m(d,[["__cssModules",f]]);export{g as default}; diff --git a/nuxt/UiStars.6c60e157.js b/nuxt/UiStars.6c60e157.js deleted file mode 100644 index dbfdf91..0000000 --- a/nuxt/UiStars.6c60e157.js +++ /dev/null @@ -1 +0,0 @@ -import r from"./IconStar.3878a425.js";import{a as c,o as e,e as t,R as _,S as u,i,h as n,k as m,Z as p}from"./entry.38f1b559.js";const d=c({__name:"UiStars",props:{count:null},setup(o){return(s,h)=>{const a=r;return e(),t("div",{class:n(s.$style.rating)},[(e(),t(_,null,u(5,l=>i(a,{width:22,height:"22",class:n([s.$style.star,{[s.$style.filled]:l>o.count}])},null,8,["class"])),64))],2)}}}),f={$style:p},g=m(d,[["__cssModules",f]]);export{g as default}; diff --git a/nuxt/_...slug_.e695364b.js b/nuxt/_...slug_.e2b98af2.js similarity index 78% rename from nuxt/_...slug_.e695364b.js rename to nuxt/_...slug_.e2b98af2.js index 92291d4..2a98dff 100644 --- a/nuxt/_...slug_.e695364b.js +++ b/nuxt/_...slug_.e2b98af2.js @@ -1 +1 @@ -import{a as _,z as c,o as u,e as i,i as t,w as o,O as m,f as a,t as p,P as d}from"./entry.38f1b559.js";import f from"./HomeReference.c4305aa0.js";import"./navigation.ce71bb44.js";const x={scrollToTop:!0},b=_({...x,__name:"[...slug]",setup(B){return c({titleTemplate:n=>n?`${n} \u2022 Obsidian Garden`:"Obsidian Garden"}),(n,C)=>{const l=d,s=f,r=m;return u(),i("main",null,[t(r,null,{default:o(({doc:e})=>[a("h1",null,p(e.title),1),a("article",null,[t(l,{value:e},null,8,["value"])])]),"not-found":o(({props:{path:e}})=>[t(s,{url:e},null,8,["url"])]),_:1})])}}});export{b as default}; +import{a as _,z as c,o as u,e as i,i as t,w as o,O as m,f as a,t as p,P as d}from"./entry.418f6f87.js";import f from"./HomeReference.2316c826.js";import"./navigation.123e305f.js";const x={scrollToTop:!0},b=_({...x,__name:"[...slug]",setup(B){return c({titleTemplate:n=>n?`${n} \u2022 Obsidian Garden`:"Obsidian Garden"}),(n,C)=>{const l=d,s=f,r=m;return u(),i("main",null,[t(r,null,{default:o(({doc:e})=>[a("h1",null,p(e.title),1),a("article",null,[t(l,{value:e},null,8,["value"])])]),"not-found":o(({props:{path:e}})=>[t(s,{url:e},null,8,["url"])]),_:1})])}}});export{b as default}; diff --git a/nuxt/bio.04cfcfb7.js b/nuxt/bio.04cfcfb7.js new file mode 100644 index 0000000..24b4d4a --- /dev/null +++ b/nuxt/bio.04cfcfb7.js @@ -0,0 +1 @@ +import m from"./BioHeading.2631b812.js";import r from"./BioSkills.696c43e3.js";import a from"./BioProjects.d72fc041.js";import p from"./BioCareer.5609c742.js";import{a as l,o as d,e as f,f as t,i as s,h as e,k as u}from"./entry.418f6f87.js";import"./BioSkillsCard.ae8b4645.js";import"./UiStars.1877968e.js";import"./IconStar.339079de.js";import"./UiCard.2d5cc08c.js";import"./BioProjectCard.d54d8b6e.js";import"./IconsCode.6140a935.js";import"./UiActionButton.14e166c9.js";import"./ArrowRight.d464538e.js";const y=l({__name:"bio",setup(g){return(o,C)=>{const n=m,c=r,i=a,_=p;return d(),f("article",{class:e(o.$style.content)},[t("section",{class:e([o.$style.section,o.$style.heading])},[s(n)],2),t("section",{class:e(o.$style.section)},[s(c)],2),t("section",{class:e(o.$style.section)},[s(i)],2),t("section",{class:e(o.$style.section)},[s(_)],2)],2)}}}),B="_section_1e0mk_1",$="_heading_1e0mk_4",h={section:B,heading:$},k={$style:h},w=u(y,[["__cssModules",k]]);export{w as default}; diff --git a/nuxt/bio.30cf74c5.js b/nuxt/bio.30cf74c5.js deleted file mode 100644 index d102ded..0000000 --- a/nuxt/bio.30cf74c5.js +++ /dev/null @@ -1 +0,0 @@ -import a from"./BioHeading.c969c966.js";import i from"./BioSkills.e52e3858.js";import{a as _,o as r,e as l,f as s,i as t,h as o,k as m}from"./entry.38f1b559.js";import"./SkillsCard.31659d77.js";import"./UiStars.6c60e157.js";import"./IconStar.3878a425.js";const p=_({__name:"bio",setup(k){return(e,y)=>{const n=a,c=i;return r(),l("article",{class:o(e.$style.content)},[s("section",{class:o([e.$style.section,e.$style.heading])},[t(n)],2),s("section",{class:o(e.$style.section)},[t(c)],2)],2)}}}),d="_section_1e0mk_1",f="_heading_1e0mk_4",u={section:d,heading:f},h={$style:u},N=m(p,[["__cssModules",h]]);export{N as default}; diff --git a/nuxt/client-db.9d167014.js b/nuxt/client-db.34509f31.js similarity index 96% rename from nuxt/client-db.9d167014.js rename to nuxt/client-db.34509f31.js index 6e5a121..3c962d5 100644 --- a/nuxt/client-db.9d167014.js +++ b/nuxt/client-db.34509f31.js @@ -1 +1 @@ -import{a8 as S,a9 as M,aa as E,ab as A,ac as U,ad as j,ae as z,af as N,ag as W,ah as T,M as K,I as H,ai as J,s as R,aj as q}from"./entry.38f1b559.js";const B=()=>{const n=new Map;return{hasItem(t){return n.has(t)},getItem(t){return n.get(t)||null},setItem(t,e){n.set(t,e)},removeItem(t){n.delete(t)},getKeys(){return Array.from(n.keys())},clear(){n.clear()},dispose(){n.clear()}}};function G(n){return!n||typeof n.then!="function"?Promise.resolve(n):n}function p(n,...t){try{return G(n(...t))}catch(e){return Promise.reject(e)}}function Z(n){const t=typeof n;return n===null||t!=="object"&&t!=="function"}function k(n){return Z(n)?n+"":JSON.stringify(n)}const b=()=>{const n=new Map;return{hasItem(t){return n.has(t)},getItem(t){return n.get(t)||null},setItem(t,e){n.set(t,e)},removeItem(t){n.delete(t)},getKeys(){return Array.from(n.keys())},clear(){n.clear()},dispose(){n.clear()}}},F=["hasItem","getItem","setItem","removeItem","getMeta","setMeta","removeMeta","getKeys","clear","mount","unmount"];function Q(n,t){if(t=I(t),!t)return n;const e={...n};for(const a of F)e[a]=(i="",...s)=>n[a](t+i,...s);return e.getKeys=(a="",...i)=>n.getKeys(t+a,...i).then(s=>s.map(o=>o.substr(t.length))),e}function g(n){return n?n.replace(/[/\\]/g,":").replace(/:+/g,":").replace(/^:|:$/g,""):""}function I(n){return n=g(n),n?n+":":""}function V(n={}){const t={mounts:{"":n.driver||b()},mountpoints:[""],watching:!1,watchListeners:[],unwatch:{}},e=r=>{for(const u of t.mountpoints)if(r.startsWith(u))return{relativeKey:r.substring(u.length),driver:t.mounts[u]};return{relativeKey:r,driver:t.mounts[""]}},a=(r,u)=>t.mountpoints.filter(c=>c.startsWith(r)||u&&r.startsWith(c)).map(c=>({relativeBase:r.length>c.length?r.substring(c.length):void 0,mountpoint:c,driver:t.mounts[c]})),i=(r,u)=>{if(!!t.watching){u=g(u);for(const c of t.watchListeners)c(r,u)}},s=async()=>{if(!t.watching){t.watching=!0;for(const r in t.mounts)t.unwatch[r]=await C(t.mounts[r],i,r)}},o=async()=>{if(!!t.watching){for(const r in t.unwatch)await t.unwatch[r]();t.unwatch={},t.watching=!1}},h={hasItem(r){r=g(r);const{relativeKey:u,driver:c}=e(r);return p(c.hasItem,u)},getItem(r){r=g(r);const{relativeKey:u,driver:c}=e(r);return p(c.getItem,u).then(l=>S(l))},async setItem(r,u){if(u===void 0)return h.removeItem(r);r=g(r);const{relativeKey:c,driver:l}=e(r);!l.setItem||(await p(l.setItem,c,k(u)),l.watch||i("update",r))},async removeItem(r,u=!0){r=g(r);const{relativeKey:c,driver:l}=e(r);!l.removeItem||(await p(l.removeItem,c),u&&await p(l.removeItem,c+"$"),l.watch||i("remove",r))},async getMeta(r,u){r=g(r);const{relativeKey:c,driver:l}=e(r),m=Object.create(null);if(l.getMeta&&Object.assign(m,await p(l.getMeta,c)),!u){const f=await p(l.getItem,c+"$").then(d=>S(d));f&&typeof f=="object"&&(typeof f.atime=="string"&&(f.atime=new Date(f.atime)),typeof f.mtime=="string"&&(f.mtime=new Date(f.mtime)),Object.assign(m,f))}return m},setMeta(r,u){return this.setItem(r+"$",u)},removeMeta(r){return this.removeItem(r+"$")},async getKeys(r){r=I(r);const u=a(r,!0);let c=[];const l=[];for(const m of u){const d=(await p(m.driver.getKeys,m.relativeBase)).map(y=>m.mountpoint+g(y)).filter(y=>!c.find(w=>y.startsWith(w)));l.push(...d),c=[m.mountpoint].concat(c.filter(y=>!y.startsWith(m.mountpoint)))}return r?l.filter(m=>m.startsWith(r)&&!m.endsWith("$")):l.filter(m=>!m.endsWith("$"))},async clear(r){r=I(r),await Promise.all(a(r,!1).map(async u=>{if(u.driver.clear)return p(u.driver.clear);if(u.driver.removeItem){const c=await u.driver.getKeys();return Promise.all(c.map(l=>u.driver.removeItem(l)))}}))},async dispose(){await Promise.all(Object.values(t.mounts).map(r=>x(r)))},async watch(r){return await s(),t.watchListeners.push(r),async()=>{t.watchListeners=t.watchListeners.filter(u=>u!==r),t.watchListeners.length===0&&await o()}},async unwatch(){t.watchListeners=[],await o()},mount(r,u){if(r=I(r),r&&t.mounts[r])throw new Error(`already mounted at ${r}`);return r&&(t.mountpoints.push(r),t.mountpoints.sort((c,l)=>l.length-c.length)),t.mounts[r]=u,t.watching&&Promise.resolve(C(u,i,r)).then(c=>{t.unwatch[r]=c}).catch(console.error),h},async unmount(r,u=!0){r=I(r),!(!r||!t.mounts[r])&&(t.watching&&r in t.unwatch&&(t.unwatch[r](),delete t.unwatch[r]),u&&await x(t.mounts[r]),t.mountpoints=t.mountpoints.filter(c=>c!==r),delete t.mounts[r])}};return h}function C(n,t,e){return n.watch?n.watch((a,i)=>t(a,e+i)):()=>{}}async function x(n){typeof n.dispose=="function"&&await p(n.dispose)}function X(n={}){const t=ee(e,n.operators);function e(a,i){return typeof i!="object"||i instanceof RegExp?t.$eq(a,i):Object.keys(i||{}).every(s=>{const o=i[s];if(s.startsWith("$")&&t[s]){const h=t[s];return typeof h=="function"?h(a,o):!1}return e(M(a,s),o)})}return e}function ee(n,t={}){return{$match:(e,a)=>n(e,a),$eq:(e,a)=>a instanceof RegExp?a.test(e):e===a,$ne:(e,a)=>a instanceof RegExp?!a.test(e):e!==a,$not:(e,a)=>!n(e,a),$and:(e,a)=>(E(a,"$and requires an array as condition"),a.every(i=>n(e,i))),$or:(e,a)=>(E(a,"$or requires an array as condition"),a.some(i=>n(e,i))),$in:(e,a)=>A(a).some(i=>Array.isArray(e)?n(e,{$contains:i}):n(e,i)),$contains:(e,a)=>(e=Array.isArray(e)?e:String(e),A(a).every(i=>e.includes(i))),$icontains:(e,a)=>{if(typeof a!="string")throw new TypeError("$icontains requires a string, use $contains instead");return e=String(e).toLocaleLowerCase(),A(a).every(i=>e.includes(i.toLocaleLowerCase()))},$containsAny:(e,a)=>(E(a,"$containsAny requires an array as condition"),e=Array.isArray(e)?e:String(e),a.some(i=>e.includes(i))),$exists:(e,a)=>a?typeof e<"u":typeof e>"u",$type:(e,a)=>typeof e===String(a),$regex:(e,a)=>{if(!(a instanceof RegExp)){const i=String(a).match(/\/(.*)\/([dgimsuy]*)$/);a=i?new RegExp(i[1],i[2]||""):new RegExp(a)}return a.test(String(e||""))},$lt:(e,a)=>ee<=a,$gt:(e,a)=>e>a,$gte:(e,a)=>e>=a,...t||{}}}function P(n){const t=X(),e=(i,{query:s,before:o,after:h})=>{const r=typeof s=="string"?{_path:s}:s,u=i.findIndex(l=>t(l,r));o=o||1,h=h||1;const c=new Array(o+h).fill(null,0);return u===-1?c:c.map((l,m)=>i[u-o+m+Number(m>=o)]||null)},a=[(i,s)=>i.filter(o=>A(s.where).every(h=>t(o,h))),(i,s)=>A(s.sort).forEach(o=>U(i,o)),(i,s)=>s.surround?e(i,s.surround):i,(i,s)=>s.skip?i.slice(s.skip):i,(i,s)=>s.limit?i.slice(0,s.limit):i,(i,s)=>j(z(s.without))(i),(i,s)=>j(N(s.only))(i),(i,s)=>s.first?i[0]:i];return async i=>{const s=await n();return a.reduce((o,h)=>h(o,i.params())||o,s)}}var te={exports:{}};(function(n,t){(function(e,a,i){n.exports=i(),n.exports.default=i()})("slugify",W,function(){var e=JSON.parse(`{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","\xA2":"cent","\xA3":"pound","\xA4":"currency","\xA5":"yen","\xA9":"(c)","\xAA":"a","\xAE":"(r)","\xBA":"o","\xC0":"A","\xC1":"A","\xC2":"A","\xC3":"A","\xC4":"A","\xC5":"A","\xC6":"AE","\xC7":"C","\xC8":"E","\xC9":"E","\xCA":"E","\xCB":"E","\xCC":"I","\xCD":"I","\xCE":"I","\xCF":"I","\xD0":"D","\xD1":"N","\xD2":"O","\xD3":"O","\xD4":"O","\xD5":"O","\xD6":"O","\xD8":"O","\xD9":"U","\xDA":"U","\xDB":"U","\xDC":"U","\xDD":"Y","\xDE":"TH","\xDF":"ss","\xE0":"a","\xE1":"a","\xE2":"a","\xE3":"a","\xE4":"a","\xE5":"a","\xE6":"ae","\xE7":"c","\xE8":"e","\xE9":"e","\xEA":"e","\xEB":"e","\xEC":"i","\xED":"i","\xEE":"i","\xEF":"i","\xF0":"d","\xF1":"n","\xF2":"o","\xF3":"o","\xF4":"o","\xF5":"o","\xF6":"o","\xF8":"o","\xF9":"u","\xFA":"u","\xFB":"u","\xFC":"u","\xFD":"y","\xFE":"th","\xFF":"y","\u0100":"A","\u0101":"a","\u0102":"A","\u0103":"a","\u0104":"A","\u0105":"a","\u0106":"C","\u0107":"c","\u010C":"C","\u010D":"c","\u010E":"D","\u010F":"d","\u0110":"DJ","\u0111":"dj","\u0112":"E","\u0113":"e","\u0116":"E","\u0117":"e","\u0118":"e","\u0119":"e","\u011A":"E","\u011B":"e","\u011E":"G","\u011F":"g","\u0122":"G","\u0123":"g","\u0128":"I","\u0129":"i","\u012A":"i","\u012B":"i","\u012E":"I","\u012F":"i","\u0130":"I","\u0131":"i","\u0136":"k","\u0137":"k","\u013B":"L","\u013C":"l","\u013D":"L","\u013E":"l","\u0141":"L","\u0142":"l","\u0143":"N","\u0144":"n","\u0145":"N","\u0146":"n","\u0147":"N","\u0148":"n","\u014C":"O","\u014D":"o","\u0150":"O","\u0151":"o","\u0152":"OE","\u0153":"oe","\u0154":"R","\u0155":"r","\u0158":"R","\u0159":"r","\u015A":"S","\u015B":"s","\u015E":"S","\u015F":"s","\u0160":"S","\u0161":"s","\u0162":"T","\u0163":"t","\u0164":"T","\u0165":"t","\u0168":"U","\u0169":"u","\u016A":"u","\u016B":"u","\u016E":"U","\u016F":"u","\u0170":"U","\u0171":"u","\u0172":"U","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017A":"z","\u017B":"Z","\u017C":"z","\u017D":"Z","\u017E":"z","\u018F":"E","\u0192":"f","\u01A0":"O","\u01A1":"o","\u01AF":"U","\u01B0":"u","\u01C8":"LJ","\u01C9":"lj","\u01CB":"NJ","\u01CC":"nj","\u0218":"S","\u0219":"s","\u021A":"T","\u021B":"t","\u0259":"e","\u02DA":"o","\u0386":"A","\u0388":"E","\u0389":"H","\u038A":"I","\u038C":"O","\u038E":"Y","\u038F":"W","\u0390":"i","\u0391":"A","\u0392":"B","\u0393":"G","\u0394":"D","\u0395":"E","\u0396":"Z","\u0397":"H","\u0398":"8","\u0399":"I","\u039A":"K","\u039B":"L","\u039C":"M","\u039D":"N","\u039E":"3","\u039F":"O","\u03A0":"P","\u03A1":"R","\u03A3":"S","\u03A4":"T","\u03A5":"Y","\u03A6":"F","\u03A7":"X","\u03A8":"PS","\u03A9":"W","\u03AA":"I","\u03AB":"Y","\u03AC":"a","\u03AD":"e","\u03AE":"h","\u03AF":"i","\u03B0":"y","\u03B1":"a","\u03B2":"b","\u03B3":"g","\u03B4":"d","\u03B5":"e","\u03B6":"z","\u03B7":"h","\u03B8":"8","\u03B9":"i","\u03BA":"k","\u03BB":"l","\u03BC":"m","\u03BD":"n","\u03BE":"3","\u03BF":"o","\u03C0":"p","\u03C1":"r","\u03C2":"s","\u03C3":"s","\u03C4":"t","\u03C5":"y","\u03C6":"f","\u03C7":"x","\u03C8":"ps","\u03C9":"w","\u03CA":"i","\u03CB":"y","\u03CC":"o","\u03CD":"y","\u03CE":"w","\u0401":"Yo","\u0402":"DJ","\u0404":"Ye","\u0406":"I","\u0407":"Yi","\u0408":"J","\u0409":"LJ","\u040A":"NJ","\u040B":"C","\u040F":"DZ","\u0410":"A","\u0411":"B","\u0412":"V","\u0413":"G","\u0414":"D","\u0415":"E","\u0416":"Zh","\u0417":"Z","\u0418":"I","\u0419":"J","\u041A":"K","\u041B":"L","\u041C":"M","\u041D":"N","\u041E":"O","\u041F":"P","\u0420":"R","\u0421":"S","\u0422":"T","\u0423":"U","\u0424":"F","\u0425":"H","\u0426":"C","\u0427":"Ch","\u0428":"Sh","\u0429":"Sh","\u042A":"U","\u042B":"Y","\u042C":"","\u042D":"E","\u042E":"Yu","\u042F":"Ya","\u0430":"a","\u0431":"b","\u0432":"v","\u0433":"g","\u0434":"d","\u0435":"e","\u0436":"zh","\u0437":"z","\u0438":"i","\u0439":"j","\u043A":"k","\u043B":"l","\u043C":"m","\u043D":"n","\u043E":"o","\u043F":"p","\u0440":"r","\u0441":"s","\u0442":"t","\u0443":"u","\u0444":"f","\u0445":"h","\u0446":"c","\u0447":"ch","\u0448":"sh","\u0449":"sh","\u044A":"u","\u044B":"y","\u044C":"","\u044D":"e","\u044E":"yu","\u044F":"ya","\u0451":"yo","\u0452":"dj","\u0454":"ye","\u0456":"i","\u0457":"yi","\u0458":"j","\u0459":"lj","\u045A":"nj","\u045B":"c","\u045D":"u","\u045F":"dz","\u0490":"G","\u0491":"g","\u0492":"GH","\u0493":"gh","\u049A":"KH","\u049B":"kh","\u04A2":"NG","\u04A3":"ng","\u04AE":"UE","\u04AF":"ue","\u04B0":"U","\u04B1":"u","\u04BA":"H","\u04BB":"h","\u04D8":"AE","\u04D9":"ae","\u04E8":"OE","\u04E9":"oe","\u0531":"A","\u0532":"B","\u0533":"G","\u0534":"D","\u0535":"E","\u0536":"Z","\u0537":"E'","\u0538":"Y'","\u0539":"T'","\u053A":"JH","\u053B":"I","\u053C":"L","\u053D":"X","\u053E":"C'","\u053F":"K","\u0540":"H","\u0541":"D'","\u0542":"GH","\u0543":"TW","\u0544":"M","\u0545":"Y","\u0546":"N","\u0547":"SH","\u0549":"CH","\u054A":"P","\u054B":"J","\u054C":"R'","\u054D":"S","\u054E":"V","\u054F":"T","\u0550":"R","\u0551":"C","\u0553":"P'","\u0554":"Q'","\u0555":"O''","\u0556":"F","\u0587":"EV","\u0621":"a","\u0622":"aa","\u0623":"a","\u0624":"u","\u0625":"i","\u0626":"e","\u0627":"a","\u0628":"b","\u0629":"h","\u062A":"t","\u062B":"th","\u062C":"j","\u062D":"h","\u062E":"kh","\u062F":"d","\u0630":"th","\u0631":"r","\u0632":"z","\u0633":"s","\u0634":"sh","\u0635":"s","\u0636":"dh","\u0637":"t","\u0638":"z","\u0639":"a","\u063A":"gh","\u0641":"f","\u0642":"q","\u0643":"k","\u0644":"l","\u0645":"m","\u0646":"n","\u0647":"h","\u0648":"w","\u0649":"a","\u064A":"y","\u064B":"an","\u064C":"on","\u064D":"en","\u064E":"a","\u064F":"u","\u0650":"e","\u0652":"","\u0660":"0","\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u067E":"p","\u0686":"ch","\u0698":"zh","\u06A9":"k","\u06AF":"g","\u06CC":"y","\u06F0":"0","\u06F1":"1","\u06F2":"2","\u06F3":"3","\u06F4":"4","\u06F5":"5","\u06F6":"6","\u06F7":"7","\u06F8":"8","\u06F9":"9","\u0E3F":"baht","\u10D0":"a","\u10D1":"b","\u10D2":"g","\u10D3":"d","\u10D4":"e","\u10D5":"v","\u10D6":"z","\u10D7":"t","\u10D8":"i","\u10D9":"k","\u10DA":"l","\u10DB":"m","\u10DC":"n","\u10DD":"o","\u10DE":"p","\u10DF":"zh","\u10E0":"r","\u10E1":"s","\u10E2":"t","\u10E3":"u","\u10E4":"f","\u10E5":"k","\u10E6":"gh","\u10E7":"q","\u10E8":"sh","\u10E9":"ch","\u10EA":"ts","\u10EB":"dz","\u10EC":"ts","\u10ED":"ch","\u10EE":"kh","\u10EF":"j","\u10F0":"h","\u1E62":"S","\u1E63":"s","\u1E80":"W","\u1E81":"w","\u1E82":"W","\u1E83":"w","\u1E84":"W","\u1E85":"w","\u1E9E":"SS","\u1EA0":"A","\u1EA1":"a","\u1EA2":"A","\u1EA3":"a","\u1EA4":"A","\u1EA5":"a","\u1EA6":"A","\u1EA7":"a","\u1EA8":"A","\u1EA9":"a","\u1EAA":"A","\u1EAB":"a","\u1EAC":"A","\u1EAD":"a","\u1EAE":"A","\u1EAF":"a","\u1EB0":"A","\u1EB1":"a","\u1EB2":"A","\u1EB3":"a","\u1EB4":"A","\u1EB5":"a","\u1EB6":"A","\u1EB7":"a","\u1EB8":"E","\u1EB9":"e","\u1EBA":"E","\u1EBB":"e","\u1EBC":"E","\u1EBD":"e","\u1EBE":"E","\u1EBF":"e","\u1EC0":"E","\u1EC1":"e","\u1EC2":"E","\u1EC3":"e","\u1EC4":"E","\u1EC5":"e","\u1EC6":"E","\u1EC7":"e","\u1EC8":"I","\u1EC9":"i","\u1ECA":"I","\u1ECB":"i","\u1ECC":"O","\u1ECD":"o","\u1ECE":"O","\u1ECF":"o","\u1ED0":"O","\u1ED1":"o","\u1ED2":"O","\u1ED3":"o","\u1ED4":"O","\u1ED5":"o","\u1ED6":"O","\u1ED7":"o","\u1ED8":"O","\u1ED9":"o","\u1EDA":"O","\u1EDB":"o","\u1EDC":"O","\u1EDD":"o","\u1EDE":"O","\u1EDF":"o","\u1EE0":"O","\u1EE1":"o","\u1EE2":"O","\u1EE3":"o","\u1EE4":"U","\u1EE5":"u","\u1EE6":"U","\u1EE7":"u","\u1EE8":"U","\u1EE9":"u","\u1EEA":"U","\u1EEB":"u","\u1EEC":"U","\u1EED":"u","\u1EEE":"U","\u1EEF":"u","\u1EF0":"U","\u1EF1":"u","\u1EF2":"Y","\u1EF3":"y","\u1EF4":"Y","\u1EF5":"y","\u1EF6":"Y","\u1EF7":"y","\u1EF8":"Y","\u1EF9":"y","\u2013":"-","\u2018":"'","\u2019":"'","\u201C":"\\"","\u201D":"\\"","\u201E":"\\"","\u2020":"+","\u2022":"*","\u2026":"...","\u20A0":"ecu","\u20A2":"cruzeiro","\u20A3":"french franc","\u20A4":"lira","\u20A5":"mill","\u20A6":"naira","\u20A7":"peseta","\u20A8":"rupee","\u20A9":"won","\u20AA":"new shequel","\u20AB":"dong","\u20AC":"euro","\u20AD":"kip","\u20AE":"tugrik","\u20AF":"drachma","\u20B0":"penny","\u20B1":"peso","\u20B2":"guarani","\u20B3":"austral","\u20B4":"hryvnia","\u20B5":"cedi","\u20B8":"kazakhstani tenge","\u20B9":"indian rupee","\u20BA":"turkish lira","\u20BD":"russian ruble","\u20BF":"bitcoin","\u2120":"sm","\u2122":"tm","\u2202":"d","\u2206":"delta","\u2211":"sum","\u221E":"infinity","\u2665":"love","\u5143":"yuan","\u5186":"yen","\uFDFC":"rial","\uFEF5":"laa","\uFEF7":"laa","\uFEF9":"lai","\uFEFB":"la"}`),a=JSON.parse('{"bg":{"\u0419":"Y","\u0426":"Ts","\u0429":"Sht","\u042A":"A","\u042C":"Y","\u0439":"y","\u0446":"ts","\u0449":"sht","\u044A":"a","\u044C":"y"},"de":{"\xC4":"AE","\xE4":"ae","\xD6":"OE","\xF6":"oe","\xDC":"UE","\xFC":"ue","\xDF":"ss","%":"prozent","&":"und","|":"oder","\u2211":"summe","\u221E":"unendlich","\u2665":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","\xA2":"centavos","\xA3":"libras","\xA4":"moneda","\u20A3":"francos","\u2211":"suma","\u221E":"infinito","\u2665":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","\xA2":"centime","\xA3":"livre","\xA4":"devise","\u20A3":"franc","\u2211":"somme","\u221E":"infini","\u2665":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","\xA2":"centavo","\u2211":"soma","\xA3":"libra","\u221E":"infinito","\u2665":"amor"},"uk":{"\u0418":"Y","\u0438":"y","\u0419":"Y","\u0439":"y","\u0426":"Ts","\u0446":"ts","\u0425":"Kh","\u0445":"kh","\u0429":"Shch","\u0449":"shch","\u0413":"H","\u0433":"h"},"vi":{"\u0110":"D","\u0111":"d"},"da":{"\xD8":"OE","\xF8":"oe","\xC5":"AA","\xE5":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"st\xF8rre end"},"nb":{"&":"og","\xC5":"AA","\xC6":"AE","\xD8":"OE","\xE5":"aa","\xE6":"ae","\xF8":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","\xC5":"AA","\xC4":"AE","\xD6":"OE","\xE5":"aa","\xE4":"ae","\xF6":"oe"}}');function i(s,o){if(typeof s!="string")throw new Error("slugify: string argument expected");o=typeof o=="string"?{replacement:o}:o||{};var h=a[o.locale]||{},r=o.replacement===void 0?"-":o.replacement,u=o.trim===void 0?!0:o.trim,c=s.normalize().split("").reduce(function(l,m){var f=h[m]||e[m]||m;return f===r&&(f=" "),l+f.replace(o.remove||/[^\w\s$*_+~.()'"!\-:@]+/g,"")},"");return o.strict&&(c=c.replace(/[^A-Za-z0-9\s]/g,"")),u&&(c=c.trim()),c=c.replace(/\s+/g,r),o.lower&&(c=c.toLowerCase()),c}return i.extend=function(s){Object.assign(e,s)},i})})(te);const re=n=>n.split(/[\s-]/g).map(T).join(" ");function ne(n,t){const{navigation:e}=K().content,a=s=>({...ie(["title",...e.fields])(s),...se(s==null?void 0:s.navigation)?s.navigation:{}}),i=n.sort((s,o)=>s._path.localeCompare(o._path)).reduce((s,o)=>{const h=o._path.substring(1).split("/"),r=o._id.split(":").slice(1),u=!!r[r.length-1].match(/([1-9][0-9]*\.)?index.md/g),c=f=>({title:f.title,_path:f._path,_file:f._file,children:[],...a(f),...f._draft?{_draft:!0}:{}}),l=c(o);if(u){const f=t[l._path];if(typeof(f==null?void 0:f.navigation)<"u"&&!(f!=null&&f.navigation))return s;if(o._path!=="/"){const d=c(o);l.children.push(d)}Object.assign(l,a(f))}return h.length===1?(s.push(l),s):(h.slice(0,-1).reduce((f,d,y)=>{const w="/"+h.slice(0,y+1).join("/"),v=t[w];if(typeof(v==null?void 0:v.navigation)<"u"&&!v.navigation)return[];let O=f.find(Y=>Y._path===w);return O||(O={title:re(d),_path:w,_file:o._file,children:[],...a(v)},f.push(O)),O.children},s).push(l),s)},[]);return D(i)}const ae=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function D(n){const t=n.sort((e,a)=>ae.compare(e._file,a._file));for(const e of t)e.children.length?D(e.children):delete e.children,delete e._file;return n}function ie(n){return t=>(t=t||{},n&&n.length?n.filter(e=>typeof t[e]<"u").reduce((e,a)=>Object.assign(e,{[a]:t[a]}),{}):t)}function se(n){return Object.prototype.toString.call(n)==="[object Object]"}const oe=n=>q(n,"/api/"+K().public.content.base),ce=Q(V({driver:B()}),"@content"),L=()=>H("previewToken").value;function ue(n){async function t(){const e=new Set(await n.getKeys("cache:")),a=L();if(a){(await n.getItem(`${a}$`).then(r=>r||{})).ignoreBuiltContents&&e.clear();const o=await n.getKeys(`${a}:`),h=await Promise.all(o.map(r=>n.getItem(r)));for(const r of h)e.delete(`cache:${r._id}`),r.__deleted||e.add(`${a}:${r._id}`)}return await Promise.all(Array.from(e).map(s=>n.getItem(s)))}return{storage:n,fetch:P(t),query:e=>J(P(t),e)}}let _,$;async function le(){return $?await $:_||($=fe(),_=await $),_}async function fe(){const n=R(),{clientDB:t}=K().public.content,e=ue(ce),a=await e.storage.getItem("integrity");if(t.integrity!==+a){const{contents:i,navigation:s}=await $fetch(oe("cache.json"));await Promise.all(i.map(o=>e.storage.setItem(`cache:${o._id}`,o))),await e.storage.setItem("navigation",s),await e.storage.setItem("integrity",t.integrity)}return await n.callHook("content:storage",e.storage),e}async function me(n){const t=await le();if(!L()&&Object.keys(n||{}).length===0)return t.storage.getItem("navigation");const e=await t.query(n).where({_partial:!1,navigation:{$ne:!1}}).find(),i=(await t.query().where({_path:/\/_dir$/i,_partial:!0}).find()).reduce((s,o)=>{o.title.toLowerCase()==="dir"&&(o.title=void 0);const h=o._path.split("/").slice(0,-1).join("/")||"/";return s[h]={...o,...o.body},s},{});return ne(e,i)}export{ce as contentStorage,ue as createDB,me as generateNavigation,L as getPreview,le as useContentDatabase}; +import{ad as S,ae as M,af as E,ag as A,ah as U,ai as j,aj as z,ak as N,al as W,am as T,M as K,I as H,an as J,s as R,ao as q}from"./entry.418f6f87.js";const B=()=>{const n=new Map;return{hasItem(t){return n.has(t)},getItem(t){return n.get(t)||null},setItem(t,e){n.set(t,e)},removeItem(t){n.delete(t)},getKeys(){return Array.from(n.keys())},clear(){n.clear()},dispose(){n.clear()}}};function G(n){return!n||typeof n.then!="function"?Promise.resolve(n):n}function p(n,...t){try{return G(n(...t))}catch(e){return Promise.reject(e)}}function k(n){const t=typeof n;return n===null||t!=="object"&&t!=="function"}function Z(n){return k(n)?n+"":JSON.stringify(n)}const F=()=>{const n=new Map;return{hasItem(t){return n.has(t)},getItem(t){return n.get(t)||null},setItem(t,e){n.set(t,e)},removeItem(t){n.delete(t)},getKeys(){return Array.from(n.keys())},clear(){n.clear()},dispose(){n.clear()}}},b=["hasItem","getItem","setItem","removeItem","getMeta","setMeta","removeMeta","getKeys","clear","mount","unmount"];function Q(n,t){if(t=I(t),!t)return n;const e={...n};for(const a of b)e[a]=(i="",...s)=>n[a](t+i,...s);return e.getKeys=(a="",...i)=>n.getKeys(t+a,...i).then(s=>s.map(o=>o.substr(t.length))),e}function g(n){return n?n.replace(/[/\\]/g,":").replace(/:+/g,":").replace(/^:|:$/g,""):""}function I(n){return n=g(n),n?n+":":""}function V(n={}){const t={mounts:{"":n.driver||F()},mountpoints:[""],watching:!1,watchListeners:[],unwatch:{}},e=r=>{for(const u of t.mountpoints)if(r.startsWith(u))return{relativeKey:r.substring(u.length),driver:t.mounts[u]};return{relativeKey:r,driver:t.mounts[""]}},a=(r,u)=>t.mountpoints.filter(c=>c.startsWith(r)||u&&r.startsWith(c)).map(c=>({relativeBase:r.length>c.length?r.substring(c.length):void 0,mountpoint:c,driver:t.mounts[c]})),i=(r,u)=>{if(!!t.watching){u=g(u);for(const c of t.watchListeners)c(r,u)}},s=async()=>{if(!t.watching){t.watching=!0;for(const r in t.mounts)t.unwatch[r]=await C(t.mounts[r],i,r)}},o=async()=>{if(!!t.watching){for(const r in t.unwatch)await t.unwatch[r]();t.unwatch={},t.watching=!1}},h={hasItem(r){r=g(r);const{relativeKey:u,driver:c}=e(r);return p(c.hasItem,u)},getItem(r){r=g(r);const{relativeKey:u,driver:c}=e(r);return p(c.getItem,u).then(l=>S(l))},async setItem(r,u){if(u===void 0)return h.removeItem(r);r=g(r);const{relativeKey:c,driver:l}=e(r);!l.setItem||(await p(l.setItem,c,Z(u)),l.watch||i("update",r))},async removeItem(r,u=!0){r=g(r);const{relativeKey:c,driver:l}=e(r);!l.removeItem||(await p(l.removeItem,c),u&&await p(l.removeItem,c+"$"),l.watch||i("remove",r))},async getMeta(r,u){r=g(r);const{relativeKey:c,driver:l}=e(r),m=Object.create(null);if(l.getMeta&&Object.assign(m,await p(l.getMeta,c)),!u){const f=await p(l.getItem,c+"$").then(d=>S(d));f&&typeof f=="object"&&(typeof f.atime=="string"&&(f.atime=new Date(f.atime)),typeof f.mtime=="string"&&(f.mtime=new Date(f.mtime)),Object.assign(m,f))}return m},setMeta(r,u){return this.setItem(r+"$",u)},removeMeta(r){return this.removeItem(r+"$")},async getKeys(r){r=I(r);const u=a(r,!0);let c=[];const l=[];for(const m of u){const d=(await p(m.driver.getKeys,m.relativeBase)).map(y=>m.mountpoint+g(y)).filter(y=>!c.find(w=>y.startsWith(w)));l.push(...d),c=[m.mountpoint].concat(c.filter(y=>!y.startsWith(m.mountpoint)))}return r?l.filter(m=>m.startsWith(r)&&!m.endsWith("$")):l.filter(m=>!m.endsWith("$"))},async clear(r){r=I(r),await Promise.all(a(r,!1).map(async u=>{if(u.driver.clear)return p(u.driver.clear);if(u.driver.removeItem){const c=await u.driver.getKeys();return Promise.all(c.map(l=>u.driver.removeItem(l)))}}))},async dispose(){await Promise.all(Object.values(t.mounts).map(r=>x(r)))},async watch(r){return await s(),t.watchListeners.push(r),async()=>{t.watchListeners=t.watchListeners.filter(u=>u!==r),t.watchListeners.length===0&&await o()}},async unwatch(){t.watchListeners=[],await o()},mount(r,u){if(r=I(r),r&&t.mounts[r])throw new Error(`already mounted at ${r}`);return r&&(t.mountpoints.push(r),t.mountpoints.sort((c,l)=>l.length-c.length)),t.mounts[r]=u,t.watching&&Promise.resolve(C(u,i,r)).then(c=>{t.unwatch[r]=c}).catch(console.error),h},async unmount(r,u=!0){r=I(r),!(!r||!t.mounts[r])&&(t.watching&&r in t.unwatch&&(t.unwatch[r](),delete t.unwatch[r]),u&&await x(t.mounts[r]),t.mountpoints=t.mountpoints.filter(c=>c!==r),delete t.mounts[r])}};return h}function C(n,t,e){return n.watch?n.watch((a,i)=>t(a,e+i)):()=>{}}async function x(n){typeof n.dispose=="function"&&await p(n.dispose)}function X(n={}){const t=ee(e,n.operators);function e(a,i){return typeof i!="object"||i instanceof RegExp?t.$eq(a,i):Object.keys(i||{}).every(s=>{const o=i[s];if(s.startsWith("$")&&t[s]){const h=t[s];return typeof h=="function"?h(a,o):!1}return e(M(a,s),o)})}return e}function ee(n,t={}){return{$match:(e,a)=>n(e,a),$eq:(e,a)=>a instanceof RegExp?a.test(e):e===a,$ne:(e,a)=>a instanceof RegExp?!a.test(e):e!==a,$not:(e,a)=>!n(e,a),$and:(e,a)=>(E(a,"$and requires an array as condition"),a.every(i=>n(e,i))),$or:(e,a)=>(E(a,"$or requires an array as condition"),a.some(i=>n(e,i))),$in:(e,a)=>A(a).some(i=>Array.isArray(e)?n(e,{$contains:i}):n(e,i)),$contains:(e,a)=>(e=Array.isArray(e)?e:String(e),A(a).every(i=>e.includes(i))),$icontains:(e,a)=>{if(typeof a!="string")throw new TypeError("$icontains requires a string, use $contains instead");return e=String(e).toLocaleLowerCase(),A(a).every(i=>e.includes(i.toLocaleLowerCase()))},$containsAny:(e,a)=>(E(a,"$containsAny requires an array as condition"),e=Array.isArray(e)?e:String(e),a.some(i=>e.includes(i))),$exists:(e,a)=>a?typeof e<"u":typeof e>"u",$type:(e,a)=>typeof e===String(a),$regex:(e,a)=>{if(!(a instanceof RegExp)){const i=String(a).match(/\/(.*)\/([dgimsuy]*)$/);a=i?new RegExp(i[1],i[2]||""):new RegExp(a)}return a.test(String(e||""))},$lt:(e,a)=>ee<=a,$gt:(e,a)=>e>a,$gte:(e,a)=>e>=a,...t||{}}}function P(n){const t=X(),e=(i,{query:s,before:o,after:h})=>{const r=typeof s=="string"?{_path:s}:s,u=i.findIndex(l=>t(l,r));o=o||1,h=h||1;const c=new Array(o+h).fill(null,0);return u===-1?c:c.map((l,m)=>i[u-o+m+Number(m>=o)]||null)},a=[(i,s)=>i.filter(o=>A(s.where).every(h=>t(o,h))),(i,s)=>A(s.sort).forEach(o=>U(i,o)),(i,s)=>s.surround?e(i,s.surround):i,(i,s)=>s.skip?i.slice(s.skip):i,(i,s)=>s.limit?i.slice(0,s.limit):i,(i,s)=>j(z(s.without))(i),(i,s)=>j(N(s.only))(i),(i,s)=>s.first?i[0]:i];return async i=>{const s=await n();return a.reduce((o,h)=>h(o,i.params())||o,s)}}var te={exports:{}};(function(n,t){(function(e,a,i){n.exports=i(),n.exports.default=i()})("slugify",W,function(){var e=JSON.parse(`{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","\xA2":"cent","\xA3":"pound","\xA4":"currency","\xA5":"yen","\xA9":"(c)","\xAA":"a","\xAE":"(r)","\xBA":"o","\xC0":"A","\xC1":"A","\xC2":"A","\xC3":"A","\xC4":"A","\xC5":"A","\xC6":"AE","\xC7":"C","\xC8":"E","\xC9":"E","\xCA":"E","\xCB":"E","\xCC":"I","\xCD":"I","\xCE":"I","\xCF":"I","\xD0":"D","\xD1":"N","\xD2":"O","\xD3":"O","\xD4":"O","\xD5":"O","\xD6":"O","\xD8":"O","\xD9":"U","\xDA":"U","\xDB":"U","\xDC":"U","\xDD":"Y","\xDE":"TH","\xDF":"ss","\xE0":"a","\xE1":"a","\xE2":"a","\xE3":"a","\xE4":"a","\xE5":"a","\xE6":"ae","\xE7":"c","\xE8":"e","\xE9":"e","\xEA":"e","\xEB":"e","\xEC":"i","\xED":"i","\xEE":"i","\xEF":"i","\xF0":"d","\xF1":"n","\xF2":"o","\xF3":"o","\xF4":"o","\xF5":"o","\xF6":"o","\xF8":"o","\xF9":"u","\xFA":"u","\xFB":"u","\xFC":"u","\xFD":"y","\xFE":"th","\xFF":"y","\u0100":"A","\u0101":"a","\u0102":"A","\u0103":"a","\u0104":"A","\u0105":"a","\u0106":"C","\u0107":"c","\u010C":"C","\u010D":"c","\u010E":"D","\u010F":"d","\u0110":"DJ","\u0111":"dj","\u0112":"E","\u0113":"e","\u0116":"E","\u0117":"e","\u0118":"e","\u0119":"e","\u011A":"E","\u011B":"e","\u011E":"G","\u011F":"g","\u0122":"G","\u0123":"g","\u0128":"I","\u0129":"i","\u012A":"i","\u012B":"i","\u012E":"I","\u012F":"i","\u0130":"I","\u0131":"i","\u0136":"k","\u0137":"k","\u013B":"L","\u013C":"l","\u013D":"L","\u013E":"l","\u0141":"L","\u0142":"l","\u0143":"N","\u0144":"n","\u0145":"N","\u0146":"n","\u0147":"N","\u0148":"n","\u014C":"O","\u014D":"o","\u0150":"O","\u0151":"o","\u0152":"OE","\u0153":"oe","\u0154":"R","\u0155":"r","\u0158":"R","\u0159":"r","\u015A":"S","\u015B":"s","\u015E":"S","\u015F":"s","\u0160":"S","\u0161":"s","\u0162":"T","\u0163":"t","\u0164":"T","\u0165":"t","\u0168":"U","\u0169":"u","\u016A":"u","\u016B":"u","\u016E":"U","\u016F":"u","\u0170":"U","\u0171":"u","\u0172":"U","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017A":"z","\u017B":"Z","\u017C":"z","\u017D":"Z","\u017E":"z","\u018F":"E","\u0192":"f","\u01A0":"O","\u01A1":"o","\u01AF":"U","\u01B0":"u","\u01C8":"LJ","\u01C9":"lj","\u01CB":"NJ","\u01CC":"nj","\u0218":"S","\u0219":"s","\u021A":"T","\u021B":"t","\u0259":"e","\u02DA":"o","\u0386":"A","\u0388":"E","\u0389":"H","\u038A":"I","\u038C":"O","\u038E":"Y","\u038F":"W","\u0390":"i","\u0391":"A","\u0392":"B","\u0393":"G","\u0394":"D","\u0395":"E","\u0396":"Z","\u0397":"H","\u0398":"8","\u0399":"I","\u039A":"K","\u039B":"L","\u039C":"M","\u039D":"N","\u039E":"3","\u039F":"O","\u03A0":"P","\u03A1":"R","\u03A3":"S","\u03A4":"T","\u03A5":"Y","\u03A6":"F","\u03A7":"X","\u03A8":"PS","\u03A9":"W","\u03AA":"I","\u03AB":"Y","\u03AC":"a","\u03AD":"e","\u03AE":"h","\u03AF":"i","\u03B0":"y","\u03B1":"a","\u03B2":"b","\u03B3":"g","\u03B4":"d","\u03B5":"e","\u03B6":"z","\u03B7":"h","\u03B8":"8","\u03B9":"i","\u03BA":"k","\u03BB":"l","\u03BC":"m","\u03BD":"n","\u03BE":"3","\u03BF":"o","\u03C0":"p","\u03C1":"r","\u03C2":"s","\u03C3":"s","\u03C4":"t","\u03C5":"y","\u03C6":"f","\u03C7":"x","\u03C8":"ps","\u03C9":"w","\u03CA":"i","\u03CB":"y","\u03CC":"o","\u03CD":"y","\u03CE":"w","\u0401":"Yo","\u0402":"DJ","\u0404":"Ye","\u0406":"I","\u0407":"Yi","\u0408":"J","\u0409":"LJ","\u040A":"NJ","\u040B":"C","\u040F":"DZ","\u0410":"A","\u0411":"B","\u0412":"V","\u0413":"G","\u0414":"D","\u0415":"E","\u0416":"Zh","\u0417":"Z","\u0418":"I","\u0419":"J","\u041A":"K","\u041B":"L","\u041C":"M","\u041D":"N","\u041E":"O","\u041F":"P","\u0420":"R","\u0421":"S","\u0422":"T","\u0423":"U","\u0424":"F","\u0425":"H","\u0426":"C","\u0427":"Ch","\u0428":"Sh","\u0429":"Sh","\u042A":"U","\u042B":"Y","\u042C":"","\u042D":"E","\u042E":"Yu","\u042F":"Ya","\u0430":"a","\u0431":"b","\u0432":"v","\u0433":"g","\u0434":"d","\u0435":"e","\u0436":"zh","\u0437":"z","\u0438":"i","\u0439":"j","\u043A":"k","\u043B":"l","\u043C":"m","\u043D":"n","\u043E":"o","\u043F":"p","\u0440":"r","\u0441":"s","\u0442":"t","\u0443":"u","\u0444":"f","\u0445":"h","\u0446":"c","\u0447":"ch","\u0448":"sh","\u0449":"sh","\u044A":"u","\u044B":"y","\u044C":"","\u044D":"e","\u044E":"yu","\u044F":"ya","\u0451":"yo","\u0452":"dj","\u0454":"ye","\u0456":"i","\u0457":"yi","\u0458":"j","\u0459":"lj","\u045A":"nj","\u045B":"c","\u045D":"u","\u045F":"dz","\u0490":"G","\u0491":"g","\u0492":"GH","\u0493":"gh","\u049A":"KH","\u049B":"kh","\u04A2":"NG","\u04A3":"ng","\u04AE":"UE","\u04AF":"ue","\u04B0":"U","\u04B1":"u","\u04BA":"H","\u04BB":"h","\u04D8":"AE","\u04D9":"ae","\u04E8":"OE","\u04E9":"oe","\u0531":"A","\u0532":"B","\u0533":"G","\u0534":"D","\u0535":"E","\u0536":"Z","\u0537":"E'","\u0538":"Y'","\u0539":"T'","\u053A":"JH","\u053B":"I","\u053C":"L","\u053D":"X","\u053E":"C'","\u053F":"K","\u0540":"H","\u0541":"D'","\u0542":"GH","\u0543":"TW","\u0544":"M","\u0545":"Y","\u0546":"N","\u0547":"SH","\u0549":"CH","\u054A":"P","\u054B":"J","\u054C":"R'","\u054D":"S","\u054E":"V","\u054F":"T","\u0550":"R","\u0551":"C","\u0553":"P'","\u0554":"Q'","\u0555":"O''","\u0556":"F","\u0587":"EV","\u0621":"a","\u0622":"aa","\u0623":"a","\u0624":"u","\u0625":"i","\u0626":"e","\u0627":"a","\u0628":"b","\u0629":"h","\u062A":"t","\u062B":"th","\u062C":"j","\u062D":"h","\u062E":"kh","\u062F":"d","\u0630":"th","\u0631":"r","\u0632":"z","\u0633":"s","\u0634":"sh","\u0635":"s","\u0636":"dh","\u0637":"t","\u0638":"z","\u0639":"a","\u063A":"gh","\u0641":"f","\u0642":"q","\u0643":"k","\u0644":"l","\u0645":"m","\u0646":"n","\u0647":"h","\u0648":"w","\u0649":"a","\u064A":"y","\u064B":"an","\u064C":"on","\u064D":"en","\u064E":"a","\u064F":"u","\u0650":"e","\u0652":"","\u0660":"0","\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u067E":"p","\u0686":"ch","\u0698":"zh","\u06A9":"k","\u06AF":"g","\u06CC":"y","\u06F0":"0","\u06F1":"1","\u06F2":"2","\u06F3":"3","\u06F4":"4","\u06F5":"5","\u06F6":"6","\u06F7":"7","\u06F8":"8","\u06F9":"9","\u0E3F":"baht","\u10D0":"a","\u10D1":"b","\u10D2":"g","\u10D3":"d","\u10D4":"e","\u10D5":"v","\u10D6":"z","\u10D7":"t","\u10D8":"i","\u10D9":"k","\u10DA":"l","\u10DB":"m","\u10DC":"n","\u10DD":"o","\u10DE":"p","\u10DF":"zh","\u10E0":"r","\u10E1":"s","\u10E2":"t","\u10E3":"u","\u10E4":"f","\u10E5":"k","\u10E6":"gh","\u10E7":"q","\u10E8":"sh","\u10E9":"ch","\u10EA":"ts","\u10EB":"dz","\u10EC":"ts","\u10ED":"ch","\u10EE":"kh","\u10EF":"j","\u10F0":"h","\u1E62":"S","\u1E63":"s","\u1E80":"W","\u1E81":"w","\u1E82":"W","\u1E83":"w","\u1E84":"W","\u1E85":"w","\u1E9E":"SS","\u1EA0":"A","\u1EA1":"a","\u1EA2":"A","\u1EA3":"a","\u1EA4":"A","\u1EA5":"a","\u1EA6":"A","\u1EA7":"a","\u1EA8":"A","\u1EA9":"a","\u1EAA":"A","\u1EAB":"a","\u1EAC":"A","\u1EAD":"a","\u1EAE":"A","\u1EAF":"a","\u1EB0":"A","\u1EB1":"a","\u1EB2":"A","\u1EB3":"a","\u1EB4":"A","\u1EB5":"a","\u1EB6":"A","\u1EB7":"a","\u1EB8":"E","\u1EB9":"e","\u1EBA":"E","\u1EBB":"e","\u1EBC":"E","\u1EBD":"e","\u1EBE":"E","\u1EBF":"e","\u1EC0":"E","\u1EC1":"e","\u1EC2":"E","\u1EC3":"e","\u1EC4":"E","\u1EC5":"e","\u1EC6":"E","\u1EC7":"e","\u1EC8":"I","\u1EC9":"i","\u1ECA":"I","\u1ECB":"i","\u1ECC":"O","\u1ECD":"o","\u1ECE":"O","\u1ECF":"o","\u1ED0":"O","\u1ED1":"o","\u1ED2":"O","\u1ED3":"o","\u1ED4":"O","\u1ED5":"o","\u1ED6":"O","\u1ED7":"o","\u1ED8":"O","\u1ED9":"o","\u1EDA":"O","\u1EDB":"o","\u1EDC":"O","\u1EDD":"o","\u1EDE":"O","\u1EDF":"o","\u1EE0":"O","\u1EE1":"o","\u1EE2":"O","\u1EE3":"o","\u1EE4":"U","\u1EE5":"u","\u1EE6":"U","\u1EE7":"u","\u1EE8":"U","\u1EE9":"u","\u1EEA":"U","\u1EEB":"u","\u1EEC":"U","\u1EED":"u","\u1EEE":"U","\u1EEF":"u","\u1EF0":"U","\u1EF1":"u","\u1EF2":"Y","\u1EF3":"y","\u1EF4":"Y","\u1EF5":"y","\u1EF6":"Y","\u1EF7":"y","\u1EF8":"Y","\u1EF9":"y","\u2013":"-","\u2018":"'","\u2019":"'","\u201C":"\\"","\u201D":"\\"","\u201E":"\\"","\u2020":"+","\u2022":"*","\u2026":"...","\u20A0":"ecu","\u20A2":"cruzeiro","\u20A3":"french franc","\u20A4":"lira","\u20A5":"mill","\u20A6":"naira","\u20A7":"peseta","\u20A8":"rupee","\u20A9":"won","\u20AA":"new shequel","\u20AB":"dong","\u20AC":"euro","\u20AD":"kip","\u20AE":"tugrik","\u20AF":"drachma","\u20B0":"penny","\u20B1":"peso","\u20B2":"guarani","\u20B3":"austral","\u20B4":"hryvnia","\u20B5":"cedi","\u20B8":"kazakhstani tenge","\u20B9":"indian rupee","\u20BA":"turkish lira","\u20BD":"russian ruble","\u20BF":"bitcoin","\u2120":"sm","\u2122":"tm","\u2202":"d","\u2206":"delta","\u2211":"sum","\u221E":"infinity","\u2665":"love","\u5143":"yuan","\u5186":"yen","\uFDFC":"rial","\uFEF5":"laa","\uFEF7":"laa","\uFEF9":"lai","\uFEFB":"la"}`),a=JSON.parse('{"bg":{"\u0419":"Y","\u0426":"Ts","\u0429":"Sht","\u042A":"A","\u042C":"Y","\u0439":"y","\u0446":"ts","\u0449":"sht","\u044A":"a","\u044C":"y"},"de":{"\xC4":"AE","\xE4":"ae","\xD6":"OE","\xF6":"oe","\xDC":"UE","\xFC":"ue","\xDF":"ss","%":"prozent","&":"und","|":"oder","\u2211":"summe","\u221E":"unendlich","\u2665":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","\xA2":"centavos","\xA3":"libras","\xA4":"moneda","\u20A3":"francos","\u2211":"suma","\u221E":"infinito","\u2665":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","\xA2":"centime","\xA3":"livre","\xA4":"devise","\u20A3":"franc","\u2211":"somme","\u221E":"infini","\u2665":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","\xA2":"centavo","\u2211":"soma","\xA3":"libra","\u221E":"infinito","\u2665":"amor"},"uk":{"\u0418":"Y","\u0438":"y","\u0419":"Y","\u0439":"y","\u0426":"Ts","\u0446":"ts","\u0425":"Kh","\u0445":"kh","\u0429":"Shch","\u0449":"shch","\u0413":"H","\u0433":"h"},"vi":{"\u0110":"D","\u0111":"d"},"da":{"\xD8":"OE","\xF8":"oe","\xC5":"AA","\xE5":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"st\xF8rre end"},"nb":{"&":"og","\xC5":"AA","\xC6":"AE","\xD8":"OE","\xE5":"aa","\xE6":"ae","\xF8":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","\xC5":"AA","\xC4":"AE","\xD6":"OE","\xE5":"aa","\xE4":"ae","\xF6":"oe"}}');function i(s,o){if(typeof s!="string")throw new Error("slugify: string argument expected");o=typeof o=="string"?{replacement:o}:o||{};var h=a[o.locale]||{},r=o.replacement===void 0?"-":o.replacement,u=o.trim===void 0?!0:o.trim,c=s.normalize().split("").reduce(function(l,m){var f=h[m]||e[m]||m;return f===r&&(f=" "),l+f.replace(o.remove||/[^\w\s$*_+~.()'"!\-:@]+/g,"")},"");return o.strict&&(c=c.replace(/[^A-Za-z0-9\s]/g,"")),u&&(c=c.trim()),c=c.replace(/\s+/g,r),o.lower&&(c=c.toLowerCase()),c}return i.extend=function(s){Object.assign(e,s)},i})})(te);const re=n=>n.split(/[\s-]/g).map(T).join(" ");function ne(n,t){const{navigation:e}=K().content,a=s=>({...ie(["title",...e.fields])(s),...se(s==null?void 0:s.navigation)?s.navigation:{}}),i=n.sort((s,o)=>s._path.localeCompare(o._path)).reduce((s,o)=>{const h=o._path.substring(1).split("/"),r=o._id.split(":").slice(1),u=!!r[r.length-1].match(/([1-9][0-9]*\.)?index.md/g),c=f=>({title:f.title,_path:f._path,_file:f._file,children:[],...a(f),...f._draft?{_draft:!0}:{}}),l=c(o);if(u){const f=t[l._path];if(typeof(f==null?void 0:f.navigation)<"u"&&!(f!=null&&f.navigation))return s;if(o._path!=="/"){const d=c(o);l.children.push(d)}Object.assign(l,a(f))}return h.length===1?(s.push(l),s):(h.slice(0,-1).reduce((f,d,y)=>{const w="/"+h.slice(0,y+1).join("/"),v=t[w];if(typeof(v==null?void 0:v.navigation)<"u"&&!v.navigation)return[];let O=f.find(Y=>Y._path===w);return O||(O={title:re(d),_path:w,_file:o._file,children:[],...a(v)},f.push(O)),O.children},s).push(l),s)},[]);return D(i)}const ae=new Intl.Collator(void 0,{numeric:!0,sensitivity:"base"});function D(n){const t=n.sort((e,a)=>ae.compare(e._file,a._file));for(const e of t)e.children.length?D(e.children):delete e.children,delete e._file;return n}function ie(n){return t=>(t=t||{},n&&n.length?n.filter(e=>typeof t[e]<"u").reduce((e,a)=>Object.assign(e,{[a]:t[a]}),{}):t)}function se(n){return Object.prototype.toString.call(n)==="[object Object]"}const oe=n=>q(n,"/api/"+K().public.content.base),ce=Q(V({driver:B()}),"@content"),L=()=>H("previewToken").value;function ue(n){async function t(){const e=new Set(await n.getKeys("cache:")),a=L();if(a){(await n.getItem(`${a}$`).then(r=>r||{})).ignoreBuiltContents&&e.clear();const o=await n.getKeys(`${a}:`),h=await Promise.all(o.map(r=>n.getItem(r)));for(const r of h)e.delete(`cache:${r._id}`),r.__deleted||e.add(`${a}:${r._id}`)}return await Promise.all(Array.from(e).map(s=>n.getItem(s)))}return{storage:n,fetch:P(t),query:e=>J(P(t),e)}}let _,$;async function le(){return $?await $:_||($=fe(),_=await $),_}async function fe(){const n=R(),{clientDB:t}=K().public.content,e=ue(ce),a=await e.storage.getItem("integrity");if(t.integrity!==+a){const{contents:i,navigation:s}=await $fetch(oe("cache.json"));await Promise.all(i.map(o=>e.storage.setItem(`cache:${o._id}`,o))),await e.storage.setItem("navigation",s),await e.storage.setItem("integrity",t.integrity)}return await n.callHook("content:storage",e.storage),e}async function me(n){const t=await le();if(!L()&&Object.keys(n||{}).length===0)return t.storage.getItem("navigation");const e=await t.query(n).where({_partial:!1,navigation:{$ne:!1}}).find(),i=(await t.query().where({_path:/\/_dir$/i,_partial:!0}).find()).reduce((s,o)=>{o.title.toLowerCase()==="dir"&&(o.title=void 0);const h=o._path.split("/").slice(0,-1).join("/")||"/";return s[h]={...o,...o.body},s},{});return ne(e,i)}export{ce as contentStorage,ue as createDB,me as generateNavigation,L as getPreview,le as useContentDatabase}; diff --git a/nuxt/component.vue3.785c8108.js b/nuxt/component.vue3.75c601e5.js similarity index 73% rename from nuxt/component.vue3.785c8108.js rename to nuxt/component.vue3.75c601e5.js index 9184ad9..e1f1bb8 100644 --- a/nuxt/component.vue3.785c8108.js +++ b/nuxt/component.vue3.75c601e5.js @@ -1 +1 @@ -import{b as a}from"./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js";import{k as n,am as r,o as c,c as l,w as p,r as s}from"./entry.38f1b559.js";const _={name:r,props:{placeholder:String,tag:{type:String,default:"span"}}};function d(t,m,e,f,i,u){const o=a;return c(),l(o,{placeholder:e.placeholder,"placeholder-tag":e.tag},{default:p(()=>[s(t.$slots,"default")]),_:3},8,["placeholder","placeholder-tag"])}const x=n(_,[["render",d]]);export{x as default}; +import{b as a}from"./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js";import{k as n,ar as r,o as c,c as l,w as p,r as s}from"./entry.418f6f87.js";const _={name:r,props:{placeholder:String,tag:{type:String,default:"span"}}};function d(t,m,e,f,i,u){const o=a;return c(),l(o,{placeholder:e.placeholder,"placeholder-tag":e.tag},{default:p(()=>[s(t.$slots,"default")]),_:3},8,["placeholder","placeholder-tag"])}const x=n(_,[["render",d]]);export{x as default}; diff --git a/nuxt/content.38fadf68.js b/nuxt/content.d2758fa0.js similarity index 65% rename from nuxt/content.38fadf68.js rename to nuxt/content.d2758fa0.js index 16ba013..91c715a 100644 --- a/nuxt/content.38fadf68.js +++ b/nuxt/content.d2758fa0.js @@ -1 +1 @@ -import r from"./LayoutThemeToggle.15266736.js";import a from"./LayoutFooter.a16d87cb.js";import{k as c,o as _,e as l,f as m,i as t,h as o,r as p}from"./entry.38f1b559.js";import"./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js";const f="_wrapper_1hfaq_1",u="_content_1hfaq_7",d="_footer_1hfaq_22",h="_theme_toggle_1hfaq_28",g={wrapper:f,content:u,footer:d,theme_toggle:h},i={};function y(e,q){const s=r,n=a;return _(),l("div",{class:o(e.$style.wrapper)},[m("div",{class:o(e.$style.content)},[t(s,{class:o(e.$style.theme_toggle)},null,8,["class"]),p(e.$slots,"default")],2),t(n,{class:o(e.$style.footer)},null,8,["class"])],2)}const $={$style:g},L=c(i,[["render",y],["__cssModules",$]]);export{L as default}; +import r from"./LayoutThemeToggle.44c0caaa.js";import a from"./LayoutFooter.142f4d00.js";import{k as c,o as _,e as l,f as m,i as t,h as o,r as p}from"./entry.418f6f87.js";import"./LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js";const f="_wrapper_1hfaq_1",u="_content_1hfaq_7",d="_footer_1hfaq_22",h="_theme_toggle_1hfaq_28",g={wrapper:f,content:u,footer:d,theme_toggle:h},i={};function y(e,q){const s=r,n=a;return _(),l("div",{class:o(e.$style.wrapper)},[m("div",{class:o(e.$style.content)},[t(s,{class:o(e.$style.theme_toggle)},null,8,["class"]),p(e.$slots,"default")],2),t(n,{class:o(e.$style.footer)},null,8,["class"])],2)}const $={$style:g},L=c(i,[["render",y],["__cssModules",$]]);export{L as default}; diff --git a/nuxt/default.3c447965.js b/nuxt/default.ddb45e50.js similarity index 92% rename from nuxt/default.3c447965.js rename to nuxt/default.ddb45e50.js index dcd2c2b..ee2fb1f 100644 --- a/nuxt/default.3c447965.js +++ b/nuxt/default.ddb45e50.js @@ -1 +1 @@ -import T from"./LayoutMainMenuToggle.b8360182.js";import $ from"./LayoutMainMenu.f0c8d2bf.js";import{k as M,a as B,q as P,J as L,a6 as V,y as A,a7 as k,o as C,e as E,i as m,h as l,f as y,w as H,r as I,a0 as D}from"./entry.38f1b559.js";import"./LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js";import"./navigation.ce71bb44.js";function O(o){if(Array.isArray(o)){for(var e=0,t=Array(o.length);e1),r=[],c=!1,g=-1,d=void 0,s=void 0,a=void 0,b=function(e){return r.some(function(t){return!!(t.options.allowTouchMove&&t.options.allowTouchMove(e))})},f=function(e){var t=e||window.event;return b(t.target)||t.touches.length>1?!0:(t.preventDefault&&t.preventDefault(),!1)},F=function(e){if(a===void 0){var t=!!e&&e.reserveScrollBarGap===!0,i=window.innerWidth-document.documentElement.clientWidth;if(t&&i>0){var n=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right"),10);a=document.body.style.paddingRight,document.body.style.paddingRight=n+i+"px"}}d===void 0&&(d=document.body.style.overflow,document.body.style.overflow="hidden")},R=function(){a!==void 0&&(document.body.style.paddingRight=a,a=void 0),d!==void 0&&(document.body.style.overflow=d,d=void 0)},Y=function(){return window.requestAnimationFrame(function(){if(s===void 0){s={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left};var e=window,t=e.scrollY,i=e.scrollX,n=e.innerHeight;document.body.style.position="fixed",document.body.style.top=-t,document.body.style.left=-i,setTimeout(function(){return window.requestAnimationFrame(function(){var v=n-window.innerHeight;v&&t>=n&&(document.body.style.top=-(t+v))})},300)}})},q=function(){if(s!==void 0){var e=-parseInt(document.body.style.top,10),t=-parseInt(document.body.style.left,10);document.body.style.position=s.position,document.body.style.top=s.top,document.body.style.left=s.left,window.scrollTo(t,e),s=void 0}},N=function(e){return e?e.scrollHeight-e.scrollTop<=e.clientHeight:!1},W=function(e,t){var i=e.targetTouches[0].clientY-g;return b(e.target)?!1:t&&t.scrollTop===0&&i>0||N(t)&&i<0?f(e):(e.stopPropagation(),!0)},z=function(e,t){if(!e){console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");return}if(!r.some(function(n){return n.targetElement===e})){var i={targetElement:e,options:t||{}};r=[].concat(O(r),[i]),u?Y():F(t),u&&(e.ontouchstart=function(n){n.targetTouches.length===1&&(g=n.targetTouches[0].clientY)},e.ontouchmove=function(n){n.targetTouches.length===1&&W(n,e)},c||(document.addEventListener("touchmove",f,p?{passive:!1}:void 0),c=!0))}},J=function(){u&&(r.forEach(function(e){e.targetElement.ontouchstart=null,e.targetElement.ontouchmove=null}),c&&(document.removeEventListener("touchmove",f,p?{passive:!1}:void 0),c=!1),g=-1),u?q():R(),r=[]};const U="_grid_bdvnl_1",X="_main_bdvnl_17",j="_sidebar_bdvnl_25",x="_active_bdvnl_38",G="_menu_bdvnl_44",K="_menu_toggle_bdvnl_64",Q="_shifted_bdvnl_81",Z="_footer_bdvnl_88",ee={grid:U,main:X,sidebar:j,active:x,menu:G,menu_toggle:K,shifted:Q,footer:Z},oe=B({setup(){const o=P(0),e=()=>{o.value=window.scrollY};return L(()=>addEventListener("scroll",e)),V(()=>removeEventListener("scroll",e)),{menuShifted:A(()=>o.value>60),scrollTop:o}},data(){return{menuVisible:!1}},methods:{toggleMenu(){this.$data.menuVisible=!this.$data.menuVisible}},watch:{$route(){!this.menuVisible||k(()=>this.toggleMenu())},menuVisible(o){o&&z(this.$refs.sidebar),J()}}});function te(o,e,t,i,n,v){const w=T,_=$,S=D;return C(),E("div",{class:l(o.$style.grid)},[m(w,{active:o.menuVisible,class:l([o.$style.menu_toggle,{[o.$style.shifted]:o.menuShifted,[o.$style.active]:o.menuVisible}]),onClick:o.toggleMenu},null,8,["active","class","onClick"]),y("div",{class:l([o.$style.sidebar,{[o.$style.active]:o.menuVisible}]),ref:"sidebar"},[y("div",{class:l(o.$style.menu)},[m(_)],2)],2),y("div",{class:l(o.$style.main)},[m(S,{name:"content"},{default:H(()=>[I(o.$slots,"default")]),_:3})],2)],2)}const ne={$style:ee},ae=M(oe,[["render",te],["__cssModules",ne]]);export{ae as default}; +import T from"./LayoutMainMenuToggle.2e207927.js";import $ from"./LayoutMainMenu.ff316230.js";import{k as M,a as B,q as P,J as L,ab as V,y as A,ac as k,o as C,e as E,i as m,h as l,f as y,w as H,r as I,a6 as D}from"./entry.418f6f87.js";import"./LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js";import"./navigation.123e305f.js";function O(o){if(Array.isArray(o)){for(var e=0,t=Array(o.length);e1),r=[],c=!1,g=-1,d=void 0,s=void 0,a=void 0,b=function(e){return r.some(function(t){return!!(t.options.allowTouchMove&&t.options.allowTouchMove(e))})},f=function(e){var t=e||window.event;return b(t.target)||t.touches.length>1?!0:(t.preventDefault&&t.preventDefault(),!1)},F=function(e){if(a===void 0){var t=!!e&&e.reserveScrollBarGap===!0,i=window.innerWidth-document.documentElement.clientWidth;if(t&&i>0){var n=parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right"),10);a=document.body.style.paddingRight,document.body.style.paddingRight=n+i+"px"}}d===void 0&&(d=document.body.style.overflow,document.body.style.overflow="hidden")},R=function(){a!==void 0&&(document.body.style.paddingRight=a,a=void 0),d!==void 0&&(document.body.style.overflow=d,d=void 0)},Y=function(){return window.requestAnimationFrame(function(){if(s===void 0){s={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left};var e=window,t=e.scrollY,i=e.scrollX,n=e.innerHeight;document.body.style.position="fixed",document.body.style.top=-t,document.body.style.left=-i,setTimeout(function(){return window.requestAnimationFrame(function(){var v=n-window.innerHeight;v&&t>=n&&(document.body.style.top=-(t+v))})},300)}})},q=function(){if(s!==void 0){var e=-parseInt(document.body.style.top,10),t=-parseInt(document.body.style.left,10);document.body.style.position=s.position,document.body.style.top=s.top,document.body.style.left=s.left,window.scrollTo(t,e),s=void 0}},N=function(e){return e?e.scrollHeight-e.scrollTop<=e.clientHeight:!1},W=function(e,t){var i=e.targetTouches[0].clientY-g;return b(e.target)?!1:t&&t.scrollTop===0&&i>0||N(t)&&i<0?f(e):(e.stopPropagation(),!0)},z=function(e,t){if(!e){console.error("disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.");return}if(!r.some(function(n){return n.targetElement===e})){var i={targetElement:e,options:t||{}};r=[].concat(O(r),[i]),u?Y():F(t),u&&(e.ontouchstart=function(n){n.targetTouches.length===1&&(g=n.targetTouches[0].clientY)},e.ontouchmove=function(n){n.targetTouches.length===1&&W(n,e)},c||(document.addEventListener("touchmove",f,p?{passive:!1}:void 0),c=!0))}},J=function(){u&&(r.forEach(function(e){e.targetElement.ontouchstart=null,e.targetElement.ontouchmove=null}),c&&(document.removeEventListener("touchmove",f,p?{passive:!1}:void 0),c=!1),g=-1),u?q():R(),r=[]};const U="_grid_bdvnl_1",X="_main_bdvnl_17",j="_sidebar_bdvnl_25",x="_active_bdvnl_38",G="_menu_bdvnl_44",K="_menu_toggle_bdvnl_64",Q="_shifted_bdvnl_81",Z="_footer_bdvnl_88",ee={grid:U,main:X,sidebar:j,active:x,menu:G,menu_toggle:K,shifted:Q,footer:Z},oe=B({setup(){const o=P(0),e=()=>{o.value=window.scrollY};return L(()=>addEventListener("scroll",e)),V(()=>removeEventListener("scroll",e)),{menuShifted:A(()=>o.value>60),scrollTop:o}},data(){return{menuVisible:!1}},methods:{toggleMenu(){this.$data.menuVisible=!this.$data.menuVisible}},watch:{$route(){!this.menuVisible||k(()=>this.toggleMenu())},menuVisible(o){o&&z(this.$refs.sidebar),J()}}});function te(o,e,t,i,n,v){const w=T,_=$,S=D;return C(),E("div",{class:l(o.$style.grid)},[m(w,{active:o.menuVisible,class:l([o.$style.menu_toggle,{[o.$style.shifted]:o.menuShifted,[o.$style.active]:o.menuVisible}]),onClick:o.toggleMenu},null,8,["active","class","onClick"]),y("div",{class:l([o.$style.sidebar,{[o.$style.active]:o.menuVisible}]),ref:"sidebar"},[y("div",{class:l(o.$style.menu)},[m(_)],2)],2),y("div",{class:l(o.$style.main)},[m(S,{name:"content"},{default:H(()=>[I(o.$slots,"default")]),_:3})],2)],2)}const ne={$style:ee},ae=M(oe,[["render",te],["__cssModules",ne]]);export{ae as default}; diff --git a/nuxt/entry.38f1b559.js b/nuxt/entry.38f1b559.js deleted file mode 100644 index c893cc1..0000000 --- a/nuxt/entry.38f1b559.js +++ /dev/null @@ -1,7 +0,0 @@ -function Ho(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}const tu="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",nu=Ho(tu);function Nl(e){return!!e||e===""}function un(e){if(Y(e)){const t={};for(let n=0;n{if(n){const r=n.split(ou);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function dt(e){let t="";if(we(e))t=e;else if(Y(e))for(let n=0;nwe(e)?e:e==null?"":Y(e)||he(e)&&(e.toString===Ul||!X(e.toString))?JSON.stringify(e,jl,2):String(e),jl=(e,t)=>t&&t.__v_isRef?jl(e,t.value):nn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o])=>(n[`${r} =>`]=o,n),{})}:Fl(t)?{[`Set(${t.size})`]:[...t.values()]}:he(t)&&!Y(t)&&!ql(t)?String(t):t,de={},tn=[],Ze=()=>{},lu=()=>!1,iu=/^on[^a-z]/,Vn=e=>iu.test(e),No=e=>e.startsWith("onUpdate:"),Se=Object.assign,jo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},au=Object.prototype.hasOwnProperty,re=(e,t)=>au.call(e,t),Y=Array.isArray,nn=e=>Cr(e)==="[object Map]",Fl=e=>Cr(e)==="[object Set]",X=e=>typeof e=="function",we=e=>typeof e=="string",Fo=e=>typeof e=="symbol",he=e=>e!==null&&typeof e=="object",Uo=e=>he(e)&&X(e.then)&&X(e.catch),Ul=Object.prototype.toString,Cr=e=>Ul.call(e),uu=e=>Cr(e).slice(8,-1),ql=e=>Cr(e)==="[object Object]",qo=e=>we(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ln=Ho(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),xr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},cu=/-(\w)/g,it=xr(e=>e.replace(cu,(t,n)=>n?n.toUpperCase():"")),fu=/\B([A-Z])/g,yn=xr(e=>e.replace(fu,"-$1").toLowerCase()),Rr=xr(e=>e.charAt(0).toUpperCase()+e.slice(1)),Fr=xr(e=>e?`on${Rr(e)}`:""),jn=(e,t)=>!Object.is(e,t),Mn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Ko=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let vs;const du=()=>vs||(vs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let rt;class pu{constructor(t=!1){this.detached=t,this.active=!0,this.effects=[],this.cleanups=[],this.parent=rt,!t&&rt&&(this.index=(rt.scopes||(rt.scopes=[])).push(this)-1)}run(t){if(this.active){const n=rt;try{return rt=this,t()}finally{rt=n}}}on(){rt=this}off(){rt=this.parent}stop(t){if(this.active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Kl=e=>(e.w&Tt)>0,zl=e=>(e.n&Tt)>0,gu=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(u==="length"||u>=r)&&i.push(a)});else switch(n!==void 0&&i.push(l.get(n)),t){case"add":Y(e)?qo(n)&&i.push(l.get("length")):(i.push(l.get(Kt)),nn(e)&&i.push(l.get(uo)));break;case"delete":Y(e)||(i.push(l.get(Kt)),nn(e)&&i.push(l.get(uo)));break;case"set":nn(e)&&i.push(l.get(Kt));break}if(i.length===1)i[0]&&co(i[0]);else{const a=[];for(const u of i)u&&a.push(...u);co(zo(a))}}function co(e,t){const n=Y(e)?e:[...e];for(const r of n)r.computed&&ws(r);for(const r of n)r.computed||ws(r)}function ws(e,t){(e!==Xe||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const yu=Ho("__proto__,__v_isRef,__isVue"),Yl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Fo)),_u=Wo(),vu=Wo(!1,!0),bu=Wo(!0),Es=wu();function wu(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=le(this);for(let s=0,l=this.length;s{e[t]=function(...n){_n();const r=le(this)[t].apply(this,n);return vn(),r}}),e}function Wo(e=!1,t=!1){return function(r,o,s){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&s===(e?t?Bu:Gl:t?Zl:Xl).get(r))return r;const l=Y(r);if(!e&&l&&re(Es,o))return Reflect.get(Es,o,s);const i=Reflect.get(r,o,s);return(Fo(o)?Yl.has(o):yu(o))||(e||Fe(r,"get",o),t)?i:Re(i)?l&&qo(o)?i:i.value:he(i)?e?ei(i):et(i):i}}const Eu=Ql(),Cu=Ql(!0);function Ql(e=!1){return function(n,r,o,s){let l=n[r];if(cn(l)&&Re(l)&&!Re(o))return!1;if(!e&&(!cr(o)&&!cn(o)&&(l=le(l),o=le(o)),!Y(n)&&Re(l)&&!Re(o)))return l.value=o,!0;const i=Y(n)&&qo(r)?Number(r)e,Pr=e=>Reflect.getPrototypeOf(e);function Zn(e,t,n=!1,r=!1){e=e.__v_raw;const o=le(e),s=le(t);n||(t!==s&&Fe(o,"get",t),Fe(o,"get",s));const{has:l}=Pr(o),i=r?Yo:n?Xo:Fn;if(l.call(o,t))return i(e.get(t));if(l.call(o,s))return i(e.get(s));e!==o&&e.get(t)}function Gn(e,t=!1){const n=this.__v_raw,r=le(n),o=le(e);return t||(e!==o&&Fe(r,"has",e),Fe(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function er(e,t=!1){return e=e.__v_raw,!t&&Fe(le(e),"iterate",Kt),Reflect.get(e,"size",e)}function Cs(e){e=le(e);const t=le(this);return Pr(t).has.call(t,e)||(t.add(e),pt(t,"add",e,e)),this}function xs(e,t){t=le(t);const n=le(this),{has:r,get:o}=Pr(n);let s=r.call(n,e);s||(e=le(e),s=r.call(n,e));const l=o.call(n,e);return n.set(e,t),s?jn(t,l)&&pt(n,"set",e,t):pt(n,"add",e,t),this}function Rs(e){const t=le(this),{has:n,get:r}=Pr(t);let o=n.call(t,e);o||(e=le(e),o=n.call(t,e)),r&&r.call(t,e);const s=t.delete(e);return o&&pt(t,"delete",e,void 0),s}function Ps(){const e=le(this),t=e.size!==0,n=e.clear();return t&&pt(e,"clear",void 0,void 0),n}function tr(e,t){return function(r,o){const s=this,l=s.__v_raw,i=le(l),a=t?Yo:e?Xo:Fn;return!e&&Fe(i,"iterate",Kt),l.forEach((u,c)=>r.call(o,a(u),a(c),s))}}function nr(e,t,n){return function(...r){const o=this.__v_raw,s=le(o),l=nn(s),i=e==="entries"||e===Symbol.iterator&&l,a=e==="keys"&&l,u=o[e](...r),c=n?Yo:t?Xo:Fn;return!t&&Fe(s,"iterate",a?uo:Kt),{next(){const{value:f,done:p}=u.next();return p?{value:f,done:p}:{value:i?[c(f[0]),c(f[1])]:c(f),done:p}},[Symbol.iterator](){return this}}}}function _t(e){return function(...t){return e==="delete"?!1:this}}function Au(){const e={get(s){return Zn(this,s)},get size(){return er(this)},has:Gn,add:Cs,set:xs,delete:Rs,clear:Ps,forEach:tr(!1,!1)},t={get(s){return Zn(this,s,!1,!0)},get size(){return er(this)},has:Gn,add:Cs,set:xs,delete:Rs,clear:Ps,forEach:tr(!1,!0)},n={get(s){return Zn(this,s,!0)},get size(){return er(this,!0)},has(s){return Gn.call(this,s,!0)},add:_t("add"),set:_t("set"),delete:_t("delete"),clear:_t("clear"),forEach:tr(!0,!1)},r={get(s){return Zn(this,s,!0,!0)},get size(){return er(this,!0)},has(s){return Gn.call(this,s,!0)},add:_t("add"),set:_t("set"),delete:_t("delete"),clear:_t("clear"),forEach:tr(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(s=>{e[s]=nr(s,!1,!1),n[s]=nr(s,!0,!1),t[s]=nr(s,!1,!0),r[s]=nr(s,!0,!0)}),[e,n,t,r]}const[Tu,Ou,Lu,Mu]=Au();function Qo(e,t){const n=t?e?Mu:Lu:e?Ou:Tu;return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(re(n,o)&&o in r?n:r,o,s)}const Du={get:Qo(!1,!1)},Iu={get:Qo(!1,!0)},$u={get:Qo(!0,!1)},Xl=new WeakMap,Zl=new WeakMap,Gl=new WeakMap,Bu=new WeakMap;function Hu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Nu(e){return e.__v_skip||!Object.isExtensible(e)?0:Hu(uu(e))}function et(e){return cn(e)?e:Jo(e,!1,Jl,Du,Xl)}function ju(e){return Jo(e,!1,Su,Iu,Zl)}function ei(e){return Jo(e,!0,ku,$u,Gl)}function Jo(e,t,n,r,o){if(!he(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const l=Nu(e);if(l===0)return e;const i=new Proxy(e,l===2?r:n);return o.set(e,i),i}function rn(e){return cn(e)?rn(e.__v_raw):!!(e&&e.__v_isReactive)}function cn(e){return!!(e&&e.__v_isReadonly)}function cr(e){return!!(e&&e.__v_isShallow)}function ti(e){return rn(e)||cn(e)}function le(e){const t=e&&e.__v_raw;return t?le(t):e}function ni(e){return ur(e,"__v_skip",!0),e}const Fn=e=>he(e)?et(e):e,Xo=e=>he(e)?ei(e):e;function ri(e){kt&&Xe&&(e=le(e),Wl(e.dep||(e.dep=zo())))}function oi(e,t){e=le(e),e.dep&&co(e.dep)}function Re(e){return!!(e&&e.__v_isRef===!0)}function ze(e){return si(e,!1)}function fo(e){return si(e,!0)}function si(e,t){return Re(e)?e:new Fu(e,t)}class Fu{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:le(t),this._value=n?t:Fn(t)}get value(){return ri(this),this._value}set value(t){const n=this.__v_isShallow||cr(t)||cn(t);t=n?t:le(t),jn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Fn(t),oi(this))}}function be(e){return Re(e)?e.value:e}const Uu={get:(e,t,n)=>be(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Re(o)&&!Re(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function li(e){return rn(e)?e:new Proxy(e,Uu)}function ii(e){const t=Y(e)?new Array(e.length):{};for(const n in e)t[n]=Zo(e,n);return t}class qu{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function Zo(e,t,n){const r=e[t];return Re(r)?r:new qu(e,t,n)}var ai;class Ku{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[ai]=!1,this._dirty=!0,this.effect=new Vo(t,()=>{this._dirty||(this._dirty=!0,oi(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=le(this);return ri(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}ai="__v_isReadonly";function zu(e,t,n=!1){let r,o;const s=X(e);return s?(r=e,o=Ze):(r=e.get,o=e.set),new Ku(r,o,s||!o,n)}function St(e,t,n,r){let o;try{o=r?e(...r):e()}catch(s){bn(s,t,n)}return o}function Ve(e,t,n,r){if(X(e)){const s=St(e,t,n,r);return s&&Uo(s)&&s.catch(l=>{bn(l,t,n)}),s}const o=[];for(let s=0;s>>1;qn(Te[r])st&&Te.splice(t,1)}function fi(e){Y(e)?on.push(...e):(!ft||!ft.includes(e,e.allowRecurse?Ut+1:Ut))&&on.push(e),ci()}function ks(e,t=Un?st+1:0){for(;tqn(n)-qn(r)),Ut=0;Ute.id==null?1/0:e.id,Qu=(e,t)=>{const n=qn(e)-qn(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function di(e){po=!1,Un=!0,Te.sort(Qu);const t=Ze;try{for(st=0;stg.trim())),f&&(o=n.map(Ko))}let i,a=r[i=Fr(t)]||r[i=Fr(it(t))];!a&&s&&(a=r[i=Fr(yn(t))]),a&&Ve(a,e,6,o);const u=r[i+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,Ve(u,e,6,o)}}function pi(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let l={},i=!1;if(!X(e)){const a=u=>{const c=pi(u,t,!0);c&&(i=!0,Se(l,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!s&&!i?(he(e)&&r.set(e,null),null):(Y(s)?s.forEach(a=>l[a]=null):Se(l,s),he(e)&&r.set(e,l),l)}function Sr(e,t){return!e||!Vn(t)?!1:(t=t.slice(2).replace(/Once$/,""),re(e,t[0].toLowerCase()+t.slice(1))||re(e,yn(t))||re(e,t))}let De=null,Ar=null;function dr(e){const t=De;return De=e,Ar=e&&e.type.__scopeId||null,t}function Nm(e){Ar=e}function jm(){Ar=null}function Tr(e,t=De,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&Ns(-1);const s=dr(t);let l;try{l=e(...o)}finally{dr(s),r._d&&Ns(1)}return l};return r._n=!0,r._c=!0,r._d=!0,r}function Ur(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:s,propsOptions:[l],slots:i,attrs:a,emit:u,render:c,renderCache:f,data:p,setupState:g,ctx:_,inheritAttrs:C}=e;let R,y;const h=dr(e);try{if(n.shapeFlag&4){const w=o||r;R=qe(c.call(w,w,f,s,g,p,_)),y=a}else{const w=t;R=qe(w.length>1?w(s,{attrs:a,slots:i,emit:u}):w(s,null)),y=t.props?a:Zu(a)}}catch(w){In.length=0,bn(w,e,1),R=ge(Ie)}let v=R;if(y&&C!==!1){const w=Object.keys(y),{shapeFlag:T}=v;w.length&&T&7&&(l&&w.some(No)&&(y=Gu(y,l)),v=gt(v,y))}return n.dirs&&(v=gt(v),v.dirs=v.dirs?v.dirs.concat(n.dirs):n.dirs),n.transition&&(v.transition=n.transition),R=v,dr(h),R}function Xu(e){let t;for(let n=0;n{let t;for(const n in e)(n==="class"||n==="style"||Vn(n))&&((t||(t={}))[n]=e[n]);return t},Gu=(e,t)=>{const n={};for(const r in e)(!No(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function ec(e,t,n){const{props:r,children:o,component:s}=e,{props:l,children:i,patchFlag:a}=t,u=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?Ss(r,l,u):!!l;if(a&8){const c=t.dynamicProps;for(let f=0;fe.__isSuspense,tc={name:"Suspense",__isSuspense:!0,process(e,t,n,r,o,s,l,i,a,u){e==null?nc(t,n,r,o,s,l,i,a,u):rc(e,t,n,r,o,l,i,a,u)},hydrate:oc,create:ts,normalize:sc},gi=tc;function Kn(e,t){const n=e.props&&e.props[t];X(n)&&n()}function nc(e,t,n,r,o,s,l,i,a){const{p:u,o:{createElement:c}}=a,f=c("div"),p=e.suspense=ts(e,o,r,t,f,n,s,l,i,a);u(null,p.pendingBranch=e.ssContent,f,null,r,p,s,l),p.deps>0?(Kn(e,"onPending"),Kn(e,"onFallback"),u(null,e.ssFallback,t,n,r,null,s,l),sn(p,e.ssFallback)):p.resolve()}function rc(e,t,n,r,o,s,l,i,{p:a,um:u,o:{createElement:c}}){const f=t.suspense=e.suspense;f.vnode=t,t.el=e.el;const p=t.ssContent,g=t.ssFallback,{activeBranch:_,pendingBranch:C,isInFallback:R,isHydrating:y}=f;if(C)f.pendingBranch=p,lt(p,C)?(a(C,p,f.hiddenContainer,null,o,f,s,l,i),f.deps<=0?f.resolve():R&&(a(_,g,n,r,o,null,s,l,i),sn(f,g))):(f.pendingId++,y?(f.isHydrating=!1,f.activeBranch=C):u(C,o,f),f.deps=0,f.effects.length=0,f.hiddenContainer=c("div"),R?(a(null,p,f.hiddenContainer,null,o,f,s,l,i),f.deps<=0?f.resolve():(a(_,g,n,r,o,null,s,l,i),sn(f,g))):_&<(p,_)?(a(_,p,n,r,o,f,s,l,i),f.resolve(!0)):(a(null,p,f.hiddenContainer,null,o,f,s,l,i),f.deps<=0&&f.resolve()));else if(_&<(p,_))a(_,p,n,r,o,f,s,l,i),sn(f,p);else if(Kn(t,"onPending"),f.pendingBranch=p,f.pendingId++,a(null,p,f.hiddenContainer,null,o,f,s,l,i),f.deps<=0)f.resolve();else{const{timeout:h,pendingId:v}=f;h>0?setTimeout(()=>{f.pendingId===v&&f.fallback(g)},h):h===0&&f.fallback(g)}}function ts(e,t,n,r,o,s,l,i,a,u,c=!1){const{p:f,m:p,um:g,n:_,o:{parentNode:C,remove:R}}=u,y=Ko(e.props&&e.props.timeout),h={vnode:e,parent:t,parentComponent:n,isSVG:l,container:r,hiddenContainer:o,anchor:s,deps:0,pendingId:0,timeout:typeof y=="number"?y:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:c,isUnmounted:!1,effects:[],resolve(v=!1){const{vnode:w,activeBranch:T,pendingBranch:O,pendingId:I,effects:k,parentComponent:U,container:F}=h;if(h.isHydrating)h.isHydrating=!1;else if(!v){const Z=T&&O.transition&&O.transition.mode==="out-in";Z&&(T.transition.afterLeave=()=>{I===h.pendingId&&p(O,F,j,0)});let{anchor:j}=h;T&&(j=_(T),g(T,U,h,!0)),Z||p(O,F,j,0)}sn(h,O),h.pendingBranch=null,h.isInFallback=!1;let W=h.parent,H=!1;for(;W;){if(W.pendingBranch){W.effects.push(...k),H=!0;break}W=W.parent}H||fi(k),h.effects=[],Kn(w,"onResolve")},fallback(v){if(!h.pendingBranch)return;const{vnode:w,activeBranch:T,parentComponent:O,container:I,isSVG:k}=h;Kn(w,"onFallback");const U=_(T),F=()=>{!h.isInFallback||(f(null,v,I,U,O,null,k,i,a),sn(h,v))},W=v.transition&&v.transition.mode==="out-in";W&&(T.transition.afterLeave=F),h.isInFallback=!0,g(T,O,null,!0),W||F()},move(v,w,T){h.activeBranch&&p(h.activeBranch,v,w,T),h.container=v},next(){return h.activeBranch&&_(h.activeBranch)},registerDep(v,w){const T=!!h.pendingBranch;T&&h.deps++;const O=v.vnode.el;v.asyncDep.catch(I=>{bn(I,v,0)}).then(I=>{if(v.isUnmounted||h.isUnmounted||h.pendingId!==v.suspenseId)return;v.asyncResolved=!0;const{vnode:k}=v;bo(v,I,!1),O&&(k.el=O);const U=!O&&v.subTree.el;w(v,k,C(O||v.subTree.el),O?null:_(v.subTree),h,l,a),U&&R(U),es(v,k.el),T&&--h.deps===0&&h.resolve()})},unmount(v,w){h.isUnmounted=!0,h.activeBranch&&g(h.activeBranch,n,v,w),h.pendingBranch&&g(h.pendingBranch,n,v,w)}};return h}function oc(e,t,n,r,o,s,l,i,a){const u=t.suspense=ts(t,r,n,e.parentNode,document.createElement("div"),null,o,s,l,i,!0),c=a(e,u.pendingBranch=t.ssContent,n,u,s,l);return u.deps===0&&u.resolve(),c}function sc(e){const{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=As(r?n.default:n),e.ssFallback=r?As(n.fallback):ge(Ie)}function As(e){let t;if(X(e)){const n=fn&&e._c;n&&(e._d=!1,Oe()),e=e(),n&&(e._d=!0,t=Ke,$i())}return Y(e)&&(e=Xu(e)),e=qe(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function mi(e,t){t&&t.pendingBranch?Y(e)?t.effects.push(...e):t.effects.push(e):fi(e)}function sn(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e,o=n.el=t.el;r&&r.subTree===n&&(r.vnode.el=o,es(r,o))}function ln(e,t){if(Ee){let n=Ee.provides;const r=Ee.parent&&Ee.parent.provides;r===n&&(n=Ee.provides=Object.create(r)),n[e]=t}}function Ge(e,t,n=!1){const r=Ee||De;if(r){const o=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&X(t)?t.call(r.proxy):t}}function lc(e,t){return ns(e,null,t)}const Ts={};function je(e,t,n){return ns(e,t,n)}function ns(e,t,{immediate:n,deep:r,flush:o,onTrack:s,onTrigger:l}=de){const i=Ee;let a,u=!1,c=!1;if(Re(e)?(a=()=>e.value,u=cr(e)):rn(e)?(a=()=>e,r=!0):Y(e)?(c=!0,u=e.some(y=>rn(y)||cr(y)),a=()=>e.map(y=>{if(Re(y))return y.value;if(rn(y))return en(y);if(X(y))return St(y,i,2)})):X(e)?t?a=()=>St(e,i,2):a=()=>{if(!(i&&i.isUnmounted))return f&&f(),Ve(e,i,3,[p])}:a=Ze,t&&r){const y=a;a=()=>en(y())}let f,p=y=>{f=R.onStop=()=>{St(y,i,4)}};if(pn)return p=Ze,t?n&&Ve(t,i,3,[a(),c?[]:void 0,p]):a(),Ze;let g=c?[]:Ts;const _=()=>{if(!!R.active)if(t){const y=R.run();(r||u||(c?y.some((h,v)=>jn(h,g[v])):jn(y,g)))&&(f&&f(),Ve(t,i,3,[y,g===Ts?void 0:g,p]),g=y)}else R.run()};_.allowRecurse=!!t;let C;o==="sync"?C=_:o==="post"?C=()=>Pe(_,i&&i.suspense):(_.pre=!0,i&&(_.id=i.uid),C=()=>kr(_));const R=new Vo(a,C);return t?n?_():g=R.run():o==="post"?Pe(R.run.bind(R),i&&i.suspense):R.run(),()=>{R.stop(),i&&i.scope&&jo(i.scope.effects,R)}}function ic(e,t,n){const r=this.proxy,o=we(e)?e.includes(".")?yi(r,e):()=>r[e]:e.bind(r,r);let s;X(t)?s=t:(s=t.handler,n=t);const l=Ee;Ot(this);const i=ns(o,s.bind(r),n);return l?Ot(l):At(),i}function yi(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{en(n,t)});else if(ql(e))for(const n in e)en(e[n],t);return e}function ac(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Yn(()=>{e.isMounted=!0}),En(()=>{e.isUnmounting=!0}),e}const Ue=[Function,Array],uc={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ue,onEnter:Ue,onAfterEnter:Ue,onEnterCancelled:Ue,onBeforeLeave:Ue,onLeave:Ue,onAfterLeave:Ue,onLeaveCancelled:Ue,onBeforeAppear:Ue,onAppear:Ue,onAfterAppear:Ue,onAppearCancelled:Ue},setup(e,{slots:t}){const n=yt(),r=ac();let o;return()=>{const s=t.default&&bi(t.default(),!0);if(!s||!s.length)return;let l=s[0];if(s.length>1){for(const C of s)if(C.type!==Ie){l=C;break}}const i=le(e),{mode:a}=i;if(r.isLeaving)return qr(l);const u=Os(l);if(!u)return qr(l);const c=ho(u,i,r,n);pr(u,c);const f=n.subTree,p=f&&Os(f);let g=!1;const{getTransitionKey:_}=u.type;if(_){const C=_();o===void 0?o=C:C!==o&&(o=C,g=!0)}if(p&&p.type!==Ie&&(!lt(u,p)||g)){const C=ho(p,i,r,n);if(pr(p,C),a==="out-in")return r.isLeaving=!0,C.afterLeave=()=>{r.isLeaving=!1,n.update()},qr(l);a==="in-out"&&u.type!==Ie&&(C.delayLeave=(R,y,h)=>{const v=vi(r,p);v[String(p.key)]=p,R._leaveCb=()=>{y(),R._leaveCb=void 0,delete c.delayedLeave},c.delayedLeave=h})}return l}}},_i=uc;function vi(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function ho(e,t,n,r){const{appear:o,mode:s,persisted:l=!1,onBeforeEnter:i,onEnter:a,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:f,onLeave:p,onAfterLeave:g,onLeaveCancelled:_,onBeforeAppear:C,onAppear:R,onAfterAppear:y,onAppearCancelled:h}=t,v=String(e.key),w=vi(n,e),T=(k,U)=>{k&&Ve(k,r,9,U)},O=(k,U)=>{const F=U[1];T(k,U),Y(k)?k.every(W=>W.length<=1)&&F():k.length<=1&&F()},I={mode:s,persisted:l,beforeEnter(k){let U=i;if(!n.isMounted)if(o)U=C||i;else return;k._leaveCb&&k._leaveCb(!0);const F=w[v];F&<(e,F)&&F.el._leaveCb&&F.el._leaveCb(),T(U,[k])},enter(k){let U=a,F=u,W=c;if(!n.isMounted)if(o)U=R||a,F=y||u,W=h||c;else return;let H=!1;const Z=k._enterCb=j=>{H||(H=!0,j?T(W,[k]):T(F,[k]),I.delayedLeave&&I.delayedLeave(),k._enterCb=void 0)};U?O(U,[k,Z]):Z()},leave(k,U){const F=String(e.key);if(k._enterCb&&k._enterCb(!0),n.isUnmounting)return U();T(f,[k]);let W=!1;const H=k._leaveCb=Z=>{W||(W=!0,U(),Z?T(_,[k]):T(g,[k]),k._leaveCb=void 0,w[F]===e&&delete w[F])};w[F]=e,p?O(p,[k,H]):H()},clone(k){return ho(k,t,n,r)}};return I}function qr(e){if(Wn(e))return e=gt(e),e.children=null,e}function Os(e){return Wn(e)?e.children?e.children[0]:void 0:e}function pr(e,t){e.shapeFlag&6&&e.component?pr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function bi(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let s=0;s!!e.type.__asyncLoader;function ne(e){X(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:s,suspensible:l=!0,onError:i}=e;let a=null,u,c=0;const f=()=>(c++,a=null,p()),p=()=>{let g;return a||(g=a=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),i)return new Promise((C,R)=>{i(_,()=>C(f()),()=>R(_),c+1)});throw _}).then(_=>g!==a&&a?a:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),u=_,_)))};return Le({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return u},setup(){const g=Ee;if(u)return()=>Kr(u,g);const _=h=>{a=null,bn(h,g,13,!r)};if(l&&g.suspense||pn)return p().then(h=>()=>Kr(h,g)).catch(h=>(_(h),()=>r?ge(r,{error:h}):null));const C=ze(!1),R=ze(),y=ze(!!o);return o&&setTimeout(()=>{y.value=!1},o),s!=null&&setTimeout(()=>{if(!C.value&&!R.value){const h=new Error(`Async component timed out after ${s}ms.`);_(h),R.value=h}},s),p().then(()=>{C.value=!0,g.parent&&Wn(g.parent.vnode)&&kr(g.parent.update)}).catch(h=>{_(h),R.value=h}),()=>{if(C.value&&u)return Kr(u,g);if(R.value&&r)return ge(r,{error:R.value});if(n&&!y.value)return ge(n)}}})}function Kr(e,{vnode:{ref:t,props:n,children:r,shapeFlag:o},parent:s}){const l=ge(e,n,r);return l.ref=t,l}const Wn=e=>e.type.__isKeepAlive,cc={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=yt(),r=n.ctx;if(!r.renderer)return()=>{const h=t.default&&t.default();return h&&h.length===1?h[0]:h};const o=new Map,s=new Set;let l=null;const i=n.suspense,{renderer:{p:a,m:u,um:c,o:{createElement:f}}}=r,p=f("div");r.activate=(h,v,w,T,O)=>{const I=h.component;u(h,v,w,0,i),a(I.vnode,h,v,w,I,i,T,h.slotScopeIds,O),Pe(()=>{I.isDeactivated=!1,I.a&&Mn(I.a);const k=h.props&&h.props.onVnodeMounted;k&&Be(k,I.parent,h)},i)},r.deactivate=h=>{const v=h.component;u(h,p,null,1,i),Pe(()=>{v.da&&Mn(v.da);const w=h.props&&h.props.onVnodeUnmounted;w&&Be(w,v.parent,h),v.isDeactivated=!0},i)};function g(h){zr(h),c(h,n,i,!0)}function _(h){o.forEach((v,w)=>{const T=wo(v.type);T&&(!h||!h(T))&&C(w)})}function C(h){const v=o.get(h);!l||v.type!==l.type?g(v):l&&zr(l),o.delete(h),s.delete(h)}je(()=>[e.include,e.exclude],([h,v])=>{h&&_(w=>Tn(h,w)),v&&_(w=>!Tn(v,w))},{flush:"post",deep:!0});let R=null;const y=()=>{R!=null&&o.set(R,Vr(n.subTree))};return Yn(y),Ci(y),En(()=>{o.forEach(h=>{const{subTree:v,suspense:w}=n,T=Vr(v);if(h.type===T.type){zr(T);const O=T.component.da;O&&Pe(O,w);return}g(h)})}),()=>{if(R=null,!t.default)return null;const h=t.default(),v=h[0];if(h.length>1)return l=null,h;if(!dn(v)||!(v.shapeFlag&4)&&!(v.shapeFlag&128))return l=null,v;let w=Vr(v);const T=w.type,O=wo(zt(w)?w.type.__asyncResolved||{}:T),{include:I,exclude:k,max:U}=e;if(I&&(!O||!Tn(I,O))||k&&O&&Tn(k,O))return l=w,v;const F=w.key==null?T:w.key,W=o.get(F);return w.el&&(w=gt(w),v.shapeFlag&128&&(v.ssContent=w)),R=F,W?(w.el=W.el,w.component=W.component,w.transition&&pr(w,w.transition),w.shapeFlag|=512,s.delete(F),s.add(F)):(s.add(F),U&&s.size>parseInt(U,10)&&C(s.values().next().value)),w.shapeFlag|=256,l=w,hi(v.type)?v:w}}},fc=cc;function Tn(e,t){return Y(e)?e.some(n=>Tn(n,t)):we(e)?e.split(",").includes(t):e.test?e.test(t):!1}function dc(e,t){wi(e,"a",t)}function pc(e,t){wi(e,"da",t)}function wi(e,t,n=Ee){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Or(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Wn(o.parent.vnode)&&hc(r,t,n,o),o=o.parent}}function hc(e,t,n,r){const o=Or(t,e,r,!0);hr(()=>{jo(r[t],o)},n)}function zr(e){let t=e.shapeFlag;t&256&&(t-=256),t&512&&(t-=512),e.shapeFlag=t}function Vr(e){return e.shapeFlag&128?e.ssContent:e}function Or(e,t,n=Ee,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...l)=>{if(n.isUnmounted)return;_n(),Ot(n);const i=Ve(t,n,e,l);return At(),vn(),i});return r?o.unshift(s):o.push(s),s}}const mt=e=>(t,n=Ee)=>(!pn||e==="sp")&&Or(e,(...r)=>t(...r),n),Ei=mt("bm"),Yn=mt("m"),gc=mt("bu"),Ci=mt("u"),En=mt("bum"),hr=mt("um"),mc=mt("sp"),yc=mt("rtg"),_c=mt("rtc");function xi(e,t=Ee){Or("ec",e,t)}function ot(e,t,n,r){const o=e.dirs,s=t&&t.dirs;for(let l=0;lt(l,i,void 0,s&&s[i]));else{const l=Object.keys(e);o=new Array(l.length);for(let i=0,a=l.length;idn(t)?!(t.type===Ie||t.type===ke&&!Pi(t.children)):!0)?e:null}const mo=e=>e?Ni(e)?ls(e)||e.proxy:mo(e.parent):null,gr=Se(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>mo(e.parent),$root:e=>mo(e.root),$emit:e=>e.emit,$options:e=>rs(e),$forceUpdate:e=>e.f||(e.f=()=>kr(e.update)),$nextTick:e=>e.n||(e.n=wn.bind(e.proxy)),$watch:e=>ic.bind(e)}),Ec={get({_:e},t){const{ctx:n,setupState:r,data:o,props:s,accessCache:l,type:i,appContext:a}=e;let u;if(t[0]!=="$"){const g=l[t];if(g!==void 0)switch(g){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(r!==de&&re(r,t))return l[t]=1,r[t];if(o!==de&&re(o,t))return l[t]=2,o[t];if((u=e.propsOptions[0])&&re(u,t))return l[t]=3,s[t];if(n!==de&&re(n,t))return l[t]=4,n[t];yo&&(l[t]=0)}}const c=gr[t];let f,p;if(c)return t==="$attrs"&&Fe(e,"get",t),c(e);if((f=i.__cssModules)&&(f=f[t]))return f;if(n!==de&&re(n,t))return l[t]=4,n[t];if(p=a.config.globalProperties,re(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return o!==de&&re(o,t)?(o[t]=n,!0):r!==de&&re(r,t)?(r[t]=n,!0):re(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},l){let i;return!!n[l]||e!==de&&re(e,l)||t!==de&&re(t,l)||(i=s[0])&&re(i,l)||re(r,l)||re(gr,l)||re(o.config.globalProperties,l)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:re(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let yo=!0;function Cc(e){const t=rs(e),n=e.proxy,r=e.ctx;yo=!1,t.beforeCreate&&Ms(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:l,watch:i,provide:a,inject:u,created:c,beforeMount:f,mounted:p,beforeUpdate:g,updated:_,activated:C,deactivated:R,beforeDestroy:y,beforeUnmount:h,destroyed:v,unmounted:w,render:T,renderTracked:O,renderTriggered:I,errorCaptured:k,serverPrefetch:U,expose:F,inheritAttrs:W,components:H,directives:Z,filters:j}=t;if(u&&xc(u,r,null,e.appContext.config.unwrapInjectedRef),l)for(const ce in l){const ae=l[ce];X(ae)&&(r[ce]=ae.bind(n))}if(o){const ce=o.call(n,n);he(ce)&&(e.data=et(ce))}if(yo=!0,s)for(const ce in s){const ae=s[ce],Ye=X(ae)?ae.bind(n,n):X(ae.get)?ae.get.bind(n,n):Ze,Mt=!X(ae)&&X(ae.set)?ae.set.bind(n):Ze,Qe=xe({get:Ye,set:Mt});Object.defineProperty(r,ce,{enumerable:!0,configurable:!0,get:()=>Qe.value,set:$e=>Qe.value=$e})}if(i)for(const ce in i)ki(i[ce],r,n,ce);if(a){const ce=X(a)?a.call(n):a;Reflect.ownKeys(ce).forEach(ae=>{ln(ae,ce[ae])})}c&&Ms(c,e,"c");function oe(ce,ae){Y(ae)?ae.forEach(Ye=>ce(Ye.bind(n))):ae&&ce(ae.bind(n))}if(oe(Ei,f),oe(Yn,p),oe(gc,g),oe(Ci,_),oe(dc,C),oe(pc,R),oe(xi,k),oe(_c,O),oe(yc,I),oe(En,h),oe(hr,w),oe(mc,U),Y(F))if(F.length){const ce=e.exposed||(e.exposed={});F.forEach(ae=>{Object.defineProperty(ce,ae,{get:()=>n[ae],set:Ye=>n[ae]=Ye})})}else e.exposed||(e.exposed={});T&&e.render===Ze&&(e.render=T),W!=null&&(e.inheritAttrs=W),H&&(e.components=H),Z&&(e.directives=Z)}function xc(e,t,n=Ze,r=!1){Y(e)&&(e=_o(e));for(const o in e){const s=e[o];let l;he(s)?"default"in s?l=Ge(s.from||o,s.default,!0):l=Ge(s.from||o):l=Ge(s),Re(l)&&r?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>l.value,set:i=>l.value=i}):t[o]=l}}function Ms(e,t,n){Ve(Y(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function ki(e,t,n,r){const o=r.includes(".")?yi(n,r):()=>n[r];if(we(e)){const s=t[e];X(s)&&je(o,s)}else if(X(e))je(o,e.bind(n));else if(he(e))if(Y(e))e.forEach(s=>ki(s,t,n,r));else{const s=X(e.handler)?e.handler.bind(n):t[e.handler];X(s)&&je(o,s,e)}}function rs(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:l}}=e.appContext,i=s.get(t);let a;return i?a=i:!o.length&&!n&&!r?a=t:(a={},o.length&&o.forEach(u=>mr(a,u,l,!0)),mr(a,t,l)),he(t)&&s.set(t,a),a}function mr(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&mr(e,s,n,!0),o&&o.forEach(l=>mr(e,l,n,!0));for(const l in t)if(!(r&&l==="expose")){const i=Rc[l]||n&&n[l];e[l]=i?i(e[l],t[l]):t[l]}return e}const Rc={data:Ds,props:Ft,emits:Ft,methods:Ft,computed:Ft,beforeCreate:Me,created:Me,beforeMount:Me,mounted:Me,beforeUpdate:Me,updated:Me,beforeDestroy:Me,beforeUnmount:Me,destroyed:Me,unmounted:Me,activated:Me,deactivated:Me,errorCaptured:Me,serverPrefetch:Me,components:Ft,directives:Ft,watch:kc,provide:Ds,inject:Pc};function Ds(e,t){return t?e?function(){return Se(X(e)?e.call(this,this):e,X(t)?t.call(this,this):t)}:t:e}function Pc(e,t){return Ft(_o(e),_o(t))}function _o(e){if(Y(e)){const t={};for(let n=0;n0)&&!(l&16)){if(l&8){const c=e.vnode.dynamicProps;for(let f=0;f{a=!0;const[p,g]=Ai(f,t,!0);Se(l,p),g&&i.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!s&&!a)return he(e)&&r.set(e,tn),tn;if(Y(s))for(let c=0;c-1,g[1]=C<0||_-1||re(g,"default"))&&i.push(f)}}}const u=[l,i];return he(e)&&r.set(e,u),u}function Is(e){return e[0]!=="$"}function $s(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function Bs(e,t){return $s(e)===$s(t)}function Hs(e,t){return Y(t)?t.findIndex(n=>Bs(n,e)):X(t)&&Bs(t,e)?0:-1}const Ti=e=>e[0]==="_"||e==="$stable",os=e=>Y(e)?e.map(qe):[qe(e)],Tc=(e,t,n)=>{if(t._n)return t;const r=Tr((...o)=>os(t(...o)),n);return r._c=!1,r},Oi=(e,t,n)=>{const r=e._ctx;for(const o in e){if(Ti(o))continue;const s=e[o];if(X(s))t[o]=Tc(o,s,r);else if(s!=null){const l=os(s);t[o]=()=>l}}},Li=(e,t)=>{const n=os(t);e.slots.default=()=>n},Oc=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=le(t),ur(t,"_",n)):Oi(t,e.slots={})}else e.slots={},t&&Li(e,t);ur(e.slots,Mr,1)},Lc=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,l=de;if(r.shapeFlag&32){const i=t._;i?n&&i===1?s=!1:(Se(o,t),!n&&i===1&&delete o._):(s=!t.$stable,Oi(t,o)),l=t}else t&&(Li(e,t),l={default:1});if(s)for(const i in o)!Ti(i)&&!(i in l)&&delete o[i]};function Mi(){return{app:null,config:{isNativeTag:lu,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Mc=0;function Dc(e,t){return function(r,o=null){X(r)||(r=Object.assign({},r)),o!=null&&!he(o)&&(o=null);const s=Mi(),l=new Set;let i=!1;const a=s.app={_uid:Mc++,_component:r,_props:o,_container:null,_context:s,_instance:null,version:Xc,get config(){return s.config},set config(u){},use(u,...c){return l.has(u)||(u&&X(u.install)?(l.add(u),u.install(a,...c)):X(u)&&(l.add(u),u(a,...c))),a},mixin(u){return s.mixins.includes(u)||s.mixins.push(u),a},component(u,c){return c?(s.components[u]=c,a):s.components[u]},directive(u,c){return c?(s.directives[u]=c,a):s.directives[u]},mount(u,c,f){if(!i){const p=ge(r,o);return p.appContext=s,c&&t?t(p,u):e(p,u,f),i=!0,a._container=u,u.__vue_app__=a,ls(p.component)||p.component.proxy}},unmount(){i&&(e(null,a._container),delete a._container.__vue_app__)},provide(u,c){return s.provides[u]=c,a}};return a}}function yr(e,t,n,r,o=!1){if(Y(e)){e.forEach((p,g)=>yr(p,t&&(Y(t)?t[g]:t),n,r,o));return}if(zt(r)&&!o)return;const s=r.shapeFlag&4?ls(r.component)||r.component.proxy:r.el,l=o?null:s,{i,r:a}=e,u=t&&t.r,c=i.refs===de?i.refs={}:i.refs,f=i.setupState;if(u!=null&&u!==a&&(we(u)?(c[u]=null,re(f,u)&&(f[u]=null)):Re(u)&&(u.value=null)),X(a))St(a,i,12,[l,c]);else{const p=we(a),g=Re(a);if(p||g){const _=()=>{if(e.f){const C=p?re(f,a)?f[a]:c[a]:a.value;o?Y(C)&&jo(C,s):Y(C)?C.includes(s)||C.push(s):p?(c[a]=[s],re(f,a)&&(f[a]=c[a])):(a.value=[s],e.k&&(c[e.k]=a.value))}else p?(c[a]=l,re(f,a)&&(f[a]=l)):g&&(a.value=l,e.k&&(c[e.k]=l))};l?(_.id=-1,Pe(_,n)):_()}}}let vt=!1;const rr=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",or=e=>e.nodeType===8;function Ic(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:s,parentNode:l,remove:i,insert:a,createComment:u}}=e,c=(y,h)=>{if(!h.hasChildNodes()){n(null,y,h),fr(),h._vnode=y;return}vt=!1,f(h.firstChild,y,null,null,null),fr(),h._vnode=y,vt&&console.error("Hydration completed but contains mismatches.")},f=(y,h,v,w,T,O=!1)=>{const I=or(y)&&y.data==="[",k=()=>C(y,h,v,w,T,I),{type:U,ref:F,shapeFlag:W,patchFlag:H}=h;let Z=y.nodeType;h.el=y,H===-2&&(O=!1,h.dynamicChildren=null);let j=null;switch(U){case ht:Z!==3?h.children===""?(a(h.el=o(""),l(y),y),j=y):j=k():(y.data!==h.children&&(vt=!0,y.data=h.children),j=s(y));break;case Ie:Z!==8||I?j=k():j=s(y);break;case Dn:if(I&&(y=s(y),Z=y.nodeType),Z===1||Z===3){j=y;const Ae=!h.children.length;for(let oe=0;oe{O=O||!!h.dynamicChildren;const{type:I,props:k,patchFlag:U,shapeFlag:F,dirs:W}=h,H=I==="input"&&W||I==="option";if(H||U!==-1){if(W&&ot(h,null,v,"created"),k)if(H||!O||U&48)for(const j in k)(H&&j.endsWith("value")||Vn(j)&&!Ln(j))&&r(y,j,null,k[j],!1,void 0,v);else k.onClick&&r(y,"onClick",null,k.onClick,!1,void 0,v);let Z;if((Z=k&&k.onVnodeBeforeMount)&&Be(Z,v,h),W&&ot(h,null,v,"beforeMount"),((Z=k&&k.onVnodeMounted)||W)&&mi(()=>{Z&&Be(Z,v,h),W&&ot(h,null,v,"mounted")},w),F&16&&!(k&&(k.innerHTML||k.textContent))){let j=g(y.firstChild,h,y,v,w,T,O);for(;j;){vt=!0;const Ae=j;j=j.nextSibling,i(Ae)}}else F&8&&y.textContent!==h.children&&(vt=!0,y.textContent=h.children)}return y.nextSibling},g=(y,h,v,w,T,O,I)=>{I=I||!!h.dynamicChildren;const k=h.children,U=k.length;for(let F=0;F{const{slotScopeIds:I}=h;I&&(T=T?T.concat(I):I);const k=l(y),U=g(s(y),h,k,v,w,T,O);return U&&or(U)&&U.data==="]"?s(h.anchor=U):(vt=!0,a(h.anchor=u("]"),k,U),U)},C=(y,h,v,w,T,O)=>{if(vt=!0,h.el=null,O){const U=R(y);for(;;){const F=s(y);if(F&&F!==U)i(F);else break}}const I=s(y),k=l(y);return i(y),n(null,h,k,I,v,w,rr(k),T),I},R=y=>{let h=0;for(;y;)if(y=s(y),y&&or(y)&&(y.data==="["&&h++,y.data==="]")){if(h===0)return s(y);h--}return y};return[c,f]}const Pe=mi;function $c(e){return Di(e)}function Bc(e){return Di(e,Ic)}function Di(e,t){const n=du();n.__VUE__=!0;const{insert:r,remove:o,patchProp:s,createElement:l,createText:i,createComment:a,setText:u,setElementText:c,parentNode:f,nextSibling:p,setScopeId:g=Ze,insertStaticContent:_}=e,C=(d,m,b,E=null,P=null,M=null,B=!1,L=null,D=!!m.dynamicChildren)=>{if(d===m)return;d&&!lt(d,m)&&(E=$(d),$e(d,P,M,!0),d=null),m.patchFlag===-2&&(D=!1,m.dynamicChildren=null);const{type:S,ref:z,shapeFlag:q}=m;switch(S){case ht:R(d,m,b,E);break;case Ie:y(d,m,b,E);break;case Dn:d==null&&h(m,b,E,B);break;case ke:H(d,m,b,E,P,M,B,L,D);break;default:q&1?T(d,m,b,E,P,M,B,L,D):q&6?Z(d,m,b,E,P,M,B,L,D):(q&64||q&128)&&S.process(d,m,b,E,P,M,B,L,D,se)}z!=null&&P&&yr(z,d&&d.ref,M,m||d,!m)},R=(d,m,b,E)=>{if(d==null)r(m.el=i(m.children),b,E);else{const P=m.el=d.el;m.children!==d.children&&u(P,m.children)}},y=(d,m,b,E)=>{d==null?r(m.el=a(m.children||""),b,E):m.el=d.el},h=(d,m,b,E)=>{[d.el,d.anchor]=_(d.children,m,b,E,d.el,d.anchor)},v=({el:d,anchor:m},b,E)=>{let P;for(;d&&d!==m;)P=p(d),r(d,b,E),d=P;r(m,b,E)},w=({el:d,anchor:m})=>{let b;for(;d&&d!==m;)b=p(d),o(d),d=b;o(m)},T=(d,m,b,E,P,M,B,L,D)=>{B=B||m.type==="svg",d==null?O(m,b,E,P,M,B,L,D):U(d,m,P,M,B,L,D)},O=(d,m,b,E,P,M,B,L)=>{let D,S;const{type:z,props:q,shapeFlag:V,transition:Q,dirs:te}=d;if(D=d.el=l(d.type,M,q&&q.is,q),V&8?c(D,d.children):V&16&&k(d.children,D,null,E,P,M&&z!=="foreignObject",B,L),te&&ot(d,null,E,"created"),q){for(const ue in q)ue!=="value"&&!Ln(ue)&&s(D,ue,null,q[ue],M,d.children,E,P,N);"value"in q&&s(D,"value",null,q.value),(S=q.onVnodeBeforeMount)&&Be(S,E,d)}I(D,d,d.scopeId,B,E),te&&ot(d,null,E,"beforeMount");const fe=(!P||P&&!P.pendingBranch)&&Q&&!Q.persisted;fe&&Q.beforeEnter(D),r(D,m,b),((S=q&&q.onVnodeMounted)||fe||te)&&Pe(()=>{S&&Be(S,E,d),fe&&Q.enter(D),te&&ot(d,null,E,"mounted")},P)},I=(d,m,b,E,P)=>{if(b&&g(d,b),E)for(let M=0;M{for(let S=D;S{const L=m.el=d.el;let{patchFlag:D,dynamicChildren:S,dirs:z}=m;D|=d.patchFlag&16;const q=d.props||de,V=m.props||de;let Q;b&&Dt(b,!1),(Q=V.onVnodeBeforeUpdate)&&Be(Q,b,m,d),z&&ot(m,d,b,"beforeUpdate"),b&&Dt(b,!0);const te=P&&m.type!=="foreignObject";if(S?F(d.dynamicChildren,S,L,b,E,te,M):B||ae(d,m,L,null,b,E,te,M,!1),D>0){if(D&16)W(L,m,q,V,b,E,P);else if(D&2&&q.class!==V.class&&s(L,"class",null,V.class,P),D&4&&s(L,"style",q.style,V.style,P),D&8){const fe=m.dynamicProps;for(let ue=0;ue{Q&&Be(Q,b,m,d),z&&ot(m,d,b,"updated")},E)},F=(d,m,b,E,P,M,B)=>{for(let L=0;L{if(b!==E){if(b!==de)for(const L in b)!Ln(L)&&!(L in E)&&s(d,L,b[L],null,B,m.children,P,M,N);for(const L in E){if(Ln(L))continue;const D=E[L],S=b[L];D!==S&&L!=="value"&&s(d,L,S,D,B,m.children,P,M,N)}"value"in E&&s(d,"value",b.value,E.value)}},H=(d,m,b,E,P,M,B,L,D)=>{const S=m.el=d?d.el:i(""),z=m.anchor=d?d.anchor:i("");let{patchFlag:q,dynamicChildren:V,slotScopeIds:Q}=m;Q&&(L=L?L.concat(Q):Q),d==null?(r(S,b,E),r(z,b,E),k(m.children,b,z,P,M,B,L,D)):q>0&&q&64&&V&&d.dynamicChildren?(F(d.dynamicChildren,V,b,P,M,B,L),(m.key!=null||P&&m===P.subTree)&&Ii(d,m,!0)):ae(d,m,b,z,P,M,B,L,D)},Z=(d,m,b,E,P,M,B,L,D)=>{m.slotScopeIds=L,d==null?m.shapeFlag&512?P.ctx.activate(m,b,E,B,D):j(m,b,E,P,M,B,D):Ae(d,m,D)},j=(d,m,b,E,P,M,B)=>{const L=d.component=zc(d,E,P);if(Wn(d)&&(L.ctx.renderer=se),Vc(L),L.asyncDep){if(P&&P.registerDep(L,oe),!d.el){const D=L.subTree=ge(Ie);y(null,D,m,b)}return}oe(L,d,m,b,P,M,B)},Ae=(d,m,b)=>{const E=m.component=d.component;if(ec(d,m,b))if(E.asyncDep&&!E.asyncResolved){ce(E,m,b);return}else E.next=m,Yu(E.update),E.update();else m.el=d.el,E.vnode=m},oe=(d,m,b,E,P,M,B)=>{const L=()=>{if(d.isMounted){let{next:z,bu:q,u:V,parent:Q,vnode:te}=d,fe=z,ue;Dt(d,!1),z?(z.el=te.el,ce(d,z,B)):z=te,q&&Mn(q),(ue=z.props&&z.props.onVnodeBeforeUpdate)&&Be(ue,Q,z,te),Dt(d,!0);const _e=Ur(d),Je=d.subTree;d.subTree=_e,C(Je,_e,f(Je.el),$(Je),d,P,M),z.el=_e.el,fe===null&&es(d,_e.el),V&&Pe(V,P),(ue=z.props&&z.props.onVnodeUpdated)&&Pe(()=>Be(ue,Q,z,te),P)}else{let z;const{el:q,props:V}=m,{bm:Q,m:te,parent:fe}=d,ue=zt(m);if(Dt(d,!1),Q&&Mn(Q),!ue&&(z=V&&V.onVnodeBeforeMount)&&Be(z,fe,m),Dt(d,!0),q&&ee){const _e=()=>{d.subTree=Ur(d),ee(q,d.subTree,d,P,null)};ue?m.type.__asyncLoader().then(()=>!d.isUnmounted&&_e()):_e()}else{const _e=d.subTree=Ur(d);C(null,_e,b,E,d,P,M),m.el=_e.el}if(te&&Pe(te,P),!ue&&(z=V&&V.onVnodeMounted)){const _e=m;Pe(()=>Be(z,fe,_e),P)}(m.shapeFlag&256||fe&&zt(fe.vnode)&&fe.vnode.shapeFlag&256)&&d.a&&Pe(d.a,P),d.isMounted=!0,m=b=E=null}},D=d.effect=new Vo(L,()=>kr(S),d.scope),S=d.update=()=>D.run();S.id=d.uid,Dt(d,!0),S()},ce=(d,m,b)=>{m.component=d;const E=d.vnode.props;d.vnode=m,d.next=null,Ac(d,m.props,E,b),Lc(d,m.children,b),_n(),ks(),vn()},ae=(d,m,b,E,P,M,B,L,D=!1)=>{const S=d&&d.children,z=d?d.shapeFlag:0,q=m.children,{patchFlag:V,shapeFlag:Q}=m;if(V>0){if(V&128){Mt(S,q,b,E,P,M,B,L,D);return}else if(V&256){Ye(S,q,b,E,P,M,B,L,D);return}}Q&8?(z&16&&N(S,P,M),q!==S&&c(b,q)):z&16?Q&16?Mt(S,q,b,E,P,M,B,L,D):N(S,P,M,!0):(z&8&&c(b,""),Q&16&&k(q,b,E,P,M,B,L,D))},Ye=(d,m,b,E,P,M,B,L,D)=>{d=d||tn,m=m||tn;const S=d.length,z=m.length,q=Math.min(S,z);let V;for(V=0;Vz?N(d,P,M,!0,!1,q):k(m,b,E,P,M,B,L,D,q)},Mt=(d,m,b,E,P,M,B,L,D)=>{let S=0;const z=m.length;let q=d.length-1,V=z-1;for(;S<=q&&S<=V;){const Q=d[S],te=m[S]=D?Ct(m[S]):qe(m[S]);if(lt(Q,te))C(Q,te,b,null,P,M,B,L,D);else break;S++}for(;S<=q&&S<=V;){const Q=d[q],te=m[V]=D?Ct(m[V]):qe(m[V]);if(lt(Q,te))C(Q,te,b,null,P,M,B,L,D);else break;q--,V--}if(S>q){if(S<=V){const Q=V+1,te=QV)for(;S<=q;)$e(d[S],P,M,!0),S++;else{const Q=S,te=S,fe=new Map;for(S=te;S<=V;S++){const He=m[S]=D?Ct(m[S]):qe(m[S]);He.key!=null&&fe.set(He.key,S)}let ue,_e=0;const Je=V-te+1;let Jt=!1,ms=0;const Pn=new Array(Je);for(S=0;S=Je){$e(He,P,M,!0);continue}let nt;if(He.key!=null)nt=fe.get(He.key);else for(ue=te;ue<=V;ue++)if(Pn[ue-te]===0&<(He,m[ue])){nt=ue;break}nt===void 0?$e(He,P,M,!0):(Pn[nt-te]=S+1,nt>=ms?ms=nt:Jt=!0,C(He,m[nt],b,null,P,M,B,L,D),_e++)}const ys=Jt?Hc(Pn):tn;for(ue=ys.length-1,S=Je-1;S>=0;S--){const He=te+S,nt=m[He],_s=He+1{const{el:M,type:B,transition:L,children:D,shapeFlag:S}=d;if(S&6){Qe(d.component.subTree,m,b,E);return}if(S&128){d.suspense.move(m,b,E);return}if(S&64){B.move(d,m,b,se);return}if(B===ke){r(M,m,b);for(let q=0;qL.enter(M),P);else{const{leave:q,delayLeave:V,afterLeave:Q}=L,te=()=>r(M,m,b),fe=()=>{q(M,()=>{te(),Q&&Q()})};V?V(M,te,fe):fe()}else r(M,m,b)},$e=(d,m,b,E=!1,P=!1)=>{const{type:M,props:B,ref:L,children:D,dynamicChildren:S,shapeFlag:z,patchFlag:q,dirs:V}=d;if(L!=null&&yr(L,null,b,d,!0),z&256){m.ctx.deactivate(d);return}const Q=z&1&&V,te=!zt(d);let fe;if(te&&(fe=B&&B.onVnodeBeforeUnmount)&&Be(fe,m,d),z&6)x(d.component,b,E);else{if(z&128){d.suspense.unmount(b,E);return}Q&&ot(d,null,m,"beforeUnmount"),z&64?d.type.remove(d,m,b,P,se,E):S&&(M!==ke||q>0&&q&64)?N(S,m,b,!1,!0):(M===ke&&q&384||!P&&z&16)&&N(D,m,b),E&&Qt(d)}(te&&(fe=B&&B.onVnodeUnmounted)||Q)&&Pe(()=>{fe&&Be(fe,m,d),Q&&ot(d,null,m,"unmounted")},b)},Qt=d=>{const{type:m,el:b,anchor:E,transition:P}=d;if(m===ke){Xn(b,E);return}if(m===Dn){w(d);return}const M=()=>{o(b),P&&!P.persisted&&P.afterLeave&&P.afterLeave()};if(d.shapeFlag&1&&P&&!P.persisted){const{leave:B,delayLeave:L}=P,D=()=>B(b,M);L?L(d.el,M,D):D()}else M()},Xn=(d,m)=>{let b;for(;d!==m;)b=p(d),o(d),d=b;o(m)},x=(d,m,b)=>{const{bum:E,scope:P,update:M,subTree:B,um:L}=d;E&&Mn(E),P.stop(),M&&(M.active=!1,$e(B,d,m,b)),L&&Pe(L,m),Pe(()=>{d.isUnmounted=!0},m),m&&m.pendingBranch&&!m.isUnmounted&&d.asyncDep&&!d.asyncResolved&&d.suspenseId===m.pendingId&&(m.deps--,m.deps===0&&m.resolve())},N=(d,m,b,E=!1,P=!1,M=0)=>{for(let B=M;Bd.shapeFlag&6?$(d.component.subTree):d.shapeFlag&128?d.suspense.next():p(d.anchor||d.el),K=(d,m,b)=>{d==null?m._vnode&&$e(m._vnode,null,null,!0):C(m._vnode||null,d,m,null,null,null,b),ks(),fr(),m._vnode=d},se={p:C,um:$e,m:Qe,r:Qt,mt:j,mc:k,pc:ae,pbc:F,n:$,o:e};let me,ee;return t&&([me,ee]=t(se)),{render:K,hydrate:me,createApp:Dc(K,me)}}function Dt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Ii(e,t,n=!1){const r=e.children,o=t.children;if(Y(r)&&Y(o))for(let s=0;s>1,e[n[i]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,l=n[s-1];s-- >0;)n[s]=l,l=t[l];return n}const Nc=e=>e.__isTeleport,ke=Symbol(void 0),ht=Symbol(void 0),Ie=Symbol(void 0),Dn=Symbol(void 0),In=[];let Ke=null;function Oe(e=!1){In.push(Ke=e?null:[])}function $i(){In.pop(),Ke=In[In.length-1]||null}let fn=1;function Ns(e){fn+=e}function Bi(e){return e.dynamicChildren=fn>0?Ke||tn:null,$i(),fn>0&&Ke&&Ke.push(e),e}function Pt(e,t,n,r,o,s){return Bi(_r(e,t,n,r,o,s,!0))}function Vt(e,t,n,r,o){return Bi(ge(e,t,n,r,o,!0))}function dn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const Mr="__vInternal",Hi=({key:e})=>e!=null?e:null,ir=({ref:e,ref_key:t,ref_for:n})=>e!=null?we(e)||Re(e)||X(e)?{i:De,r:e,k:t,f:!!n}:e:null;function _r(e,t=null,n=null,r=0,o=null,s=e===ke?0:1,l=!1,i=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Hi(t),ref:t&&ir(t),scopeId:Ar,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null};return i?(ss(a,n),s&128&&e.normalize(a)):n&&(a.shapeFlag|=we(n)?8:16),fn>0&&!l&&Ke&&(a.patchFlag>0||s&6)&&a.patchFlag!==32&&Ke.push(a),a}const ge=jc;function jc(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===vc)&&(e=Ie),dn(e)){const i=gt(e,t,!0);return n&&ss(i,n),fn>0&&!s&&Ke&&(i.shapeFlag&6?Ke[Ke.indexOf(e)]=i:Ke.push(i)),i.patchFlag|=-2,i}if(Qc(e)&&(e=e.__vccOpts),t){t=Fc(t);let{class:i,style:a}=t;i&&!we(i)&&(t.class=dt(i)),he(a)&&(ti(a)&&!Y(a)&&(a=Se({},a)),t.style=un(a))}const l=we(e)?1:hi(e)?128:Nc(e)?64:he(e)?4:X(e)?2:0;return _r(e,t,n,r,o,l,s,!0)}function Fc(e){return e?ti(e)||Mr in e?Se({},e):e:null}function gt(e,t,n=!1){const{props:r,ref:o,patchFlag:s,children:l}=e,i=t?Uc(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:i,key:i&&Hi(i),ref:t&&t.ref?n&&o?Y(o)?o.concat(ir(t)):[o,ir(t)]:ir(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ke?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&>(e.ssContent),ssFallback:e.ssFallback&>(e.ssFallback),el:e.el,anchor:e.anchor}}function Dr(e=" ",t=0){return ge(ht,null,e,t)}function Fm(e,t){const n=ge(Dn,null,e);return n.staticCount=t,n}function Um(e="",t=!1){return t?(Oe(),Vt(Ie,null,e)):ge(Ie,null,e)}function qe(e){return e==null||typeof e=="boolean"?ge(Ie):Y(e)?ge(ke,null,e.slice()):typeof e=="object"?Ct(e):ge(ht,null,String(e))}function Ct(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:gt(e)}function ss(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(Y(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),ss(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!(Mr in t)?t._ctx=De:o===3&&De&&(De.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else X(t)?(t={default:t,_ctx:De},n=32):(t=String(t),r&64?(n=16,t=[Dr(t)]):n=8);e.children=t,e.shapeFlag|=n}function Uc(...e){const t={};for(let n=0;nEe||De,Ot=e=>{Ee=e,e.scope.on()},At=()=>{Ee&&Ee.scope.off(),Ee=null};function Ni(e){return e.vnode.shapeFlag&4}let pn=!1;function Vc(e,t=!1){pn=t;const{props:n,children:r}=e.vnode,o=Ni(e);Sc(e,n,o,t),Oc(e,r);const s=o?Wc(e,t):void 0;return pn=!1,s}function Wc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=ni(new Proxy(e.ctx,Ec));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?Fi(e):null;Ot(e),_n();const s=St(r,e,0,[e.props,o]);if(vn(),At(),Uo(s)){if(s.then(At,At),t)return s.then(l=>{bo(e,l,t)}).catch(l=>{bn(l,e,0)});e.asyncDep=s}else bo(e,s,t)}else ji(e,t)}function bo(e,t,n){X(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:he(t)&&(e.setupState=li(t)),ji(e,n)}let js;function ji(e,t,n){const r=e.type;if(!e.render){if(!t&&js&&!r.render){const o=r.template||rs(e).template;if(o){const{isCustomElement:s,compilerOptions:l}=e.appContext.config,{delimiters:i,compilerOptions:a}=r,u=Se(Se({isCustomElement:s,delimiters:i},l),a);r.render=js(o,u)}}e.render=r.render||Ze}Ot(e),_n(),Cc(e),vn(),At()}function Yc(e){return new Proxy(e.attrs,{get(t,n){return Fe(e,"get","$attrs"),t[n]}})}function Fi(e){const t=r=>{e.exposed=r||{}};let n;return{get attrs(){return n||(n=Yc(e))},slots:e.slots,emit:e.emit,expose:t}}function ls(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(li(ni(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in gr)return gr[n](e)}}))}function wo(e,t=!0){return X(e)?e.displayName||e.name:e.name||t&&e.__name}function Qc(e){return X(e)&&"__vccOpts"in e}const xe=(e,t)=>zu(e,t,pn);function is(){return Jc().slots}function Jc(){const e=yt();return e.setupContext||(e.setupContext=Fi(e))}function qm(e){const t=yt();let n=e();return At(),Uo(n)&&(n=n.catch(r=>{throw Ot(t),r})),[n,()=>Ot(t)]}function ye(e,t,n){const r=arguments.length;return r===2?he(t)&&!Y(t)?dn(t)?ge(e,null,[t]):ge(e,t):ge(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&dn(n)&&(n=[n]),ge(e,t,n))}const Xc="3.2.41",Zc="http://www.w3.org/2000/svg",qt=typeof document<"u"?document:null,Fs=qt&&qt.createElement("template"),Gc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?qt.createElementNS(Zc,e):qt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>qt.createTextNode(e),createComment:e=>qt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const l=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{Fs.innerHTML=r?`${e}`:e;const i=Fs.content;if(r){const a=i.firstChild;for(;a.firstChild;)i.appendChild(a.firstChild);i.removeChild(a)}t.insertBefore(i,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function ef(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function tf(e,t,n){const r=e.style,o=we(n);if(n&&!o){for(const s in n)Eo(r,s,n[s]);if(t&&!we(t))for(const s in t)n[s]==null&&Eo(r,s,"")}else{const s=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=s)}}const Us=/\s*!important$/;function Eo(e,t,n){if(Y(n))n.forEach(r=>Eo(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=nf(e,t);Us.test(n)?e.setProperty(yn(r),n.replace(Us,""),"important"):e[r]=n}}const qs=["Webkit","Moz","ms"],Wr={};function nf(e,t){const n=Wr[t];if(n)return n;let r=it(t);if(r!=="filter"&&r in e)return Wr[t]=r;r=Rr(r);for(let o=0;oYr||(cf.then(()=>Yr=0),Yr=Date.now());function df(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Ve(pf(r,n.value),t,5,[r])};return n.value=e,n.attached=ff(),n}function pf(e,t){if(Y(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const Vs=/^on[a-z]/,hf=(e,t,n,r,o=!1,s,l,i,a)=>{t==="class"?ef(e,r,o):t==="style"?tf(e,n,r):Vn(t)?No(t)||af(e,t,n,r,l):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):gf(e,t,r,o))?of(e,t,r,s,l,i,a):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),rf(e,t,r,o))};function gf(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&Vs.test(t)&&X(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Vs.test(t)&&we(n)?!1:t in e}const bt="transition",kn="animation",Ir=(e,{slots:t})=>ye(_i,mf(e),t);Ir.displayName="Transition";const Ui={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Ir.props=Se({},_i.props,Ui);const It=(e,t=[])=>{Y(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ws=e=>e?Y(e)?e.some(t=>t.length>1):e.length>1:!1;function mf(e){const t={};for(const H in e)H in Ui||(t[H]=e[H]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:l=`${n}-enter-active`,enterToClass:i=`${n}-enter-to`,appearFromClass:a=s,appearActiveClass:u=l,appearToClass:c=i,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,_=yf(o),C=_&&_[0],R=_&&_[1],{onBeforeEnter:y,onEnter:h,onEnterCancelled:v,onLeave:w,onLeaveCancelled:T,onBeforeAppear:O=y,onAppear:I=h,onAppearCancelled:k=v}=t,U=(H,Z,j)=>{$t(H,Z?c:i),$t(H,Z?u:l),j&&j()},F=(H,Z)=>{H._isLeaving=!1,$t(H,f),$t(H,g),$t(H,p),Z&&Z()},W=H=>(Z,j)=>{const Ae=H?I:h,oe=()=>U(Z,H,j);It(Ae,[Z,oe]),Ys(()=>{$t(Z,H?a:s),wt(Z,H?c:i),Ws(Ae)||Qs(Z,r,C,oe)})};return Se(t,{onBeforeEnter(H){It(y,[H]),wt(H,s),wt(H,l)},onBeforeAppear(H){It(O,[H]),wt(H,a),wt(H,u)},onEnter:W(!1),onAppear:W(!0),onLeave(H,Z){H._isLeaving=!0;const j=()=>F(H,Z);wt(H,f),bf(),wt(H,p),Ys(()=>{!H._isLeaving||($t(H,f),wt(H,g),Ws(w)||Qs(H,r,R,j))}),It(w,[H,j])},onEnterCancelled(H){U(H,!1),It(v,[H])},onAppearCancelled(H){U(H,!0),It(k,[H])},onLeaveCancelled(H){F(H),It(T,[H])}})}function yf(e){if(e==null)return null;if(he(e))return[Qr(e.enter),Qr(e.leave)];{const t=Qr(e);return[t,t]}}function Qr(e){return Ko(e)}function wt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function $t(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function Ys(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let _f=0;function Qs(e,t,n,r){const o=e._endId=++_f,s=()=>{o===e._endId&&r()};if(n)return setTimeout(s,n);const{type:l,timeout:i,propCount:a}=vf(e,t);if(!l)return r();const u=l+"end";let c=0;const f=()=>{e.removeEventListener(u,p),s()},p=g=>{g.target===e&&++c>=a&&f()};setTimeout(()=>{c(n[_]||"").split(", "),o=r(bt+"Delay"),s=r(bt+"Duration"),l=Js(o,s),i=r(kn+"Delay"),a=r(kn+"Duration"),u=Js(i,a);let c=null,f=0,p=0;t===bt?l>0&&(c=bt,f=l,p=s.length):t===kn?u>0&&(c=kn,f=u,p=a.length):(f=Math.max(l,u),c=f>0?l>u?bt:kn:null,p=c?c===bt?s.length:a.length:0);const g=c===bt&&/\b(transform|all)(,|$)/.test(n[bt+"Property"]);return{type:c,timeout:f,propCount:p,hasTransform:g}}function Js(e,t){for(;e.lengthXs(n)+Xs(e[r])))}function Xs(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function bf(){return document.body.offsetHeight}const qi=Se({patchProp:hf},Gc);let $n,Zs=!1;function wf(){return $n||($n=$c(qi))}function Ef(){return $n=Zs?$n:Bc(qi),Zs=!0,$n}const Cf=(...e)=>{const t=wf().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Ki(r);if(!o)return;const s=t._component;!X(s)&&!s.render&&!s.template&&(s.template=o.innerHTML),o.innerHTML="";const l=n(o,!1,o instanceof SVGElement);return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),l},t},xf=(...e)=>{const t=Ef().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Ki(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function Ki(e){return we(e)?document.querySelector(e):e}const Rf=/"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/,Pf=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,kf=/^["{[]|^-?[0-9][0-9.]{0,14}$/;function Sf(e,t){if(!(e==="__proto__"||e==="constructor"))return t}function as(e,t={}){if(typeof e!="string")return e;const n=e.toLowerCase();if(n==="true")return!0;if(n==="false")return!1;if(n==="null")return null;if(n==="nan")return NaN;if(n==="infinity")return 1/0;if(n!=="undefined"){if(!kf.test(e)){if(t.strict)throw new SyntaxError("Invalid JSON");return e}try{return Rf.test(e)||Pf.test(e)?JSON.parse(e,Sf):JSON.parse(e)}catch(r){if(t.strict)throw r;return e}}}const Af=/#/g,Tf=/&/g,Of=/=/g,zi=/\+/g,Lf=/%5B/gi,Mf=/%5D/gi,Df=/%5E/gi,If=/%60/gi,$f=/%7B/gi,Bf=/%7C/gi,Hf=/%7D/gi,Nf=/%20/gi;function jf(e){return encodeURI(""+e).replace(Bf,"|").replace(Lf,"[").replace(Mf,"]")}function Co(e){return jf(e).replace(zi,"%2B").replace(Nf,"+").replace(Af,"%23").replace(Tf,"%26").replace(If,"`").replace($f,"{").replace(Hf,"}").replace(Df,"^")}function Jr(e){return Co(e).replace(Of,"%3D")}function Vi(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function Ff(e){return Vi(e.replace(zi," "))}function Uf(e=""){const t={};e[0]==="?"&&(e=e.substr(1));for(const n of e.split("&")){const r=n.match(/([^=]+)=?(.*)/)||[];if(r.length<2)continue;const o=Vi(r[1]);if(o==="__proto__"||o==="constructor")continue;const s=Ff(r[2]||"");t[o]?Array.isArray(t[o])?t[o].push(s):t[o]=[t[o],s]:t[o]=s}return t}function qf(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${Jr(e)}=${Co(n)}`).join("&"):`${Jr(e)}=${Co(t)}`:Jr(e)}function Kf(e){return Object.keys(e).map(t=>qf(t,e[t])).join("&")}const zf=/^\w+:(\/\/)?/,Vf=/^\/\/[^/]+/;function $r(e,t=!1){return zf.test(e)||t&&Vf.test(e)}const Wf=/\/$|\/\?/;function xo(e="",t=!1){return t?Wf.test(e):e.endsWith("/")}function us(e="",t=!1){if(!t)return(xo(e)?e.slice(0,-1):e)||"/";if(!xo(e,!0))return e||"/";const[n,...r]=e.split("?");return(n.slice(0,-1)||"/")+(r.length?`?${r.join("?")}`:"")}function Wi(e="",t=!1){if(!t)return e.endsWith("/")?e:e+"/";if(xo(e,!0))return e||"/";const[n,...r]=e.split("?");return n+"/"+(r.length?`?${r.join("?")}`:"")}function Yi(e=""){return e.startsWith("/")}function Yf(e=""){return(Yi(e)?e.substr(1):e)||"/"}function Qf(e=""){return Yi(e)?e:"/"+e}function Qi(e,t){if(Ji(t)||$r(e))return e;const n=us(t);return e.startsWith(n)?e:Qn(n,e)}function Gs(e,t){if(Ji(t))return e;const n=us(t);if(!e.startsWith(n))return e;const r=e.substring(n.length);return r[0]==="/"?r:"/"+r}function Jf(e,t){const n=Br(e),r={...Uf(n.search),...t};return n.search=Kf(r),Zf(n)}function Ji(e){return!e||e==="/"}function Xf(e){return e&&e!=="/"}function Qn(e,...t){let n=e||"";for(const r of t.filter(Xf))n=n?Wi(n)+Yf(r):r;return n}function Br(e="",t){if(!$r(e,!0))return t?Br(t+e):el(e);const[n="",r,o=""]=(e.replace(/\\/g,"/").match(/([^:/]+:)?\/\/([^/@]+@)?(.*)/)||[]).splice(1),[s="",l=""]=(o.match(/([^/?#]*)(.*)?/)||[]).splice(1),{pathname:i,search:a,hash:u}=el(l);return{protocol:n,auth:r?r.substr(0,r.length-1):"",host:s,pathname:i,search:a,hash:u}}function el(e=""){const[t="",n="",r=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function Zf(e){const t=e.pathname+(e.search?(e.search.startsWith("?")?"":"?")+e.search:"")+e.hash;return e.protocol?e.protocol+"//"+(e.auth?e.auth+"@":"")+e.host+t:t}class Gf extends Error{constructor(){super(...arguments),this.name="FetchError"}}function ed(e,t,n){let r="";e&&n&&(r=`${n.status} ${n.statusText} (${e.toString()})`),t&&(r=`${t.message} (${r})`);const o=new Gf(r);return Object.defineProperty(o,"request",{get(){return e}}),Object.defineProperty(o,"response",{get(){return n}}),Object.defineProperty(o,"data",{get(){return n&&n._data}}),o}const td=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function tl(e="GET"){return td.has(e.toUpperCase())}function nd(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const rd=new Set(["image/svg","application/xml","application/xhtml","application/html"]),od=/^application\/(?:[\w!#$%&*`\-.^~]*\+)?json(;.+)?$/i;function sd(e=""){if(!e)return"json";const t=e.split(";").shift();return od.test(t)?"json":rd.has(t)||t.startsWith("text/")?"text":"blob"}const ld=new Set([408,409,425,429,500,502,503,504]);function Xi(e){const{fetch:t,Headers:n}=e;function r(l){const i=l.error&&l.error.name==="AbortError"||!1;if(l.options.retry!==!1&&!i){const u=typeof l.options.retry=="number"?l.options.retry:tl(l.options.method)?0:1,c=l.response&&l.response.status||500;if(u>0&&ld.has(c))return o(l.request,{...l.options,retry:u-1})}const a=ed(l.request,l.error,l.response);throw Error.captureStackTrace&&Error.captureStackTrace(a,o),a}const o=async function(i,a={}){const u={request:i,options:{...e.defaults,...a},response:void 0,error:void 0};u.options.onRequest&&await u.options.onRequest(u),typeof u.request=="string"&&(u.options.baseURL&&(u.request=Qi(u.request,u.options.baseURL)),(u.options.query||u.options.params)&&(u.request=Jf(u.request,{...u.options.params,...u.options.query})),u.options.body&&tl(u.options.method)&&nd(u.options.body)&&(u.options.body=typeof u.options.body=="string"?u.options.body:JSON.stringify(u.options.body),u.options.headers=new n(u.options.headers),u.options.headers.has("content-type")||u.options.headers.set("content-type","application/json"),u.options.headers.has("accept")||u.options.headers.set("accept","application/json"))),u.response=await t(u.request,u.options).catch(async f=>(u.error=f,u.options.onRequestError&&await u.options.onRequestError(u),r(u)));const c=(u.options.parseResponse?"json":u.options.responseType)||sd(u.response.headers.get("content-type")||"");if(c==="json"){const f=await u.response.text(),p=u.options.parseResponse||as;u.response._data=p(f)}else c==="stream"?u.response._data=u.response.body:u.response._data=await u.response[c]();return u.options.onResponse&&await u.options.onResponse(u),u.response.ok||u.options.onResponseError&&await u.options.onResponseError(u),u.response.ok?u.response:r(u)},s=function(i,a){return o(i,a).then(u=>u._data)};return s.raw=o,s.create=(l={})=>Xi({...e,defaults:{...e.defaults,...l}}),s}const Zi=function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")}(),id=Zi.fetch||(()=>Promise.reject(new Error("[ohmyfetch] global.fetch is not supported!"))),ad=Zi.Headers,ud=Xi({fetch:id,Headers:ad}),cd=()=>{var e;return((e=window==null?void 0:window.__NUXT__)==null?void 0:e.config)||{}},vr=cd().app,fd=()=>vr.baseURL,dd=()=>vr.buildAssetsDir,pd=(...e)=>Qn(Gi(),dd(),...e),Gi=(...e)=>{const t=vr.cdnURL||vr.baseURL;return e.length?Qn(t,...e):t};globalThis.__buildAssetsURL=pd,globalThis.__publicAssetsURL=Gi;function Ro(e,t={},n){for(const r in e){const o=e[r],s=n?`${n}:${r}`:r;typeof o=="object"&&o!==null?Ro(o,t,s):typeof o=="function"&&(t[s]=o)}return t}function hd(e,t){return e.reduce((n,r)=>n.then(()=>r.apply(void 0,t)),Promise.resolve(null))}function gd(e,t){return Promise.all(e.map(n=>n.apply(void 0,t)))}function Xr(e,t){for(const n of e)n(t)}class md{constructor(){this._hooks={},this._before=null,this._after=null,this._deprecatedMessages=null,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,r={}){if(!t||typeof n!="function")return()=>{};const o=t;let s;for(;this._deprecatedHooks[t];)s=this._deprecatedHooks[t],t=s.to;if(s&&!r.allowDeprecated){let l=s.message;l||(l=`${o} hook has been deprecated`+(s.to?`, please use ${s.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(l)||(console.warn(l),this._deprecatedMessages.add(l))}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=null)}}hookOnce(t,n){let r,o=(...s)=>(r(),r=null,o=null,n(...s));return r=this.hook(t,o),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];this._hooks[t]=void 0;for(const o of r)this.hook(t,o)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=Ro(t),r=Object.keys(n).map(o=>this.hook(o,n[o]));return()=>{r.splice(0,r.length).forEach(o=>o())}}removeHooks(t){const n=Ro(t);for(const r in n)this.removeHook(r,n[r])}callHook(t,...n){return this.callHookWith(hd,t,...n)}callHookParallel(t,...n){return this.callHookWith(gd,t,...n)}callHookWith(t,n,...r){const o=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&Xr(this._before,o);const s=t(this._hooks[n]||[],r);return s instanceof Promise?s.finally(()=>{this._after&&o&&Xr(this._after,o)}):(this._after&&o&&Xr(this._after,o),s)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}function yd(){return new md}function _d(){let e=null,t=!1;const n=r=>{if(e&&e!==r)throw new Error("Context conflict")};return{use:()=>{if(e==null)throw new Error("Context is not available");return e},tryUse:()=>e,set:(r,o)=>{o||n(r),e=r,t=!0},unset:()=>{e=null,t=!1},call:(r,o)=>{n(r),e=r;try{return o()}finally{t||(e=null)}},async callAsync(r,o){e=r;const s=()=>{e=r},l=()=>e===r?s:void 0;Po.add(l);try{const i=o();return t||(e=null),await i}finally{Po.delete(l)}}}}function vd(){const e={};return{get(t){return e[t]||(e[t]=_d()),e[t],e[t]}}}const br=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},nl="__unctx__",bd=br[nl]||(br[nl]=vd()),wd=e=>bd.get(e),rl="__unctx_async_handlers__",Po=br[rl]||(br[rl]=new Set);function ea(e){const t=[];for(const o of Po){const s=o();s&&t.push(s)}const n=()=>{for(const o of t)o()};let r=e();return"catch"in r&&(r=r.catch(o=>{throw n(),o})),[r,n]}const ta=wd("nuxt-app"),Ed="__nuxt_plugin";function Cd(e){let t=0;const n={provide:void 0,globalName:"nuxt",payload:et({data:{},state:{},_errors:{},...window.__NUXT__}),isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let s=!1;return()=>{if(!s&&(s=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:{},...e};n.hooks=yd(),n.hook=n.hooks.hook,n.callHook=n.hooks.callHook,n.provide=(s,l)=>{const i="$"+s;sr(n,i,l),sr(n.vueApp.config.globalProperties,i,l)},sr(n.vueApp,"$nuxt",n),sr(n.vueApp.config.globalProperties,"$nuxt",n);const r=et(n.payload.config),o=new Proxy(r,{get(s,l){var i;return l==="public"?s.public:(i=s[l])!=null?i:s.public[l]},set(s,l,i){return l==="public"||l==="app"?!1:(s[l]=i,s.public[l]=i,!0)}});return n.provide("config",o),n}async function xd(e,t){if(typeof t!="function")return;const{provide:n}=await xt(e,t,[e])||{};if(n&&typeof n=="object")for(const r in n)e.provide(r,n[r])}async function Rd(e,t){for(const n of t)await xd(e,n)}function Pd(e){return e.map(n=>typeof n!="function"?null:n.length>1?r=>n(r,r.provide):n).filter(Boolean)}function Lt(e){return e[Ed]=!0,e}function xt(e,t,n){const r=()=>n?t(...n):t();return ta.set(e),r()}function Ce(){const e=ta.tryUse();if(!e){const t=yt();if(!t)throw new Error("nuxt instance unavailable");return t.appContext.app.$nuxt}return e}function Cn(){return Ce().$config}function sr(e,t,n){Object.defineProperty(e,t,{get:()=>n})}const kd=()=>null;function Sd(...e){var f,p,g,_,C,R,y,h,v;const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);let[n,r,o={}]=e;if(typeof n!="string")throw new TypeError("[nuxt] [asyncData] key must be a string.");if(typeof r!="function")throw new TypeError("[nuxt] [asyncData] handler must be a function.");o.server=(f=o.server)!=null?f:!0,o.default=(p=o.default)!=null?p:kd,o.defer&&console.warn("[useAsyncData] `defer` has been renamed to `lazy`. Support for `defer` will be removed in RC."),o.lazy=(_=(g=o.lazy)!=null?g:o.defer)!=null?_:!1,o.initialCache=(C=o.initialCache)!=null?C:!0,o.immediate=(R=o.immediate)!=null?R:!0;const s=Ce(),l=()=>(s.isHydrating||o.initialCache)&&s.payload.data[n]!==void 0;s._asyncData[n]||(s._asyncData[n]={data:ze(l()?s.payload.data[n]:(h=(y=o.default)==null?void 0:y.call(o))!=null?h:null),pending:ze(!l()),error:ze((v=s.payload._errors[n])!=null?v:null)});const i={...s._asyncData[n]};i.refresh=i.execute=(w={})=>{if(s._asyncDataPromises[n]){if(w.dedupe===!1)return s._asyncDataPromises[n];s._asyncDataPromises[n].cancelled=!0}if(w._initial&&l())return s.payload.data[n];i.pending.value=!0;const T=new Promise((O,I)=>{try{O(r(s))}catch(k){I(k)}}).then(O=>{if(T.cancelled)return s._asyncDataPromises[n];o.transform&&(O=o.transform(O)),o.pick&&(O=Ad(O,o.pick)),i.data.value=O,i.error.value=null}).catch(O=>{var I,k;if(T.cancelled)return s._asyncDataPromises[n];i.error.value=O,i.data.value=be((k=(I=o.default)==null?void 0:I.call(o))!=null?k:null)}).finally(()=>{T.cancelled||(i.pending.value=!1,s.payload.data[n]=i.data.value,i.error.value&&(s.payload._errors[n]=!0),delete s._asyncDataPromises[n])});return s._asyncDataPromises[n]=T,s._asyncDataPromises[n]};const a=()=>i.refresh({_initial:!0}),u=o.server!==!1&&s.payload.serverRendered;{const w=yt();if(w&&!w._nuxtOnBeforeMountCbs){w._nuxtOnBeforeMountCbs=[];const O=w._nuxtOnBeforeMountCbs;w&&(Ei(()=>{O.forEach(I=>{I()}),O.splice(0,O.length)}),hr(()=>O.splice(0,O.length)))}u&&s.isHydrating&&n in s.payload.data?i.pending.value=!1:w&&(s.payload.serverRendered&&s.isHydrating||o.lazy)&&o.immediate?w._nuxtOnBeforeMountCbs.push(a):o.immediate&&a(),o.watch&&je(o.watch,()=>i.refresh());const T=s.hook("app:data:refresh",O=>{if(!O||O.includes(n))return i.refresh()});w&&hr(T)}const c=Promise.resolve(s._asyncDataPromises[n]).then(()=>i);return Object.assign(c,i),c}function Km(e){const t=e?Array.isArray(e)?e:[e]:void 0;return Ce().callHook("app:data:refresh",t)}function Ad(e,t){const n={};for(const r of t)n[r]=e[r];return n}const Td=decodeURIComponent,Od=encodeURIComponent,Ld=/; */,lr=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function Md(e,t){if(typeof e!="string")throw new TypeError("argument str must be a string");let n={},r=t||{},o=e.split(Ld),s=r.decode||Td;for(let l=0;lZo(Ce().payload,"error"),On=e=>{const t=na(e);try{Ce().callHook("app:error",t);const r=Hr();r.value=r.value||t}catch{throw t}return t},$d=async(e={})=>{const t=Ce(),n=Hr();t.callHook("app:error:cleared",e),e.redirect&&await t.$router.replace(e.redirect),n.value=null},Bd=e=>!!(e&&typeof e=="object"&&"__nuxt_error"in e),na=e=>{const t=So(e);return t.__nuxt_error=!0,t};function ra(...e){const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);const[n,r]=e;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(r!==void 0&&typeof r!="function")throw new Error("[nuxt] [useState] init must be a function: "+r);const o="$s"+n,s=Ce(),l=Zo(s.payload.state,o);if(l.value===void 0&&r){const i=r();if(Re(i))return s.payload.state[o]=i,i;l.value=i}return l}const Wt=()=>{var e;return(e=Ce())==null?void 0:e.$router},xn=()=>yt()?Ge("_route",Ce()._route):Ce()._route,Hd=e=>e,Nd=()=>{try{if(Ce()._processingMiddleware)return!0}catch{return!0}return!1},jd=(e,t)=>{e||(e="/");const n=typeof e=="string"?e:e.path||"/",r=$r(n,!0);if(r&&!(t!=null&&t.external))throw new Error("Navigating to external URL is not allowed by default. Use `nagivateTo (url, { external: true })`.");if(r&&Br(n).protocol==="script:")throw new Error("Cannot navigate to an URL with script protocol.");if(!r&&Nd())return e;const o=Wt();return r?(t!=null&&t.replace?location.replace(n):location.href=n,Promise.resolve()):t!=null&&t.replace?o.replace(e):o.push(e)},Fd={ignoreUnknown:!1,respectType:!1,respectFunctionNames:!1,respectFunctionProperties:!1,unorderedObjects:!0,unorderedArrays:!1,unorderedSets:!1};function Ud(e,t={}){t={...Fd,...t};const n=oa(t);return n.dispatch(e),n.toString()}function oa(e){const t=[];let n=[];const r=o=>{t.push(o)};return{toString(){return t.join("")},getContext(){return n},dispatch(o){return e.replacer&&(o=e.replacer(o)),this["_"+(o===null?"null":typeof o)](o)},_object(o){const s=/\[object (.*)\]/i,l=Object.prototype.toString.call(o),i=s.exec(l),a=i?i[1].toLowerCase():"unknown:["+l.toLowerCase()+"]";let u=null;if((u=n.indexOf(o))>=0)return this.dispatch("[CIRCULAR:"+u+"]");if(n.push(o),typeof Buffer<"u"&&Buffer.isBuffer&&Buffer.isBuffer(o))return r("buffer:"),r(o.toString("utf8"));if(a!=="object"&&a!=="function"&&a!=="asyncfunction")if(this["_"+a])this["_"+a](o);else{if(e.ignoreUnknown)return r("["+a+"]");throw new Error('Unknown object type "'+a+'"')}else{let c=Object.keys(o);return e.unorderedObjects&&(c=c.sort()),e.respectType!==!1&&!sl(o)&&c.splice(0,0,"prototype","__proto__","letructor"),e.excludeKeys&&(c=c.filter(function(f){return!e.excludeKeys(f)})),r("object:"+c.length+":"),c.forEach(f=>{this.dispatch(f),r(":"),e.excludeValues||this.dispatch(o[f]),r(",")})}},_array(o,s){if(s=typeof s<"u"?s:e.unorderedArrays!==!1,r("array:"+o.length+":"),!s||o.length<=1)return o.forEach(a=>this.dispatch(a));const l=[],i=o.map(a=>{const u=oa(e);return u.dispatch(a),l.push(u.getContext()),u.toString()});return n=n.concat(l),i.sort(),this._array(i,!1)},_date(o){return r("date:"+o.toJSON())},_symbol(o){return r("symbol:"+o.toString())},_error(o){return r("error:"+o.toString())},_boolean(o){return r("bool:"+o.toString())},_string(o){r("string:"+o.length+":"),r(o.toString())},_function(o){r("fn:"),sl(o)?this.dispatch("[native]"):this.dispatch(o.toString()),e.respectFunctionNames!==!1&&this.dispatch("function-name:"+String(o.name)),e.respectFunctionProperties&&this._object(o)},_number(o){return r("number:"+o.toString())},_xml(o){return r("xml:"+o.toString())},_null(){return r("Null")},_undefined(){return r("Undefined")},_regexp(o){return r("regex:"+o.toString())},_uint8array(o){return r("uint8array:"),this.dispatch(Array.prototype.slice.call(o))},_uint8clampedarray(o){return r("uint8clampedarray:"),this.dispatch(Array.prototype.slice.call(o))},_int8array(o){return r("int8array:"),this.dispatch(Array.prototype.slice.call(o))},_uint16array(o){return r("uint16array:"),this.dispatch(Array.prototype.slice.call(o))},_int16array(o){return r("int16array:"),this.dispatch(Array.prototype.slice.call(o))},_uint32array(o){return r("uint32array:"),this.dispatch(Array.prototype.slice.call(o))},_int32array(o){return r("int32array:"),this.dispatch(Array.prototype.slice.call(o))},_float32array(o){return r("float32array:"),this.dispatch(Array.prototype.slice.call(o))},_float64array(o){return r("float64array:"),this.dispatch(Array.prototype.slice.call(o))},_arraybuffer(o){return r("arraybuffer:"),this.dispatch(new Uint8Array(o))},_url(o){return r("url:"+o.toString())},_map(o){r("map:");const s=Array.from(o);return this._array(s,e.unorderedSets!==!1)},_set(o){r("set:");const s=Array.from(o);return this._array(s,e.unorderedSets!==!1)},_file(o){return r("file:"),this.dispatch([o.name,o.size,o.type,o.lastModfied])},_blob(){if(e.ignoreUnknown)return r("[blob]");throw new Error(`Hashing Blob objects is currently not supported -Use "options.replacer" or "options.ignoreUnknown" -`)},_domwindow(){return r("domwindow")},_bigint(o){return r("bigint:"+o.toString())},_process(){return r("process")},_timer(){return r("timer")},_pipe(){return r("pipe")},_tcp(){return r("tcp")},_udp(){return r("udp")},_tty(){return r("tty")},_statwatcher(){return r("statwatcher")},_securecontext(){return r("securecontext")},_connection(){return r("connection")},_zlib(){return r("zlib")},_context(){return r("context")},_nodescript(){return r("nodescript")},_httpparser(){return r("httpparser")},_dataview(){return r("dataview")},_signal(){return r("signal")},_fsevent(){return r("fsevent")},_tlswrap(){return r("tlswrap")}}}function sl(e){return typeof e!="function"?!1:/^function\s+\w*\s*\(\s*\)\s*{\s+\[native code\]\s+}$/i.exec(Function.prototype.toString.call(e))!=null}class hn{constructor(t,n){t=this.words=t||[],n!==void 0?this.sigBytes=n:this.sigBytes=t.length*4}toString(t){return(t||qd).stringify(this)}concat(t){if(this.clamp(),this.sigBytes%4)for(let n=0;n>>2]>>>24-n%4*8&255;this.words[this.sigBytes+n>>>2]|=r<<24-(this.sigBytes+n)%4*8}else for(let n=0;n>>2]=t.words[n>>>2];return this.sigBytes+=t.sigBytes,this}clamp(){this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4)}clone(){return new hn(this.words.slice(0))}}const qd={stringify(e){const t=[];for(let n=0;n>>2]>>>24-n%4*8&255;t.push((r>>>4).toString(16)),t.push((r&15).toString(16))}return t.join("")}},Kd={stringify(e){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=[];for(let r=0;r>>2]>>>24-r%4*8&255,s=e.words[r+1>>>2]>>>24-(r+1)%4*8&255,l=e.words[r+2>>>2]>>>24-(r+2)%4*8&255,i=o<<16|s<<8|l;for(let a=0;a<4&&r*8+a*6>>6*(3-a)&63))}return n.join("")}},zd={parse(e){const t=e.length,n=[];for(let r=0;r>>2]|=(e.charCodeAt(r)&255)<<24-r%4*8;return new hn(n,t)}},Vd={parse(e){return zd.parse(unescape(encodeURIComponent(e)))}};class Wd{constructor(){this._minBufferSize=0,this.blockSize=512/32,this.reset()}reset(){this._data=new hn,this._nDataBytes=0}_append(t){typeof t=="string"&&(t=Vd.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_doProcessBlock(t,n){}_process(t){let n,r=this._data.sigBytes/(this.blockSize*4);t?r=Math.ceil(r):r=Math.max((r|0)-this._minBufferSize,0);const o=r*this.blockSize,s=Math.min(o*4,this._data.sigBytes);if(o){for(let l=0;l>>7)^(v<<14|v>>>18)^v>>>3,T=Bt[p-2],O=(T<<15|T>>>17)^(T<<13|T>>>19)^T>>>10;Bt[p]=w+Bt[p-7]+O+Bt[p-16]}const g=a&u^~a&c,_=o&s^o&l^s&l,C=(o<<30|o>>>2)^(o<<19|o>>>13)^(o<<10|o>>>22),R=(a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25),y=f+R+g+Jd[p]+Bt[p],h=C+_;f=c,c=u,u=a,a=i+y|0,i=l,l=s,s=o,o=y+h|0}r[0]=r[0]+o|0,r[1]=r[1]+s|0,r[2]=r[2]+l|0,r[3]=r[3]+i|0,r[4]=r[4]+a|0,r[5]=r[5]+u|0,r[6]=r[6]+c|0,r[7]=r[7]+f|0}finalize(t){super.finalize(t);const n=this._nDataBytes*8,r=this._data.sigBytes*8;return this._data.words[r>>>5]|=128<<24-r%32,this._data.words[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),this._data.words[(r+64>>>9<<4)+15]=n,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}}function Zd(e){return new Xd().finalize(e).toString(Kd)}function sa(e,t={}){const n=typeof e=="string"?e:Ud(e,t);return Zd(n).substr(0,10)}const Gd={path:"/",decode:e=>as(decodeURIComponent(e)),encode:e=>encodeURIComponent(typeof e=="string"?e:JSON.stringify(e))};function la(e,t){var s,l;const n={...Gd,...t},r=ep(n)||{},o=ze((l=r[e])!=null?l:(s=n.default)==null?void 0:s.call(n));return je(o,()=>{np(e,o.value,n)}),o}function ep(e={}){return Md(document.cookie,e)}function tp(e,t,n={}){return t==null?ol(e,t,{...n,maxAge:-1}):ol(e,t,n)}function np(e,t,n={}){document.cookie=tp(e,t,n)}async function ia(e,t=Wt()){if(t._routePreloaded||(t._routePreloaded=new Set),t._routePreloaded.has(e))return;t._routePreloaded.add(e);const n=t._preloadPromises||(t._preloadPromises=[]);if(n.length>4)return Promise.all(n).then(()=>ia(e,t));const r=t.resolve(e).matched.map(o=>{var s;return(s=o.components)==null?void 0:s.default}).filter(o=>typeof o=="function");for(const o of r){const s=Promise.resolve(o()).catch(()=>{}).finally(()=>n.splice(n.indexOf(s)));n.push(s)}await Promise.all(n)}const rp="modulepreload",op=function(e,t){return new URL(e,t).href},ll={},J=function(t,n,r){return!n||n.length===0?t():Promise.all(n.map(o=>{if(o=op(o,r),o in ll)return;ll[o]=!0;const s=o.endsWith(".css"),l=s?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${o}"]${l}`))return;const i=document.createElement("link");if(i.rel=s?"stylesheet":rp,s||(i.as="script",i.crossOrigin=""),i.href=o,document.head.appendChild(i),s)return new Promise((a,u)=>{i.addEventListener("load",a),i.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t())};function il(e,t={}){const n=sp(e,t),r=Ce(),o=r._payloadCache=r._payloadCache||{};return o[e]||(o[e]=lp(n).then(s=>s||(delete o[e],null))),o[e]}function sp(e,t={}){const n=Br(e);if(n.search)throw new Error("Payload URL cannot contain search params: "+e);const r=t.hash||(t.fresh?Date.now():"");return Qn(Cn().app.baseURL,n.pathname,r?`_payload.${r}.js`:"_payload.js")}async function lp(e){const t=await J(()=>import(e),[],import.meta.url).catch(n=>{console.warn("[nuxt] Cannot load payload ",e,n)});return(t==null?void 0:t.default)||null}function ip(){return!!Ce().payload.prerenderedAt}const ap=(...e)=>e.find(t=>t!==void 0),up="noopener noreferrer",cp=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),fp=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)});function aa(e){const t=e.componentName||"NuxtLink";return Le({name:t,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1}},setup(n,{slots:r}){const o=Wt(),s=xe(()=>n.to||n.href||""),l=xe(()=>n.external||n.target&&n.target!=="_self"?!0:typeof s.value=="object"?!1:s.value===""||$r(s.value,!0)),i=ze(!1),a=ze(null);if(n.prefetch!==!1&&n.noPrefetch!==!0&&typeof s.value=="string"&&n.target!=="_blank"&&!pp()){const c=Ce(),f=dp();let p,g=null;Yn(()=>{p=cp(()=>{var _;(_=a==null?void 0:a.value)!=null&&_.tagName&&(g=f.observe(a.value,async()=>{g==null||g(),g=null,await Promise.all([c.hooks.callHook("link:prefetch",s.value).catch(()=>{}),!l.value&&ia(s.value,o).catch(()=>{})]),i.value=!0}))})}),En(()=>{p&&fp(p),g==null||g(),g=null})}return()=>{var g,_,C;if(!l.value)return ye(Lr("RouterLink"),{ref:R=>{a.value=R==null?void 0:R.$el},to:s.value,...i.value&&!n.custom?{class:n.prefetchedClass||e.prefetchedClass}:{},activeClass:n.activeClass||e.activeClass,exactActiveClass:n.exactActiveClass||e.exactActiveClass,replace:n.replace,ariaCurrentValue:n.ariaCurrentValue,custom:n.custom},r.default);const u=typeof s.value=="object"?(_=(g=o.resolve(s.value))==null?void 0:g.href)!=null?_:null:s.value||null,c=n.target||null,f=n.noRel?null:ap(n.rel,e.externalRelAttribute,u?up:"")||null,p=()=>jd(u,{replace:n.replace});return n.custom?r.default?r.default({href:u,navigate:p,route:o.resolve(u),rel:f,target:c,isActive:!1,isExactActive:!1}):null:ye("a",{ref:a,href:u,rel:f,target:c},(C=r.default)==null?void 0:C.call(r))}}})}const ua=aa({componentName:"NuxtLink"});function dp(){const e=Ce();if(e._observer)return e._observer;let t=null;const n=new Map,r=(s,l)=>(t||(t=new IntersectionObserver(i=>{for(const a of i){const u=n.get(a.target);(a.isIntersecting||a.intersectionRatio>0)&&u&&u()}})),n.set(s,l),t.observe(s),()=>{n.delete(s),t.unobserve(s),n.size===0&&(t.disconnect(),t=null)});return e._observer={observe:r}}function pp(){const e=navigator.connection;return!!(e&&(e.saveData||/2g/.test(e.effectiveType)))}const zm=Object.freeze(Object.defineProperty({__proto__:null,defineNuxtLink:aa,default:ua},Symbol.toStringTag,{value:"Module"}));function Zr(e){return e!==null&&typeof e=="object"}function Ao(e,t,n=".",r){if(!Zr(t))return Ao(e,{},n,r);const o=Object.assign({},t);for(const s in e){if(s==="__proto__"||s==="constructor")continue;const l=e[s];l!=null&&(r&&r(o,s,l,n)||(Array.isArray(l)&&Array.isArray(o[s])?o[s]=l.concat(o[s]):Zr(l)&&Zr(o[s])?o[s]=Ao(l,o[s],(n?`${n}.`:"")+s.toString(),r):o[s]=l))}return o}function hp(e){return(...t)=>t.reduce((n,r)=>Ao(n,r,"",e),{})}const gp=hp((e,t,n,r)=>{if(typeof e[t]<"u"&&typeof n=="function")return e[t]=n(e[t]),!0}),mp={};gp(mp);function ca(e){Ce()._useHead(e)}const Gr={ProseA:ne(()=>J(()=>import("./ProseA.7e12c275.js"),[],import.meta.url).then(e=>e.default||e)),ProseCode:ne(()=>J(()=>import("./ProseCode.344aba07.js"),["ProseCode.344aba07.js","UiIconCopy.feb163da.js","ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js","ProseCode.vue_used_vue_type_style_index_1_lang.24930a5d.css"],import.meta.url).then(e=>e.default||e)),ContentDoc:ne(()=>J(()=>Promise.resolve().then(()=>Pg),void 0,import.meta.url).then(e=>e.default||e)),ContentList:ne(()=>J(()=>import("./ContentList.0bd16ed1.js"),[],import.meta.url).then(e=>e.default||e)),ContentNavigation:ne(()=>J(()=>import("./ContentNavigation.0324933a.js").then(e=>e.C),["ContentNavigation.0324933a.js","ContentNavigation.82aba83b.css","navigation.ce71bb44.js","ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js","ProseCode.vue_used_vue_type_style_index_1_lang.24930a5d.css","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.5944fda9.css","ContentList.0bd16ed1.js","ContentSlot.493c190c.js","DocumentDrivenEmpty.b2333dde.js","DocumentDrivenNotFound.3c77d0e3.js","Markdown.3aab9649.js"],import.meta.url).then(e=>e.default||e)),ContentQuery:ne(()=>J(()=>Promise.resolve().then(()=>xg),void 0,import.meta.url).then(e=>e.default||e)),ContentRenderer:ne(()=>J(()=>Promise.resolve().then(()=>mg),void 0,import.meta.url).then(e=>e.default||e)),ContentRendererMarkdown:ne(()=>J(()=>Promise.resolve().then(()=>gg),void 0,import.meta.url).then(e=>e.default||e)),ContentSlot:ne(()=>J(()=>import("./ContentSlot.493c190c.js"),[],import.meta.url).then(e=>e.default||e)),DocumentDrivenEmpty:ne(()=>J(()=>import("./DocumentDrivenEmpty.b2333dde.js"),[],import.meta.url).then(e=>e.default||e)),DocumentDrivenNotFound:ne(()=>J(()=>import("./DocumentDrivenNotFound.3c77d0e3.js"),[],import.meta.url).then(e=>e.default||e)),Markdown:ne(()=>J(()=>import("./Markdown.3aab9649.js"),["Markdown.3aab9649.js","ContentSlot.493c190c.js"],import.meta.url).then(e=>e.default||e)),ProseBlockquote:ne(()=>J(()=>import("./ProseBlockquote.23ea93eb.js"),[],import.meta.url).then(e=>e.default||e)),ProseCodeInline:ne(()=>J(()=>import("./ProseCodeInline.3710a525.js"),[],import.meta.url).then(e=>e.default||e)),ProseEm:ne(()=>J(()=>import("./ProseEm.8384abd2.js"),[],import.meta.url).then(e=>e.default||e)),ProseH1:ne(()=>J(()=>import("./ProseH1.30a3226a.js"),[],import.meta.url).then(e=>e.default||e)),ProseH2:ne(()=>J(()=>import("./ProseH2.713a1428.js"),[],import.meta.url).then(e=>e.default||e)),ProseH3:ne(()=>J(()=>import("./ProseH3.d55803cb.js"),[],import.meta.url).then(e=>e.default||e)),ProseH4:ne(()=>J(()=>import("./ProseH4.99c4bbf1.js"),[],import.meta.url).then(e=>e.default||e)),ProseH5:ne(()=>J(()=>import("./ProseH5.3055fe9b.js"),[],import.meta.url).then(e=>e.default||e)),ProseH6:ne(()=>J(()=>import("./ProseH6.dd45b49c.js"),[],import.meta.url).then(e=>e.default||e)),ProseHr:ne(()=>J(()=>import("./ProseHr.a12a2694.js"),[],import.meta.url).then(e=>e.default||e)),ProseImg:ne(()=>J(()=>import("./ProseImg.10476274.js"),[],import.meta.url).then(e=>e.default||e)),ProseLi:ne(()=>J(()=>import("./ProseLi.4aa2c1e5.js"),[],import.meta.url).then(e=>e.default||e)),ProseOl:ne(()=>J(()=>import("./ProseOl.f051d6b1.js"),[],import.meta.url).then(e=>e.default||e)),ProseP:ne(()=>J(()=>import("./ProseP.c8adea50.js"),[],import.meta.url).then(e=>e.default||e)),ProseStrong:ne(()=>J(()=>import("./ProseStrong.fc69a1d3.js"),[],import.meta.url).then(e=>e.default||e)),ProseTable:ne(()=>J(()=>import("./ProseTable.1153aba7.js"),[],import.meta.url).then(e=>e.default||e)),ProseTbody:ne(()=>J(()=>import("./ProseTbody.3b14efe4.js"),[],import.meta.url).then(e=>e.default||e)),ProseTd:ne(()=>J(()=>import("./ProseTd.92dfa71d.js"),[],import.meta.url).then(e=>e.default||e)),ProseTh:ne(()=>J(()=>import("./ProseTh.d8019ce9.js"),[],import.meta.url).then(e=>e.default||e)),ProseThead:ne(()=>J(()=>import("./ProseThead.cbcdaf65.js"),[],import.meta.url).then(e=>e.default||e)),ProseTr:ne(()=>J(()=>import("./ProseTr.20da6eb7.js"),[],import.meta.url).then(e=>e.default||e)),ProseUl:ne(()=>J(()=>import("./ProseUl.835c32e2.js"),[],import.meta.url).then(e=>e.default||e))},yp=Lt(e=>{for(const t in Gr)e.vueApp.component(t,Gr[t]),e.vueApp.component("Lazy"+t,Gr[t])});var al;const _p=typeof window<"u";_p&&((al=window==null?void 0:window.navigator)==null?void 0:al.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function vp(e){return typeof e=="function"?e():be(e)}var bp="usehead",ul="head:count",eo="data-head-attrs",fa="data-meta-body",cs=(e,t)=>e.map(n=>(n.input&&(t||!n.resolved)&&(n.input=wr(n.input)),n)),wp=(e,t)=>{const n=r=>{var o;if((o=r.options)!=null&&o.renderPriority)return r.options.renderPriority;switch(r.tag){case"base":return-1;case"meta":return r.props.charset?-2:r.props["http-equiv"]==="content-security-policy"?0:10;default:return 10}};return n(e)-n(t)},Ep=e=>{const{props:t,tag:n,options:r}=e;if(n==="base"||n==="title"||n==="titleTemplate")return n;if(n==="link"&&t.rel==="canonical")return"canonical";if(t.charset)return"charset";if(r!=null&&r.key)return`${n}:${r.key}`;const o=["id"];n==="meta"&&o.push("name","property","http-equiv");for(const s of o)if(typeof t[s]<"u")return`${n}:${s}:${t[s]}`;return e.runtime.position};function wr(e){const t=vp(e);return!e||!t?t:Array.isArray(t)?t.map(wr):typeof t=="object"?Object.fromEntries(Object.entries(t).map(([n,r])=>n==="titleTemplate"?[n,be(r)]:[n,wr(r)])):t}var Cp=(e,t,n)=>{var r;t={...t};const o={tag:e,props:{},runtime:{entryId:n.id},options:{...n.options}};return["hid","vmid","key"].forEach(s=>{t[s]&&(o.options.key=t[s],delete t[s])}),["children","innerHTML","textContent"].forEach(s=>{typeof t[s]<"u"&&(o.children=t[s],delete t[s])}),["body","renderPriority"].forEach(s=>{typeof t[s]<"u"&&(o.options[s]=t[s],delete t[s])}),(r=o.options)!=null&&r.body&&(t[fa]=!0),o.props=t,o},xp=e=>Object.entries(e.input).filter(([,t])=>typeof t<"u").map(([t,n])=>(Array.isArray(n)?n:[n]).map(r=>{switch(t){case"title":case"titleTemplate":return{tag:t,children:r,props:{},runtime:{entryId:e.id},options:e.options};case"base":case"meta":case"link":case"style":case"script":case"noscript":case"htmlAttrs":case"bodyAttrs":return Cp(t,r,e);default:return!1}})).flat().filter(t=>!!t),cl=(e,t)=>e==null?t||null:typeof e=="function"?e(t):e.replace("%s",t!=null?t:""),da=e=>{const t={};cs(e).forEach((l,i)=>{xp(l).forEach((u,c)=>{u.runtime=u.runtime||{},u.runtime.position=i*1e4+c,t[Ep(u)]=u})});let r=Object.values(t).sort((l,i)=>l.runtime.position-i.runtime.position).sort(wp);const o=r.findIndex(l=>l.tag==="titleTemplate"),s=r.findIndex(l=>l.tag==="title");if(s!==-1&&o!==-1){const l=cl(r[o].children,r[s].children);l!==null?r[s].children=l||r[s].children:r=r.filter((i,a)=>a!==s),r=r.filter((i,a)=>a!==o)}else if(o!==-1){const l=cl(r[o].children);l!==null?(r[o].children=l,r[o].tag="title"):r=r.filter((i,a)=>a!==o)}return r};function fl(e,t){if(e instanceof HTMLElement&&t instanceof HTMLElement){const n=t.getAttribute("nonce");if(n&&!e.getAttribute("nonce")){const r=t.cloneNode(!0);return r.setAttribute("nonce",""),r.nonce=n,n===e.nonce&&e.isEqualNode(r)}}return e.isEqualNode(t)}var dl=(e,t)=>{const n=e.getAttribute(eo);if(n)for(const o of n.split(","))o in t||e.removeAttribute(o);const r=[];for(const o in t){const s=t[o];s!=null&&(s===!1?e.removeAttribute(o):e.setAttribute(o,s),r.push(o))}r.length?e.setAttribute(eo,r.join(",")):e.removeAttribute(eo)},Rp=(e,t)=>{var n;const r=t.createElement(e.tag);return Object.entries(e.props).forEach(([o,s])=>{s!==!1&&r.setAttribute(o,s===!0?"":String(s))}),e.children&&((n=e.options)!=null&&n.safe?e.tag!=="script"&&(r.textContent=e.children):r.innerHTML=e.children),r},Pp=(e=window.document,t,n)=>{var r,o;const s=e.head,l=e.body;let i=s.querySelector(`meta[name="${ul}"]`);const a=l.querySelectorAll(`[${fa}]`),u=i?Number(i.getAttribute("content")):0,c=[],f=[];if(a)for(let g=0;g{var C;var _;return{element:Rp(g,e),body:(C=(_=g.options)==null?void 0:_.body)!=null?C:!1}});p=p.filter(g=>{for(let _=0;_{var _;return(_=g.parentNode)==null?void 0:_.removeChild(g)}),c.forEach(g=>{var _;return(_=g.parentNode)==null?void 0:_.removeChild(g)}),p.forEach(g=>{g.body?l.insertAdjacentElement("beforeend",g.element):s.insertBefore(g.element,i)}),i.setAttribute("content",`${u-c.length+p.filter(g=>!g.body).length}`)},kp=async(e,t,n)=>{var r,o;const s={};n||(n=window.document);for(const u in e.hooks["before:dom"])if(await e.hooks["before:dom"][u]()===!1)return;const l=cs(e.headEntries);for(const u in e.hooks["resolved:entries"])await e.hooks["resolved:entries"][u](l);const i=da(l);for(const u in e.hooks["resolved:tags"])await e.hooks["resolved:tags"][u](i);for(const u of i)switch(u.tag){case"title":typeof u.children<"u"&&(n.title=u.children);break;case"base":case"meta":case"link":case"style":case"script":case"noscript":s[u.tag]=s[u.tag]||[],s[u.tag].push(u);break}dl(n.documentElement,((r=i.find(u=>u.tag==="htmlAttrs"))==null?void 0:r.props)||{}),dl(n.body,((o=i.find(u=>u.tag==="bodyAttrs"))==null?void 0:o.props)||{});const a=new Set([...Object.keys(s),...t]);for(const u of a)Pp(n,u,s[u]||[]);t.clear(),Object.keys(s).forEach(u=>t.add(u))},Sp=typeof window<"u",Ap=e=>{let t=[],n=0;const r=new Set;let o=null;const s={install(l){l.config.globalProperties&&(l.config.globalProperties.$head=s),l.provide(bp,s)},hooks:{"before:dom":[],"resolved:tags":[],"resolved:entries":[]},get headEntries(){return t},get headTags(){const l=cs(s.headEntries);return da(l)},addHeadObjs(l,i){return s.addEntry(l,i)},addEntry(l,i={}){let a=!1;i!=null&&i.resolved&&(a=!0,delete i.resolved);const u={id:n++,options:i,resolved:a,input:l};return t.push(u),{remove(){t=t.filter(c=>c.id!==u.id)},update(c){t=t.map(f=>(f.id===u.id&&(f.input=c),f))}}},async updateDOM(l,i){const a=()=>(o=null,kp(s,r,l));return i?a():o=o||new Promise(u=>wn(()=>u(a())))},addReactiveEntry(l,i={}){let a=null;const u=lc(()=>{const c=wr(l);a===null?a=s.addEntry(c,{...i,resolved:!0}):a.update(c),Sp&&s.updateDOM()});return()=>{u(),a&&a.remove()}}};return e&&s.addEntry(e),s};const Tp={meta:[{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"utf-8"}],link:[],style:[],script:[],noscript:[]},Op={name:"layout",mode:"out-in"},Lp={name:"page",mode:"out-in"},Mp=!1,Dp=Lt(e=>{const t=Ap();t.addEntry(Tp,{resolved:!0}),e.vueApp.use(t);{let n=!0;t.hooks["before:dom"].push(()=>!n),e.hooks.hookOnce("app:mounted",()=>{n=!1,t.updateDOM(),Wt().beforeEach(()=>{n=!0}),Wt().afterEach(()=>{n&&(n=!1,t.updateDOM())})})}e._useHead=(n,r)=>{const o=t.addReactiveEntry(n,r);!yt()||En(()=>{o(),t.updateDOM()})}}),Ip={created(){const e=yt();if(!e)return;const t=e.type;if(!t||!("head"in t))return;const n=Ce(),r=typeof t.head=="function"?()=>t.head(n):t.head;ca(r)}},$p=Lt(e=>{e.vueApp.mixin(Ip)});/*! - * vue-router v4.1.5 - * (c) 2022 Eduardo San Martin Morote - * @license MIT - */const Gt=typeof window<"u";function Bp(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ie=Object.assign;function to(e,t){const n={};for(const r in t){const o=t[r];n[r]=tt(o)?o.map(e):e(o)}return n}const Bn=()=>{},tt=Array.isArray,Hp=/\/$/,Np=e=>e.replace(Hp,"");function no(e,t,n="/"){let r,o={},s="",l="";const i=t.indexOf("#");let a=t.indexOf("?");return i=0&&(a=-1),a>-1&&(r=t.slice(0,a),s=t.slice(a+1,i>-1?i:t.length),o=e(s)),i>-1&&(r=r||t.slice(0,i),l=t.slice(i,t.length)),r=qp(r!=null?r:t,n),{fullPath:r+(s&&"?")+s+l,path:r,query:o,hash:l}}function jp(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function pl(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Fp(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&gn(t.matched[r],n.matched[o])&&pa(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function gn(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function pa(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Up(e[n],t[n]))return!1;return!0}function Up(e,t){return tt(e)?hl(e,t):tt(t)?hl(t,e):e===t}function hl(e,t){return tt(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function qp(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/");let o=n.length-1,s,l;for(s=0;s1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(s-(s===r.length?1:0)).join("/")}var zn;(function(e){e.pop="pop",e.push="push"})(zn||(zn={}));var Hn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Hn||(Hn={}));function Kp(e){if(!e)if(Gt){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Np(e)}const zp=/^[^#]+#/;function Vp(e,t){return e.replace(zp,"#")+t}function Wp(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Nr=()=>({left:window.pageXOffset,top:window.pageYOffset});function Yp(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=Wp(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function gl(e,t){return(history.state?history.state.position-t:-1)+e}const To=new Map;function Qp(e,t){To.set(e,t)}function Jp(e){const t=To.get(e);return To.delete(e),t}let Xp=()=>location.protocol+"//"+location.host;function ha(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){let i=o.includes(e.slice(s))?e.slice(s).length:1,a=o.slice(i);return a[0]!=="/"&&(a="/"+a),pl(a,"")}return pl(n,e)+r+o}function Zp(e,t,n,r){let o=[],s=[],l=null;const i=({state:p})=>{const g=ha(e,location),_=n.value,C=t.value;let R=0;if(p){if(n.value=g,t.value=p,l&&l===_){l=null;return}R=C?p.position-C.position:0}else r(g);o.forEach(y=>{y(n.value,_,{delta:R,type:zn.pop,direction:R?R>0?Hn.forward:Hn.back:Hn.unknown})})};function a(){l=n.value}function u(p){o.push(p);const g=()=>{const _=o.indexOf(p);_>-1&&o.splice(_,1)};return s.push(g),g}function c(){const{history:p}=window;!p.state||p.replaceState(ie({},p.state,{scroll:Nr()}),"")}function f(){for(const p of s)p();s=[],window.removeEventListener("popstate",i),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",i),window.addEventListener("beforeunload",c),{pauseListeners:a,listen:u,destroy:f}}function ml(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?Nr():null}}function Gp(e){const{history:t,location:n}=window,r={value:ha(e,n)},o={value:t.state};o.value||s(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function s(a,u,c){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+a:Xp()+e+a;try{t[c?"replaceState":"pushState"](u,"",p),o.value=u}catch(g){console.error(g),n[c?"replace":"assign"](p)}}function l(a,u){const c=ie({},t.state,ml(o.value.back,a,o.value.forward,!0),u,{position:o.value.position});s(a,c,!0),r.value=a}function i(a,u){const c=ie({},o.value,t.state,{forward:a,scroll:Nr()});s(c.current,c,!0);const f=ie({},ml(r.value,a,null),{position:c.position+1},u);s(a,f,!1),r.value=a}return{location:r,state:o,push:i,replace:l}}function ga(e){e=Kp(e);const t=Gp(e),n=Zp(e,t.state,t.location,t.replace);function r(s,l=!0){l||n.pauseListeners(),history.go(s)}const o=ie({location:"",base:e,go:r,createHref:Vp.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function eh(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),ga(e)}function th(e){return typeof e=="string"||e&&typeof e=="object"}function ma(e){return typeof e=="string"||typeof e=="symbol"}const Et={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},ya=Symbol("");var yl;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(yl||(yl={}));function mn(e,t){return ie(new Error,{type:e,[ya]:!0},t)}function at(e,t){return e instanceof Error&&ya in e&&(t==null||!!(e.type&t))}const _l="[^/]+?",nh={sensitive:!1,strict:!1,start:!0,end:!0},rh=/[.+*?^${}()[\]/\\]/g;function oh(e,t){const n=ie({},nh,t),r=[];let o=n.start?"^":"";const s=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(o+="/");for(let f=0;ft.length?t.length===1&&t[0]===40+40?1:-1:0}function lh(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const ih={type:0,value:""},ah=/[a-zA-Z0-9_]/;function uh(e){if(!e)return[[]];if(e==="/")return[[ih]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${u}": ${g}`)}let n=0,r=n;const o=[];let s;function l(){s&&o.push(s),s=[]}let i=0,a,u="",c="";function f(){!u||(n===0?s.push({type:0,value:u}):n===1||n===2||n===3?(s.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),s.push({type:1,value:u,regexp:c,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=a}for(;i{l(h)}:Bn}function l(c){if(ma(c)){const f=r.get(c);f&&(r.delete(c),n.splice(n.indexOf(f),1),f.children.forEach(l),f.alias.forEach(l))}else{const f=n.indexOf(c);f>-1&&(n.splice(f,1),c.record.name&&r.delete(c.record.name),c.children.forEach(l),c.alias.forEach(l))}}function i(){return n}function a(c){let f=0;for(;f=0&&(c.record.path!==n[f].record.path||!_a(c,n[f]));)f++;n.splice(f,0,c),c.record.name&&!wl(c)&&r.set(c.record.name,c)}function u(c,f){let p,g={},_,C;if("name"in c&&c.name){if(p=r.get(c.name),!p)throw mn(1,{location:c});C=p.record.name,g=ie(bl(f.params,p.keys.filter(h=>!h.optional).map(h=>h.name)),c.params&&bl(c.params,p.keys.map(h=>h.name))),_=p.stringify(g)}else if("path"in c)_=c.path,p=n.find(h=>h.re.test(_)),p&&(g=p.parse(_),C=p.record.name);else{if(p=f.name?r.get(f.name):n.find(h=>h.re.test(f.path)),!p)throw mn(1,{location:c,currentLocation:f});C=p.record.name,g=ie({},f.params,c.params),_=p.stringify(g)}const R=[];let y=p;for(;y;)R.unshift(y.record),y=y.parent;return{name:C,path:_,params:g,matched:R,meta:hh(R)}}return e.forEach(c=>s(c)),{addRoute:s,resolve:u,removeRoute:l,getRoutes:i,getRecordMatcher:o}}function bl(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function dh(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:ph(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function ph(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="boolean"?n:n[r];return t}function wl(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function hh(e){return e.reduce((t,n)=>ie(t,n.meta),{})}function El(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function _a(e,t){return t.children.some(n=>n===e||_a(e,n))}const va=/#/g,gh=/&/g,mh=/\//g,yh=/=/g,_h=/\?/g,ba=/\+/g,vh=/%5B/g,bh=/%5D/g,wa=/%5E/g,wh=/%60/g,Ea=/%7B/g,Eh=/%7C/g,Ca=/%7D/g,Ch=/%20/g;function fs(e){return encodeURI(""+e).replace(Eh,"|").replace(vh,"[").replace(bh,"]")}function xh(e){return fs(e).replace(Ea,"{").replace(Ca,"}").replace(wa,"^")}function Oo(e){return fs(e).replace(ba,"%2B").replace(Ch,"+").replace(va,"%23").replace(gh,"%26").replace(wh,"`").replace(Ea,"{").replace(Ca,"}").replace(wa,"^")}function Rh(e){return Oo(e).replace(yh,"%3D")}function Ph(e){return fs(e).replace(va,"%23").replace(_h,"%3F")}function kh(e){return e==null?"":Ph(e).replace(mh,"%2F")}function Er(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function Sh(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;os&&Oo(s)):[r&&Oo(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function Ah(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=tt(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const Th=Symbol(""),xl=Symbol(""),ds=Symbol(""),ps=Symbol(""),Lo=Symbol("");function Sn(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e,reset:n}}function Rt(e,t,n,r,o){const s=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((l,i)=>{const a=f=>{f===!1?i(mn(4,{from:n,to:t})):f instanceof Error?i(f):th(f)?i(mn(2,{from:t,to:f})):(s&&r.enterCallbacks[o]===s&&typeof f=="function"&&s.push(f),l())},u=e.call(r&&r.instances[o],t,n,a);let c=Promise.resolve(u);e.length<3&&(c=c.then(a)),c.catch(f=>i(f))})}function ro(e,t,n,r){const o=[];for(const s of e)for(const l in s.components){let i=s.components[l];if(!(t!=="beforeRouteEnter"&&!s.instances[l]))if(Oh(i)){const u=(i.__vccOpts||i)[t];u&&o.push(Rt(u,n,r,s,l))}else{let a=i();o.push(()=>a.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${l}" at "${s.path}"`));const c=Bp(u)?u.default:u;s.components[l]=c;const p=(c.__vccOpts||c)[t];return p&&Rt(p,n,r,s,l)()}))}}return o}function Oh(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Rl(e){const t=Ge(ds),n=Ge(ps),r=xe(()=>t.resolve(be(e.to))),o=xe(()=>{const{matched:a}=r.value,{length:u}=a,c=a[u-1],f=n.matched;if(!c||!f.length)return-1;const p=f.findIndex(gn.bind(null,c));if(p>-1)return p;const g=Pl(a[u-2]);return u>1&&Pl(c)===g&&f[f.length-1].path!==g?f.findIndex(gn.bind(null,a[u-2])):p}),s=xe(()=>o.value>-1&&Ih(n.params,r.value.params)),l=xe(()=>o.value>-1&&o.value===n.matched.length-1&&pa(n.params,r.value.params));function i(a={}){return Dh(a)?t[be(e.replace)?"replace":"push"](be(e.to)).catch(Bn):Promise.resolve()}return{route:r,href:xe(()=>r.value.href),isActive:s,isExactActive:l,navigate:i}}const Lh=Le({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Rl,setup(e,{slots:t}){const n=et(Rl(e)),{options:r}=Ge(ds),o=xe(()=>({[kl(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[kl(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const s=t.default&&t.default(n);return e.custom?s:ye("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},s)}}}),Mh=Lh;function Dh(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Ih(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!tt(o)||o.length!==r.length||r.some((s,l)=>s!==o[l]))return!1}return!0}function Pl(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const kl=(e,t,n)=>e!=null?e:t!=null?t:n,$h=Le({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Ge(Lo),o=xe(()=>e.route||r.value),s=Ge(xl,0),l=xe(()=>{let u=be(s);const{matched:c}=o.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),i=xe(()=>o.value.matched[l.value]);ln(xl,xe(()=>l.value+1)),ln(Th,i),ln(Lo,o);const a=ze();return je(()=>[a.value,i.value,e.name],([u,c,f],[p,g,_])=>{c&&(c.instances[f]=u,g&&g!==c&&u&&u===p&&(c.leaveGuards.size||(c.leaveGuards=g.leaveGuards),c.updateGuards.size||(c.updateGuards=g.updateGuards))),u&&c&&(!g||!gn(c,g)||!p)&&(c.enterCallbacks[f]||[]).forEach(C=>C(u))},{flush:"post"}),()=>{const u=o.value,c=e.name,f=i.value,p=f&&f.components[c];if(!p)return Sl(n.default,{Component:p,route:u});const g=f.props[c],_=g?g===!0?u.params:typeof g=="function"?g(u):g:null,R=ye(p,ie({},_,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(f.instances[c]=null)},ref:a}));return Sl(n.default,{Component:R,route:u})||R}}});function Sl(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const xa=$h;function Bh(e){const t=fh(e.routes,e),n=e.parseQuery||Sh,r=e.stringifyQuery||Cl,o=e.history,s=Sn(),l=Sn(),i=Sn(),a=fo(Et);let u=Et;Gt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=to.bind(null,x=>""+x),f=to.bind(null,kh),p=to.bind(null,Er);function g(x,N){let $,K;return ma(x)?($=t.getRecordMatcher(x),K=N):K=x,t.addRoute(K,$)}function _(x){const N=t.getRecordMatcher(x);N&&t.removeRoute(N)}function C(){return t.getRoutes().map(x=>x.record)}function R(x){return!!t.getRecordMatcher(x)}function y(x,N){if(N=ie({},N||a.value),typeof x=="string"){const d=no(n,x,N.path),m=t.resolve({path:d.path},N),b=o.createHref(d.fullPath);return ie(d,m,{params:p(m.params),hash:Er(d.hash),redirectedFrom:void 0,href:b})}let $;if("path"in x)$=ie({},x,{path:no(n,x.path,N.path).path});else{const d=ie({},x.params);for(const m in d)d[m]==null&&delete d[m];$=ie({},x,{params:f(x.params)}),N.params=f(N.params)}const K=t.resolve($,N),se=x.hash||"";K.params=c(p(K.params));const me=jp(r,ie({},x,{hash:xh(se),path:K.path})),ee=o.createHref(me);return ie({fullPath:me,hash:se,query:r===Cl?Ah(x.query):x.query||{}},K,{redirectedFrom:void 0,href:ee})}function h(x){return typeof x=="string"?no(n,x,a.value.path):ie({},x)}function v(x,N){if(u!==x)return mn(8,{from:N,to:x})}function w(x){return I(x)}function T(x){return w(ie(h(x),{replace:!0}))}function O(x){const N=x.matched[x.matched.length-1];if(N&&N.redirect){const{redirect:$}=N;let K=typeof $=="function"?$(x):$;return typeof K=="string"&&(K=K.includes("?")||K.includes("#")?K=h(K):{path:K},K.params={}),ie({query:x.query,hash:x.hash,params:"path"in K?{}:x.params},K)}}function I(x,N){const $=u=y(x),K=a.value,se=x.state,me=x.force,ee=x.replace===!0,d=O($);if(d)return I(ie(h(d),{state:typeof d=="object"?ie({},se,d.state):se,force:me,replace:ee}),N||$);const m=$;m.redirectedFrom=N;let b;return!me&&Fp(r,K,$)&&(b=mn(16,{to:m,from:K}),Mt(K,K,!0,!1)),(b?Promise.resolve(b):U(m,K)).catch(E=>at(E)?at(E,2)?E:Ye(E):ce(E,m,K)).then(E=>{if(E){if(at(E,2))return I(ie({replace:ee},h(E.to),{state:typeof E.to=="object"?ie({},se,E.to.state):se,force:me}),N||m)}else E=W(m,K,!0,ee,se);return F(m,K,E),E})}function k(x,N){const $=v(x,N);return $?Promise.reject($):Promise.resolve()}function U(x,N){let $;const[K,se,me]=Hh(x,N);$=ro(K.reverse(),"beforeRouteLeave",x,N);for(const d of K)d.leaveGuards.forEach(m=>{$.push(Rt(m,x,N))});const ee=k.bind(null,x,N);return $.push(ee),Xt($).then(()=>{$=[];for(const d of s.list())$.push(Rt(d,x,N));return $.push(ee),Xt($)}).then(()=>{$=ro(se,"beforeRouteUpdate",x,N);for(const d of se)d.updateGuards.forEach(m=>{$.push(Rt(m,x,N))});return $.push(ee),Xt($)}).then(()=>{$=[];for(const d of x.matched)if(d.beforeEnter&&!N.matched.includes(d))if(tt(d.beforeEnter))for(const m of d.beforeEnter)$.push(Rt(m,x,N));else $.push(Rt(d.beforeEnter,x,N));return $.push(ee),Xt($)}).then(()=>(x.matched.forEach(d=>d.enterCallbacks={}),$=ro(me,"beforeRouteEnter",x,N),$.push(ee),Xt($))).then(()=>{$=[];for(const d of l.list())$.push(Rt(d,x,N));return $.push(ee),Xt($)}).catch(d=>at(d,8)?d:Promise.reject(d))}function F(x,N,$){for(const K of i.list())K(x,N,$)}function W(x,N,$,K,se){const me=v(x,N);if(me)return me;const ee=N===Et,d=Gt?history.state:{};$&&(K||ee?o.replace(x.fullPath,ie({scroll:ee&&d&&d.scroll},se)):o.push(x.fullPath,se)),a.value=x,Mt(x,N,$,ee),Ye()}let H;function Z(){H||(H=o.listen((x,N,$)=>{if(!Xn.listening)return;const K=y(x),se=O(K);if(se){I(ie(se,{replace:!0}),K).catch(Bn);return}u=K;const me=a.value;Gt&&Qp(gl(me.fullPath,$.delta),Nr()),U(K,me).catch(ee=>at(ee,12)?ee:at(ee,2)?(I(ee.to,K).then(d=>{at(d,20)&&!$.delta&&$.type===zn.pop&&o.go(-1,!1)}).catch(Bn),Promise.reject()):($.delta&&o.go(-$.delta,!1),ce(ee,K,me))).then(ee=>{ee=ee||W(K,me,!1),ee&&($.delta&&!at(ee,8)?o.go(-$.delta,!1):$.type===zn.pop&&at(ee,20)&&o.go(-1,!1)),F(K,me,ee)}).catch(Bn)}))}let j=Sn(),Ae=Sn(),oe;function ce(x,N,$){Ye(x);const K=Ae.list();return K.length?K.forEach(se=>se(x,N,$)):console.error(x),Promise.reject(x)}function ae(){return oe&&a.value!==Et?Promise.resolve():new Promise((x,N)=>{j.add([x,N])})}function Ye(x){return oe||(oe=!x,Z(),j.list().forEach(([N,$])=>x?$(x):N()),j.reset()),x}function Mt(x,N,$,K){const{scrollBehavior:se}=e;if(!Gt||!se)return Promise.resolve();const me=!$&&Jp(gl(x.fullPath,0))||(K||!$)&&history.state&&history.state.scroll||null;return wn().then(()=>se(x,N,me)).then(ee=>ee&&Yp(ee)).catch(ee=>ce(ee,x,N))}const Qe=x=>o.go(x);let $e;const Qt=new Set,Xn={currentRoute:a,listening:!0,addRoute:g,removeRoute:_,hasRoute:R,getRoutes:C,resolve:y,options:e,push:w,replace:T,go:Qe,back:()=>Qe(-1),forward:()=>Qe(1),beforeEach:s.add,beforeResolve:l.add,afterEach:i.add,onError:Ae.add,isReady:ae,install(x){const N=this;x.component("RouterLink",Mh),x.component("RouterView",xa),x.config.globalProperties.$router=N,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>be(a)}),Gt&&!$e&&a.value===Et&&($e=!0,w(o.location).catch(se=>{}));const $={};for(const se in Et)$[se]=xe(()=>a.value[se]);x.provide(ds,N),x.provide(ps,et($)),x.provide(Lo,a);const K=x.unmount;Qt.add(x),x.unmount=function(){Qt.delete(x),Qt.size<1&&(u=Et,H&&H(),H=null,a.value=Et,$e=!1,oe=!1),K()}}};return Xn}function Xt(e){return e.reduce((t,n)=>t.then(()=>n()),Promise.resolve())}function Hh(e,t){const n=[],r=[],o=[],s=Math.max(t.matched.length,e.matched.length);for(let l=0;lgn(u,i))?r.push(i):n.push(i));const a=e.matched[l];a&&(t.matched.find(u=>gn(u,a))||o.push(a))}return[n,r,o]}function Nh(){return Ge(ps)}const jh=/[0-9]/;function Fh(e=""){return jh.test(e)?null:e.toUpperCase()===e}const Uh=["-","_","/","."];function qh(e,t=Uh){const n=[];if(!e||typeof e!="string")return n;let r="",o=null,s=null;for(const l of e.split("")){const i=t.includes(l);if(i===!0){n.push(r),r="",o=null;continue}const a=Fh(l);if(s===!1){if(o===!1&&a===!0){n.push(r),r=l,o=a;continue}if(o===!0&&a===!1&&r.length>1){const u=r[r.length-1];n.push(r.substr(0,r.length-1)),r=u+l,o=a;continue}}r+=l,o=a,s=i}return n.push(r),n}function Kh(e){return e?e[0].toUpperCase()+e.substring(1):""}function zh(e=""){return(Array.isArray(e)?e:qh(e)).map(t=>Kh(t)).join("")}class Jn{constructor(t,n,r){this.property=t,this.normal=n,r&&(this.space=r)}}Jn.prototype.property={};Jn.prototype.normal={};Jn.prototype.space=null;function Ra(e,t){const n={},r={};let o=-1;for(;++o4&&n.slice(0,4)==="data"&&Jh.test(t)){if(t.charAt(4)==="-"){const s=t.slice(5).replace(Tl,eg);r="data"+s.charAt(0).toUpperCase()+s.slice(1)}else{const s=t.slice(4);if(!Tl.test(s)){let l=s.replace(Xh,Gh);l.charAt(0)!=="-"&&(l="-"+l),t="data"+l}}o=hs}return new o(r,t)}function Gh(e){return"-"+e.toLowerCase()}function eg(e){return e.charAt(1).toUpperCase()}const tg=Ra([Sa,ka,Oa,La,Yh],"html");Ra([Sa,ka,Oa,La,Qh],"svg");var Vm=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ng(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ma={exports:{}};const rg=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"];(function(e){e.exports=rg})(Ma);const Da=ng(Ma.exports),Nn="default",Ia=/^@|^v-on:/,$a=/^:|^v-bind:/,Ba=/^v-model/,og=["select","textarea","input"],Ha=Le({name:"ContentRendererMarkdown",props:{value:{type:Object,required:!0},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"},components:{type:Object,default:()=>({})}},async setup(e){var n;const{content:{tags:t={}}}=Cn().public;return await hg(e.value.body,{tags:{...t,...((n=e.value)==null?void 0:n._components)||{},...e.components}}),{tags:t}},render(e){var u;const{tags:t,tag:n,value:r,components:o}=e;if(!r)return null;let s=r.body||r;e.excerpt&&r.excerpt&&(s=r.excerpt);const l={...r,tags:{...t,...(r==null?void 0:r._components)||{},...o}};let i=l.component||n;typeof l.component=="object"&&(i=l.component.name),i=Na(i);const a=(s.children||[]).map(c=>ar(c,ye,l));return ye(i,{...(u=l.component)==null?void 0:u.props,...this.$attrs},{default:Fa(a)})}});function ar(e,t,n,r={}){var a;if(e.type==="text")return t(ht,e.value);const o=e.tag,s=typeof((a=e.props)==null?void 0:a.__ignoreMap)>"u"&&n.tags[o]||o;if(e.tag==="binding")return sg(e,t,n,r);const l=Na(s);typeof l=="object"&&(l.tag=o);const i=ig(e,n);return t(l,i,lg(e,t,n,{...r,...i}))}function sg(e,t,n,r={}){var a;const o={...r,$route:()=>xn(),$document:n,$doc:n},s=/\.|\[(\d+)\]/,i=((a=e.props)==null?void 0:a.value.trim().split(s).filter(Boolean)).reduce((u,c)=>c in u?typeof u[c]=="function"?u[c]():u[c]:{},o);return t(ht,i)}function lg(e,t,n,r){const s=(e.children||[]).reduce((i,a)=>{if(!Ua(a))return i[Nn].push(ar(a,t,n,r)),i;if(dg(a))return i[Nn].push(...(a.children||[]).map(c=>ar(c,t,n,r))),i;const u=ja(a);return i[u]=(a.children||[]).map(c=>ar(c,t,n,r)),i},{[Nn]:[]}),l=Object.entries(s).map(([i,a])=>[i,Fa(a)]);return Object.fromEntries(l)}function ig(e,t){const{tag:n="",props:r={}}=e;return Object.keys(r).reduce(function(o,s){if(s==="__ignoreMap")return o;const l=r[s];if(Ba.test(s)&&!og.includes(n))return ag(s,l,o,t);if(s==="v-bind")return ug(s,l,o,t);if(Ia.test(s))return cg(s,l,o,t);if($a.test(s))return fg(s,l,o,t);const{attribute:i}=Zh(tg,s);return Array.isArray(l)&&l.every(a=>typeof a=="string")?(o[i]=l.join(" "),o):(o[i]=l,o)},{})}function ag(e,t,n,r){const o=f=>+f,s=f=>f.trim(),l=f=>f,i=e.replace(Ba,"").split(".").filter(f=>f).reduce((f,p)=>(f[p]=!0,f),{}),a="value",u=i.lazy?"change":"input",c=i.number?o:i.trim?s:l;return n[a]=jr(t,r),n.on=n.on||{},n.on[u]=f=>r[t]=c(f),n}function ug(e,t,n,r){const o=jr(t,r);return n=Object.assign(n,o),n}function cg(e,t,n,r){return e=e.replace(Ia,""),n.on=n.on||{},n.on[e]=()=>jr(t,r),n}function fg(e,t,n,r){return e=e.replace($a,""),n[e]=jr(t,r),n}const Na=e=>{if(!Da.includes(e)){const t=Lr(zh(e),!1);if(typeof t=="object")return t}return e};function jr(e,t){const n=e.split(".").reduce((r,o)=>typeof r=="object"?r[o]:void 0,t);return typeof n>"u"?as(e):n}function ja(e){let t="";for(const n of Object.keys(e.props||{}))if(!(!n.startsWith("#")&&!n.startsWith("v-slot:"))){t=n.split(/[:#]/,2)[1];break}return t||Nn}function Fa(e){return e.length?()=>pg(e):void 0}function dg(e){return Ua(e)&&ja(e)===Nn}function Ua(e){return e.tag==="template"}function pg(e){const t=[];for(const n of e){const r=t[t.length-1];n.type===ht&&(r==null?void 0:r.type)===ht?r.children=r.children+n.children:t.push(n)}return t}async function hg(e,t){const n=Array.from(new Set(r(e,t)));await Promise.all(n.map(async o=>{const s=Lr(o);(s==null?void 0:s.__asyncLoader)&&!s.__asyncResolved&&await s.__asyncLoader()}));function r(o,s){var a;if(o.type==="text"||o.tag==="binding")return[];const l=typeof((a=o.props)==null?void 0:a.__ignoreMap)>"u"&&s.tags[o.tag]||o.tag,i=[];o.type!=="root"&&!Da.includes(l)&&i.push(l);for(const u of o.children||[])i.push(...r(u,s));return i}}const gg=Object.freeze(Object.defineProperty({__proto__:null,default:Ha},Symbol.toStringTag,{value:"Module"})),qa=Le({name:"ContentRenderer",props:{value:{type:Object,required:!1,default:()=>({})},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"}},setup(e){je(()=>e.excerpt,t=>{var n,r,o;t&&!((n=e.value)!=null&&n.excerpt)&&(console.warn(`No excerpt found for document content/${(r=e==null?void 0:e.value)==null?void 0:r._path}.${(o=e==null?void 0:e.value)==null?void 0:o._extension}!`),console.warn("Make sure to use in your content if you want to use excerpt feature."))},{immediate:!0})},render(e){var s,l;const t=is(),{value:n,excerpt:r,tag:o}=e;return!n&&(t==null?void 0:t.empty)?t.empty({value:n,excerpt:r,tag:o,...this.$attrs}):t!=null&&t.default?t.default({value:n,excerpt:r,tag:o,...this.$attrs}):n&&(n==null?void 0:n._type)==="markdown"&&((l=(s=n==null?void 0:n.body)==null?void 0:s.children)==null?void 0:l.length)?ye(Ha,{value:n,excerpt:r,tag:o,...this.$attrs}):ye("pre",null,JSON.stringify({message:"You should use slots with ",value:n,excerpt:r,tag:o},null,2))}}),mg=Object.freeze(Object.defineProperty({__proto__:null,default:qa},Symbol.toStringTag,{value:"Module"}));function yg(e){return JSON.stringify(e,_g)}function _g(e,t){return t instanceof RegExp?`--REGEX ${t.toString()}`:t}const vg=["p","h1","h2","h3","h4","h5","h6","li"];function Io(e,t){return e.type===t||typeof e.type=="object"&&e.type.tag===t||e.tag===t}function Ka(e){return Io(e,"text")||typeof e.children=="string"}function za(e){return Array.isArray(e.children)||typeof e.children=="string"?e.children:typeof e.children.default=="function"?e.children.default():[]}function $o(e){if(!e)return"";if(Array.isArray(e))return e.map($o).join("");if(Ka(e))return e.children||e.value;const t=za(e);return Array.isArray(t)?t.map($o).join(""):""}function gs(e,t=["p"]){if(Array.isArray(e))return e.flatMap(r=>gs(r,t));let n=e;return t.some(r=>r==="*"||Io(e,r))&&(n=za(e)||e,!Array.isArray(n)&&vg.some(r=>Io(e,r))&&(n=[n])),n}function Va(e,t=["p"]){return e=Array.isArray(e)?e:[e],t.length?e.flatMap(n=>Va(gs(n,[t[0]]),t.slice(1))).filter(n=>!(Ka(n)&&$o(n).trim()==="")):e}const bg=e=>Qi(e,"/api/"+Cn().public.content.base),Wm=()=>({unwrap:gs,flatUnwrap:Va}),Ym=()=>{throw console.warn("useContent is only accessible when you are using `documentDriven` mode."),console.warn("Learn more by visiting: https://content.nuxtjs.org/guide/writing/document-driven"),new Error("useContent is only accessible when you are using `documentDriven` mode.")},wg=()=>{var t;const{clientDB:e}=Cn().content;return!!(e!=null&&e.isSPA||((t=xn().query)==null?void 0:t.preview)||la("previewToken").value)},Eg="_list_1w161_1",Qm={list:Eg},Wa=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},Ol=(e,t=xn())=>{const n=be(e);je(()=>be(e),(o=n)=>{if(!t.path||!o)return;const s=Object.assign({},(o==null?void 0:o.head)||{}),l=s.title||(o==null?void 0:o.title);l&&(s.title=l),s.meta=[...s.meta||[]];const i=(s==null?void 0:s.description)||(o==null?void 0:o.description);i&&s.meta.filter(u=>u.name==="description").length===0&&s.meta.push({name:"description",content:i});const a=(s==null?void 0:s.image)||(o==null?void 0:o.image);if(a&&s.meta.filter(u=>u.property==="og:image").length===0&&(typeof a=="string"&&s.meta.push({property:"og:image",content:a}),typeof a=="object")){const u=["src","secure_url","type","width","height","alt"];for(const c of u)c==="src"&&a.src?s.meta.push({property:"og:image",content:a[c]}):a[c]&&s.meta.push({property:`og:image:${c}`,content:a[c]})}wn(()=>ca(s))},{immediate:!0})},Ll=(e,t)=>t.split(".").reduce((n,r)=>n&&n[r],e),Ya=(e,t)=>Object.keys(e).filter(t).reduce((n,r)=>Object.assign(n,{[r]:e[r]}),{}),Jm=e=>t=>Array.isArray(t)?t.map(n=>e(n)):e(t),Qa=e=>{const t=[],n=[];for(const r of e)["$","_"].includes(r)?t.push(r):n.push(r);return{prefixes:t,properties:n}},Xm=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Qa(e);return Ya(t,o=>!r.includes(o)&&!n.includes(o[0]))},Zm=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Qa(e);return Ya(t,o=>r.includes(o)||n.includes(o[0]))},Gm=(e,t)=>{const n=new Intl.Collator(t.$locale,{numeric:t.$numeric,caseFirst:t.$caseFirst,sensitivity:t.$sensitivity}),r=Object.keys(t).filter(o=>!o.startsWith("$"));for(const o of r)e=e.sort((s,l)=>{const i=[Ll(s,o),Ll(l,o)].map(a=>{if(a!==null)return a instanceof Date?a.toISOString():a});return t[o]===-1&&i.reverse(),n.compare(i[0],i[1])});return e},ey=(e,t="Expected an array")=>{if(!Array.isArray(e))throw new TypeError(t)},Zt=e=>Array.isArray(e)?e:e?[e]:[],Cg=["sort","where","only","without"],Ml=(e,t)=>{const n={...t};for(const s of Cg)n[s]&&(n[s]=Zt(n[s]));const r=(s,l=i=>i)=>(...i)=>(n[s]=l(...i),o),o={params:()=>n,only:r("only",Zt),without:r("without",Zt),where:r("where",s=>[...Zt(n.where),s]),sort:r("sort",s=>[...Zt(n.sort),...Zt(s)]),limit:r("limit",s=>parseInt(String(s),10)),skip:r("skip",s=>parseInt(String(s),10)),find:()=>e(o),findOne:()=>(n.first=!0,e(o)),findSurround:(s,l)=>(n.surround={query:s,...l},e(o)),locale:s=>o.where({_locale:s})};return o},Dl=e=>async t=>{var s;e&&(t.params().first&&(t.params().where||[]).length===0?t.where({_path:us(e)}):t.where({_path:new RegExp(`^${e.replace(/[-[\]{}()*+.,^$\s/]/g,"\\$&")}`)})),(s=t.params().sort)!=null&&s.length||t.sort({_file:1,$numeric:!0});const n=t.params(),r=bg(`/query/${sa(n)}.json`);if(wg())return(await J(()=>import("./client-db.9d167014.js"),[],import.meta.url).then(i=>i.useContentDatabase())).fetch(t);const o=await $fetch(r,{method:"GET",responseType:"json",params:{_params:yg(n),previewToken:la("previewToken").value}});if(typeof o=="string"&&o.startsWith(""))throw new Error("Not found");return o};function Il(e,...t){return typeof e=="string"?Ml(Dl(Qf(Qn(e,...t)))):Ml(Dl(),e)}const Ja=Le({name:"ContentQuery",props:{path:{type:String,required:!1,default:void 0},only:{type:Array,required:!1,default:void 0},without:{type:Array,required:!1,default:void 0},where:{type:Object,required:!1,default:void 0},sort:{type:Object,required:!1,default:void 0},limit:{type:Number,required:!1,default:void 0},skip:{type:Number,required:!1,default:void 0},locale:{type:String,required:!1,default:void 0},find:{type:String,required:!1,default:void 0}},async setup(e){const{path:t,only:n,without:r,where:o,sort:s,limit:l,skip:i,locale:a,find:u}=ii(e),c=xe(()=>{var g;return(g=t.value)==null?void 0:g.includes("/_")}),{data:f,refresh:p}=await Sd(`content-query-${sa(e)}`,()=>{let g;return t.value?g=Il(t.value):g=Il(),n.value&&(g=g.only(n.value)),r.value&&(g=g.without(r.value)),o.value&&(g=g.where(o.value)),s.value&&(g=g.sort(s.value)),l.value&&(g=g.limit(l.value)),i.value&&(g=g.skip(i.value)),a.value&&(g=g.where({_locale:a.value})),u.value==="one"?g.findOne():u.value==="surround"?t.value?g.findSurround(t):(console.warn("[Content] Surround queries requires `path` prop to be set."),console.warn("[Content] Query without `path` will return regular `find()` results."),g.find()):g.find()});return{isPartial:c,data:f,refresh:p}},render(e){var R;const t=is(),{data:n,refresh:r,isPartial:o,path:s,only:l,without:i,where:a,sort:u,limit:c,skip:f,locale:p,find:g}=e,_={path:s,only:l,without:i,where:a,sort:u,limit:c,skip:f,locale:p,find:g};if(_.find==="one"){if(!n&&(t==null?void 0:t["not-found"]))return t["not-found"]({props:_,...this.$attrs});if((n==null?void 0:n._type)==="markdown"&&!((R=n==null?void 0:n.body)!=null&&R.children.length))return t.empty({props:_,...this.$attrs})}else if((!n||!n.length)&&t!=null&&t["not-found"])return t["not-found"]({props:_,...this.$attrs});return t!=null&&t.default?t.default({data:n,refresh:r,isPartial:o,props:_,...this.$attrs}):((y,h)=>ye("pre",null,JSON.stringify({message:"You should use slots with !",slot:y,data:h},null,2)))("default",{data:n,props:_,isPartial:o})}}),xg=Object.freeze(Object.defineProperty({__proto__:null,default:Ja},Symbol.toStringTag,{value:"Module"})),Rg=Le({name:"ContentDoc",props:{tag:{type:String,required:!1,default:"div"},excerpt:{type:Boolean,default:!1},path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0},head:{type:Boolean,required:!1,default:!0}},render(e){const t=is(),{tag:n,excerpt:r,path:o,query:s,head:l}=e,i={...s||{},path:o||(s==null?void 0:s.path)||Wi(xn().path),find:"one"},a=(u,c)=>ye("pre",null,JSON.stringify({message:"You should use slots with ",slot:u,data:c},null,2));return ye(Ja,i,{default:t!=null&&t.default?({data:u,refresh:c,isPartial:f})=>{var p;return l&&Ol(u),(p=t.default)==null?void 0:p.call(t,{doc:u,refresh:c,isPartial:f,excerpt:r,...this.$attrs})}:({data:u})=>(l&&Ol(u),ye(qa,{value:u,excerpt:r,tag:n,...this.$attrs},{empty:c=>t!=null&&t.empty?t.empty(c):a("default",u)})),empty:u=>{var c;return((c=t==null?void 0:t.empty)==null?void 0:c.call(t,u))||ye("p",null,"Document is empty, overwrite this content with #empty slot in .")},"not-found":u=>{var c;return((c=t==null?void 0:t["not-found"])==null?void 0:c.call(t,u))||ye("p",null,"Document not found, overwrite this content with #not-found slot in .")}})}}),Pg=Object.freeze(Object.defineProperty({__proto__:null,default:Rg},Symbol.toStringTag,{value:"Module"})),Ht=void 0,kg="_grid_15n56_1",Sg="_text_15n56_7",ty={grid:kg,text:Sg},Ag="_rating_11ify_1",Tg="_star_11ify_10",Og="_filled_11ify_29",ny={rating:Ag,star:Tg,filled:Og},Lg="_card_1i1za_1",Mg="_grid_1i1za_9",Dg="_title_1i1za_23",Ig="_icon_1i1za_27",$g="_text_1i1za_32",Bg="_description_1i1za_38",ry={card:Lg,grid:Mg,title:Dg,icon:Ig,text:$g,description:Bg},Hg="_list_89lzg_1",oy={list:Hg},Nt={layout:"content"},Ng="_button_e4315_1",jg="_prefixed_e4315_39",Fg="_suffixed_e4315_39",Ug="_title_e4315_46",qg="_prefix_e4315_39",Kg="_suffix_e4315_39",sy={button:Ng,"variant-outline":"_variant-outline_e4315_6","size-md":"_size-md_e4315_35",prefixed:jg,suffixed:Fg,title:Ug,prefix:qg,suffix:Kg},zg="_grid_1i19d_1",Vg="_image_1i19d_16",Wg="_desk_1i19d_25",Yg="_title_1i19d_30",Qg="_subtitle_1i19d_42",Jg="_text_1i19d_52",Xg="_buttons_1i19d_71",ly={grid:zg,image:Vg,desk:Wg,title:Yg,subtitle:Qg,text:Jg,buttons:Xg},Zg=Le({mounted(){const e=document.querySelector(`.${this.$style.link}.${this.$style.active}`);!e||e==null||e.scrollIntoView({block:"center"})}}),Gg=Le({...Zg,__name:"LayoutMainMenuRow",props:{title:null,url:null,children:null,secondary:{type:Boolean}},setup(e){return(t,n)=>{var s;const r=Xa,o=ua;return((s=e.children)==null?void 0:s.length)||!e.url?(Oe(),Pt("div",{key:0,class:dt([t.$style.container,{[t.$style.secondary]:e.secondary}])},[_r("div",{class:dt(t.$style.heading)},lo(e.title),3),_r("div",{class:dt(t.$style.children)},[(Oe(!0),Pt(ke,null,go(e.children,l=>(Oe(),Vt(r,{key:"item._path",title:l.title,url:l._path,children:l.children,secondary:""},null,8,["title","url","children"]))),128))],2)],2)):(Oe(),Pt("div",{key:1,class:dt(t.$style.row)},[ge(o,{to:e.url,class:dt(t.$style.link),exactActiveClass:t.$style.active},{default:Tr(()=>[Dr(lo(e.title),1)]),_:1},8,["to","class","exactActiveClass"])],2))}}}),em="_container_192pu_1",tm="_secondary_192pu_4",nm="_row_192pu_24",rm="_heading_192pu_48",om="_link_192pu_66",sm="_active_192pu_81",lm="_children_192pu_86",im={container:em,secondary:tm,row:nm,heading:rm,link:om,active:sm,children:lm},am={$style:im},Xa=Wa(Gg,[["__cssModules",am]]),iy=Object.freeze(Object.defineProperty({__proto__:null,default:Xa},Symbol.toStringTag,{value:"Module"})),um="_row_1ufrv_1",ay={row:um},cm=Le({setup(e,{slots:t}){return()=>{var n;return(n=t.default)==null?void 0:n.call(t)}}}),Bo=(e,t,n)=>({default:()=>t?ye(e,t===!0?{}:t,n):ye(cm,{},n)}),Za={content:()=>J(()=>import("./content.38fadf68.js"),["content.38fadf68.js","content.2c0ca7e0.css","LayoutThemeToggle.15266736.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.7ad6e516.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","LayoutFooter.a16d87cb.js"],import.meta.url).then(e=>e.default||e),default:()=>J(()=>import("./default.3c447965.js"),["default.3c447965.js","default.98ce27f1.css","LayoutMainMenuToggle.b8360182.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.5944fda9.css","LayoutMainMenu.f0c8d2bf.js","navigation.ce71bb44.js"],import.meta.url).then(e=>e.default||e)},fm=Le({props:{name:String},async setup(e,t){const n=await Za[e.name]().then(r=>r.default||r);return()=>ye(n,{},t.slots)}}),Ga=Le({props:{name:{type:[String,Boolean,Object],default:null}},setup(e,t){const n=Ge("_route"),r=n===xn()?Nh():n,o=xe(()=>{var s,l;return(l=(s=be(e.name))!=null?s:r.meta.layout)!=null?l:"default"});return()=>{var i;const s=o.value&&o.value in Za,l=(i=r.meta.layoutTransition)!=null?i:Op;return Bo(Ir,s&&l,{default:()=>Bo(fm,s&&{key:o.value,name:o.value,hasTransition:!!l},t.slots).default()}).default()}}}),uy=Object.freeze(Object.defineProperty({__proto__:null,default:Ga},Symbol.toStringTag,{value:"Module"})),dm="_main_32es8_1",pm="_reference_32es8_10",hm="_grid_32es8_14",cy={main:dm,reference:pm,grid:hm},jt={layout:!1},$l=[{name:"slug",path:"/:slug(.*)*",file:"/drone/src/pages/[...slug].vue",children:[],meta:Ht,alias:(Ht==null?void 0:Ht.alias)||[],redirect:(Ht==null?void 0:Ht.redirect)||void 0,component:()=>J(()=>import("./_...slug_.e695364b.js"),["_...slug_.e695364b.js","HomeReference.c4305aa0.js","navigation.ce71bb44.js"],import.meta.url).then(e=>e.default||e)},{name:"bio",path:"/bio",file:"/drone/src/pages/bio.vue",children:[],meta:Nt,alias:(Nt==null?void 0:Nt.alias)||[],redirect:(Nt==null?void 0:Nt.redirect)||void 0,component:()=>J(()=>import("./bio.30cf74c5.js"),["bio.30cf74c5.js","bio.917a4706.css","BioHeading.c969c966.js","BioSkills.e52e3858.js","SkillsCard.31659d77.js","UiStars.6c60e157.js","IconStar.3878a425.js"],import.meta.url).then(e=>e.default||e)},{name:"index",path:"/",file:"/drone/src/pages/index.vue",children:[],meta:jt,alias:(jt==null?void 0:jt.alias)||[],redirect:(jt==null?void 0:jt.redirect)||void 0,component:()=>J(()=>import("./index.fa639cbe.js"),["index.fa639cbe.js","HomeHeader.2d7392ee.js","ArrowRight.c0024fca.js","UiActionButton.00b8dbe7.js","HomeContentList.46ff1ce1.js","navigation.ce71bb44.js"],import.meta.url).then(e=>e.default||e)}],gm={},ut={...gm},mm=Hd(async e=>{var o;let t,n;if(!((o=e.meta)!=null&&o.validate))return;const r=([t,n]=ea(()=>Promise.resolve(e.meta.validate(e))),t=await t,n(),t);return typeof r=="boolean"?r:na(r)}),ym=[mm],so={};function _m(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){const i=o.includes(e.slice(s))?e.slice(s).length:1;let a=o.slice(i);return a[0]!=="/"&&(a="/"+a),Gs(a,"")}return Gs(n,e)+r+o}const vm=Lt(async e=>{var _,C,R,y;let t,n,r=Cn().app.baseURL;ut.hashMode&&!r.includes("#")&&(r+="#");const o=(C=(_=ut.history)==null?void 0:_.call(ut,r))!=null?C:ut.hashMode?eh(r):ga(r),s=(y=(R=ut.routes)==null?void 0:R.call(ut,$l))!=null?y:$l,l=_m(r,window.location),i=Bh({...ut,history:o,routes:s});e.vueApp.use(i);const a=fo(i.currentRoute.value);i.afterEach((h,v)=>{a.value=v}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>a.value});const u=fo(i.resolve(l)),c=()=>{u.value=i.currentRoute.value};e.hook("page:finish",c),i.afterEach((h,v)=>{var w,T,O,I;((T=(w=h.matched[0])==null?void 0:w.components)==null?void 0:T.default)===((I=(O=v.matched[0])==null?void 0:O.components)==null?void 0:I.default)&&c()});const f={};for(const h in u.value)f[h]=xe(()=>u.value[h]);e._route=et(f),e._middleware=e._middleware||{global:[],named:{}};const p=Hr();try{[t,n]=ea(()=>i.isReady()),await t,n()}catch(h){xt(e,On,[h])}const g=ra("_layout");return i.beforeEach(async(h,v)=>{var T,O;h.meta=et(h.meta),e.isHydrating&&(h.meta.layout=(T=g.value)!=null?T:h.meta.layout),e._processingMiddleware=!0;const w=new Set([...ym,...e._middleware.global]);for(const I of h.matched){const k=I.meta.middleware;if(!!k)if(Array.isArray(k))for(const U of k)w.add(U);else w.add(k)}for(const I of w){const k=typeof I=="string"?e._middleware.named[I]||await((O=so[I])==null?void 0:O.call(so).then(F=>F.default||F)):I;if(!k)throw new Error(`Unknown route middleware: '${I}'.`);const U=await xt(e,k,[h,v]);if(!e.payload.serverRendered&&e.isHydrating&&(U===!1||U instanceof Error)){const F=U||So({statusCode:404,statusMessage:`Page Not Found: ${l}`});return xt(e,On,[F])}if(U||U===!1)return U}}),i.afterEach(async h=>{delete e._processingMiddleware,!e.isHydrating&&p.value&&await xt(e,$d),h.matched.length===0&&xt(e,On,[So({statusCode:404,fatal:!1,statusMessage:`Page not found: ${h.fullPath}`})])}),e.hooks.hookOnce("app:created",async()=>{try{await i.replace({...i.resolve(l),name:void 0,force:!0})}catch(h){xt(e,On,[h])}}),{provide:{router:i}}}),bm="__NUXT_COLOR_MODE__",fy="ColorScheme",wm="nuxt-color-mode",ct=window[bm],Em=Lt(e=>{const t=ra("color-mode",()=>et({preference:ct.preference,value:ct.value,unknown:!1,forced:!1})).value;Wt().afterEach(o=>{const s=o.meta.colorMode;s&&s!=="system"?(t.value=s,t.forced=!0):(s==="system"&&console.warn("You cannot force the colorMode to system at the page level."),t.forced=!1,t.value=t.preference==="system"?ct.getColorScheme():t.preference)});let n;function r(){n||!window.matchMedia||(n=window.matchMedia("(prefers-color-scheme: dark)"),n.addEventListener("change",()=>{!t.forced&&t.preference==="system"&&(t.value=ct.getColorScheme())}))}je(()=>t.preference,o=>{var s;t.forced||(o==="system"?(t.value=ct.getColorScheme(),r()):t.value=o,(s=window.localStorage)==null||s.setItem(wm,o))},{immediate:!0}),je(()=>t.value,(o,s)=>{ct.removeColorScheme(s),ct.addColorScheme(o)}),t.preference==="system"&&r(),e.hook("app:mounted",()=>{t.unknown&&(t.preference=ct.preference,t.value=ct.value,t.unknown=!1)}),e.provide("colorMode",t)}),Cm=Lt(()=>{Cn().public.content.wsUrl&&J(()=>import("./web-socket.3d77ee77.js"),[],import.meta.url).then(({useContentWebSocket:t})=>t())}),xm=Lt(e=>{!ip()||(e.hooks.hook("link:prefetch",t=>il(t)),Wt().beforeResolve(async(t,n)=>{if(t.path===n.path)return;const r=await il(t.path);!r||Object.assign(e.payload.data,r.data)}))}),Rm=["data-index"],Pm=Le({__name:"masonry-wall",props:{columnWidth:{default:400},items:null,gap:{default:0},rtl:{type:Boolean,default:!1},ssrColumns:{default:0},scrollContainer:{default:null}},emits:["redraw","redrawSkip"],setup(e,{emit:t}){const n=e,{columnWidth:r,items:o,gap:s,rtl:l,ssrColumns:i,scrollContainer:a}=ii(n),u=ze([]),c=ze();function f(){const R=Math.floor((c.value.getBoundingClientRect().width+s.value)/(r.value+s.value));return R>0?R:1}function p(R){return[...new Array(R)].map(()=>[])}if(i.value>0){const R=p(i.value);o.value.forEach((y,h)=>R[h%i.value].push(h)),u.value=R}async function g(R){if(R>=o.value.length)return;await wn();const y=[...c.value.children];l.value&&y.reverse();const h=y.reduce((v,w)=>w.getBoundingClientRect().height"u"?void 0:new ResizeObserver(()=>_());return Yn(()=>{_(),C==null||C.observe(c.value)}),En(()=>C==null?void 0:C.unobserve(c.value)),je([o,l],()=>_(!0)),je([r,s],()=>_()),(R,y)=>(Oe(),Pt("div",{ref_key:"wall",ref:c,class:"masonry-wall",style:un({display:"flex",gap:`${be(s)}px`})},[(Oe(!0),Pt(ke,null,go(u.value,(h,v)=>(Oe(),Pt("div",{key:v,class:"masonry-column","data-index":v,style:un({display:"flex","flex-basis":"0px","flex-direction":"column","flex-grow":1,height:["-webkit-max-content","-moz-max-content","max-content"],gap:`${be(s)}px`})},[(Oe(!0),Pt(ke,null,go(h,w=>(Oe(),Pt("div",{key:w,class:"masonry-item"},[wc(R.$slots,"default",{item:be(o)[w],index:w},()=>[Dr(lo(be(o)[w]),1)])]))),128))],12,Rm))),128))],4))}}),km=(()=>{const e=Pm;return e.install=t=>{t.component("MasonryWall",e)},e})(),Sm=Lt(e=>{e.vueApp.use(km)}),Am=[yp,Dp,$p,vm,Em,Cm,xm,Sm],Bl={__name:"nuxt-root",setup(e){const t=ne(()=>J(()=>import("./error-component.fabd1547.js"),[],import.meta.url).then(s=>s.default||s)),n=Ce(),r=n.deferHydration();ln("_route",xn()),n.hooks.callHookWith(s=>s.map(l=>l()),"vue:setup");const o=Hr();return xi((s,l,i)=>{n.hooks.callHook("vue:error",s,l,i).catch(a=>console.error("[nuxt] Error in `vue:error` hook",a)),Bd(s)&&(s.fatal||s.unhandled)&&xt(n,On,[s])}),(s,l)=>{const i=Lr("App");return Oe(),Vt(gi,{onResolve:be(r)},{default:Tr(()=>[be(o)?(Oe(),Vt(be(t),{key:0,error:be(o)},null,8,["error"])):(Oe(),Vt(i,{key:1}))]),_:1},8,["onResolve"])}}},Tm=(e,t)=>t.path.replace(/(:\w+)\([^)]+\)/g,"$1").replace(/(:\w+)[?+*]/g,"$1").replace(/:\w+/g,n=>{var r;return((r=e.params[n.slice(1)])==null?void 0:r.toString())||""}),Om=(e,t)=>{var o;const n=t.route.matched.find(s=>{var l;return((l=s.components)==null?void 0:l.default)===t.Component.type}),r=(o=e!=null?e:n==null?void 0:n.meta.key)!=null?o:n&&Tm(t.route,n);return typeof r=="function"?r(t.route):r},Lm=(e,t)=>({default:()=>e?ye(fc,e===!0?{}:e,t):t}),eu=Le({name:"NuxtPage",inheritAttrs:!1,props:{name:{type:String},transition:{type:[Boolean,Object],default:void 0},keepalive:{type:[Boolean,Object],default:void 0},route:{type:Object},pageKey:{type:[Function,String],default:null}},setup(e,{attrs:t}){const n=Ce();return()=>ye(xa,{name:e.name,route:e.route,...t},{default:r=>{var i,a,u,c;if(!r.Component)return;const o=Om(e.pageKey,r),s=(a=(i=e.transition)!=null?i:r.route.meta.pageTransition)!=null?a:Lp,l=n.deferHydration();return Bo(Ir,s,Lm((c=(u=e.keepalive)!=null?u:r.route.meta.keepalive)!=null?c:Mp,ye(gi,{onPending:()=>n.callHook("page:start",r.Component),onResolve:()=>n.callHook("page:finish",r.Component).finally(l)},{default:()=>ye(Mm,{key:o,routeProps:r,pageKey:o,hasTransition:!!s})}))).default()}})}}),Mm=Le({props:["routeProps","pageKey","hasTransition"],setup(e){const t=e.pageKey,n=e.routeProps.route,r={};for(const o in e.routeProps.route)r[o]=xe(()=>t===e.pageKey?e.routeProps.route[o]:n[o]);return ln("_route",et(r)),()=>ye(e.routeProps.Component)}}),dy=Object.freeze(Object.defineProperty({__proto__:null,default:eu},Symbol.toStringTag,{value:"Module"})),Dm={};function Im(e,t){const n=eu,r=Ga;return Oe(),Vt(r,null,{default:Tr(()=>[ge(n)]),_:1})}const $m=Wa(Dm,[["render",Im]]);globalThis.$fetch||(globalThis.$fetch=ud.create({baseURL:fd()}));let Hl;const Bm=Pd(Am);Hl=async function(){var o;const n=Boolean((o=window.__NUXT__)==null?void 0:o.serverRendered)?xf(Bl):Cf(Bl);n.component("App",$m);const r=Cd({vueApp:n});try{await Rd(r,Bm)}catch(s){await r.callHook("app:error",s),r.payload.error=r.payload.error||s}try{await r.hooks.callHook("app:created",n),await r.hooks.callHook("app:beforeMount",n),n.mount("#__nuxt"),await r.hooks.callHook("app:mounted",n),await wn()}catch(s){await r.callHook("app:error",s),r.payload.error=r.payload.error||s}},Hl().catch(e=>{console.error("Error while mounting app:",e)});export{cy as $,ii as A,ra as B,Ym as C,Sd as D,sa as E,bg as F,wg as G,yg as H,la as I,Yn as J,Wm as K,yt as L,Cn as M,Km as N,Rg as O,qa as P,qm as Q,ke as R,go as S,Dr as T,Qm as U,ty as V,Fm as W,oy as X,ry as Y,ny as Z,J as _,Le as a,Ga as a0,ly as a1,Lr as a2,ay as a3,Xa as a4,sy as a5,hr as a6,wn as a7,as as a8,Ll as a9,ey as aa,Zt as ab,Gm as ac,Jm as ad,Xm as ae,Zm as af,Vm as ag,zh as ah,Ml as ai,Qi as aj,Nm as ak,jm as al,fy as am,zm as an,gg as ao,mg as ap,xg as aq,Pg as ar,iy as as,uy as at,dy as au,ua as b,Vt as c,ne as d,Pt as e,_r as f,Fc as g,dt as h,ge as i,Um as j,Wa as k,is as l,ye as m,Hm as n,Oe as o,Ja as p,ze as q,wc as r,Ce as s,lo as t,be as u,xi as v,Tr as w,En as x,xe as y,ca as z}; diff --git a/nuxt/entry.418f6f87.js b/nuxt/entry.418f6f87.js new file mode 100644 index 0000000..0e881ec --- /dev/null +++ b/nuxt/entry.418f6f87.js @@ -0,0 +1,13 @@ +function Uo(e,t){const n=Object.create(null),r=e.split(",");for(let o=0;o!!n[o.toLowerCase()]:o=>!!n[o]}const ou="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",su=Uo(ou);function Fi(e){return!!e||e===""}function dn(e){if(Q(e)){const t={};for(let n=0;n{if(n){const r=n.split(lu);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function gt(e){let t="";if(Ee(e))t=e;else if(Q(e))for(let n=0;nEe(e)?e:e==null?"":Q(e)||ge(e)&&(e.toString===Ki||!G(e.toString))?JSON.stringify(e,qi,2):String(e),qi=(e,t)=>t&&t.__v_isRef?qi(e,t.value):sn(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,o])=>(n[`${r} =>`]=o,n),{})}:Vi(t)?{[`Set(${t.size})`]:[...t.values()]}:ge(t)&&!Q(t)&&!zi(t)?String(t):t,pe={},on=[],tt=()=>{},uu=()=>!1,cu=/^on[^a-z]/,Yn=e=>cu.test(e),Fo=e=>e.startsWith("onUpdate:"),Ae=Object.assign,qo=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},fu=Object.prototype.hasOwnProperty,oe=(e,t)=>fu.call(e,t),Q=Array.isArray,sn=e=>Sr(e)==="[object Map]",Vi=e=>Sr(e)==="[object Set]",G=e=>typeof e=="function",Ee=e=>typeof e=="string",Vo=e=>typeof e=="symbol",ge=e=>e!==null&&typeof e=="object",Ko=e=>ge(e)&&G(e.then)&&G(e.catch),Ki=Object.prototype.toString,Sr=e=>Ki.call(e),du=e=>Sr(e).slice(8,-1),zi=e=>Sr(e)==="[object Object]",zo=e=>Ee(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,In=Uo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),kr=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},pu=/-(\w)/g,ct=kr(e=>e.replace(pu,(t,n)=>n?n.toUpperCase():"")),hu=/\B([A-Z])/g,bn=kr(e=>e.replace(hu,"-$1").toLowerCase()),Pr=kr(e=>e.charAt(0).toUpperCase()+e.slice(1)),Vr=kr(e=>e?`on${Pr(e)}`:""),qn=(e,t)=>!Object.is(e,t),$n=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Wo=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Es;const gu=()=>Es||(Es=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});let it;class mu{constructor(t=!1){this.detached=t,this.active=!0,this.effects=[],this.cleanups=[],this.parent=it,!t&&it&&(this.index=(it.scopes||(it.scopes=[])).push(this)-1)}run(t){if(this.active){const n=it;try{return it=this,t()}finally{it=n}}}on(){it=this}off(){it=this.parent}stop(t){if(this.active){let n,r;for(n=0,r=this.effects.length;n{const t=new Set(e);return t.w=0,t.n=0,t},Wi=e=>(e.w&Mt)>0,Qi=e=>(e.n&Mt)>0,_u=({deps:e})=>{if(e.length)for(let t=0;t{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r{(u==="length"||u>=r)&&l.push(a)});else switch(n!==void 0&&l.push(i.get(n)),t){case"add":Q(e)?zo(n)&&l.push(i.get("length")):(l.push(i.get(Wt)),sn(e)&&l.push(i.get(po)));break;case"delete":Q(e)||(l.push(i.get(Wt)),sn(e)&&l.push(i.get(po)));break;case"set":sn(e)&&l.push(i.get(Wt));break}if(l.length===1)l[0]&&ho(l[0]);else{const a=[];for(const u of l)u&&a.push(...u);ho(Qo(a))}}function ho(e,t){const n=Q(e)?e:[...e];for(const r of n)r.computed&&xs(r);for(const r of n)r.computed||xs(r)}function xs(e,t){(e!==et||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}const bu=Uo("__proto__,__v_isRef,__isVue"),Gi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Vo)),wu=Jo(),Eu=Jo(!1,!0),Cu=Jo(!0),Rs=xu();function xu(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=le(this);for(let s=0,i=this.length;s{e[t]=function(...n){wn();const r=le(this)[t].apply(this,n);return En(),r}}),e}function Jo(e=!1,t=!1){return function(r,o,s){if(o==="__v_isReactive")return!e;if(o==="__v_isReadonly")return e;if(o==="__v_isShallow")return t;if(o==="__v_raw"&&s===(e?t?ju:nl:t?tl:el).get(r))return r;const i=Q(r);if(!e&&i&&oe(Rs,o))return Reflect.get(Rs,o,s);const l=Reflect.get(r,o,s);return(Vo(o)?Gi.has(o):bu(o))||(e||Fe(r,"get",o),t)?l:Se(l)?i&&zo(o)?l:l.value:ge(l)?e?rl(l):rt(l):l}}const Ru=Xi(),Su=Xi(!0);function Xi(e=!1){return function(n,r,o,s){let i=n[r];if(pn(i)&&Se(i)&&!Se(o))return!1;if(!e&&(!pr(o)&&!pn(o)&&(i=le(i),o=le(o)),!Q(n)&&Se(i)&&!Se(o)))return i.value=o,!0;const l=Q(n)&&zo(r)?Number(r)e,Ar=e=>Reflect.getPrototypeOf(e);function tr(e,t,n=!1,r=!1){e=e.__v_raw;const o=le(e),s=le(t);n||(t!==s&&Fe(o,"get",t),Fe(o,"get",s));const{has:i}=Ar(o),l=r?Go:n?es:Vn;if(i.call(o,t))return l(e.get(t));if(i.call(o,s))return l(e.get(s));e!==o&&e.get(t)}function nr(e,t=!1){const n=this.__v_raw,r=le(n),o=le(e);return t||(e!==o&&Fe(r,"has",e),Fe(r,"has",o)),e===o?n.has(e):n.has(e)||n.has(o)}function rr(e,t=!1){return e=e.__v_raw,!t&&Fe(le(e),"iterate",Wt),Reflect.get(e,"size",e)}function Ss(e){e=le(e);const t=le(this);return Ar(t).has.call(t,e)||(t.add(e),mt(t,"add",e,e)),this}function ks(e,t){t=le(t);const n=le(this),{has:r,get:o}=Ar(n);let s=r.call(n,e);s||(e=le(e),s=r.call(n,e));const i=o.call(n,e);return n.set(e,t),s?qn(t,i)&&mt(n,"set",e,t):mt(n,"add",e,t),this}function Ps(e){const t=le(this),{has:n,get:r}=Ar(t);let o=n.call(t,e);o||(e=le(e),o=n.call(t,e)),r&&r.call(t,e);const s=t.delete(e);return o&&mt(t,"delete",e,void 0),s}function As(){const e=le(this),t=e.size!==0,n=e.clear();return t&&mt(e,"clear",void 0,void 0),n}function or(e,t){return function(r,o){const s=this,i=s.__v_raw,l=le(i),a=t?Go:e?es:Vn;return!e&&Fe(l,"iterate",Wt),i.forEach((u,c)=>r.call(o,a(u),a(c),s))}}function sr(e,t,n){return function(...r){const o=this.__v_raw,s=le(o),i=sn(s),l=e==="entries"||e===Symbol.iterator&&i,a=e==="keys"&&i,u=o[e](...r),c=n?Go:t?es:Vn;return!t&&Fe(s,"iterate",a?po:Wt),{next(){const{value:f,done:p}=u.next();return p?{value:f,done:p}:{value:l?[c(f[0]),c(f[1])]:c(f),done:p}},[Symbol.iterator](){return this}}}}function wt(e){return function(...t){return e==="delete"?!1:this}}function Lu(){const e={get(s){return tr(this,s)},get size(){return rr(this)},has:nr,add:Ss,set:ks,delete:Ps,clear:As,forEach:or(!1,!1)},t={get(s){return tr(this,s,!1,!0)},get size(){return rr(this)},has:nr,add:Ss,set:ks,delete:Ps,clear:As,forEach:or(!1,!0)},n={get(s){return tr(this,s,!0)},get size(){return rr(this,!0)},has(s){return nr.call(this,s,!0)},add:wt("add"),set:wt("set"),delete:wt("delete"),clear:wt("clear"),forEach:or(!0,!1)},r={get(s){return tr(this,s,!0,!0)},get size(){return rr(this,!0)},has(s){return nr.call(this,s,!0)},add:wt("add"),set:wt("set"),delete:wt("delete"),clear:wt("clear"),forEach:or(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(s=>{e[s]=sr(s,!1,!1),n[s]=sr(s,!0,!1),t[s]=sr(s,!1,!0),r[s]=sr(s,!0,!0)}),[e,n,t,r]}const[Mu,Du,Iu,$u]=Lu();function Xo(e,t){const n=t?e?$u:Iu:e?Du:Mu;return(r,o,s)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?r:Reflect.get(oe(n,o)&&o in r?n:r,o,s)}const Bu={get:Xo(!1,!1)},Nu={get:Xo(!1,!0)},Hu={get:Xo(!0,!1)},el=new WeakMap,tl=new WeakMap,nl=new WeakMap,ju=new WeakMap;function Uu(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Fu(e){return e.__v_skip||!Object.isExtensible(e)?0:Uu(du(e))}function rt(e){return pn(e)?e:Zo(e,!1,Zi,Bu,el)}function qu(e){return Zo(e,!1,Ou,Nu,tl)}function rl(e){return Zo(e,!0,Tu,Hu,nl)}function Zo(e,t,n,r,o){if(!ge(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const s=o.get(e);if(s)return s;const i=Fu(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return o.set(e,l),l}function ln(e){return pn(e)?ln(e.__v_raw):!!(e&&e.__v_isReactive)}function pn(e){return!!(e&&e.__v_isReadonly)}function pr(e){return!!(e&&e.__v_isShallow)}function ol(e){return ln(e)||pn(e)}function le(e){const t=e&&e.__v_raw;return t?le(t):e}function sl(e){return dr(e,"__v_skip",!0),e}const Vn=e=>ge(e)?rt(e):e,es=e=>ge(e)?rl(e):e;function il(e){Tt&&et&&(e=le(e),Ji(e.dep||(e.dep=Qo())))}function ll(e,t){e=le(e),e.dep&&ho(e.dep)}function Se(e){return!!(e&&e.__v_isRef===!0)}function Qe(e){return al(e,!1)}function go(e){return al(e,!0)}function al(e,t){return Se(e)?e:new Vu(e,t)}class Vu{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:le(t),this._value=n?t:Vn(t)}get value(){return il(this),this._value}set value(t){const n=this.__v_isShallow||pr(t)||pn(t);t=n?t:le(t),qn(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Vn(t),ll(this))}}function we(e){return Se(e)?e.value:e}const Ku={get:(e,t,n)=>we(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const o=e[t];return Se(o)&&!Se(n)?(o.value=n,!0):Reflect.set(e,t,n,r)}};function ul(e){return ln(e)?e:new Proxy(e,Ku)}function cl(e){const t=Q(e)?new Array(e.length):{};for(const n in e)t[n]=ts(e,n);return t}class zu{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}}function ts(e,t,n){const r=e[t];return Se(r)?r:new zu(e,t,n)}var fl;class Wu{constructor(t,n,r,o){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this[fl]=!1,this._dirty=!0,this.effect=new Yo(t,()=>{this._dirty||(this._dirty=!0,ll(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!o,this.__v_isReadonly=r}get value(){const t=le(this);return il(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}fl="__v_isReadonly";function Qu(e,t,n=!1){let r,o;const s=G(e);return s?(r=e,o=tt):(r=e.get,o=e.set),new Wu(r,o,s||!o,n)}function Ot(e,t,n,r){let o;try{o=r?e(...r):e()}catch(s){Cn(s,t,n)}return o}function Ye(e,t,n,r){if(G(e)){const s=Ot(e,t,n,r);return s&&Ko(s)&&s.catch(i=>{Cn(i,t,n)}),s}const o=[];for(let s=0;s>>1;zn(Oe[r])at&&Oe.splice(t,1)}function hl(e){Q(e)?an.push(...e):(!ht||!ht.includes(e,e.allowRecurse?Kt+1:Kt))&&an.push(e),pl()}function Ts(e,t=Kn?at+1:0){for(;tzn(n)-zn(r)),Kt=0;Kte.id==null?1/0:e.id,Xu=(e,t)=>{const n=zn(e)-zn(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function gl(e){mo=!1,Kn=!0,Oe.sort(Xu);const t=tt;try{for(at=0;atg.trim())),f&&(o=n.map(Wo))}let l,a=r[l=Vr(t)]||r[l=Vr(ct(t))];!a&&s&&(a=r[l=Vr(bn(t))]),a&&Ye(a,e,6,o);const u=r[l+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ye(u,e,6,o)}}function ml(e,t,n=!1){const r=t.emitsCache,o=r.get(e);if(o!==void 0)return o;const s=e.emits;let i={},l=!1;if(!G(e)){const a=u=>{const c=ml(u,t,!0);c&&(l=!0,Ae(i,c))};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!s&&!l?(ge(e)&&r.set(e,null),null):(Q(s)?s.forEach(a=>i[a]=null):Ae(i,s),ge(e)&&r.set(e,i),i)}function Or(e,t){return!e||!Yn(t)?!1:(t=t.slice(2).replace(/Once$/,""),oe(e,t[0].toLowerCase()+t.slice(1))||oe(e,bn(t))||oe(e,t))}let Ie=null,Lr=null;function gr(e){const t=Ie;return Ie=e,Lr=e&&e.type.__scopeId||null,t}function py(e){Lr=e}function hy(){Lr=null}function Mr(e,t=Ie,n){if(!t||e._n)return e;const r=(...o)=>{r._d&&Fs(-1);const s=gr(t);let i;try{i=e(...o)}finally{gr(s),r._d&&Fs(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Kr(e){const{type:t,vnode:n,proxy:r,withProxy:o,props:s,propsOptions:[i],slots:l,attrs:a,emit:u,render:c,renderCache:f,data:p,setupState:g,ctx:_,inheritAttrs:C}=e;let R,y;const h=gr(e);try{if(n.shapeFlag&4){const w=o||r;R=ze(c.call(w,w,f,s,g,p,_)),y=a}else{const w=t;R=ze(w.length>1?w(s,{attrs:a,slots:l,emit:u}):w(s,null)),y=t.props?a:tc(a)}}catch(w){Nn.length=0,Cn(w,e,1),R=me($e)}let v=R;if(y&&C!==!1){const w=Object.keys(y),{shapeFlag:T}=v;w.length&&T&7&&(i&&w.some(Fo)&&(y=nc(y,i)),v=_t(v,y))}return n.dirs&&(v=_t(v),v.dirs=v.dirs?v.dirs.concat(n.dirs):n.dirs),n.transition&&(v.transition=n.transition),R=v,gr(h),R}function ec(e){let t;for(let n=0;n{let t;for(const n in e)(n==="class"||n==="style"||Yn(n))&&((t||(t={}))[n]=e[n]);return t},nc=(e,t)=>{const n={};for(const r in e)(!Fo(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function rc(e,t,n){const{props:r,children:o,component:s}=e,{props:i,children:l,patchFlag:a}=t,u=s.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&a>=0){if(a&1024)return!0;if(a&16)return r?Os(r,i,u):!!i;if(a&8){const c=t.dynamicProps;for(let f=0;fe.__isSuspense,oc={name:"Suspense",__isSuspense:!0,process(e,t,n,r,o,s,i,l,a,u){e==null?sc(t,n,r,o,s,i,l,a,u):ic(e,t,n,r,o,i,l,a,u)},hydrate:lc,create:os,normalize:ac},_l=oc;function Wn(e,t){const n=e.props&&e.props[t];G(n)&&n()}function sc(e,t,n,r,o,s,i,l,a){const{p:u,o:{createElement:c}}=a,f=c("div"),p=e.suspense=os(e,o,r,t,f,n,s,i,l,a);u(null,p.pendingBranch=e.ssContent,f,null,r,p,s,i),p.deps>0?(Wn(e,"onPending"),Wn(e,"onFallback"),u(null,e.ssFallback,t,n,r,null,s,i),un(p,e.ssFallback)):p.resolve()}function ic(e,t,n,r,o,s,i,l,{p:a,um:u,o:{createElement:c}}){const f=t.suspense=e.suspense;f.vnode=t,t.el=e.el;const p=t.ssContent,g=t.ssFallback,{activeBranch:_,pendingBranch:C,isInFallback:R,isHydrating:y}=f;if(C)f.pendingBranch=p,ut(p,C)?(a(C,p,f.hiddenContainer,null,o,f,s,i,l),f.deps<=0?f.resolve():R&&(a(_,g,n,r,o,null,s,i,l),un(f,g))):(f.pendingId++,y?(f.isHydrating=!1,f.activeBranch=C):u(C,o,f),f.deps=0,f.effects.length=0,f.hiddenContainer=c("div"),R?(a(null,p,f.hiddenContainer,null,o,f,s,i,l),f.deps<=0?f.resolve():(a(_,g,n,r,o,null,s,i,l),un(f,g))):_&&ut(p,_)?(a(_,p,n,r,o,f,s,i,l),f.resolve(!0)):(a(null,p,f.hiddenContainer,null,o,f,s,i,l),f.deps<=0&&f.resolve()));else if(_&&ut(p,_))a(_,p,n,r,o,f,s,i,l),un(f,p);else if(Wn(t,"onPending"),f.pendingBranch=p,f.pendingId++,a(null,p,f.hiddenContainer,null,o,f,s,i,l),f.deps<=0)f.resolve();else{const{timeout:h,pendingId:v}=f;h>0?setTimeout(()=>{f.pendingId===v&&f.fallback(g)},h):h===0&&f.fallback(g)}}function os(e,t,n,r,o,s,i,l,a,u,c=!1){const{p:f,m:p,um:g,n:_,o:{parentNode:C,remove:R}}=u,y=Wo(e.props&&e.props.timeout),h={vnode:e,parent:t,parentComponent:n,isSVG:i,container:r,hiddenContainer:o,anchor:s,deps:0,pendingId:0,timeout:typeof y=="number"?y:-1,activeBranch:null,pendingBranch:null,isInFallback:!0,isHydrating:c,isUnmounted:!1,effects:[],resolve(v=!1){const{vnode:w,activeBranch:T,pendingBranch:O,pendingId:I,effects:k,parentComponent:F,container:U}=h;if(h.isHydrating)h.isHydrating=!1;else if(!v){const X=T&&O.transition&&O.transition.mode==="out-in";X&&(T.transition.afterLeave=()=>{I===h.pendingId&&p(O,U,j,0)});let{anchor:j}=h;T&&(j=_(T),g(T,F,h,!0)),X||p(O,U,j,0)}un(h,O),h.pendingBranch=null,h.isInFallback=!1;let W=h.parent,N=!1;for(;W;){if(W.pendingBranch){W.effects.push(...k),N=!0;break}W=W.parent}N||hl(k),h.effects=[],Wn(w,"onResolve")},fallback(v){if(!h.pendingBranch)return;const{vnode:w,activeBranch:T,parentComponent:O,container:I,isSVG:k}=h;Wn(w,"onFallback");const F=_(T),U=()=>{!h.isInFallback||(f(null,v,I,F,O,null,k,l,a),un(h,v))},W=v.transition&&v.transition.mode==="out-in";W&&(T.transition.afterLeave=U),h.isInFallback=!0,g(T,O,null,!0),W||U()},move(v,w,T){h.activeBranch&&p(h.activeBranch,v,w,T),h.container=v},next(){return h.activeBranch&&_(h.activeBranch)},registerDep(v,w){const T=!!h.pendingBranch;T&&h.deps++;const O=v.vnode.el;v.asyncDep.catch(I=>{Cn(I,v,0)}).then(I=>{if(v.isUnmounted||h.isUnmounted||h.pendingId!==v.suspenseId)return;v.asyncResolved=!0;const{vnode:k}=v;Co(v,I,!1),O&&(k.el=O);const F=!O&&v.subTree.el;w(v,k,C(O||v.subTree.el),O?null:_(v.subTree),h,i,a),F&&R(F),rs(v,k.el),T&&--h.deps===0&&h.resolve()})},unmount(v,w){h.isUnmounted=!0,h.activeBranch&&g(h.activeBranch,n,v,w),h.pendingBranch&&g(h.pendingBranch,n,v,w)}};return h}function lc(e,t,n,r,o,s,i,l,a){const u=t.suspense=os(t,r,n,e.parentNode,document.createElement("div"),null,o,s,i,l,!0),c=a(e,u.pendingBranch=t.ssContent,n,u,s,i);return u.deps===0&&u.resolve(),c}function ac(e){const{shapeFlag:t,children:n}=e,r=t&32;e.ssContent=Ls(r?n.default:n),e.ssFallback=r?Ls(n.fallback):me($e)}function Ls(e){let t;if(G(e)){const n=hn&&e._c;n&&(e._d=!1,Le()),e=e(),n&&(e._d=!0,t=We,Hl())}return Q(e)&&(e=ec(e)),e=ze(e),t&&!e.dynamicChildren&&(e.dynamicChildren=t.filter(n=>n!==e)),e}function vl(e,t){t&&t.pendingBranch?Q(e)?t.effects.push(...e):t.effects.push(e):hl(e)}function un(e,t){e.activeBranch=t;const{vnode:n,parentComponent:r}=e,o=n.el=t.el;r&&r.subTree===n&&(r.vnode.el=o,rs(r,o))}function cn(e,t){if(Ce){let n=Ce.provides;const r=Ce.parent&&Ce.parent.provides;r===n&&(n=Ce.provides=Object.create(r)),n[e]=t}}function nt(e,t,n=!1){const r=Ce||Ie;if(r){const o=r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides;if(o&&e in o)return o[e];if(arguments.length>1)return n&&G(t)?t.call(r.proxy):t}}function uc(e,t){return ss(e,null,t)}const Ms={};function Ue(e,t,n){return ss(e,t,n)}function ss(e,t,{immediate:n,deep:r,flush:o,onTrack:s,onTrigger:i}=pe){const l=Ce;let a,u=!1,c=!1;if(Se(e)?(a=()=>e.value,u=pr(e)):ln(e)?(a=()=>e,r=!0):Q(e)?(c=!0,u=e.some(y=>ln(y)||pr(y)),a=()=>e.map(y=>{if(Se(y))return y.value;if(ln(y))return rn(y);if(G(y))return Ot(y,l,2)})):G(e)?t?a=()=>Ot(e,l,2):a=()=>{if(!(l&&l.isUnmounted))return f&&f(),Ye(e,l,3,[p])}:a=tt,t&&r){const y=a;a=()=>rn(y())}let f,p=y=>{f=R.onStop=()=>{Ot(y,l,4)}};if(mn)return p=tt,t?n&&Ye(t,l,3,[a(),c?[]:void 0,p]):a(),tt;let g=c?[]:Ms;const _=()=>{if(!!R.active)if(t){const y=R.run();(r||u||(c?y.some((h,v)=>qn(h,g[v])):qn(y,g)))&&(f&&f(),Ye(t,l,3,[y,g===Ms?void 0:g,p]),g=y)}else R.run()};_.allowRecurse=!!t;let C;o==="sync"?C=_:o==="post"?C=()=>ke(_,l&&l.suspense):(_.pre=!0,l&&(_.id=l.uid),C=()=>Tr(_));const R=new Yo(a,C);return t?n?_():g=R.run():o==="post"?ke(R.run.bind(R),l&&l.suspense):R.run(),()=>{R.stop(),l&&l.scope&&qo(l.scope.effects,R)}}function cc(e,t,n){const r=this.proxy,o=Ee(e)?e.includes(".")?bl(r,e):()=>r[e]:e.bind(r,r);let s;G(t)?s=t:(s=t.handler,n=t);const i=Ce;Dt(this);const l=ss(o,s.bind(r),n);return i?Dt(i):Lt(),l}function bl(e,t){const n=t.split(".");return()=>{let r=e;for(let o=0;o{rn(n,t)});else if(zi(e))for(const n in e)rn(e[n],t);return e}function fc(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Gn(()=>{e.isMounted=!0}),Rn(()=>{e.isUnmounting=!0}),e}const qe=[Function,Array],dc={name:"BaseTransition",props:{mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:qe,onEnter:qe,onAfterEnter:qe,onEnterCancelled:qe,onBeforeLeave:qe,onLeave:qe,onAfterLeave:qe,onLeaveCancelled:qe,onBeforeAppear:qe,onAppear:qe,onAfterAppear:qe,onAppearCancelled:qe},setup(e,{slots:t}){const n=bt(),r=fc();let o;return()=>{const s=t.default&&Cl(t.default(),!0);if(!s||!s.length)return;let i=s[0];if(s.length>1){for(const C of s)if(C.type!==$e){i=C;break}}const l=le(e),{mode:a}=l;if(r.isLeaving)return zr(i);const u=Ds(i);if(!u)return zr(i);const c=yo(u,l,r,n);mr(u,c);const f=n.subTree,p=f&&Ds(f);let g=!1;const{getTransitionKey:_}=u.type;if(_){const C=_();o===void 0?o=C:C!==o&&(o=C,g=!0)}if(p&&p.type!==$e&&(!ut(u,p)||g)){const C=yo(p,l,r,n);if(mr(p,C),a==="out-in")return r.isLeaving=!0,C.afterLeave=()=>{r.isLeaving=!1,n.update()},zr(i);a==="in-out"&&u.type!==$e&&(C.delayLeave=(R,y,h)=>{const v=El(r,p);v[String(p.key)]=p,R._leaveCb=()=>{y(),R._leaveCb=void 0,delete c.delayedLeave},c.delayedLeave=h})}return i}}},wl=dc;function El(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function yo(e,t,n,r){const{appear:o,mode:s,persisted:i=!1,onBeforeEnter:l,onEnter:a,onAfterEnter:u,onEnterCancelled:c,onBeforeLeave:f,onLeave:p,onAfterLeave:g,onLeaveCancelled:_,onBeforeAppear:C,onAppear:R,onAfterAppear:y,onAppearCancelled:h}=t,v=String(e.key),w=El(n,e),T=(k,F)=>{k&&Ye(k,r,9,F)},O=(k,F)=>{const U=F[1];T(k,F),Q(k)?k.every(W=>W.length<=1)&&U():k.length<=1&&U()},I={mode:s,persisted:i,beforeEnter(k){let F=l;if(!n.isMounted)if(o)F=C||l;else return;k._leaveCb&&k._leaveCb(!0);const U=w[v];U&&ut(e,U)&&U.el._leaveCb&&U.el._leaveCb(),T(F,[k])},enter(k){let F=a,U=u,W=c;if(!n.isMounted)if(o)F=R||a,U=y||u,W=h||c;else return;let N=!1;const X=k._enterCb=j=>{N||(N=!0,j?T(W,[k]):T(U,[k]),I.delayedLeave&&I.delayedLeave(),k._enterCb=void 0)};F?O(F,[k,X]):X()},leave(k,F){const U=String(e.key);if(k._enterCb&&k._enterCb(!0),n.isUnmounting)return F();T(f,[k]);let W=!1;const N=k._leaveCb=X=>{W||(W=!0,F(),X?T(_,[k]):T(g,[k]),k._leaveCb=void 0,w[U]===e&&delete w[U])};w[U]=e,p?O(p,[k,N]):N()},clone(k){return yo(k,t,n,r)}};return I}function zr(e){if(Jn(e))return e=_t(e),e.children=null,e}function Ds(e){return Jn(e)?e.children?e.children[0]:void 0:e}function mr(e,t){e.shapeFlag&6&&e.component?mr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Cl(e,t=!1,n){let r=[],o=0;for(let s=0;s1)for(let s=0;s!!e.type.__asyncLoader;function re(e){G(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:o=200,timeout:s,suspensible:i=!0,onError:l}=e;let a=null,u,c=0;const f=()=>(c++,a=null,p()),p=()=>{let g;return a||(g=a=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),l)return new Promise((C,R)=>{l(_,()=>C(f()),()=>R(_),c+1)});throw _}).then(_=>g!==a&&a?a:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),u=_,_)))};return Me({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return u},setup(){const g=Ce;if(u)return()=>Wr(u,g);const _=h=>{a=null,Cn(h,g,13,!r)};if(i&&g.suspense||mn)return p().then(h=>()=>Wr(h,g)).catch(h=>(_(h),()=>r?me(r,{error:h}):null));const C=Qe(!1),R=Qe(),y=Qe(!!o);return o&&setTimeout(()=>{y.value=!1},o),s!=null&&setTimeout(()=>{if(!C.value&&!R.value){const h=new Error(`Async component timed out after ${s}ms.`);_(h),R.value=h}},s),p().then(()=>{C.value=!0,g.parent&&Jn(g.parent.vnode)&&Tr(g.parent.update)}).catch(h=>{_(h),R.value=h}),()=>{if(C.value&&u)return Wr(u,g);if(R.value&&r)return me(r,{error:R.value});if(n&&!y.value)return me(n)}}})}function Wr(e,{vnode:{ref:t,props:n,children:r,shapeFlag:o},parent:s}){const i=me(e,n,r);return i.ref=t,i}const Jn=e=>e.type.__isKeepAlive,pc={name:"KeepAlive",__isKeepAlive:!0,props:{include:[String,RegExp,Array],exclude:[String,RegExp,Array],max:[String,Number]},setup(e,{slots:t}){const n=bt(),r=n.ctx;if(!r.renderer)return()=>{const h=t.default&&t.default();return h&&h.length===1?h[0]:h};const o=new Map,s=new Set;let i=null;const l=n.suspense,{renderer:{p:a,m:u,um:c,o:{createElement:f}}}=r,p=f("div");r.activate=(h,v,w,T,O)=>{const I=h.component;u(h,v,w,0,l),a(I.vnode,h,v,w,I,l,T,h.slotScopeIds,O),ke(()=>{I.isDeactivated=!1,I.a&&$n(I.a);const k=h.props&&h.props.onVnodeMounted;k&&Ne(k,I.parent,h)},l)},r.deactivate=h=>{const v=h.component;u(h,p,null,1,l),ke(()=>{v.da&&$n(v.da);const w=h.props&&h.props.onVnodeUnmounted;w&&Ne(w,v.parent,h),v.isDeactivated=!0},l)};function g(h){Qr(h),c(h,n,l,!0)}function _(h){o.forEach((v,w)=>{const T=xo(v.type);T&&(!h||!h(T))&&C(w)})}function C(h){const v=o.get(h);!i||v.type!==i.type?g(v):i&&Qr(i),o.delete(h),s.delete(h)}Ue(()=>[e.include,e.exclude],([h,v])=>{h&&_(w=>Mn(h,w)),v&&_(w=>!Mn(v,w))},{flush:"post",deep:!0});let R=null;const y=()=>{R!=null&&o.set(R,Yr(n.subTree))};return Gn(y),Sl(y),Rn(()=>{o.forEach(h=>{const{subTree:v,suspense:w}=n,T=Yr(v);if(h.type===T.type){Qr(T);const O=T.component.da;O&&ke(O,w);return}g(h)})}),()=>{if(R=null,!t.default)return null;const h=t.default(),v=h[0];if(h.length>1)return i=null,h;if(!gn(v)||!(v.shapeFlag&4)&&!(v.shapeFlag&128))return i=null,v;let w=Yr(v);const T=w.type,O=xo(Qt(w)?w.type.__asyncResolved||{}:T),{include:I,exclude:k,max:F}=e;if(I&&(!O||!Mn(I,O))||k&&O&&Mn(k,O))return i=w,v;const U=w.key==null?T:w.key,W=o.get(U);return w.el&&(w=_t(w),v.shapeFlag&128&&(v.ssContent=w)),R=U,W?(w.el=W.el,w.component=W.component,w.transition&&mr(w,w.transition),w.shapeFlag|=512,s.delete(U),s.add(U)):(s.add(U),F&&s.size>parseInt(F,10)&&C(s.values().next().value)),w.shapeFlag|=256,i=w,yl(v.type)?v:w}}},hc=pc;function Mn(e,t){return Q(e)?e.some(n=>Mn(n,t)):Ee(e)?e.split(",").includes(t):e.test?e.test(t):!1}function gc(e,t){xl(e,"a",t)}function mc(e,t){xl(e,"da",t)}function xl(e,t,n=Ce){const r=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Dr(t,r,n),n){let o=n.parent;for(;o&&o.parent;)Jn(o.parent.vnode)&&yc(r,t,n,o),o=o.parent}}function yc(e,t,n,r){const o=Dr(t,e,r,!0);yr(()=>{qo(r[t],o)},n)}function Qr(e){let t=e.shapeFlag;t&256&&(t-=256),t&512&&(t-=512),e.shapeFlag=t}function Yr(e){return e.shapeFlag&128?e.ssContent:e}function Dr(e,t,n=Ce,r=!1){if(n){const o=n[e]||(n[e]=[]),s=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;wn(),Dt(n);const l=Ye(t,n,e,i);return Lt(),En(),l});return r?o.unshift(s):o.push(s),s}}const vt=e=>(t,n=Ce)=>(!mn||e==="sp")&&Dr(e,(...r)=>t(...r),n),Rl=vt("bm"),Gn=vt("m"),_c=vt("bu"),Sl=vt("u"),Rn=vt("bum"),yr=vt("um"),vc=vt("sp"),bc=vt("rtg"),wc=vt("rtc");function kl(e,t=Ce){Dr("ec",e,t)}function lt(e,t,n,r){const o=e.dirs,s=t&&t.dirs;for(let i=0;it(i,l,void 0,s&&s[l]));else{const i=Object.keys(e);o=new Array(i.length);for(let l=0,a=i.length;lgn(t)?!(t.type===$e||t.type===Pe&&!Al(t.children)):!0)?e:null}const vo=e=>e?Fl(e)?us(e)||e.proxy:vo(e.parent):null,_r=Ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>vo(e.parent),$root:e=>vo(e.root),$emit:e=>e.emit,$options:e=>is(e),$forceUpdate:e=>e.f||(e.f=()=>Tr(e.update)),$nextTick:e=>e.n||(e.n=xn.bind(e.proxy)),$watch:e=>cc.bind(e)}),Rc={get({_:e},t){const{ctx:n,setupState:r,data:o,props:s,accessCache:i,type:l,appContext:a}=e;let u;if(t[0]!=="$"){const g=i[t];if(g!==void 0)switch(g){case 1:return r[t];case 2:return o[t];case 4:return n[t];case 3:return s[t]}else{if(r!==pe&&oe(r,t))return i[t]=1,r[t];if(o!==pe&&oe(o,t))return i[t]=2,o[t];if((u=e.propsOptions[0])&&oe(u,t))return i[t]=3,s[t];if(n!==pe&&oe(n,t))return i[t]=4,n[t];bo&&(i[t]=0)}}const c=_r[t];let f,p;if(c)return t==="$attrs"&&Fe(e,"get",t),c(e);if((f=l.__cssModules)&&(f=f[t]))return f;if(n!==pe&&oe(n,t))return i[t]=4,n[t];if(p=a.config.globalProperties,oe(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:o,ctx:s}=e;return o!==pe&&oe(o,t)?(o[t]=n,!0):r!==pe&&oe(r,t)?(r[t]=n,!0):oe(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(s[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:o,propsOptions:s}},i){let l;return!!n[i]||e!==pe&&oe(e,i)||t!==pe&&oe(t,i)||(l=s[0])&&oe(l,i)||oe(r,i)||oe(_r,i)||oe(o.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:oe(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};let bo=!0;function Sc(e){const t=is(e),n=e.proxy,r=e.ctx;bo=!1,t.beforeCreate&&$s(t.beforeCreate,e,"bc");const{data:o,computed:s,methods:i,watch:l,provide:a,inject:u,created:c,beforeMount:f,mounted:p,beforeUpdate:g,updated:_,activated:C,deactivated:R,beforeDestroy:y,beforeUnmount:h,destroyed:v,unmounted:w,render:T,renderTracked:O,renderTriggered:I,errorCaptured:k,serverPrefetch:F,expose:U,inheritAttrs:W,components:N,directives:X,filters:j}=t;if(u&&kc(u,r,null,e.appContext.config.unwrapInjectedRef),i)for(const fe in i){const ue=i[fe];G(ue)&&(r[fe]=ue.bind(n))}if(o){const fe=o.call(n,n);ge(fe)&&(e.data=rt(fe))}if(bo=!0,s)for(const fe in s){const ue=s[fe],Ge=G(ue)?ue.bind(n,n):G(ue.get)?ue.get.bind(n,n):tt,$t=!G(ue)&&G(ue.set)?ue.set.bind(n):tt,Xe=Re({get:Ge,set:$t});Object.defineProperty(r,fe,{enumerable:!0,configurable:!0,get:()=>Xe.value,set:Be=>Xe.value=Be})}if(l)for(const fe in l)Tl(l[fe],r,n,fe);if(a){const fe=G(a)?a.call(n):a;Reflect.ownKeys(fe).forEach(ue=>{cn(ue,fe[ue])})}c&&$s(c,e,"c");function se(fe,ue){Q(ue)?ue.forEach(Ge=>fe(Ge.bind(n))):ue&&fe(ue.bind(n))}if(se(Rl,f),se(Gn,p),se(_c,g),se(Sl,_),se(gc,C),se(mc,R),se(kl,k),se(wc,O),se(bc,I),se(Rn,h),se(yr,w),se(vc,F),Q(U))if(U.length){const fe=e.exposed||(e.exposed={});U.forEach(ue=>{Object.defineProperty(fe,ue,{get:()=>n[ue],set:Ge=>n[ue]=Ge})})}else e.exposed||(e.exposed={});T&&e.render===tt&&(e.render=T),W!=null&&(e.inheritAttrs=W),N&&(e.components=N),X&&(e.directives=X)}function kc(e,t,n=tt,r=!1){Q(e)&&(e=wo(e));for(const o in e){const s=e[o];let i;ge(s)?"default"in s?i=nt(s.from||o,s.default,!0):i=nt(s.from||o):i=nt(s),Se(i)&&r?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[o]=i}}function $s(e,t,n){Ye(Q(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Tl(e,t,n,r){const o=r.includes(".")?bl(n,r):()=>n[r];if(Ee(e)){const s=t[e];G(s)&&Ue(o,s)}else if(G(e))Ue(o,e.bind(n));else if(ge(e))if(Q(e))e.forEach(s=>Tl(s,t,n,r));else{const s=G(e.handler)?e.handler.bind(n):t[e.handler];G(s)&&Ue(o,s,e)}}function is(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:o,optionsCache:s,config:{optionMergeStrategies:i}}=e.appContext,l=s.get(t);let a;return l?a=l:!o.length&&!n&&!r?a=t:(a={},o.length&&o.forEach(u=>vr(a,u,i,!0)),vr(a,t,i)),ge(t)&&s.set(t,a),a}function vr(e,t,n,r=!1){const{mixins:o,extends:s}=t;s&&vr(e,s,n,!0),o&&o.forEach(i=>vr(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Pc[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Pc={data:Bs,props:Vt,emits:Vt,methods:Vt,computed:Vt,beforeCreate:De,created:De,beforeMount:De,mounted:De,beforeUpdate:De,updated:De,beforeDestroy:De,beforeUnmount:De,destroyed:De,unmounted:De,activated:De,deactivated:De,errorCaptured:De,serverPrefetch:De,components:Vt,directives:Vt,watch:Tc,provide:Bs,inject:Ac};function Bs(e,t){return t?e?function(){return Ae(G(e)?e.call(this,this):e,G(t)?t.call(this,this):t)}:t:e}function Ac(e,t){return Vt(wo(e),wo(t))}function wo(e){if(Q(e)){const t={};for(let n=0;n0)&&!(i&16)){if(i&8){const c=e.vnode.dynamicProps;for(let f=0;f{a=!0;const[p,g]=Ll(f,t,!0);Ae(i,p),g&&l.push(...g)};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}if(!s&&!a)return ge(e)&&r.set(e,on),on;if(Q(s))for(let c=0;c-1,g[1]=C<0||_-1||oe(g,"default"))&&l.push(f)}}}const u=[i,l];return ge(e)&&r.set(e,u),u}function Ns(e){return e[0]!=="$"}function Hs(e){const t=e&&e.toString().match(/^\s*function (\w+)/);return t?t[1]:e===null?"null":""}function js(e,t){return Hs(e)===Hs(t)}function Us(e,t){return Q(t)?t.findIndex(n=>js(n,e)):G(t)&&js(t,e)?0:-1}const Ml=e=>e[0]==="_"||e==="$stable",ls=e=>Q(e)?e.map(ze):[ze(e)],Mc=(e,t,n)=>{if(t._n)return t;const r=Mr((...o)=>ls(t(...o)),n);return r._c=!1,r},Dl=(e,t,n)=>{const r=e._ctx;for(const o in e){if(Ml(o))continue;const s=e[o];if(G(s))t[o]=Mc(o,s,r);else if(s!=null){const i=ls(s);t[o]=()=>i}}},Il=(e,t)=>{const n=ls(t);e.slots.default=()=>n},Dc=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=le(t),dr(t,"_",n)):Dl(t,e.slots={})}else e.slots={},t&&Il(e,t);dr(e.slots,$r,1)},Ic=(e,t,n)=>{const{vnode:r,slots:o}=e;let s=!0,i=pe;if(r.shapeFlag&32){const l=t._;l?n&&l===1?s=!1:(Ae(o,t),!n&&l===1&&delete o._):(s=!t.$stable,Dl(t,o)),i=t}else t&&(Il(e,t),i={default:1});if(s)for(const l in o)!Ml(l)&&!(l in i)&&delete o[l]};function $l(){return{app:null,config:{isNativeTag:uu,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let $c=0;function Bc(e,t){return function(r,o=null){G(r)||(r=Object.assign({},r)),o!=null&&!ge(o)&&(o=null);const s=$l(),i=new Set;let l=!1;const a=s.app={_uid:$c++,_component:r,_props:o,_container:null,_context:s,_instance:null,version:ef,get config(){return s.config},set config(u){},use(u,...c){return i.has(u)||(u&&G(u.install)?(i.add(u),u.install(a,...c)):G(u)&&(i.add(u),u(a,...c))),a},mixin(u){return s.mixins.includes(u)||s.mixins.push(u),a},component(u,c){return c?(s.components[u]=c,a):s.components[u]},directive(u,c){return c?(s.directives[u]=c,a):s.directives[u]},mount(u,c,f){if(!l){const p=me(r,o);return p.appContext=s,c&&t?t(p,u):e(p,u,f),l=!0,a._container=u,u.__vue_app__=a,us(p.component)||p.component.proxy}},unmount(){l&&(e(null,a._container),delete a._container.__vue_app__)},provide(u,c){return s.provides[u]=c,a}};return a}}function br(e,t,n,r,o=!1){if(Q(e)){e.forEach((p,g)=>br(p,t&&(Q(t)?t[g]:t),n,r,o));return}if(Qt(r)&&!o)return;const s=r.shapeFlag&4?us(r.component)||r.component.proxy:r.el,i=o?null:s,{i:l,r:a}=e,u=t&&t.r,c=l.refs===pe?l.refs={}:l.refs,f=l.setupState;if(u!=null&&u!==a&&(Ee(u)?(c[u]=null,oe(f,u)&&(f[u]=null)):Se(u)&&(u.value=null)),G(a))Ot(a,l,12,[i,c]);else{const p=Ee(a),g=Se(a);if(p||g){const _=()=>{if(e.f){const C=p?oe(f,a)?f[a]:c[a]:a.value;o?Q(C)&&qo(C,s):Q(C)?C.includes(s)||C.push(s):p?(c[a]=[s],oe(f,a)&&(f[a]=c[a])):(a.value=[s],e.k&&(c[e.k]=a.value))}else p?(c[a]=i,oe(f,a)&&(f[a]=i)):g&&(a.value=i,e.k&&(c[e.k]=i))};i?(_.id=-1,ke(_,n)):_()}}}let Et=!1;const ir=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",lr=e=>e.nodeType===8;function Nc(e){const{mt:t,p:n,o:{patchProp:r,createText:o,nextSibling:s,parentNode:i,remove:l,insert:a,createComment:u}}=e,c=(y,h)=>{if(!h.hasChildNodes()){n(null,y,h),hr(),h._vnode=y;return}Et=!1,f(h.firstChild,y,null,null,null),hr(),h._vnode=y,Et&&console.error("Hydration completed but contains mismatches.")},f=(y,h,v,w,T,O=!1)=>{const I=lr(y)&&y.data==="[",k=()=>C(y,h,v,w,T,I),{type:F,ref:U,shapeFlag:W,patchFlag:N}=h;let X=y.nodeType;h.el=y,N===-2&&(O=!1,h.dynamicChildren=null);let j=null;switch(F){case yt:X!==3?h.children===""?(a(h.el=o(""),i(y),y),j=y):j=k():(y.data!==h.children&&(Et=!0,y.data=h.children),j=s(y));break;case $e:X!==8||I?j=k():j=s(y);break;case Bn:if(I&&(y=s(y),X=y.nodeType),X===1||X===3){j=y;const Te=!h.children.length;for(let se=0;se{O=O||!!h.dynamicChildren;const{type:I,props:k,patchFlag:F,shapeFlag:U,dirs:W}=h,N=I==="input"&&W||I==="option";if(N||F!==-1){if(W&<(h,null,v,"created"),k)if(N||!O||F&48)for(const j in k)(N&&j.endsWith("value")||Yn(j)&&!In(j))&&r(y,j,null,k[j],!1,void 0,v);else k.onClick&&r(y,"onClick",null,k.onClick,!1,void 0,v);let X;if((X=k&&k.onVnodeBeforeMount)&&Ne(X,v,h),W&<(h,null,v,"beforeMount"),((X=k&&k.onVnodeMounted)||W)&&vl(()=>{X&&Ne(X,v,h),W&<(h,null,v,"mounted")},w),U&16&&!(k&&(k.innerHTML||k.textContent))){let j=g(y.firstChild,h,y,v,w,T,O);for(;j;){Et=!0;const Te=j;j=j.nextSibling,l(Te)}}else U&8&&y.textContent!==h.children&&(Et=!0,y.textContent=h.children)}return y.nextSibling},g=(y,h,v,w,T,O,I)=>{I=I||!!h.dynamicChildren;const k=h.children,F=k.length;for(let U=0;U{const{slotScopeIds:I}=h;I&&(T=T?T.concat(I):I);const k=i(y),F=g(s(y),h,k,v,w,T,O);return F&&lr(F)&&F.data==="]"?s(h.anchor=F):(Et=!0,a(h.anchor=u("]"),k,F),F)},C=(y,h,v,w,T,O)=>{if(Et=!0,h.el=null,O){const F=R(y);for(;;){const U=s(y);if(U&&U!==F)l(U);else break}}const I=s(y),k=i(y);return l(y),n(null,h,k,I,v,w,ir(k),T),I},R=y=>{let h=0;for(;y;)if(y=s(y),y&&lr(y)&&(y.data==="["&&h++,y.data==="]")){if(h===0)return s(y);h--}return y};return[c,f]}const ke=vl;function Hc(e){return Bl(e)}function jc(e){return Bl(e,Nc)}function Bl(e,t){const n=gu();n.__VUE__=!0;const{insert:r,remove:o,patchProp:s,createElement:i,createText:l,createComment:a,setText:u,setElementText:c,parentNode:f,nextSibling:p,setScopeId:g=tt,insertStaticContent:_}=e,C=(d,m,b,E=null,S=null,M=null,B=!1,L=null,D=!!m.dynamicChildren)=>{if(d===m)return;d&&!ut(d,m)&&(E=$(d),Be(d,S,M,!0),d=null),m.patchFlag===-2&&(D=!1,m.dynamicChildren=null);const{type:P,ref:K,shapeFlag:q}=m;switch(P){case yt:R(d,m,b,E);break;case $e:y(d,m,b,E);break;case Bn:d==null&&h(m,b,E,B);break;case Pe:N(d,m,b,E,S,M,B,L,D);break;default:q&1?T(d,m,b,E,S,M,B,L,D):q&6?X(d,m,b,E,S,M,B,L,D):(q&64||q&128)&&P.process(d,m,b,E,S,M,B,L,D,ie)}K!=null&&S&&br(K,d&&d.ref,M,m||d,!m)},R=(d,m,b,E)=>{if(d==null)r(m.el=l(m.children),b,E);else{const S=m.el=d.el;m.children!==d.children&&u(S,m.children)}},y=(d,m,b,E)=>{d==null?r(m.el=a(m.children||""),b,E):m.el=d.el},h=(d,m,b,E)=>{[d.el,d.anchor]=_(d.children,m,b,E,d.el,d.anchor)},v=({el:d,anchor:m},b,E)=>{let S;for(;d&&d!==m;)S=p(d),r(d,b,E),d=S;r(m,b,E)},w=({el:d,anchor:m})=>{let b;for(;d&&d!==m;)b=p(d),o(d),d=b;o(m)},T=(d,m,b,E,S,M,B,L,D)=>{B=B||m.type==="svg",d==null?O(m,b,E,S,M,B,L,D):F(d,m,S,M,B,L,D)},O=(d,m,b,E,S,M,B,L)=>{let D,P;const{type:K,props:q,shapeFlag:z,transition:Y,dirs:ne}=d;if(D=d.el=i(d.type,M,q&&q.is,q),z&8?c(D,d.children):z&16&&k(d.children,D,null,E,S,M&&K!=="foreignObject",B,L),ne&<(d,null,E,"created"),q){for(const ce in q)ce!=="value"&&!In(ce)&&s(D,ce,null,q[ce],M,d.children,E,S,H);"value"in q&&s(D,"value",null,q.value),(P=q.onVnodeBeforeMount)&&Ne(P,E,d)}I(D,d,d.scopeId,B,E),ne&<(d,null,E,"beforeMount");const de=(!S||S&&!S.pendingBranch)&&Y&&!Y.persisted;de&&Y.beforeEnter(D),r(D,m,b),((P=q&&q.onVnodeMounted)||de||ne)&&ke(()=>{P&&Ne(P,E,d),de&&Y.enter(D),ne&<(d,null,E,"mounted")},S)},I=(d,m,b,E,S)=>{if(b&&g(d,b),E)for(let M=0;M{for(let P=D;P{const L=m.el=d.el;let{patchFlag:D,dynamicChildren:P,dirs:K}=m;D|=d.patchFlag&16;const q=d.props||pe,z=m.props||pe;let Y;b&&Bt(b,!1),(Y=z.onVnodeBeforeUpdate)&&Ne(Y,b,m,d),K&<(m,d,b,"beforeUpdate"),b&&Bt(b,!0);const ne=S&&m.type!=="foreignObject";if(P?U(d.dynamicChildren,P,L,b,E,ne,M):B||ue(d,m,L,null,b,E,ne,M,!1),D>0){if(D&16)W(L,m,q,z,b,E,S);else if(D&2&&q.class!==z.class&&s(L,"class",null,z.class,S),D&4&&s(L,"style",q.style,z.style,S),D&8){const de=m.dynamicProps;for(let ce=0;ce{Y&&Ne(Y,b,m,d),K&<(m,d,b,"updated")},E)},U=(d,m,b,E,S,M,B)=>{for(let L=0;L{if(b!==E){if(b!==pe)for(const L in b)!In(L)&&!(L in E)&&s(d,L,b[L],null,B,m.children,S,M,H);for(const L in E){if(In(L))continue;const D=E[L],P=b[L];D!==P&&L!=="value"&&s(d,L,P,D,B,m.children,S,M,H)}"value"in E&&s(d,"value",b.value,E.value)}},N=(d,m,b,E,S,M,B,L,D)=>{const P=m.el=d?d.el:l(""),K=m.anchor=d?d.anchor:l("");let{patchFlag:q,dynamicChildren:z,slotScopeIds:Y}=m;Y&&(L=L?L.concat(Y):Y),d==null?(r(P,b,E),r(K,b,E),k(m.children,b,K,S,M,B,L,D)):q>0&&q&64&&z&&d.dynamicChildren?(U(d.dynamicChildren,z,b,S,M,B,L),(m.key!=null||S&&m===S.subTree)&&Nl(d,m,!0)):ue(d,m,b,K,S,M,B,L,D)},X=(d,m,b,E,S,M,B,L,D)=>{m.slotScopeIds=L,d==null?m.shapeFlag&512?S.ctx.activate(m,b,E,B,D):j(m,b,E,S,M,B,D):Te(d,m,D)},j=(d,m,b,E,S,M,B)=>{const L=d.component=Qc(d,E,S);if(Jn(d)&&(L.ctx.renderer=ie),Yc(L),L.asyncDep){if(S&&S.registerDep(L,se),!d.el){const D=L.subTree=me($e);y(null,D,m,b)}return}se(L,d,m,b,S,M,B)},Te=(d,m,b)=>{const E=m.component=d.component;if(rc(d,m,b))if(E.asyncDep&&!E.asyncResolved){fe(E,m,b);return}else E.next=m,Gu(E.update),E.update();else m.el=d.el,E.vnode=m},se=(d,m,b,E,S,M,B)=>{const L=()=>{if(d.isMounted){let{next:K,bu:q,u:z,parent:Y,vnode:ne}=d,de=K,ce;Bt(d,!1),K?(K.el=ne.el,fe(d,K,B)):K=ne,q&&$n(q),(ce=K.props&&K.props.onVnodeBeforeUpdate)&&Ne(ce,Y,K,ne),Bt(d,!0);const ve=Kr(d),Ze=d.subTree;d.subTree=ve,C(Ze,ve,f(Ze.el),$(Ze),d,S,M),K.el=ve.el,de===null&&rs(d,ve.el),z&&ke(z,S),(ce=K.props&&K.props.onVnodeUpdated)&&ke(()=>Ne(ce,Y,K,ne),S)}else{let K;const{el:q,props:z}=m,{bm:Y,m:ne,parent:de}=d,ce=Qt(m);if(Bt(d,!1),Y&&$n(Y),!ce&&(K=z&&z.onVnodeBeforeMount)&&Ne(K,de,m),Bt(d,!0),q&&ee){const ve=()=>{d.subTree=Kr(d),ee(q,d.subTree,d,S,null)};ce?m.type.__asyncLoader().then(()=>!d.isUnmounted&&ve()):ve()}else{const ve=d.subTree=Kr(d);C(null,ve,b,E,d,S,M),m.el=ve.el}if(ne&&ke(ne,S),!ce&&(K=z&&z.onVnodeMounted)){const ve=m;ke(()=>Ne(K,de,ve),S)}(m.shapeFlag&256||de&&Qt(de.vnode)&&de.vnode.shapeFlag&256)&&d.a&&ke(d.a,S),d.isMounted=!0,m=b=E=null}},D=d.effect=new Yo(L,()=>Tr(P),d.scope),P=d.update=()=>D.run();P.id=d.uid,Bt(d,!0),P()},fe=(d,m,b)=>{m.component=d;const E=d.vnode.props;d.vnode=m,d.next=null,Lc(d,m.props,E,b),Ic(d,m.children,b),wn(),Ts(),En()},ue=(d,m,b,E,S,M,B,L,D=!1)=>{const P=d&&d.children,K=d?d.shapeFlag:0,q=m.children,{patchFlag:z,shapeFlag:Y}=m;if(z>0){if(z&128){$t(P,q,b,E,S,M,B,L,D);return}else if(z&256){Ge(P,q,b,E,S,M,B,L,D);return}}Y&8?(K&16&&H(P,S,M),q!==P&&c(b,q)):K&16?Y&16?$t(P,q,b,E,S,M,B,L,D):H(P,S,M,!0):(K&8&&c(b,""),Y&16&&k(q,b,E,S,M,B,L,D))},Ge=(d,m,b,E,S,M,B,L,D)=>{d=d||on,m=m||on;const P=d.length,K=m.length,q=Math.min(P,K);let z;for(z=0;zK?H(d,S,M,!0,!1,q):k(m,b,E,S,M,B,L,D,q)},$t=(d,m,b,E,S,M,B,L,D)=>{let P=0;const K=m.length;let q=d.length-1,z=K-1;for(;P<=q&&P<=z;){const Y=d[P],ne=m[P]=D?St(m[P]):ze(m[P]);if(ut(Y,ne))C(Y,ne,b,null,S,M,B,L,D);else break;P++}for(;P<=q&&P<=z;){const Y=d[q],ne=m[z]=D?St(m[z]):ze(m[z]);if(ut(Y,ne))C(Y,ne,b,null,S,M,B,L,D);else break;q--,z--}if(P>q){if(P<=z){const Y=z+1,ne=Yz)for(;P<=q;)Be(d[P],S,M,!0),P++;else{const Y=P,ne=P,de=new Map;for(P=ne;P<=z;P++){const He=m[P]=D?St(m[P]):ze(m[P]);He.key!=null&&de.set(He.key,P)}let ce,ve=0;const Ze=z-ne+1;let Zt=!1,vs=0;const An=new Array(Ze);for(P=0;P=Ze){Be(He,S,M,!0);continue}let st;if(He.key!=null)st=de.get(He.key);else for(ce=ne;ce<=z;ce++)if(An[ce-ne]===0&&ut(He,m[ce])){st=ce;break}st===void 0?Be(He,S,M,!0):(An[st-ne]=P+1,st>=vs?vs=st:Zt=!0,C(He,m[st],b,null,S,M,B,L,D),ve++)}const bs=Zt?Uc(An):on;for(ce=bs.length-1,P=Ze-1;P>=0;P--){const He=ne+P,st=m[He],ws=He+1{const{el:M,type:B,transition:L,children:D,shapeFlag:P}=d;if(P&6){Xe(d.component.subTree,m,b,E);return}if(P&128){d.suspense.move(m,b,E);return}if(P&64){B.move(d,m,b,ie);return}if(B===Pe){r(M,m,b);for(let q=0;qL.enter(M),S);else{const{leave:q,delayLeave:z,afterLeave:Y}=L,ne=()=>r(M,m,b),de=()=>{q(M,()=>{ne(),Y&&Y()})};z?z(M,ne,de):de()}else r(M,m,b)},Be=(d,m,b,E=!1,S=!1)=>{const{type:M,props:B,ref:L,children:D,dynamicChildren:P,shapeFlag:K,patchFlag:q,dirs:z}=d;if(L!=null&&br(L,null,b,d,!0),K&256){m.ctx.deactivate(d);return}const Y=K&1&&z,ne=!Qt(d);let de;if(ne&&(de=B&&B.onVnodeBeforeUnmount)&&Ne(de,m,d),K&6)x(d.component,b,E);else{if(K&128){d.suspense.unmount(b,E);return}Y&<(d,null,m,"beforeUnmount"),K&64?d.type.remove(d,m,b,S,ie,E):P&&(M!==Pe||q>0&&q&64)?H(P,m,b,!1,!0):(M===Pe&&q&384||!S&&K&16)&&H(D,m,b),E&&Xt(d)}(ne&&(de=B&&B.onVnodeUnmounted)||Y)&&ke(()=>{de&&Ne(de,m,d),Y&<(d,null,m,"unmounted")},b)},Xt=d=>{const{type:m,el:b,anchor:E,transition:S}=d;if(m===Pe){er(b,E);return}if(m===Bn){w(d);return}const M=()=>{o(b),S&&!S.persisted&&S.afterLeave&&S.afterLeave()};if(d.shapeFlag&1&&S&&!S.persisted){const{leave:B,delayLeave:L}=S,D=()=>B(b,M);L?L(d.el,M,D):D()}else M()},er=(d,m)=>{let b;for(;d!==m;)b=p(d),o(d),d=b;o(m)},x=(d,m,b)=>{const{bum:E,scope:S,update:M,subTree:B,um:L}=d;E&&$n(E),S.stop(),M&&(M.active=!1,Be(B,d,m,b)),L&&ke(L,m),ke(()=>{d.isUnmounted=!0},m),m&&m.pendingBranch&&!m.isUnmounted&&d.asyncDep&&!d.asyncResolved&&d.suspenseId===m.pendingId&&(m.deps--,m.deps===0&&m.resolve())},H=(d,m,b,E=!1,S=!1,M=0)=>{for(let B=M;Bd.shapeFlag&6?$(d.component.subTree):d.shapeFlag&128?d.suspense.next():p(d.anchor||d.el),V=(d,m,b)=>{d==null?m._vnode&&Be(m._vnode,null,null,!0):C(m._vnode||null,d,m,null,null,null,b),Ts(),hr(),m._vnode=d},ie={p:C,um:Be,m:Xe,r:Xt,mt:j,mc:k,pc:ue,pbc:U,n:$,o:e};let ye,ee;return t&&([ye,ee]=t(ie)),{render:V,hydrate:ye,createApp:Bc(V,ye)}}function Bt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Nl(e,t,n=!1){const r=e.children,o=t.children;if(Q(r)&&Q(o))for(let s=0;s>1,e[n[l]]0&&(t[r]=n[s-1]),n[s]=r)}}for(s=n.length,i=n[s-1];s-- >0;)n[s]=i,i=t[i];return n}const Fc=e=>e.__isTeleport,Pe=Symbol(void 0),yt=Symbol(void 0),$e=Symbol(void 0),Bn=Symbol(void 0),Nn=[];let We=null;function Le(e=!1){Nn.push(We=e?null:[])}function Hl(){Nn.pop(),We=Nn[Nn.length-1]||null}let hn=1;function Fs(e){hn+=e}function jl(e){return e.dynamicChildren=hn>0?We||on:null,Hl(),hn>0&&We&&We.push(e),e}function At(e,t,n,r,o,s){return jl(wr(e,t,n,r,o,s,!0))}function Yt(e,t,n,r,o){return jl(me(e,t,n,r,o,!0))}function gn(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const $r="__vInternal",Ul=({key:e})=>e!=null?e:null,cr=({ref:e,ref_key:t,ref_for:n})=>e!=null?Ee(e)||Se(e)||G(e)?{i:Ie,r:e,k:t,f:!!n}:e:null;function wr(e,t=null,n=null,r=0,o=null,s=e===Pe?0:1,i=!1,l=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Ul(t),ref:t&&cr(t),scopeId:Lr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:s,patchFlag:r,dynamicProps:o,dynamicChildren:null,appContext:null};return l?(as(a,n),s&128&&e.normalize(a)):n&&(a.shapeFlag|=Ee(n)?8:16),hn>0&&!i&&We&&(a.patchFlag>0||s&6)&&a.patchFlag!==32&&We.push(a),a}const me=qc;function qc(e,t=null,n=null,r=0,o=null,s=!1){if((!e||e===Ec)&&(e=$e),gn(e)){const l=_t(e,t,!0);return n&&as(l,n),hn>0&&!s&&We&&(l.shapeFlag&6?We[We.indexOf(e)]=l:We.push(l)),l.patchFlag|=-2,l}if(Xc(e)&&(e=e.__vccOpts),t){t=Vc(t);let{class:l,style:a}=t;l&&!Ee(l)&&(t.class=gt(l)),ge(a)&&(ol(a)&&!Q(a)&&(a=Ae({},a)),t.style=dn(a))}const i=Ee(e)?1:yl(e)?128:Fc(e)?64:ge(e)?4:G(e)?2:0;return wr(e,t,n,r,o,i,s,!0)}function Vc(e){return e?ol(e)||$r in e?Ae({},e):e:null}function _t(e,t,n=!1){const{props:r,ref:o,patchFlag:s,children:i}=e,l=t?Kc(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Ul(l),ref:t&&t.ref?n&&o?Q(o)?o.concat(cr(t)):[o,cr(t)]:cr(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Pe?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&_t(e.ssContent),ssFallback:e.ssFallback&&_t(e.ssFallback),el:e.el,anchor:e.anchor}}function Br(e=" ",t=0){return me(yt,null,e,t)}function gy(e,t){const n=me(Bn,null,e);return n.staticCount=t,n}function my(e="",t=!1){return t?(Le(),Yt($e,null,e)):me($e,null,e)}function ze(e){return e==null||typeof e=="boolean"?me($e):Q(e)?me(Pe,null,e.slice()):typeof e=="object"?St(e):me(yt,null,String(e))}function St(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:_t(e)}function as(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(Q(t))n=16;else if(typeof t=="object")if(r&65){const o=t.default;o&&(o._c&&(o._d=!1),as(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!($r in t)?t._ctx=Ie:o===3&&Ie&&(Ie.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else G(t)?(t={default:t,_ctx:Ie},n=32):(t=String(t),r&64?(n=16,t=[Br(t)]):n=8);e.children=t,e.shapeFlag|=n}function Kc(...e){const t={};for(let n=0;nCe||Ie,Dt=e=>{Ce=e,e.scope.on()},Lt=()=>{Ce&&Ce.scope.off(),Ce=null};function Fl(e){return e.vnode.shapeFlag&4}let mn=!1;function Yc(e,t=!1){mn=t;const{props:n,children:r}=e.vnode,o=Fl(e);Oc(e,n,o,t),Dc(e,r);const s=o?Jc(e,t):void 0;return mn=!1,s}function Jc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=sl(new Proxy(e.ctx,Rc));const{setup:r}=n;if(r){const o=e.setupContext=r.length>1?Vl(e):null;Dt(e),wn();const s=Ot(r,e,0,[e.props,o]);if(En(),Lt(),Ko(s)){if(s.then(Lt,Lt),t)return s.then(i=>{Co(e,i,t)}).catch(i=>{Cn(i,e,0)});e.asyncDep=s}else Co(e,s,t)}else ql(e,t)}function Co(e,t,n){G(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ge(t)&&(e.setupState=ul(t)),ql(e,n)}let qs;function ql(e,t,n){const r=e.type;if(!e.render){if(!t&&qs&&!r.render){const o=r.template||is(e).template;if(o){const{isCustomElement:s,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:a}=r,u=Ae(Ae({isCustomElement:s,delimiters:l},i),a);r.render=qs(o,u)}}e.render=r.render||tt}Dt(e),wn(),Sc(e),En(),Lt()}function Gc(e){return new Proxy(e.attrs,{get(t,n){return Fe(e,"get","$attrs"),t[n]}})}function Vl(e){const t=r=>{e.exposed=r||{}};let n;return{get attrs(){return n||(n=Gc(e))},slots:e.slots,emit:e.emit,expose:t}}function us(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(ul(sl(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in _r)return _r[n](e)}}))}function xo(e,t=!0){return G(e)?e.displayName||e.name:e.name||t&&e.__name}function Xc(e){return G(e)&&"__vccOpts"in e}const Re=(e,t)=>Qu(e,t,mn);function cs(){return Zc().slots}function Zc(){const e=bt();return e.setupContext||(e.setupContext=Vl(e))}function yy(e){const t=bt();let n=e();return Lt(),Ko(n)&&(n=n.catch(r=>{throw Dt(t),r})),[n,()=>Dt(t)]}function _e(e,t,n){const r=arguments.length;return r===2?ge(t)&&!Q(t)?gn(t)?me(e,null,[t]):me(e,t):me(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&gn(n)&&(n=[n]),me(e,t,n))}const ef="3.2.41",tf="http://www.w3.org/2000/svg",zt=typeof document<"u"?document:null,Vs=zt&&zt.createElement("template"),nf={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const o=t?zt.createElementNS(tf,e):zt.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&o.setAttribute("multiple",r.multiple),o},createText:e=>zt.createTextNode(e),createComment:e=>zt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>zt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,o,s){const i=n?n.previousSibling:t.lastChild;if(o&&(o===s||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===s||!(o=o.nextSibling)););else{Vs.innerHTML=r?`${e}`:e;const l=Vs.content;if(r){const a=l.firstChild;for(;a.firstChild;)l.appendChild(a.firstChild);l.removeChild(a)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function rf(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function of(e,t,n){const r=e.style,o=Ee(n);if(n&&!o){for(const s in n)Ro(r,s,n[s]);if(t&&!Ee(t))for(const s in t)n[s]==null&&Ro(r,s,"")}else{const s=r.display;o?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=s)}}const Ks=/\s*!important$/;function Ro(e,t,n){if(Q(n))n.forEach(r=>Ro(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=sf(e,t);Ks.test(n)?e.setProperty(bn(r),n.replace(Ks,""),"important"):e[r]=n}}const zs=["Webkit","Moz","ms"],Jr={};function sf(e,t){const n=Jr[t];if(n)return n;let r=ct(t);if(r!=="filter"&&r in e)return Jr[t]=r;r=Pr(r);for(let o=0;oGr||(pf.then(()=>Gr=0),Gr=Date.now());function gf(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Ye(mf(r,n.value),t,5,[r])};return n.value=e,n.attached=hf(),n}function mf(e,t){if(Q(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>o=>!o._stopped&&r&&r(o))}else return t}const Ys=/^on[a-z]/,yf=(e,t,n,r,o=!1,s,i,l,a)=>{t==="class"?rf(e,r,o):t==="style"?of(e,n,r):Yn(t)?Fo(t)||ff(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):_f(e,t,r,o))?af(e,t,r,s,i,l,a):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),lf(e,t,r,o))};function _f(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&Ys.test(t)&&G(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||Ys.test(t)&&Ee(n)?!1:t in e}const Ct="transition",Tn="animation",Nr=(e,{slots:t})=>_e(wl,vf(e),t);Nr.displayName="Transition";const Kl={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Nr.props=Ae({},wl.props,Kl);const Nt=(e,t=[])=>{Q(e)?e.forEach(n=>n(...t)):e&&e(...t)},Js=e=>e?Q(e)?e.some(t=>t.length>1):e.length>1:!1;function vf(e){const t={};for(const N in e)N in Kl||(t[N]=e[N]);if(e.css===!1)return t;const{name:n="v",type:r,duration:o,enterFromClass:s=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:a=s,appearActiveClass:u=i,appearToClass:c=l,leaveFromClass:f=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:g=`${n}-leave-to`}=e,_=bf(o),C=_&&_[0],R=_&&_[1],{onBeforeEnter:y,onEnter:h,onEnterCancelled:v,onLeave:w,onLeaveCancelled:T,onBeforeAppear:O=y,onAppear:I=h,onAppearCancelled:k=v}=t,F=(N,X,j)=>{Ht(N,X?c:l),Ht(N,X?u:i),j&&j()},U=(N,X)=>{N._isLeaving=!1,Ht(N,f),Ht(N,g),Ht(N,p),X&&X()},W=N=>(X,j)=>{const Te=N?I:h,se=()=>F(X,N,j);Nt(Te,[X,se]),Gs(()=>{Ht(X,N?a:s),xt(X,N?c:l),Js(Te)||Xs(X,r,C,se)})};return Ae(t,{onBeforeEnter(N){Nt(y,[N]),xt(N,s),xt(N,i)},onBeforeAppear(N){Nt(O,[N]),xt(N,a),xt(N,u)},onEnter:W(!1),onAppear:W(!0),onLeave(N,X){N._isLeaving=!0;const j=()=>U(N,X);xt(N,f),Cf(),xt(N,p),Gs(()=>{!N._isLeaving||(Ht(N,f),xt(N,g),Js(w)||Xs(N,r,R,j))}),Nt(w,[N,j])},onEnterCancelled(N){F(N,!1),Nt(v,[N])},onAppearCancelled(N){F(N,!0),Nt(k,[N])},onLeaveCancelled(N){U(N),Nt(T,[N])}})}function bf(e){if(e==null)return null;if(ge(e))return[Xr(e.enter),Xr(e.leave)];{const t=Xr(e);return[t,t]}}function Xr(e){return Wo(e)}function xt(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function Ht(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function Gs(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let wf=0;function Xs(e,t,n,r){const o=e._endId=++wf,s=()=>{o===e._endId&&r()};if(n)return setTimeout(s,n);const{type:i,timeout:l,propCount:a}=Ef(e,t);if(!i)return r();const u=i+"end";let c=0;const f=()=>{e.removeEventListener(u,p),s()},p=g=>{g.target===e&&++c>=a&&f()};setTimeout(()=>{c(n[_]||"").split(", "),o=r(Ct+"Delay"),s=r(Ct+"Duration"),i=Zs(o,s),l=r(Tn+"Delay"),a=r(Tn+"Duration"),u=Zs(l,a);let c=null,f=0,p=0;t===Ct?i>0&&(c=Ct,f=i,p=s.length):t===Tn?u>0&&(c=Tn,f=u,p=a.length):(f=Math.max(i,u),c=f>0?i>u?Ct:Tn:null,p=c?c===Ct?s.length:a.length:0);const g=c===Ct&&/\b(transform|all)(,|$)/.test(n[Ct+"Property"]);return{type:c,timeout:f,propCount:p,hasTransform:g}}function Zs(e,t){for(;e.lengthei(n)+ei(e[r])))}function ei(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Cf(){return document.body.offsetHeight}const zl=Ae({patchProp:yf},nf);let Hn,ti=!1;function xf(){return Hn||(Hn=Hc(zl))}function Rf(){return Hn=ti?Hn:jc(zl),ti=!0,Hn}const Sf=(...e)=>{const t=xf().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Wl(r);if(!o)return;const s=t._component;!G(s)&&!s.render&&!s.template&&(s.template=o.innerHTML),o.innerHTML="";const i=n(o,!1,o instanceof SVGElement);return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),i},t},kf=(...e)=>{const t=Rf().createApp(...e),{mount:n}=t;return t.mount=r=>{const o=Wl(r);if(o)return n(o,!0,o instanceof SVGElement)},t};function Wl(e){return Ee(e)?document.querySelector(e):e}const Pf=/"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/,Af=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,Tf=/^["{[]|^-?[0-9][0-9.]{0,14}$/;function Of(e,t){if(!(e==="__proto__"||e==="constructor"))return t}function fs(e,t={}){if(typeof e!="string")return e;const n=e.toLowerCase();if(n==="true")return!0;if(n==="false")return!1;if(n==="null")return null;if(n==="nan")return NaN;if(n==="infinity")return 1/0;if(n!=="undefined"){if(!Tf.test(e)){if(t.strict)throw new SyntaxError("Invalid JSON");return e}try{return Pf.test(e)||Af.test(e)?JSON.parse(e,Of):JSON.parse(e)}catch(r){if(t.strict)throw r;return e}}}const Lf=/#/g,Mf=/&/g,Df=/=/g,Ql=/\+/g,If=/%5B/gi,$f=/%5D/gi,Bf=/%5E/gi,Nf=/%60/gi,Hf=/%7B/gi,jf=/%7C/gi,Uf=/%7D/gi,Ff=/%20/gi;function qf(e){return encodeURI(""+e).replace(jf,"|").replace(If,"[").replace($f,"]")}function So(e){return qf(e).replace(Ql,"%2B").replace(Ff,"+").replace(Lf,"%23").replace(Mf,"%26").replace(Nf,"`").replace(Hf,"{").replace(Uf,"}").replace(Bf,"^")}function Zr(e){return So(e).replace(Df,"%3D")}function Yl(e=""){try{return decodeURIComponent(""+e)}catch{return""+e}}function Vf(e){return Yl(e.replace(Ql," "))}function Kf(e=""){const t={};e[0]==="?"&&(e=e.substr(1));for(const n of e.split("&")){const r=n.match(/([^=]+)=?(.*)/)||[];if(r.length<2)continue;const o=Yl(r[1]);if(o==="__proto__"||o==="constructor")continue;const s=Vf(r[2]||"");t[o]?Array.isArray(t[o])?t[o].push(s):t[o]=[t[o],s]:t[o]=s}return t}function zf(e,t){return(typeof t=="number"||typeof t=="boolean")&&(t=String(t)),t?Array.isArray(t)?t.map(n=>`${Zr(e)}=${So(n)}`).join("&"):`${Zr(e)}=${So(t)}`:Zr(e)}function Wf(e){return Object.keys(e).map(t=>zf(t,e[t])).join("&")}const Qf=/^\w+:(\/\/)?/,Yf=/^\/\/[^/]+/;function Hr(e,t=!1){return Qf.test(e)||t&&Yf.test(e)}const Jf=/\/$|\/\?/;function ko(e="",t=!1){return t?Jf.test(e):e.endsWith("/")}function ds(e="",t=!1){if(!t)return(ko(e)?e.slice(0,-1):e)||"/";if(!ko(e,!0))return e||"/";const[n,...r]=e.split("?");return(n.slice(0,-1)||"/")+(r.length?`?${r.join("?")}`:"")}function Jl(e="",t=!1){if(!t)return e.endsWith("/")?e:e+"/";if(ko(e,!0))return e||"/";const[n,...r]=e.split("?");return n+"/"+(r.length?`?${r.join("?")}`:"")}function Gl(e=""){return e.startsWith("/")}function Gf(e=""){return(Gl(e)?e.substr(1):e)||"/"}function Xf(e=""){return Gl(e)?e:"/"+e}function Xl(e,t){if(Zl(t)||Hr(e))return e;const n=ds(t);return e.startsWith(n)?e:Xn(n,e)}function ni(e,t){if(Zl(t))return e;const n=ds(t);if(!e.startsWith(n))return e;const r=e.substring(n.length);return r[0]==="/"?r:"/"+r}function Zf(e,t){const n=jr(e),r={...Kf(n.search),...t};return n.search=Wf(r),td(n)}function Zl(e){return!e||e==="/"}function ed(e){return e&&e!=="/"}function Xn(e,...t){let n=e||"";for(const r of t.filter(ed))n=n?Jl(n)+Gf(r):r;return n}function jr(e="",t){if(!Hr(e,!0))return t?jr(t+e):ri(e);const[n="",r,o=""]=(e.replace(/\\/g,"/").match(/([^:/]+:)?\/\/([^/@]+@)?(.*)/)||[]).splice(1),[s="",i=""]=(o.match(/([^/?#]*)(.*)?/)||[]).splice(1),{pathname:l,search:a,hash:u}=ri(i);return{protocol:n,auth:r?r.substr(0,r.length-1):"",host:s,pathname:l,search:a,hash:u}}function ri(e=""){const[t="",n="",r=""]=(e.match(/([^#?]*)(\?[^#]*)?(#.*)?/)||[]).splice(1);return{pathname:t,search:n,hash:r}}function td(e){const t=e.pathname+(e.search?(e.search.startsWith("?")?"":"?")+e.search:"")+e.hash;return e.protocol?e.protocol+"//"+(e.auth?e.auth+"@":"")+e.host+t:t}class nd extends Error{constructor(){super(...arguments),this.name="FetchError"}}function rd(e,t,n){let r="";e&&n&&(r=`${n.status} ${n.statusText} (${e.toString()})`),t&&(r=`${t.message} (${r})`);const o=new nd(r);return Object.defineProperty(o,"request",{get(){return e}}),Object.defineProperty(o,"response",{get(){return n}}),Object.defineProperty(o,"data",{get(){return n&&n._data}}),o}const od=new Set(Object.freeze(["PATCH","POST","PUT","DELETE"]));function oi(e="GET"){return od.has(e.toUpperCase())}function sd(e){if(e===void 0)return!1;const t=typeof e;return t==="string"||t==="number"||t==="boolean"||t===null?!0:t!=="object"?!1:Array.isArray(e)?!0:e.constructor&&e.constructor.name==="Object"||typeof e.toJSON=="function"}const id=new Set(["image/svg","application/xml","application/xhtml","application/html"]),ld=/^application\/(?:[\w!#$%&*`\-.^~]*\+)?json(;.+)?$/i;function ad(e=""){if(!e)return"json";const t=e.split(";").shift();return ld.test(t)?"json":id.has(t)||t.startsWith("text/")?"text":"blob"}const ud=new Set([408,409,425,429,500,502,503,504]);function ea(e){const{fetch:t,Headers:n}=e;function r(i){const l=i.error&&i.error.name==="AbortError"||!1;if(i.options.retry!==!1&&!l){const u=typeof i.options.retry=="number"?i.options.retry:oi(i.options.method)?0:1,c=i.response&&i.response.status||500;if(u>0&&ud.has(c))return o(i.request,{...i.options,retry:u-1})}const a=rd(i.request,i.error,i.response);throw Error.captureStackTrace&&Error.captureStackTrace(a,o),a}const o=async function(l,a={}){const u={request:l,options:{...e.defaults,...a},response:void 0,error:void 0};u.options.onRequest&&await u.options.onRequest(u),typeof u.request=="string"&&(u.options.baseURL&&(u.request=Xl(u.request,u.options.baseURL)),(u.options.query||u.options.params)&&(u.request=Zf(u.request,{...u.options.params,...u.options.query})),u.options.body&&oi(u.options.method)&&sd(u.options.body)&&(u.options.body=typeof u.options.body=="string"?u.options.body:JSON.stringify(u.options.body),u.options.headers=new n(u.options.headers),u.options.headers.has("content-type")||u.options.headers.set("content-type","application/json"),u.options.headers.has("accept")||u.options.headers.set("accept","application/json"))),u.response=await t(u.request,u.options).catch(async f=>(u.error=f,u.options.onRequestError&&await u.options.onRequestError(u),r(u)));const c=(u.options.parseResponse?"json":u.options.responseType)||ad(u.response.headers.get("content-type")||"");if(c==="json"){const f=await u.response.text(),p=u.options.parseResponse||fs;u.response._data=p(f)}else c==="stream"?u.response._data=u.response.body:u.response._data=await u.response[c]();return u.options.onResponse&&await u.options.onResponse(u),u.response.ok||u.options.onResponseError&&await u.options.onResponseError(u),u.response.ok?u.response:r(u)},s=function(l,a){return o(l,a).then(u=>u._data)};return s.raw=o,s.create=(i={})=>ea({...e,defaults:{...e.defaults,...i}}),s}const ta=function(){if(typeof globalThis<"u")return globalThis;if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("unable to locate global object")}(),cd=ta.fetch||(()=>Promise.reject(new Error("[ohmyfetch] global.fetch is not supported!"))),fd=ta.Headers,dd=ea({fetch:cd,Headers:fd}),pd=()=>{var e;return((e=window==null?void 0:window.__NUXT__)==null?void 0:e.config)||{}},Er=pd().app,hd=()=>Er.baseURL,gd=()=>Er.buildAssetsDir,md=(...e)=>Xn(na(),gd(),...e),na=(...e)=>{const t=Er.cdnURL||Er.baseURL;return e.length?Xn(t,...e):t};globalThis.__buildAssetsURL=md,globalThis.__publicAssetsURL=na;function Po(e,t={},n){for(const r in e){const o=e[r],s=n?`${n}:${r}`:r;typeof o=="object"&&o!==null?Po(o,t,s):typeof o=="function"&&(t[s]=o)}return t}function yd(e,t){return e.reduce((n,r)=>n.then(()=>r.apply(void 0,t)),Promise.resolve(null))}function _d(e,t){return Promise.all(e.map(n=>n.apply(void 0,t)))}function eo(e,t){for(const n of e)n(t)}class vd{constructor(){this._hooks={},this._before=null,this._after=null,this._deprecatedMessages=null,this._deprecatedHooks={},this.hook=this.hook.bind(this),this.callHook=this.callHook.bind(this),this.callHookWith=this.callHookWith.bind(this)}hook(t,n,r={}){if(!t||typeof n!="function")return()=>{};const o=t;let s;for(;this._deprecatedHooks[t];)s=this._deprecatedHooks[t],t=s.to;if(s&&!r.allowDeprecated){let i=s.message;i||(i=`${o} hook has been deprecated`+(s.to?`, please use ${s.to}`:"")),this._deprecatedMessages||(this._deprecatedMessages=new Set),this._deprecatedMessages.has(i)||(console.warn(i),this._deprecatedMessages.add(i))}return this._hooks[t]=this._hooks[t]||[],this._hooks[t].push(n),()=>{n&&(this.removeHook(t,n),n=null)}}hookOnce(t,n){let r,o=(...s)=>(r(),r=null,o=null,n(...s));return r=this.hook(t,o),r}removeHook(t,n){if(this._hooks[t]){const r=this._hooks[t].indexOf(n);r!==-1&&this._hooks[t].splice(r,1),this._hooks[t].length===0&&delete this._hooks[t]}}deprecateHook(t,n){this._deprecatedHooks[t]=typeof n=="string"?{to:n}:n;const r=this._hooks[t]||[];this._hooks[t]=void 0;for(const o of r)this.hook(t,o)}deprecateHooks(t){Object.assign(this._deprecatedHooks,t);for(const n in t)this.deprecateHook(n,t[n])}addHooks(t){const n=Po(t),r=Object.keys(n).map(o=>this.hook(o,n[o]));return()=>{r.splice(0,r.length).forEach(o=>o())}}removeHooks(t){const n=Po(t);for(const r in n)this.removeHook(r,n[r])}callHook(t,...n){return this.callHookWith(yd,t,...n)}callHookParallel(t,...n){return this.callHookWith(_d,t,...n)}callHookWith(t,n,...r){const o=this._before||this._after?{name:n,args:r,context:{}}:void 0;this._before&&eo(this._before,o);const s=t(this._hooks[n]||[],r);return s instanceof Promise?s.finally(()=>{this._after&&o&&eo(this._after,o)}):(this._after&&o&&eo(this._after,o),s)}beforeEach(t){return this._before=this._before||[],this._before.push(t),()=>{const n=this._before.indexOf(t);n!==-1&&this._before.splice(n,1)}}afterEach(t){return this._after=this._after||[],this._after.push(t),()=>{const n=this._after.indexOf(t);n!==-1&&this._after.splice(n,1)}}}function bd(){return new vd}function wd(){let e=null,t=!1;const n=r=>{if(e&&e!==r)throw new Error("Context conflict")};return{use:()=>{if(e==null)throw new Error("Context is not available");return e},tryUse:()=>e,set:(r,o)=>{o||n(r),e=r,t=!0},unset:()=>{e=null,t=!1},call:(r,o)=>{n(r),e=r;try{return o()}finally{t||(e=null)}},async callAsync(r,o){e=r;const s=()=>{e=r},i=()=>e===r?s:void 0;Ao.add(i);try{const l=o();return t||(e=null),await l}finally{Ao.delete(i)}}}}function Ed(){const e={};return{get(t){return e[t]||(e[t]=wd()),e[t],e[t]}}}const Cr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof global<"u"?global:typeof window<"u"?window:{},si="__unctx__",Cd=Cr[si]||(Cr[si]=Ed()),xd=e=>Cd.get(e),ii="__unctx_async_handlers__",Ao=Cr[ii]||(Cr[ii]=new Set);function ra(e){const t=[];for(const o of Ao){const s=o();s&&t.push(s)}const n=()=>{for(const o of t)o()};let r=e();return"catch"in r&&(r=r.catch(o=>{throw n(),o})),[r,n]}const oa=xd("nuxt-app"),Rd="__nuxt_plugin";function Sd(e){let t=0;const n={provide:void 0,globalName:"nuxt",payload:rt({data:{},state:{},_errors:{},...window.__NUXT__}),isHydrating:!0,deferHydration(){if(!n.isHydrating)return()=>{};t++;let s=!1;return()=>{if(!s&&(s=!0,t--,t===0))return n.isHydrating=!1,n.callHook("app:suspense:resolve")}},_asyncDataPromises:{},_asyncData:{},...e};n.hooks=bd(),n.hook=n.hooks.hook,n.callHook=n.hooks.callHook,n.provide=(s,i)=>{const l="$"+s;ar(n,l,i),ar(n.vueApp.config.globalProperties,l,i)},ar(n.vueApp,"$nuxt",n),ar(n.vueApp.config.globalProperties,"$nuxt",n);const r=rt(n.payload.config),o=new Proxy(r,{get(s,i){var l;return i==="public"?s.public:(l=s[i])!=null?l:s.public[i]},set(s,i,l){return i==="public"||i==="app"?!1:(s[i]=l,s.public[i]=l,!0)}});return n.provide("config",o),n}async function kd(e,t){if(typeof t!="function")return;const{provide:n}=await kt(e,t,[e])||{};if(n&&typeof n=="object")for(const r in n)e.provide(r,n[r])}async function Pd(e,t){for(const n of t)await kd(e,n)}function Ad(e){return e.map(n=>typeof n!="function"?null:n.length>1?r=>n(r,r.provide):n).filter(Boolean)}function It(e){return e[Rd]=!0,e}function kt(e,t,n){const r=()=>n?t(...n):t();return oa.set(e),r()}function xe(){const e=oa.tryUse();if(!e){const t=bt();if(!t)throw new Error("nuxt instance unavailable");return t.appContext.app.$nuxt}return e}function Sn(){return xe().$config}function ar(e,t,n){Object.defineProperty(e,t,{get:()=>n})}const Td=()=>null;function Od(...e){var f,p,g,_,C,R,y,h,v;const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);let[n,r,o={}]=e;if(typeof n!="string")throw new TypeError("[nuxt] [asyncData] key must be a string.");if(typeof r!="function")throw new TypeError("[nuxt] [asyncData] handler must be a function.");o.server=(f=o.server)!=null?f:!0,o.default=(p=o.default)!=null?p:Td,o.defer&&console.warn("[useAsyncData] `defer` has been renamed to `lazy`. Support for `defer` will be removed in RC."),o.lazy=(_=(g=o.lazy)!=null?g:o.defer)!=null?_:!1,o.initialCache=(C=o.initialCache)!=null?C:!0,o.immediate=(R=o.immediate)!=null?R:!0;const s=xe(),i=()=>(s.isHydrating||o.initialCache)&&s.payload.data[n]!==void 0;s._asyncData[n]||(s._asyncData[n]={data:Qe(i()?s.payload.data[n]:(h=(y=o.default)==null?void 0:y.call(o))!=null?h:null),pending:Qe(!i()),error:Qe((v=s.payload._errors[n])!=null?v:null)});const l={...s._asyncData[n]};l.refresh=l.execute=(w={})=>{if(s._asyncDataPromises[n]){if(w.dedupe===!1)return s._asyncDataPromises[n];s._asyncDataPromises[n].cancelled=!0}if(w._initial&&i())return s.payload.data[n];l.pending.value=!0;const T=new Promise((O,I)=>{try{O(r(s))}catch(k){I(k)}}).then(O=>{if(T.cancelled)return s._asyncDataPromises[n];o.transform&&(O=o.transform(O)),o.pick&&(O=Ld(O,o.pick)),l.data.value=O,l.error.value=null}).catch(O=>{var I,k;if(T.cancelled)return s._asyncDataPromises[n];l.error.value=O,l.data.value=we((k=(I=o.default)==null?void 0:I.call(o))!=null?k:null)}).finally(()=>{T.cancelled||(l.pending.value=!1,s.payload.data[n]=l.data.value,l.error.value&&(s.payload._errors[n]=!0),delete s._asyncDataPromises[n])});return s._asyncDataPromises[n]=T,s._asyncDataPromises[n]};const a=()=>l.refresh({_initial:!0}),u=o.server!==!1&&s.payload.serverRendered;{const w=bt();if(w&&!w._nuxtOnBeforeMountCbs){w._nuxtOnBeforeMountCbs=[];const O=w._nuxtOnBeforeMountCbs;w&&(Rl(()=>{O.forEach(I=>{I()}),O.splice(0,O.length)}),yr(()=>O.splice(0,O.length)))}u&&s.isHydrating&&n in s.payload.data?l.pending.value=!1:w&&(s.payload.serverRendered&&s.isHydrating||o.lazy)&&o.immediate?w._nuxtOnBeforeMountCbs.push(a):o.immediate&&a(),o.watch&&Ue(o.watch,()=>l.refresh());const T=s.hook("app:data:refresh",O=>{if(!O||O.includes(n))return l.refresh()});w&&yr(T)}const c=Promise.resolve(s._asyncDataPromises[n]).then(()=>l);return Object.assign(c,l),c}function _y(e){const t=e?Array.isArray(e)?e:[e]:void 0;return xe().callHook("app:data:refresh",t)}function Ld(e,t){const n={};for(const r of t)n[r]=e[r];return n}const Md=decodeURIComponent,Dd=encodeURIComponent,Id=/; */,ur=/^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;function $d(e,t){if(typeof e!="string")throw new TypeError("argument str must be a string");let n={},r=t||{},o=e.split(Id),s=r.decode||Md;for(let i=0;its(xe().payload,"error"),Dn=e=>{const t=sa(e);try{xe().callHook("app:error",t);const r=Ur();r.value=r.value||t}catch{throw t}return t},Hd=async(e={})=>{const t=xe(),n=Ur();t.callHook("app:error:cleared",e),e.redirect&&await t.$router.replace(e.redirect),n.value=null},jd=e=>!!(e&&typeof e=="object"&&"__nuxt_error"in e),sa=e=>{const t=Oo(e);return t.__nuxt_error=!0,t};function ia(...e){const t=typeof e[e.length-1]=="string"?e.pop():void 0;typeof e[0]!="string"&&e.unshift(t);const[n,r]=e;if(!n||typeof n!="string")throw new TypeError("[nuxt] [useState] key must be a string: "+n);if(r!==void 0&&typeof r!="function")throw new Error("[nuxt] [useState] init must be a function: "+r);const o="$s"+n,s=xe(),i=ts(s.payload.state,o);if(i.value===void 0&&r){const l=r();if(Se(l))return s.payload.state[o]=l,l;i.value=l}return i}const Jt=()=>{var e;return(e=xe())==null?void 0:e.$router},kn=()=>bt()?nt("_route",xe()._route):xe()._route,Ud=e=>e,Fd=()=>{try{if(xe()._processingMiddleware)return!0}catch{return!0}return!1},qd=(e,t)=>{e||(e="/");const n=typeof e=="string"?e:e.path||"/",r=Hr(n,!0);if(r&&!(t!=null&&t.external))throw new Error("Navigating to external URL is not allowed by default. Use `nagivateTo (url, { external: true })`.");if(r&&jr(n).protocol==="script:")throw new Error("Cannot navigate to an URL with script protocol.");if(!r&&Fd())return e;const o=Jt();return r?(t!=null&&t.replace?location.replace(n):location.href=n,Promise.resolve()):t!=null&&t.replace?o.replace(e):o.push(e)},Vd={ignoreUnknown:!1,respectType:!1,respectFunctionNames:!1,respectFunctionProperties:!1,unorderedObjects:!0,unorderedArrays:!1,unorderedSets:!1};function Kd(e,t={}){t={...Vd,...t};const n=la(t);return n.dispatch(e),n.toString()}function la(e){const t=[];let n=[];const r=o=>{t.push(o)};return{toString(){return t.join("")},getContext(){return n},dispatch(o){return e.replacer&&(o=e.replacer(o)),this["_"+(o===null?"null":typeof o)](o)},_object(o){const s=/\[object (.*)\]/i,i=Object.prototype.toString.call(o),l=s.exec(i),a=l?l[1].toLowerCase():"unknown:["+i.toLowerCase()+"]";let u=null;if((u=n.indexOf(o))>=0)return this.dispatch("[CIRCULAR:"+u+"]");if(n.push(o),typeof Buffer<"u"&&Buffer.isBuffer&&Buffer.isBuffer(o))return r("buffer:"),r(o.toString("utf8"));if(a!=="object"&&a!=="function"&&a!=="asyncfunction")if(this["_"+a])this["_"+a](o);else{if(e.ignoreUnknown)return r("["+a+"]");throw new Error('Unknown object type "'+a+'"')}else{let c=Object.keys(o);return e.unorderedObjects&&(c=c.sort()),e.respectType!==!1&&!ai(o)&&c.splice(0,0,"prototype","__proto__","letructor"),e.excludeKeys&&(c=c.filter(function(f){return!e.excludeKeys(f)})),r("object:"+c.length+":"),c.forEach(f=>{this.dispatch(f),r(":"),e.excludeValues||this.dispatch(o[f]),r(",")})}},_array(o,s){if(s=typeof s<"u"?s:e.unorderedArrays!==!1,r("array:"+o.length+":"),!s||o.length<=1)return o.forEach(a=>this.dispatch(a));const i=[],l=o.map(a=>{const u=la(e);return u.dispatch(a),i.push(u.getContext()),u.toString()});return n=n.concat(i),l.sort(),this._array(l,!1)},_date(o){return r("date:"+o.toJSON())},_symbol(o){return r("symbol:"+o.toString())},_error(o){return r("error:"+o.toString())},_boolean(o){return r("bool:"+o.toString())},_string(o){r("string:"+o.length+":"),r(o.toString())},_function(o){r("fn:"),ai(o)?this.dispatch("[native]"):this.dispatch(o.toString()),e.respectFunctionNames!==!1&&this.dispatch("function-name:"+String(o.name)),e.respectFunctionProperties&&this._object(o)},_number(o){return r("number:"+o.toString())},_xml(o){return r("xml:"+o.toString())},_null(){return r("Null")},_undefined(){return r("Undefined")},_regexp(o){return r("regex:"+o.toString())},_uint8array(o){return r("uint8array:"),this.dispatch(Array.prototype.slice.call(o))},_uint8clampedarray(o){return r("uint8clampedarray:"),this.dispatch(Array.prototype.slice.call(o))},_int8array(o){return r("int8array:"),this.dispatch(Array.prototype.slice.call(o))},_uint16array(o){return r("uint16array:"),this.dispatch(Array.prototype.slice.call(o))},_int16array(o){return r("int16array:"),this.dispatch(Array.prototype.slice.call(o))},_uint32array(o){return r("uint32array:"),this.dispatch(Array.prototype.slice.call(o))},_int32array(o){return r("int32array:"),this.dispatch(Array.prototype.slice.call(o))},_float32array(o){return r("float32array:"),this.dispatch(Array.prototype.slice.call(o))},_float64array(o){return r("float64array:"),this.dispatch(Array.prototype.slice.call(o))},_arraybuffer(o){return r("arraybuffer:"),this.dispatch(new Uint8Array(o))},_url(o){return r("url:"+o.toString())},_map(o){r("map:");const s=Array.from(o);return this._array(s,e.unorderedSets!==!1)},_set(o){r("set:");const s=Array.from(o);return this._array(s,e.unorderedSets!==!1)},_file(o){return r("file:"),this.dispatch([o.name,o.size,o.type,o.lastModfied])},_blob(){if(e.ignoreUnknown)return r("[blob]");throw new Error(`Hashing Blob objects is currently not supported +Use "options.replacer" or "options.ignoreUnknown" +`)},_domwindow(){return r("domwindow")},_bigint(o){return r("bigint:"+o.toString())},_process(){return r("process")},_timer(){return r("timer")},_pipe(){return r("pipe")},_tcp(){return r("tcp")},_udp(){return r("udp")},_tty(){return r("tty")},_statwatcher(){return r("statwatcher")},_securecontext(){return r("securecontext")},_connection(){return r("connection")},_zlib(){return r("zlib")},_context(){return r("context")},_nodescript(){return r("nodescript")},_httpparser(){return r("httpparser")},_dataview(){return r("dataview")},_signal(){return r("signal")},_fsevent(){return r("fsevent")},_tlswrap(){return r("tlswrap")}}}function ai(e){return typeof e!="function"?!1:/^function\s+\w*\s*\(\s*\)\s*{\s+\[native code\]\s+}$/i.exec(Function.prototype.toString.call(e))!=null}class yn{constructor(t,n){t=this.words=t||[],n!==void 0?this.sigBytes=n:this.sigBytes=t.length*4}toString(t){return(t||zd).stringify(this)}concat(t){if(this.clamp(),this.sigBytes%4)for(let n=0;n>>2]>>>24-n%4*8&255;this.words[this.sigBytes+n>>>2]|=r<<24-(this.sigBytes+n)%4*8}else for(let n=0;n>>2]=t.words[n>>>2];return this.sigBytes+=t.sigBytes,this}clamp(){this.words[this.sigBytes>>>2]&=4294967295<<32-this.sigBytes%4*8,this.words.length=Math.ceil(this.sigBytes/4)}clone(){return new yn(this.words.slice(0))}}const zd={stringify(e){const t=[];for(let n=0;n>>2]>>>24-n%4*8&255;t.push((r>>>4).toString(16)),t.push((r&15).toString(16))}return t.join("")}},Wd={stringify(e){const t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",n=[];for(let r=0;r>>2]>>>24-r%4*8&255,s=e.words[r+1>>>2]>>>24-(r+1)%4*8&255,i=e.words[r+2>>>2]>>>24-(r+2)%4*8&255,l=o<<16|s<<8|i;for(let a=0;a<4&&r*8+a*6>>6*(3-a)&63))}return n.join("")}},Qd={parse(e){const t=e.length,n=[];for(let r=0;r>>2]|=(e.charCodeAt(r)&255)<<24-r%4*8;return new yn(n,t)}},Yd={parse(e){return Qd.parse(unescape(encodeURIComponent(e)))}};class Jd{constructor(){this._minBufferSize=0,this.blockSize=512/32,this.reset()}reset(){this._data=new yn,this._nDataBytes=0}_append(t){typeof t=="string"&&(t=Yd.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes}_doProcessBlock(t,n){}_process(t){let n,r=this._data.sigBytes/(this.blockSize*4);t?r=Math.ceil(r):r=Math.max((r|0)-this._minBufferSize,0);const o=r*this.blockSize,s=Math.min(o*4,this._data.sigBytes);if(o){for(let i=0;i>>7)^(v<<14|v>>>18)^v>>>3,T=jt[p-2],O=(T<<15|T>>>17)^(T<<13|T>>>19)^T>>>10;jt[p]=w+jt[p-7]+O+jt[p-16]}const g=a&u^~a&c,_=o&s^o&i^s&i,C=(o<<30|o>>>2)^(o<<19|o>>>13)^(o<<10|o>>>22),R=(a<<26|a>>>6)^(a<<21|a>>>11)^(a<<7|a>>>25),y=f+R+g+Zd[p]+jt[p],h=C+_;f=c,c=u,u=a,a=l+y|0,l=i,i=s,s=o,o=y+h|0}r[0]=r[0]+o|0,r[1]=r[1]+s|0,r[2]=r[2]+i|0,r[3]=r[3]+l|0,r[4]=r[4]+a|0,r[5]=r[5]+u|0,r[6]=r[6]+c|0,r[7]=r[7]+f|0}finalize(t){super.finalize(t);const n=this._nDataBytes*8,r=this._data.sigBytes*8;return this._data.words[r>>>5]|=128<<24-r%32,this._data.words[(r+64>>>9<<4)+14]=Math.floor(n/4294967296),this._data.words[(r+64>>>9<<4)+15]=n,this._data.sigBytes=this._data.words.length*4,this._process(),this._hash}}function tp(e){return new ep().finalize(e).toString(Wd)}function aa(e,t={}){const n=typeof e=="string"?e:Kd(e,t);return tp(n).substr(0,10)}const np={path:"/",decode:e=>fs(decodeURIComponent(e)),encode:e=>encodeURIComponent(typeof e=="string"?e:JSON.stringify(e))};function ua(e,t){var s,i;const n={...np,...t},r=rp(n)||{},o=Qe((i=r[e])!=null?i:(s=n.default)==null?void 0:s.call(n));return Ue(o,()=>{sp(e,o.value,n)}),o}function rp(e={}){return $d(document.cookie,e)}function op(e,t,n={}){return t==null?li(e,t,{...n,maxAge:-1}):li(e,t,n)}function sp(e,t,n={}){document.cookie=op(e,t,n)}async function ca(e,t=Jt()){if(t._routePreloaded||(t._routePreloaded=new Set),t._routePreloaded.has(e))return;t._routePreloaded.add(e);const n=t._preloadPromises||(t._preloadPromises=[]);if(n.length>4)return Promise.all(n).then(()=>ca(e,t));const r=t.resolve(e).matched.map(o=>{var s;return(s=o.components)==null?void 0:s.default}).filter(o=>typeof o=="function");for(const o of r){const s=Promise.resolve(o()).catch(()=>{}).finally(()=>n.splice(n.indexOf(s)));n.push(s)}await Promise.all(n)}const ip="modulepreload",lp=function(e,t){return new URL(e,t).href},ui={},J=function(t,n,r){return!n||n.length===0?t():Promise.all(n.map(o=>{if(o=lp(o,r),o in ui)return;ui[o]=!0;const s=o.endsWith(".css"),i=s?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${o}"]${i}`))return;const l=document.createElement("link");if(l.rel=s?"stylesheet":ip,s||(l.as="script",l.crossOrigin=""),l.href=o,document.head.appendChild(l),s)return new Promise((a,u)=>{l.addEventListener("load",a),l.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t())};function ci(e,t={}){const n=ap(e,t),r=xe(),o=r._payloadCache=r._payloadCache||{};return o[e]||(o[e]=up(n).then(s=>s||(delete o[e],null))),o[e]}function ap(e,t={}){const n=jr(e);if(n.search)throw new Error("Payload URL cannot contain search params: "+e);const r=t.hash||(t.fresh?Date.now():"");return Xn(Sn().app.baseURL,n.pathname,r?`_payload.${r}.js`:"_payload.js")}async function up(e){const t=await J(()=>import(e),[],import.meta.url).catch(n=>{console.warn("[nuxt] Cannot load payload ",e,n)});return(t==null?void 0:t.default)||null}function cp(){return!!xe().payload.prerenderedAt}const fp=(...e)=>e.find(t=>t!==void 0),dp="noopener noreferrer",pp=globalThis.requestIdleCallback||(e=>{const t=Date.now(),n={didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-t))};return setTimeout(()=>{e(n)},1)}),hp=globalThis.cancelIdleCallback||(e=>{clearTimeout(e)});function fa(e){const t=e.componentName||"NuxtLink";return Me({name:t,props:{to:{type:[String,Object],default:void 0,required:!1},href:{type:[String,Object],default:void 0,required:!1},target:{type:String,default:void 0,required:!1},rel:{type:String,default:void 0,required:!1},noRel:{type:Boolean,default:void 0,required:!1},prefetch:{type:Boolean,default:void 0,required:!1},noPrefetch:{type:Boolean,default:void 0,required:!1},activeClass:{type:String,default:void 0,required:!1},exactActiveClass:{type:String,default:void 0,required:!1},prefetchedClass:{type:String,default:void 0,required:!1},replace:{type:Boolean,default:void 0,required:!1},ariaCurrentValue:{type:String,default:void 0,required:!1},external:{type:Boolean,default:void 0,required:!1},custom:{type:Boolean,default:void 0,required:!1}},setup(n,{slots:r}){const o=Jt(),s=Re(()=>n.to||n.href||""),i=Re(()=>n.external||n.target&&n.target!=="_self"?!0:typeof s.value=="object"?!1:s.value===""||Hr(s.value,!0)),l=Qe(!1),a=Qe(null);if(n.prefetch!==!1&&n.noPrefetch!==!0&&typeof s.value=="string"&&n.target!=="_blank"&&!mp()){const c=xe(),f=gp();let p,g=null;Gn(()=>{p=pp(()=>{var _;(_=a==null?void 0:a.value)!=null&&_.tagName&&(g=f.observe(a.value,async()=>{g==null||g(),g=null,await Promise.all([c.hooks.callHook("link:prefetch",s.value).catch(()=>{}),!i.value&&ca(s.value,o).catch(()=>{})]),l.value=!0}))})}),Rn(()=>{p&&hp(p),g==null||g(),g=null})}return()=>{var g,_,C;if(!i.value)return _e(Ir("RouterLink"),{ref:R=>{a.value=R==null?void 0:R.$el},to:s.value,...l.value&&!n.custom?{class:n.prefetchedClass||e.prefetchedClass}:{},activeClass:n.activeClass||e.activeClass,exactActiveClass:n.exactActiveClass||e.exactActiveClass,replace:n.replace,ariaCurrentValue:n.ariaCurrentValue,custom:n.custom},r.default);const u=typeof s.value=="object"?(_=(g=o.resolve(s.value))==null?void 0:g.href)!=null?_:null:s.value||null,c=n.target||null,f=n.noRel?null:fp(n.rel,e.externalRelAttribute,u?dp:"")||null,p=()=>qd(u,{replace:n.replace});return n.custom?r.default?r.default({href:u,navigate:p,route:o.resolve(u),rel:f,target:c,isActive:!1,isExactActive:!1}):null:_e("a",{ref:a,href:u,rel:f,target:c},(C=r.default)==null?void 0:C.call(r))}}})}const da=fa({componentName:"NuxtLink"});function gp(){const e=xe();if(e._observer)return e._observer;let t=null;const n=new Map,r=(s,i)=>(t||(t=new IntersectionObserver(l=>{for(const a of l){const u=n.get(a.target);(a.isIntersecting||a.intersectionRatio>0)&&u&&u()}})),n.set(s,i),t.observe(s),()=>{n.delete(s),t.unobserve(s),n.size===0&&(t.disconnect(),t=null)});return e._observer={observe:r}}function mp(){const e=navigator.connection;return!!(e&&(e.saveData||/2g/.test(e.effectiveType)))}const vy=Object.freeze(Object.defineProperty({__proto__:null,defineNuxtLink:fa,default:da},Symbol.toStringTag,{value:"Module"}));function to(e){return e!==null&&typeof e=="object"}function Lo(e,t,n=".",r){if(!to(t))return Lo(e,{},n,r);const o=Object.assign({},t);for(const s in e){if(s==="__proto__"||s==="constructor")continue;const i=e[s];i!=null&&(r&&r(o,s,i,n)||(Array.isArray(i)&&Array.isArray(o[s])?o[s]=i.concat(o[s]):to(i)&&to(o[s])?o[s]=Lo(i,o[s],(n?`${n}.`:"")+s.toString(),r):o[s]=i))}return o}function yp(e){return(...t)=>t.reduce((n,r)=>Lo(n,r,"",e),{})}const _p=yp((e,t,n,r)=>{if(typeof e[t]<"u"&&typeof n=="function")return e[t]=n(e[t]),!0}),vp={};_p(vp);function pa(e){xe()._useHead(e)}const no={ProseA:re(()=>J(()=>import("./ProseA.51266783.js"),[],import.meta.url).then(e=>e.default||e)),ProseCode:re(()=>J(()=>import("./ProseCode.3a4bf644.js"),["ProseCode.3a4bf644.js","UiIconCopy.76853494.js","ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js","ProseCode.vue_used_vue_type_style_index_1_lang.24930a5d.css"],import.meta.url).then(e=>e.default||e)),ContentDoc:re(()=>J(()=>Promise.resolve().then(()=>Ag),void 0,import.meta.url).then(e=>e.default||e)),ContentList:re(()=>J(()=>import("./ContentList.cf0afcb7.js"),[],import.meta.url).then(e=>e.default||e)),ContentNavigation:re(()=>J(()=>import("./ContentNavigation.f1db37c2.js"),["ContentNavigation.f1db37c2.js","ContentNavigation.eba111bf.css","navigation.123e305f.js","ProseCode.vue_used_vue_type_style_index_1_lang.module.230a312a.js","ProseCode.vue_used_vue_type_style_index_1_lang.24930a5d.css","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.5944fda9.css","ContentList.cf0afcb7.js","ContentSlot.4744181a.js","DocumentDrivenEmpty.c1fa2173.js","DocumentDrivenNotFound.e036e24d.js","Markdown.3365dbff.js"],import.meta.url).then(e=>e.default||e)),ContentQuery:re(()=>J(()=>Promise.resolve().then(()=>kg),void 0,import.meta.url).then(e=>e.default||e)),ContentRenderer:re(()=>J(()=>Promise.resolve().then(()=>vg),void 0,import.meta.url).then(e=>e.default||e)),ContentRendererMarkdown:re(()=>J(()=>Promise.resolve().then(()=>_g),void 0,import.meta.url).then(e=>e.default||e)),ContentSlot:re(()=>J(()=>import("./ContentSlot.4744181a.js"),[],import.meta.url).then(e=>e.default||e)),DocumentDrivenEmpty:re(()=>J(()=>import("./DocumentDrivenEmpty.c1fa2173.js"),[],import.meta.url).then(e=>e.default||e)),DocumentDrivenNotFound:re(()=>J(()=>import("./DocumentDrivenNotFound.e036e24d.js"),[],import.meta.url).then(e=>e.default||e)),Markdown:re(()=>J(()=>import("./Markdown.3365dbff.js"),["Markdown.3365dbff.js","ContentSlot.4744181a.js"],import.meta.url).then(e=>e.default||e)),ProseBlockquote:re(()=>J(()=>import("./ProseBlockquote.c3f8360b.js"),[],import.meta.url).then(e=>e.default||e)),ProseCodeInline:re(()=>J(()=>import("./ProseCodeInline.48628627.js"),[],import.meta.url).then(e=>e.default||e)),ProseEm:re(()=>J(()=>import("./ProseEm.35b844dc.js"),[],import.meta.url).then(e=>e.default||e)),ProseH1:re(()=>J(()=>import("./ProseH1.ebf7ce2a.js"),[],import.meta.url).then(e=>e.default||e)),ProseH2:re(()=>J(()=>import("./ProseH2.7ef5d565.js"),[],import.meta.url).then(e=>e.default||e)),ProseH3:re(()=>J(()=>import("./ProseH3.c6034a12.js"),[],import.meta.url).then(e=>e.default||e)),ProseH4:re(()=>J(()=>import("./ProseH4.74105bc8.js"),[],import.meta.url).then(e=>e.default||e)),ProseH5:re(()=>J(()=>import("./ProseH5.169298fa.js"),[],import.meta.url).then(e=>e.default||e)),ProseH6:re(()=>J(()=>import("./ProseH6.62bf17fb.js"),[],import.meta.url).then(e=>e.default||e)),ProseHr:re(()=>J(()=>import("./ProseHr.9c93dfae.js"),[],import.meta.url).then(e=>e.default||e)),ProseImg:re(()=>J(()=>import("./ProseImg.07f10b54.js"),[],import.meta.url).then(e=>e.default||e)),ProseLi:re(()=>J(()=>import("./ProseLi.f35f697c.js"),[],import.meta.url).then(e=>e.default||e)),ProseOl:re(()=>J(()=>import("./ProseOl.68fa8258.js"),[],import.meta.url).then(e=>e.default||e)),ProseP:re(()=>J(()=>import("./ProseP.9a7d03df.js"),[],import.meta.url).then(e=>e.default||e)),ProseStrong:re(()=>J(()=>import("./ProseStrong.c2c2a1c5.js"),[],import.meta.url).then(e=>e.default||e)),ProseTable:re(()=>J(()=>import("./ProseTable.39e3be33.js"),[],import.meta.url).then(e=>e.default||e)),ProseTbody:re(()=>J(()=>import("./ProseTbody.a87c57af.js"),[],import.meta.url).then(e=>e.default||e)),ProseTd:re(()=>J(()=>import("./ProseTd.54ae6f37.js"),[],import.meta.url).then(e=>e.default||e)),ProseTh:re(()=>J(()=>import("./ProseTh.2185040d.js"),[],import.meta.url).then(e=>e.default||e)),ProseThead:re(()=>J(()=>import("./ProseThead.e0d17643.js"),[],import.meta.url).then(e=>e.default||e)),ProseTr:re(()=>J(()=>import("./ProseTr.1b0548ab.js"),[],import.meta.url).then(e=>e.default||e)),ProseUl:re(()=>J(()=>import("./ProseUl.45cfd40a.js"),[],import.meta.url).then(e=>e.default||e))},bp=It(e=>{for(const t in no)e.vueApp.component(t,no[t]),e.vueApp.component("Lazy"+t,no[t])});var fi;const wp=typeof window<"u";wp&&((fi=window==null?void 0:window.navigator)==null?void 0:fi.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function Ep(e){return typeof e=="function"?e():we(e)}var Cp="usehead",di="head:count",ro="data-head-attrs",ha="data-meta-body",ps=(e,t)=>e.map(n=>(n.input&&(t||!n.resolved)&&(n.input=xr(n.input)),n)),xp=(e,t)=>{const n=r=>{var o;if((o=r.options)!=null&&o.renderPriority)return r.options.renderPriority;switch(r.tag){case"base":return-1;case"meta":return r.props.charset?-2:r.props["http-equiv"]==="content-security-policy"?0:10;default:return 10}};return n(e)-n(t)},Rp=e=>{const{props:t,tag:n,options:r}=e;if(n==="base"||n==="title"||n==="titleTemplate")return n;if(n==="link"&&t.rel==="canonical")return"canonical";if(t.charset)return"charset";if(r!=null&&r.key)return`${n}:${r.key}`;const o=["id"];n==="meta"&&o.push("name","property","http-equiv");for(const s of o)if(typeof t[s]<"u")return`${n}:${s}:${t[s]}`;return e.runtime.position};function xr(e){const t=Ep(e);return!e||!t?t:Array.isArray(t)?t.map(xr):typeof t=="object"?Object.fromEntries(Object.entries(t).map(([n,r])=>n==="titleTemplate"?[n,we(r)]:[n,xr(r)])):t}var Sp=(e,t,n)=>{var r;t={...t};const o={tag:e,props:{},runtime:{entryId:n.id},options:{...n.options}};return["hid","vmid","key"].forEach(s=>{t[s]&&(o.options.key=t[s],delete t[s])}),["children","innerHTML","textContent"].forEach(s=>{typeof t[s]<"u"&&(o.children=t[s],delete t[s])}),["body","renderPriority"].forEach(s=>{typeof t[s]<"u"&&(o.options[s]=t[s],delete t[s])}),(r=o.options)!=null&&r.body&&(t[ha]=!0),o.props=t,o},kp=e=>Object.entries(e.input).filter(([,t])=>typeof t<"u").map(([t,n])=>(Array.isArray(n)?n:[n]).map(r=>{switch(t){case"title":case"titleTemplate":return{tag:t,children:r,props:{},runtime:{entryId:e.id},options:e.options};case"base":case"meta":case"link":case"style":case"script":case"noscript":case"htmlAttrs":case"bodyAttrs":return Sp(t,r,e);default:return!1}})).flat().filter(t=>!!t),pi=(e,t)=>e==null?t||null:typeof e=="function"?e(t):e.replace("%s",t!=null?t:""),ga=e=>{const t={};ps(e).forEach((i,l)=>{kp(i).forEach((u,c)=>{u.runtime=u.runtime||{},u.runtime.position=l*1e4+c,t[Rp(u)]=u})});let r=Object.values(t).sort((i,l)=>i.runtime.position-l.runtime.position).sort(xp);const o=r.findIndex(i=>i.tag==="titleTemplate"),s=r.findIndex(i=>i.tag==="title");if(s!==-1&&o!==-1){const i=pi(r[o].children,r[s].children);i!==null?r[s].children=i||r[s].children:r=r.filter((l,a)=>a!==s),r=r.filter((l,a)=>a!==o)}else if(o!==-1){const i=pi(r[o].children);i!==null?(r[o].children=i,r[o].tag="title"):r=r.filter((l,a)=>a!==o)}return r};function hi(e,t){if(e instanceof HTMLElement&&t instanceof HTMLElement){const n=t.getAttribute("nonce");if(n&&!e.getAttribute("nonce")){const r=t.cloneNode(!0);return r.setAttribute("nonce",""),r.nonce=n,n===e.nonce&&e.isEqualNode(r)}}return e.isEqualNode(t)}var gi=(e,t)=>{const n=e.getAttribute(ro);if(n)for(const o of n.split(","))o in t||e.removeAttribute(o);const r=[];for(const o in t){const s=t[o];s!=null&&(s===!1?e.removeAttribute(o):e.setAttribute(o,s),r.push(o))}r.length?e.setAttribute(ro,r.join(",")):e.removeAttribute(ro)},Pp=(e,t)=>{var n;const r=t.createElement(e.tag);return Object.entries(e.props).forEach(([o,s])=>{s!==!1&&r.setAttribute(o,s===!0?"":String(s))}),e.children&&((n=e.options)!=null&&n.safe?e.tag!=="script"&&(r.textContent=e.children):r.innerHTML=e.children),r},Ap=(e=window.document,t,n)=>{var r,o;const s=e.head,i=e.body;let l=s.querySelector(`meta[name="${di}"]`);const a=i.querySelectorAll(`[${ha}]`),u=l?Number(l.getAttribute("content")):0,c=[],f=[];if(a)for(let g=0;g{var C;var _;return{element:Pp(g,e),body:(C=(_=g.options)==null?void 0:_.body)!=null?C:!1}});p=p.filter(g=>{for(let _=0;_{var _;return(_=g.parentNode)==null?void 0:_.removeChild(g)}),c.forEach(g=>{var _;return(_=g.parentNode)==null?void 0:_.removeChild(g)}),p.forEach(g=>{g.body?i.insertAdjacentElement("beforeend",g.element):s.insertBefore(g.element,l)}),l.setAttribute("content",`${u-c.length+p.filter(g=>!g.body).length}`)},Tp=async(e,t,n)=>{var r,o;const s={};n||(n=window.document);for(const u in e.hooks["before:dom"])if(await e.hooks["before:dom"][u]()===!1)return;const i=ps(e.headEntries);for(const u in e.hooks["resolved:entries"])await e.hooks["resolved:entries"][u](i);const l=ga(i);for(const u in e.hooks["resolved:tags"])await e.hooks["resolved:tags"][u](l);for(const u of l)switch(u.tag){case"title":typeof u.children<"u"&&(n.title=u.children);break;case"base":case"meta":case"link":case"style":case"script":case"noscript":s[u.tag]=s[u.tag]||[],s[u.tag].push(u);break}gi(n.documentElement,((r=l.find(u=>u.tag==="htmlAttrs"))==null?void 0:r.props)||{}),gi(n.body,((o=l.find(u=>u.tag==="bodyAttrs"))==null?void 0:o.props)||{});const a=new Set([...Object.keys(s),...t]);for(const u of a)Ap(n,u,s[u]||[]);t.clear(),Object.keys(s).forEach(u=>t.add(u))},Op=typeof window<"u",Lp=e=>{let t=[],n=0;const r=new Set;let o=null;const s={install(i){i.config.globalProperties&&(i.config.globalProperties.$head=s),i.provide(Cp,s)},hooks:{"before:dom":[],"resolved:tags":[],"resolved:entries":[]},get headEntries(){return t},get headTags(){const i=ps(s.headEntries);return ga(i)},addHeadObjs(i,l){return s.addEntry(i,l)},addEntry(i,l={}){let a=!1;l!=null&&l.resolved&&(a=!0,delete l.resolved);const u={id:n++,options:l,resolved:a,input:i};return t.push(u),{remove(){t=t.filter(c=>c.id!==u.id)},update(c){t=t.map(f=>(f.id===u.id&&(f.input=c),f))}}},async updateDOM(i,l){const a=()=>(o=null,Tp(s,r,i));return l?a():o=o||new Promise(u=>xn(()=>u(a())))},addReactiveEntry(i,l={}){let a=null;const u=uc(()=>{const c=xr(i);a===null?a=s.addEntry(c,{...l,resolved:!0}):a.update(c),Op&&s.updateDOM()});return()=>{u(),a&&a.remove()}}};return e&&s.addEntry(e),s};const Mp={meta:[{name:"viewport",content:"width=device-width, initial-scale=1"},{charset:"utf-8"}],link:[],style:[],script:[],noscript:[]},Dp={name:"layout",mode:"out-in"},Ip={name:"page",mode:"out-in"},$p=!1,Bp=It(e=>{const t=Lp();t.addEntry(Mp,{resolved:!0}),e.vueApp.use(t);{let n=!0;t.hooks["before:dom"].push(()=>!n),e.hooks.hookOnce("app:mounted",()=>{n=!1,t.updateDOM(),Jt().beforeEach(()=>{n=!0}),Jt().afterEach(()=>{n&&(n=!1,t.updateDOM())})})}e._useHead=(n,r)=>{const o=t.addReactiveEntry(n,r);!bt()||Rn(()=>{o(),t.updateDOM()})}}),Np={created(){const e=bt();if(!e)return;const t=e.type;if(!t||!("head"in t))return;const n=xe(),r=typeof t.head=="function"?()=>t.head(n):t.head;pa(r)}},Hp=It(e=>{e.vueApp.mixin(Np)});/*! + * vue-router v4.1.5 + * (c) 2022 Eduardo San Martin Morote + * @license MIT + */const nn=typeof window<"u";function jp(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const ae=Object.assign;function oo(e,t){const n={};for(const r in t){const o=t[r];n[r]=ot(o)?o.map(e):e(o)}return n}const jn=()=>{},ot=Array.isArray,Up=/\/$/,Fp=e=>e.replace(Up,"");function so(e,t,n="/"){let r,o={},s="",i="";const l=t.indexOf("#");let a=t.indexOf("?");return l=0&&(a=-1),a>-1&&(r=t.slice(0,a),s=t.slice(a+1,l>-1?l:t.length),o=e(s)),l>-1&&(r=r||t.slice(0,l),i=t.slice(l,t.length)),r=zp(r!=null?r:t,n),{fullPath:r+(s&&"?")+s+i,path:r,query:o,hash:i}}function qp(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function mi(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function Vp(e,t,n){const r=t.matched.length-1,o=n.matched.length-1;return r>-1&&r===o&&_n(t.matched[r],n.matched[o])&&ma(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function _n(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function ma(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!Kp(e[n],t[n]))return!1;return!0}function Kp(e,t){return ot(e)?yi(e,t):ot(t)?yi(t,e):e===t}function yi(e,t){return ot(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function zp(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),r=e.split("/");let o=n.length-1,s,i;for(s=0;s1&&o--;else break;return n.slice(0,o).join("/")+"/"+r.slice(s-(s===r.length?1:0)).join("/")}var Qn;(function(e){e.pop="pop",e.push="push"})(Qn||(Qn={}));var Un;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Un||(Un={}));function Wp(e){if(!e)if(nn){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),Fp(e)}const Qp=/^[^#]+#/;function Yp(e,t){return e.replace(Qp,"#")+t}function Jp(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const Fr=()=>({left:window.pageXOffset,top:window.pageYOffset});function Gp(e){let t;if("el"in e){const n=e.el,r=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=Jp(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function _i(e,t){return(history.state?history.state.position-t:-1)+e}const Mo=new Map;function Xp(e,t){Mo.set(e,t)}function Zp(e){const t=Mo.get(e);return Mo.delete(e),t}let eh=()=>location.protocol+"//"+location.host;function ya(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){let l=o.includes(e.slice(s))?e.slice(s).length:1,a=o.slice(l);return a[0]!=="/"&&(a="/"+a),mi(a,"")}return mi(n,e)+r+o}function th(e,t,n,r){let o=[],s=[],i=null;const l=({state:p})=>{const g=ya(e,location),_=n.value,C=t.value;let R=0;if(p){if(n.value=g,t.value=p,i&&i===_){i=null;return}R=C?p.position-C.position:0}else r(g);o.forEach(y=>{y(n.value,_,{delta:R,type:Qn.pop,direction:R?R>0?Un.forward:Un.back:Un.unknown})})};function a(){i=n.value}function u(p){o.push(p);const g=()=>{const _=o.indexOf(p);_>-1&&o.splice(_,1)};return s.push(g),g}function c(){const{history:p}=window;!p.state||p.replaceState(ae({},p.state,{scroll:Fr()}),"")}function f(){for(const p of s)p();s=[],window.removeEventListener("popstate",l),window.removeEventListener("beforeunload",c)}return window.addEventListener("popstate",l),window.addEventListener("beforeunload",c),{pauseListeners:a,listen:u,destroy:f}}function vi(e,t,n,r=!1,o=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:o?Fr():null}}function nh(e){const{history:t,location:n}=window,r={value:ya(e,n)},o={value:t.state};o.value||s(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function s(a,u,c){const f=e.indexOf("#"),p=f>-1?(n.host&&document.querySelector("base")?e:e.slice(f))+a:eh()+e+a;try{t[c?"replaceState":"pushState"](u,"",p),o.value=u}catch(g){console.error(g),n[c?"replace":"assign"](p)}}function i(a,u){const c=ae({},t.state,vi(o.value.back,a,o.value.forward,!0),u,{position:o.value.position});s(a,c,!0),r.value=a}function l(a,u){const c=ae({},o.value,t.state,{forward:a,scroll:Fr()});s(c.current,c,!0);const f=ae({},vi(r.value,a,null),{position:c.position+1},u);s(a,f,!1),r.value=a}return{location:r,state:o,push:l,replace:i}}function _a(e){e=Wp(e);const t=nh(e),n=th(e,t.state,t.location,t.replace);function r(s,i=!0){i||n.pauseListeners(),history.go(s)}const o=ae({location:"",base:e,go:r,createHref:Yp.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function rh(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),_a(e)}function oh(e){return typeof e=="string"||e&&typeof e=="object"}function va(e){return typeof e=="string"||typeof e=="symbol"}const Rt={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},ba=Symbol("");var bi;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(bi||(bi={}));function vn(e,t){return ae(new Error,{type:e,[ba]:!0},t)}function ft(e,t){return e instanceof Error&&ba in e&&(t==null||!!(e.type&t))}const wi="[^/]+?",sh={sensitive:!1,strict:!1,start:!0,end:!0},ih=/[.+*?^${}()[\]/\\]/g;function lh(e,t){const n=ae({},sh,t),r=[];let o=n.start?"^":"";const s=[];for(const u of e){const c=u.length?[]:[90];n.strict&&!u.length&&(o+="/");for(let f=0;ft.length?t.length===1&&t[0]===40+40?1:-1:0}function uh(e,t){let n=0;const r=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const ch={type:0,value:""},fh=/[a-zA-Z0-9_]/;function dh(e){if(!e)return[[]];if(e==="/")return[[ch]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${u}": ${g}`)}let n=0,r=n;const o=[];let s;function i(){s&&o.push(s),s=[]}let l=0,a,u="",c="";function f(){!u||(n===0?s.push({type:0,value:u}):n===1||n===2||n===3?(s.length>1&&(a==="*"||a==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),s.push({type:1,value:u,regexp:c,repeatable:a==="*"||a==="+",optional:a==="*"||a==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=a}for(;l{i(h)}:jn}function i(c){if(va(c)){const f=r.get(c);f&&(r.delete(c),n.splice(n.indexOf(f),1),f.children.forEach(i),f.alias.forEach(i))}else{const f=n.indexOf(c);f>-1&&(n.splice(f,1),c.record.name&&r.delete(c.record.name),c.children.forEach(i),c.alias.forEach(i))}}function l(){return n}function a(c){let f=0;for(;f=0&&(c.record.path!==n[f].record.path||!wa(c,n[f]));)f++;n.splice(f,0,c),c.record.name&&!xi(c)&&r.set(c.record.name,c)}function u(c,f){let p,g={},_,C;if("name"in c&&c.name){if(p=r.get(c.name),!p)throw vn(1,{location:c});C=p.record.name,g=ae(Ci(f.params,p.keys.filter(h=>!h.optional).map(h=>h.name)),c.params&&Ci(c.params,p.keys.map(h=>h.name))),_=p.stringify(g)}else if("path"in c)_=c.path,p=n.find(h=>h.re.test(_)),p&&(g=p.parse(_),C=p.record.name);else{if(p=f.name?r.get(f.name):n.find(h=>h.re.test(f.path)),!p)throw vn(1,{location:c,currentLocation:f});C=p.record.name,g=ae({},f.params,c.params),_=p.stringify(g)}const R=[];let y=p;for(;y;)R.unshift(y.record),y=y.parent;return{name:C,path:_,params:g,matched:R,meta:yh(R)}}return e.forEach(c=>s(c)),{addRoute:s,resolve:u,removeRoute:i,getRoutes:l,getRecordMatcher:o}}function Ci(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function gh(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:mh(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function mh(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const r in e.components)t[r]=typeof n=="boolean"?n:n[r];return t}function xi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function yh(e){return e.reduce((t,n)=>ae(t,n.meta),{})}function Ri(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function wa(e,t){return t.children.some(n=>n===e||wa(e,n))}const Ea=/#/g,_h=/&/g,vh=/\//g,bh=/=/g,wh=/\?/g,Ca=/\+/g,Eh=/%5B/g,Ch=/%5D/g,xa=/%5E/g,xh=/%60/g,Ra=/%7B/g,Rh=/%7C/g,Sa=/%7D/g,Sh=/%20/g;function hs(e){return encodeURI(""+e).replace(Rh,"|").replace(Eh,"[").replace(Ch,"]")}function kh(e){return hs(e).replace(Ra,"{").replace(Sa,"}").replace(xa,"^")}function Do(e){return hs(e).replace(Ca,"%2B").replace(Sh,"+").replace(Ea,"%23").replace(_h,"%26").replace(xh,"`").replace(Ra,"{").replace(Sa,"}").replace(xa,"^")}function Ph(e){return Do(e).replace(bh,"%3D")}function Ah(e){return hs(e).replace(Ea,"%23").replace(wh,"%3F")}function Th(e){return e==null?"":Ah(e).replace(vh,"%2F")}function Rr(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function Oh(e){const t={};if(e===""||e==="?")return t;const r=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;os&&Do(s)):[r&&Do(r)]).forEach(s=>{s!==void 0&&(t+=(t.length?"&":"")+n,s!=null&&(t+="="+s))})}return t}function Lh(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=ot(r)?r.map(o=>o==null?null:""+o):r==null?r:""+r)}return t}const Mh=Symbol(""),ki=Symbol(""),gs=Symbol(""),ms=Symbol(""),Io=Symbol("");function On(){let e=[];function t(r){return e.push(r),()=>{const o=e.indexOf(r);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e,reset:n}}function Pt(e,t,n,r,o){const s=r&&(r.enterCallbacks[o]=r.enterCallbacks[o]||[]);return()=>new Promise((i,l)=>{const a=f=>{f===!1?l(vn(4,{from:n,to:t})):f instanceof Error?l(f):oh(f)?l(vn(2,{from:t,to:f})):(s&&r.enterCallbacks[o]===s&&typeof f=="function"&&s.push(f),i())},u=e.call(r&&r.instances[o],t,n,a);let c=Promise.resolve(u);e.length<3&&(c=c.then(a)),c.catch(f=>l(f))})}function io(e,t,n,r){const o=[];for(const s of e)for(const i in s.components){let l=s.components[i];if(!(t!=="beforeRouteEnter"&&!s.instances[i]))if(Dh(l)){const u=(l.__vccOpts||l)[t];u&&o.push(Pt(u,n,r,s,i))}else{let a=l();o.push(()=>a.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${i}" at "${s.path}"`));const c=jp(u)?u.default:u;s.components[i]=c;const p=(c.__vccOpts||c)[t];return p&&Pt(p,n,r,s,i)()}))}}return o}function Dh(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Pi(e){const t=nt(gs),n=nt(ms),r=Re(()=>t.resolve(we(e.to))),o=Re(()=>{const{matched:a}=r.value,{length:u}=a,c=a[u-1],f=n.matched;if(!c||!f.length)return-1;const p=f.findIndex(_n.bind(null,c));if(p>-1)return p;const g=Ai(a[u-2]);return u>1&&Ai(c)===g&&f[f.length-1].path!==g?f.findIndex(_n.bind(null,a[u-2])):p}),s=Re(()=>o.value>-1&&Nh(n.params,r.value.params)),i=Re(()=>o.value>-1&&o.value===n.matched.length-1&&ma(n.params,r.value.params));function l(a={}){return Bh(a)?t[we(e.replace)?"replace":"push"](we(e.to)).catch(jn):Promise.resolve()}return{route:r,href:Re(()=>r.value.href),isActive:s,isExactActive:i,navigate:l}}const Ih=Me({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Pi,setup(e,{slots:t}){const n=rt(Pi(e)),{options:r}=nt(gs),o=Re(()=>({[Ti(e.activeClass,r.linkActiveClass,"router-link-active")]:n.isActive,[Ti(e.exactActiveClass,r.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const s=t.default&&t.default(n);return e.custom?s:_e("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},s)}}}),$h=Ih;function Bh(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Nh(e,t){for(const n in t){const r=t[n],o=e[n];if(typeof r=="string"){if(r!==o)return!1}else if(!ot(o)||o.length!==r.length||r.some((s,i)=>s!==o[i]))return!1}return!0}function Ai(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ti=(e,t,n)=>e!=null?e:t!=null?t:n,Hh=Me({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=nt(Io),o=Re(()=>e.route||r.value),s=nt(ki,0),i=Re(()=>{let u=we(s);const{matched:c}=o.value;let f;for(;(f=c[u])&&!f.components;)u++;return u}),l=Re(()=>o.value.matched[i.value]);cn(ki,Re(()=>i.value+1)),cn(Mh,l),cn(Io,o);const a=Qe();return Ue(()=>[a.value,l.value,e.name],([u,c,f],[p,g,_])=>{c&&(c.instances[f]=u,g&&g!==c&&u&&u===p&&(c.leaveGuards.size||(c.leaveGuards=g.leaveGuards),c.updateGuards.size||(c.updateGuards=g.updateGuards))),u&&c&&(!g||!_n(c,g)||!p)&&(c.enterCallbacks[f]||[]).forEach(C=>C(u))},{flush:"post"}),()=>{const u=o.value,c=e.name,f=l.value,p=f&&f.components[c];if(!p)return Oi(n.default,{Component:p,route:u});const g=f.props[c],_=g?g===!0?u.params:typeof g=="function"?g(u):g:null,R=_e(p,ae({},_,t,{onVnodeUnmounted:y=>{y.component.isUnmounted&&(f.instances[c]=null)},ref:a}));return Oi(n.default,{Component:R,route:u})||R}}});function Oi(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const ka=Hh;function jh(e){const t=hh(e.routes,e),n=e.parseQuery||Oh,r=e.stringifyQuery||Si,o=e.history,s=On(),i=On(),l=On(),a=go(Rt);let u=Rt;nn&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const c=oo.bind(null,x=>""+x),f=oo.bind(null,Th),p=oo.bind(null,Rr);function g(x,H){let $,V;return va(x)?($=t.getRecordMatcher(x),V=H):V=x,t.addRoute(V,$)}function _(x){const H=t.getRecordMatcher(x);H&&t.removeRoute(H)}function C(){return t.getRoutes().map(x=>x.record)}function R(x){return!!t.getRecordMatcher(x)}function y(x,H){if(H=ae({},H||a.value),typeof x=="string"){const d=so(n,x,H.path),m=t.resolve({path:d.path},H),b=o.createHref(d.fullPath);return ae(d,m,{params:p(m.params),hash:Rr(d.hash),redirectedFrom:void 0,href:b})}let $;if("path"in x)$=ae({},x,{path:so(n,x.path,H.path).path});else{const d=ae({},x.params);for(const m in d)d[m]==null&&delete d[m];$=ae({},x,{params:f(x.params)}),H.params=f(H.params)}const V=t.resolve($,H),ie=x.hash||"";V.params=c(p(V.params));const ye=qp(r,ae({},x,{hash:kh(ie),path:V.path})),ee=o.createHref(ye);return ae({fullPath:ye,hash:ie,query:r===Si?Lh(x.query):x.query||{}},V,{redirectedFrom:void 0,href:ee})}function h(x){return typeof x=="string"?so(n,x,a.value.path):ae({},x)}function v(x,H){if(u!==x)return vn(8,{from:H,to:x})}function w(x){return I(x)}function T(x){return w(ae(h(x),{replace:!0}))}function O(x){const H=x.matched[x.matched.length-1];if(H&&H.redirect){const{redirect:$}=H;let V=typeof $=="function"?$(x):$;return typeof V=="string"&&(V=V.includes("?")||V.includes("#")?V=h(V):{path:V},V.params={}),ae({query:x.query,hash:x.hash,params:"path"in V?{}:x.params},V)}}function I(x,H){const $=u=y(x),V=a.value,ie=x.state,ye=x.force,ee=x.replace===!0,d=O($);if(d)return I(ae(h(d),{state:typeof d=="object"?ae({},ie,d.state):ie,force:ye,replace:ee}),H||$);const m=$;m.redirectedFrom=H;let b;return!ye&&Vp(r,V,$)&&(b=vn(16,{to:m,from:V}),$t(V,V,!0,!1)),(b?Promise.resolve(b):F(m,V)).catch(E=>ft(E)?ft(E,2)?E:Ge(E):fe(E,m,V)).then(E=>{if(E){if(ft(E,2))return I(ae({replace:ee},h(E.to),{state:typeof E.to=="object"?ae({},ie,E.to.state):ie,force:ye}),H||m)}else E=W(m,V,!0,ee,ie);return U(m,V,E),E})}function k(x,H){const $=v(x,H);return $?Promise.reject($):Promise.resolve()}function F(x,H){let $;const[V,ie,ye]=Uh(x,H);$=io(V.reverse(),"beforeRouteLeave",x,H);for(const d of V)d.leaveGuards.forEach(m=>{$.push(Pt(m,x,H))});const ee=k.bind(null,x,H);return $.push(ee),en($).then(()=>{$=[];for(const d of s.list())$.push(Pt(d,x,H));return $.push(ee),en($)}).then(()=>{$=io(ie,"beforeRouteUpdate",x,H);for(const d of ie)d.updateGuards.forEach(m=>{$.push(Pt(m,x,H))});return $.push(ee),en($)}).then(()=>{$=[];for(const d of x.matched)if(d.beforeEnter&&!H.matched.includes(d))if(ot(d.beforeEnter))for(const m of d.beforeEnter)$.push(Pt(m,x,H));else $.push(Pt(d.beforeEnter,x,H));return $.push(ee),en($)}).then(()=>(x.matched.forEach(d=>d.enterCallbacks={}),$=io(ye,"beforeRouteEnter",x,H),$.push(ee),en($))).then(()=>{$=[];for(const d of i.list())$.push(Pt(d,x,H));return $.push(ee),en($)}).catch(d=>ft(d,8)?d:Promise.reject(d))}function U(x,H,$){for(const V of l.list())V(x,H,$)}function W(x,H,$,V,ie){const ye=v(x,H);if(ye)return ye;const ee=H===Rt,d=nn?history.state:{};$&&(V||ee?o.replace(x.fullPath,ae({scroll:ee&&d&&d.scroll},ie)):o.push(x.fullPath,ie)),a.value=x,$t(x,H,$,ee),Ge()}let N;function X(){N||(N=o.listen((x,H,$)=>{if(!er.listening)return;const V=y(x),ie=O(V);if(ie){I(ae(ie,{replace:!0}),V).catch(jn);return}u=V;const ye=a.value;nn&&Xp(_i(ye.fullPath,$.delta),Fr()),F(V,ye).catch(ee=>ft(ee,12)?ee:ft(ee,2)?(I(ee.to,V).then(d=>{ft(d,20)&&!$.delta&&$.type===Qn.pop&&o.go(-1,!1)}).catch(jn),Promise.reject()):($.delta&&o.go(-$.delta,!1),fe(ee,V,ye))).then(ee=>{ee=ee||W(V,ye,!1),ee&&($.delta&&!ft(ee,8)?o.go(-$.delta,!1):$.type===Qn.pop&&ft(ee,20)&&o.go(-1,!1)),U(V,ye,ee)}).catch(jn)}))}let j=On(),Te=On(),se;function fe(x,H,$){Ge(x);const V=Te.list();return V.length?V.forEach(ie=>ie(x,H,$)):console.error(x),Promise.reject(x)}function ue(){return se&&a.value!==Rt?Promise.resolve():new Promise((x,H)=>{j.add([x,H])})}function Ge(x){return se||(se=!x,X(),j.list().forEach(([H,$])=>x?$(x):H()),j.reset()),x}function $t(x,H,$,V){const{scrollBehavior:ie}=e;if(!nn||!ie)return Promise.resolve();const ye=!$&&Zp(_i(x.fullPath,0))||(V||!$)&&history.state&&history.state.scroll||null;return xn().then(()=>ie(x,H,ye)).then(ee=>ee&&Gp(ee)).catch(ee=>fe(ee,x,H))}const Xe=x=>o.go(x);let Be;const Xt=new Set,er={currentRoute:a,listening:!0,addRoute:g,removeRoute:_,hasRoute:R,getRoutes:C,resolve:y,options:e,push:w,replace:T,go:Xe,back:()=>Xe(-1),forward:()=>Xe(1),beforeEach:s.add,beforeResolve:i.add,afterEach:l.add,onError:Te.add,isReady:ue,install(x){const H=this;x.component("RouterLink",$h),x.component("RouterView",ka),x.config.globalProperties.$router=H,Object.defineProperty(x.config.globalProperties,"$route",{enumerable:!0,get:()=>we(a)}),nn&&!Be&&a.value===Rt&&(Be=!0,w(o.location).catch(ie=>{}));const $={};for(const ie in Rt)$[ie]=Re(()=>a.value[ie]);x.provide(gs,H),x.provide(ms,rt($)),x.provide(Io,a);const V=x.unmount;Xt.add(x),x.unmount=function(){Xt.delete(x),Xt.size<1&&(u=Rt,N&&N(),N=null,a.value=Rt,Be=!1,se=!1),V()}}};return er}function en(e){return e.reduce((t,n)=>t.then(()=>n()),Promise.resolve())}function Uh(e,t){const n=[],r=[],o=[],s=Math.max(t.matched.length,e.matched.length);for(let i=0;i_n(u,l))?r.push(l):n.push(l));const a=e.matched[i];a&&(t.matched.find(u=>_n(u,a))||o.push(a))}return[n,r,o]}function Fh(){return nt(ms)}const qh=/[0-9]/;function Vh(e=""){return qh.test(e)?null:e.toUpperCase()===e}const Kh=["-","_","/","."];function zh(e,t=Kh){const n=[];if(!e||typeof e!="string")return n;let r="",o=null,s=null;for(const i of e.split("")){const l=t.includes(i);if(l===!0){n.push(r),r="",o=null;continue}const a=Vh(i);if(s===!1){if(o===!1&&a===!0){n.push(r),r=i,o=a;continue}if(o===!0&&a===!1&&r.length>1){const u=r[r.length-1];n.push(r.substr(0,r.length-1)),r=u+i,o=a;continue}}r+=i,o=a,s=l}return n.push(r),n}function Wh(e){return e?e[0].toUpperCase()+e.substring(1):""}function Qh(e=""){return(Array.isArray(e)?e:zh(e)).map(t=>Wh(t)).join("")}class Zn{constructor(t,n,r){this.property=t,this.normal=n,r&&(this.space=r)}}Zn.prototype.property={};Zn.prototype.normal={};Zn.prototype.space=null;function Pa(e,t){const n={},r={};let o=-1;for(;++o4&&n.slice(0,4)==="data"&&Zh.test(t)){if(t.charAt(4)==="-"){const s=t.slice(5).replace(Mi,rg);r="data"+s.charAt(0).toUpperCase()+s.slice(1)}else{const s=t.slice(4);if(!Mi.test(s)){let i=s.replace(eg,ng);i.charAt(0)!=="-"&&(i="-"+i),t="data"+i}}o=ys}return new o(r,t)}function ng(e){return"-"+e.toLowerCase()}function rg(e){return e.charAt(1).toUpperCase()}const og=Pa([Oa,Ta,Da,Ia,Gh],"html");Pa([Oa,Ta,Da,Ia,Xh],"svg");var by=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function sg(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var $a={exports:{}};const ig=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"];(function(e){e.exports=ig})($a);const Ba=sg($a.exports),Fn="default",Na=/^@|^v-on:/,Ha=/^:|^v-bind:/,ja=/^v-model/,lg=["select","textarea","input"],Ua=Me({name:"ContentRendererMarkdown",props:{value:{type:Object,required:!0},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"},components:{type:Object,default:()=>({})}},async setup(e){var n;const{content:{tags:t={}}}=Sn().public;return await yg(e.value.body,{tags:{...t,...((n=e.value)==null?void 0:n._components)||{},...e.components}}),{tags:t}},render(e){var u;const{tags:t,tag:n,value:r,components:o}=e;if(!r)return null;let s=r.body||r;e.excerpt&&r.excerpt&&(s=r.excerpt);const i={...r,tags:{...t,...(r==null?void 0:r._components)||{},...o}};let l=i.component||n;typeof i.component=="object"&&(l=i.component.name),l=Fa(l);const a=(s.children||[]).map(c=>fr(c,_e,i));return _e(l,{...(u=i.component)==null?void 0:u.props,...this.$attrs},{default:Va(a)})}});function fr(e,t,n,r={}){var a;if(e.type==="text")return t(yt,e.value);const o=e.tag,s=typeof((a=e.props)==null?void 0:a.__ignoreMap)>"u"&&n.tags[o]||o;if(e.tag==="binding")return ag(e,t,n,r);const i=Fa(s);typeof i=="object"&&(i.tag=o);const l=cg(e,n);return t(i,l,ug(e,t,n,{...r,...l}))}function ag(e,t,n,r={}){var a;const o={...r,$route:()=>kn(),$document:n,$doc:n},s=/\.|\[(\d+)\]/,l=((a=e.props)==null?void 0:a.value.trim().split(s).filter(Boolean)).reduce((u,c)=>c in u?typeof u[c]=="function"?u[c]():u[c]:{},o);return t(yt,l)}function ug(e,t,n,r){const s=(e.children||[]).reduce((l,a)=>{if(!Ka(a))return l[Fn].push(fr(a,t,n,r)),l;if(gg(a))return l[Fn].push(...(a.children||[]).map(c=>fr(c,t,n,r))),l;const u=qa(a);return l[u]=(a.children||[]).map(c=>fr(c,t,n,r)),l},{[Fn]:[]}),i=Object.entries(s).map(([l,a])=>[l,Va(a)]);return Object.fromEntries(i)}function cg(e,t){const{tag:n="",props:r={}}=e;return Object.keys(r).reduce(function(o,s){if(s==="__ignoreMap")return o;const i=r[s];if(ja.test(s)&&!lg.includes(n))return fg(s,i,o,t);if(s==="v-bind")return dg(s,i,o,t);if(Na.test(s))return pg(s,i,o,t);if(Ha.test(s))return hg(s,i,o,t);const{attribute:l}=tg(og,s);return Array.isArray(i)&&i.every(a=>typeof a=="string")?(o[l]=i.join(" "),o):(o[l]=i,o)},{})}function fg(e,t,n,r){const o=f=>+f,s=f=>f.trim(),i=f=>f,l=e.replace(ja,"").split(".").filter(f=>f).reduce((f,p)=>(f[p]=!0,f),{}),a="value",u=l.lazy?"change":"input",c=l.number?o:l.trim?s:i;return n[a]=qr(t,r),n.on=n.on||{},n.on[u]=f=>r[t]=c(f),n}function dg(e,t,n,r){const o=qr(t,r);return n=Object.assign(n,o),n}function pg(e,t,n,r){return e=e.replace(Na,""),n.on=n.on||{},n.on[e]=()=>qr(t,r),n}function hg(e,t,n,r){return e=e.replace(Ha,""),n[e]=qr(t,r),n}const Fa=e=>{if(!Ba.includes(e)){const t=Ir(Qh(e),!1);if(typeof t=="object")return t}return e};function qr(e,t){const n=e.split(".").reduce((r,o)=>typeof r=="object"?r[o]:void 0,t);return typeof n>"u"?fs(e):n}function qa(e){let t="";for(const n of Object.keys(e.props||{}))if(!(!n.startsWith("#")&&!n.startsWith("v-slot:"))){t=n.split(/[:#]/,2)[1];break}return t||Fn}function Va(e){return e.length?()=>mg(e):void 0}function gg(e){return Ka(e)&&qa(e)===Fn}function Ka(e){return e.tag==="template"}function mg(e){const t=[];for(const n of e){const r=t[t.length-1];n.type===yt&&(r==null?void 0:r.type)===yt?r.children=r.children+n.children:t.push(n)}return t}async function yg(e,t){const n=Array.from(new Set(r(e,t)));await Promise.all(n.map(async o=>{const s=Ir(o);(s==null?void 0:s.__asyncLoader)&&!s.__asyncResolved&&await s.__asyncLoader()}));function r(o,s){var a;if(o.type==="text"||o.tag==="binding")return[];const i=typeof((a=o.props)==null?void 0:a.__ignoreMap)>"u"&&s.tags[o.tag]||o.tag,l=[];o.type!=="root"&&!Ba.includes(i)&&l.push(i);for(const u of o.children||[])l.push(...r(u,s));return l}}const _g=Object.freeze(Object.defineProperty({__proto__:null,default:Ua},Symbol.toStringTag,{value:"Module"})),za=Me({name:"ContentRenderer",props:{value:{type:Object,required:!1,default:()=>({})},excerpt:{type:Boolean,default:!1},tag:{type:String,default:"div"}},setup(e){Ue(()=>e.excerpt,t=>{var n,r,o;t&&!((n=e.value)!=null&&n.excerpt)&&(console.warn(`No excerpt found for document content/${(r=e==null?void 0:e.value)==null?void 0:r._path}.${(o=e==null?void 0:e.value)==null?void 0:o._extension}!`),console.warn("Make sure to use in your content if you want to use excerpt feature."))},{immediate:!0})},render(e){var s,i;const t=cs(),{value:n,excerpt:r,tag:o}=e;return!n&&(t==null?void 0:t.empty)?t.empty({value:n,excerpt:r,tag:o,...this.$attrs}):t!=null&&t.default?t.default({value:n,excerpt:r,tag:o,...this.$attrs}):n&&(n==null?void 0:n._type)==="markdown"&&((i=(s=n==null?void 0:n.body)==null?void 0:s.children)==null?void 0:i.length)?_e(Ua,{value:n,excerpt:r,tag:o,...this.$attrs}):_e("pre",null,JSON.stringify({message:"You should use slots with ",value:n,excerpt:r,tag:o},null,2))}}),vg=Object.freeze(Object.defineProperty({__proto__:null,default:za},Symbol.toStringTag,{value:"Module"}));function bg(e){return JSON.stringify(e,wg)}function wg(e,t){return t instanceof RegExp?`--REGEX ${t.toString()}`:t}const Eg=["p","h1","h2","h3","h4","h5","h6","li"];function No(e,t){return e.type===t||typeof e.type=="object"&&e.type.tag===t||e.tag===t}function Wa(e){return No(e,"text")||typeof e.children=="string"}function Qa(e){return Array.isArray(e.children)||typeof e.children=="string"?e.children:typeof e.children.default=="function"?e.children.default():[]}function Ho(e){if(!e)return"";if(Array.isArray(e))return e.map(Ho).join("");if(Wa(e))return e.children||e.value;const t=Qa(e);return Array.isArray(t)?t.map(Ho).join(""):""}function _s(e,t=["p"]){if(Array.isArray(e))return e.flatMap(r=>_s(r,t));let n=e;return t.some(r=>r==="*"||No(e,r))&&(n=Qa(e)||e,!Array.isArray(n)&&Eg.some(r=>No(e,r))&&(n=[n])),n}function Ya(e,t=["p"]){return e=Array.isArray(e)?e:[e],t.length?e.flatMap(n=>Ya(_s(n,[t[0]]),t.slice(1))).filter(n=>!(Wa(n)&&Ho(n).trim()==="")):e}const Cg=e=>Xl(e,"/api/"+Sn().public.content.base),wy=()=>({unwrap:_s,flatUnwrap:Ya}),Ey=()=>{throw console.warn("useContent is only accessible when you are using `documentDriven` mode."),console.warn("Learn more by visiting: https://content.nuxtjs.org/guide/writing/document-driven"),new Error("useContent is only accessible when you are using `documentDriven` mode.")},xg=()=>{var t;const{clientDB:e}=Sn().content;return!!(e!=null&&e.isSPA||((t=kn().query)==null?void 0:t.preview)||ua("previewToken").value)},Rg="_list_1w161_1",Cy={list:Rg},Ja=(e,t)=>{const n=e.__vccOpts||e;for(const[r,o]of t)n[r]=o;return n},Di=(e,t=kn())=>{const n=we(e);Ue(()=>we(e),(o=n)=>{if(!t.path||!o)return;const s=Object.assign({},(o==null?void 0:o.head)||{}),i=s.title||(o==null?void 0:o.title);i&&(s.title=i),s.meta=[...s.meta||[]];const l=(s==null?void 0:s.description)||(o==null?void 0:o.description);l&&s.meta.filter(u=>u.name==="description").length===0&&s.meta.push({name:"description",content:l});const a=(s==null?void 0:s.image)||(o==null?void 0:o.image);if(a&&s.meta.filter(u=>u.property==="og:image").length===0&&(typeof a=="string"&&s.meta.push({property:"og:image",content:a}),typeof a=="object")){const u=["src","secure_url","type","width","height","alt"];for(const c of u)c==="src"&&a.src?s.meta.push({property:"og:image",content:a[c]}):a[c]&&s.meta.push({property:`og:image:${c}`,content:a[c]})}xn(()=>pa(s))},{immediate:!0})},Ii=(e,t)=>t.split(".").reduce((n,r)=>n&&n[r],e),Ga=(e,t)=>Object.keys(e).filter(t).reduce((n,r)=>Object.assign(n,{[r]:e[r]}),{}),xy=e=>t=>Array.isArray(t)?t.map(n=>e(n)):e(t),Xa=e=>{const t=[],n=[];for(const r of e)["$","_"].includes(r)?t.push(r):n.push(r);return{prefixes:t,properties:n}},Ry=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Xa(e);return Ga(t,o=>!r.includes(o)&&!n.includes(o[0]))},Sy=(e=[])=>t=>{if(e.length===0||!t)return t;const{prefixes:n,properties:r}=Xa(e);return Ga(t,o=>r.includes(o)||n.includes(o[0]))},ky=(e,t)=>{const n=new Intl.Collator(t.$locale,{numeric:t.$numeric,caseFirst:t.$caseFirst,sensitivity:t.$sensitivity}),r=Object.keys(t).filter(o=>!o.startsWith("$"));for(const o of r)e=e.sort((s,i)=>{const l=[Ii(s,o),Ii(i,o)].map(a=>{if(a!==null)return a instanceof Date?a.toISOString():a});return t[o]===-1&&l.reverse(),n.compare(l[0],l[1])});return e},Py=(e,t="Expected an array")=>{if(!Array.isArray(e))throw new TypeError(t)},tn=e=>Array.isArray(e)?e:e?[e]:[],Sg=["sort","where","only","without"],$i=(e,t)=>{const n={...t};for(const s of Sg)n[s]&&(n[s]=tn(n[s]));const r=(s,i=l=>l)=>(...l)=>(n[s]=i(...l),o),o={params:()=>n,only:r("only",tn),without:r("without",tn),where:r("where",s=>[...tn(n.where),s]),sort:r("sort",s=>[...tn(n.sort),...tn(s)]),limit:r("limit",s=>parseInt(String(s),10)),skip:r("skip",s=>parseInt(String(s),10)),find:()=>e(o),findOne:()=>(n.first=!0,e(o)),findSurround:(s,i)=>(n.surround={query:s,...i},e(o)),locale:s=>o.where({_locale:s})};return o},Bi=e=>async t=>{var s;e&&(t.params().first&&(t.params().where||[]).length===0?t.where({_path:ds(e)}):t.where({_path:new RegExp(`^${e.replace(/[-[\]{}()*+.,^$\s/]/g,"\\$&")}`)})),(s=t.params().sort)!=null&&s.length||t.sort({_file:1,$numeric:!0});const n=t.params(),r=Cg(`/query/${aa(n)}.json`);if(xg())return(await J(()=>import("./client-db.34509f31.js"),[],import.meta.url).then(l=>l.useContentDatabase())).fetch(t);const o=await $fetch(r,{method:"GET",responseType:"json",params:{_params:bg(n),previewToken:ua("previewToken").value}});if(typeof o=="string"&&o.startsWith(""))throw new Error("Not found");return o};function Ni(e,...t){return typeof e=="string"?$i(Bi(Xf(Xn(e,...t)))):$i(Bi(),e)}const Za=Me({name:"ContentQuery",props:{path:{type:String,required:!1,default:void 0},only:{type:Array,required:!1,default:void 0},without:{type:Array,required:!1,default:void 0},where:{type:Object,required:!1,default:void 0},sort:{type:Object,required:!1,default:void 0},limit:{type:Number,required:!1,default:void 0},skip:{type:Number,required:!1,default:void 0},locale:{type:String,required:!1,default:void 0},find:{type:String,required:!1,default:void 0}},async setup(e){const{path:t,only:n,without:r,where:o,sort:s,limit:i,skip:l,locale:a,find:u}=cl(e),c=Re(()=>{var g;return(g=t.value)==null?void 0:g.includes("/_")}),{data:f,refresh:p}=await Od(`content-query-${aa(e)}`,()=>{let g;return t.value?g=Ni(t.value):g=Ni(),n.value&&(g=g.only(n.value)),r.value&&(g=g.without(r.value)),o.value&&(g=g.where(o.value)),s.value&&(g=g.sort(s.value)),i.value&&(g=g.limit(i.value)),l.value&&(g=g.skip(l.value)),a.value&&(g=g.where({_locale:a.value})),u.value==="one"?g.findOne():u.value==="surround"?t.value?g.findSurround(t):(console.warn("[Content] Surround queries requires `path` prop to be set."),console.warn("[Content] Query without `path` will return regular `find()` results."),g.find()):g.find()});return{isPartial:c,data:f,refresh:p}},render(e){var R;const t=cs(),{data:n,refresh:r,isPartial:o,path:s,only:i,without:l,where:a,sort:u,limit:c,skip:f,locale:p,find:g}=e,_={path:s,only:i,without:l,where:a,sort:u,limit:c,skip:f,locale:p,find:g};if(_.find==="one"){if(!n&&(t==null?void 0:t["not-found"]))return t["not-found"]({props:_,...this.$attrs});if((n==null?void 0:n._type)==="markdown"&&!((R=n==null?void 0:n.body)!=null&&R.children.length))return t.empty({props:_,...this.$attrs})}else if((!n||!n.length)&&t!=null&&t["not-found"])return t["not-found"]({props:_,...this.$attrs});return t!=null&&t.default?t.default({data:n,refresh:r,isPartial:o,props:_,...this.$attrs}):((y,h)=>_e("pre",null,JSON.stringify({message:"You should use slots with !",slot:y,data:h},null,2)))("default",{data:n,props:_,isPartial:o})}}),kg=Object.freeze(Object.defineProperty({__proto__:null,default:Za},Symbol.toStringTag,{value:"Module"})),Pg=Me({name:"ContentDoc",props:{tag:{type:String,required:!1,default:"div"},excerpt:{type:Boolean,default:!1},path:{type:String,required:!1,default:void 0},query:{type:Object,required:!1,default:void 0},head:{type:Boolean,required:!1,default:!0}},render(e){const t=cs(),{tag:n,excerpt:r,path:o,query:s,head:i}=e,l={...s||{},path:o||(s==null?void 0:s.path)||Jl(kn().path),find:"one"},a=(u,c)=>_e("pre",null,JSON.stringify({message:"You should use slots with ",slot:u,data:c},null,2));return _e(Za,l,{default:t!=null&&t.default?({data:u,refresh:c,isPartial:f})=>{var p;return i&&Di(u),(p=t.default)==null?void 0:p.call(t,{doc:u,refresh:c,isPartial:f,excerpt:r,...this.$attrs})}:({data:u})=>(i&&Di(u),_e(za,{value:u,excerpt:r,tag:n,...this.$attrs},{empty:c=>t!=null&&t.empty?t.empty(c):a("default",u)})),empty:u=>{var c;return((c=t==null?void 0:t.empty)==null?void 0:c.call(t,u))||_e("p",null,"Document is empty, overwrite this content with #empty slot in .")},"not-found":u=>{var c;return((c=t==null?void 0:t["not-found"])==null?void 0:c.call(t,u))||_e("p",null,"Document not found, overwrite this content with #not-found slot in .")}})}}),Ag=Object.freeze(Object.defineProperty({__proto__:null,default:Pg},Symbol.toStringTag,{value:"Module"})),Ut=void 0,Tg="_grid_15n56_1",Og="_text_15n56_7",Ay={grid:Tg,text:Og},Lg="_rating_11ify_1",Mg="_star_11ify_10",Dg="_filled_11ify_29",Ty={rating:Lg,star:Mg,filled:Dg},Ig="_card_e1njf_1",Oy={card:Ig},$g="_grid_1kefv_1",Bg="_title_1kefv_11",Ng="_icon_1kefv_15",Hg="_text_1kefv_20",jg="_description_1kefv_26",Ly={grid:$g,title:Bg,icon:Ng,text:Hg,description:jg},Ug=""+new URL("react-logo.8351f38f.svg",import.meta.url).href,Fg=""+new URL("react-native-logo.bdbaa7c9.svg",import.meta.url).href,qg=""+new URL("react-ssr-logo.3593105e.svg",import.meta.url).href,Vg=""+new URL("ts-logo.5847c362.svg",import.meta.url).href,Kg=""+new URL("golang-logo.f772e478.svg",import.meta.url).href,zg=""+new URL("html-logo.1f694231.svg",import.meta.url).href,Wg=""+new URL("arch-logo.838efbc7.svg",import.meta.url).href,Qg=""+new URL("gql-logo.1e66e5b3.svg",import.meta.url).href,Yg=""+new URL("swagger-logo.b314537c.svg",import.meta.url).href,Jg=""+new URL("vue-logo.17ff892a.svg",import.meta.url).href,Gg=""+new URL("postgres-logo.d981f813.svg",import.meta.url).href,Xg=""+new URL("docker-logo.7f942bd1.svg",import.meta.url).href;var te=(e=>(e.React="React",e.ReactNative="ReactNative",e.ReactSSR="ReactSSR",e.Ts="Ts",e.GoLang="GoLang",e.HTML="HTML",e.Arch="Arch",e.GQL="GQL",e.Swagger="Swagger",e.Vue="Vue",e.Postgres="Postgres",e.Docker="Docker",e))(te||{});const Ve={React:Ug,ReactNative:Fg,ReactSSR:qg,Ts:Vg,GoLang:Kg,HTML:zg,Arch:Wg,GQL:Qg,Swagger:Yg,Vue:Jg,Postgres:Gg,Docker:Xg},Ke={React:"React",ReactNative:"Typescript",ReactSSR:"SSR (Next, Gatsby)",Ts:"Vue.js & Nuxt",GoLang:"React Native",HTML:"Golang",Arch:"Docker",GQL:"HTML, CSS, SVG",Swagger:"Linux Shell",Vue:"GraphQL",Postgres:"REST API",Docker:"SQL"},My=[{title:Ke[te.React],description:"Classes and FC-s, hooks, context, redux, redux-saga, mobx",level:5,icon:Ve[te.React]},{title:Ke[te.ReactNative],description:"For both frontend and backend development: generics, guards, infers",level:4,icon:Ve[te.Ts]},{title:Ke[te.ReactSSR],description:"Automated generation, incremental, static, and dynamic rendering",level:4,icon:Ve[te.ReactSSR]},{title:Ke[te.Ts],description:"Common SPA-s and SSR blogs like this one, with composition API, and Vuex",level:3,icon:Ve[te.Vue]},{title:Ke[te.GoLang],description:"Basic developing and releasing experience without native modules",level:3,icon:Ve[te.ReactNative]},{title:Ke[te.HTML],description:"Monolith and microservice apps with REST, GraphQL, and GRPC",level:2,icon:Ve[te.GoLang]},{title:Ke[te.Arch],description:"Docker, docker-compose, private registries, gitlab-ci, and drone-ci",level:4,icon:Ve[te.Docker]},{title:Ke[te.GQL],description:"Adaptive markup, all modern techniques, preprocessors, and CSS-in-JS",level:5,icon:Ve[te.HTML]},{title:Ke[te.Swagger],description:"Linux user since 2003, can write scripts to automate my work. BTW, I use Arch!",level:4,icon:Ve[te.Arch]},{title:Ke[te.Vue],description:"Both server- and client-side. Queries, mutations, cache manipulation",level:4,icon:Ve[te.GQL]},{title:Ke[te.Postgres],description:"With Axios, fetch, express, gorilla-mux, and gin-gonic",level:4,icon:Ve[te.Swagger]},{title:Ke[te.Docker],description:"Base queries, JOIN-s, indexes and simpl query optimizations",level:2,icon:Ve[te.Postgres]}],Zg="_list_89lzg_1",Dy={list:Zg},em="_button_aq4bi_1",tm="_prefixed_aq4bi_41",nm="_suffixed_aq4bi_41",rm="_title_aq4bi_48",om="_prefix_aq4bi_41",sm="_suffix_aq4bi_41",Iy={button:em,"variant-primary":"_variant-primary_aq4bi_9","variant-outline":"_variant-outline_aq4bi_12","size-md":"_size-md_aq4bi_37",prefixed:tm,suffixed:nm,title:rm,prefix:om,suffix:sm},im="_card_1wy9v_1",lm="_thumbnail_1wy9v_7",am="_image_1wy9v_14",um="_content_1wy9v_20",cm="_head_1wy9v_27",fm="_title_1wy9v_31",dm="_url_1wy9v_35",pm="_description_1wy9v_39",hm="_buttons_1wy9v_46",$y={card:im,thumbnail:lm,image:am,content:um,head:cm,title:fm,url:dm,description:pm,buttons:hm},gm=""+new URL("vault48.40538b94.png",import.meta.url).href,mm=""+new URL("orchid-map.2f398715.png",import.meta.url).href,ym=""+new URL("obsidian-garden.39e6dff3.png",import.meta.url).href,By=[{name:"Vault48",description:`Community blog with a long 13-year history, features photo, video and audio embedding. + +Beeing initially written with Drupal 5, went through refactoring to Laravel + Vue and then, nowadays works on React and Golang stack.`,pageUrl:"https://vault48.org",codeUrl:"https://github.com/muerwre/vault-frontend",image:gm,technologies:[te.React,te.ReactSSR,te.GoLang,te.Postgres]},{name:"Orchid Map",description:`Local cycling community Web Maps made with React, Leaflet, and Golang. + +Implements automatic route building with OSRM and map rasterization with canvas. Used by users in local cycling communities for ride sharing.`,pageUrl:"https://map.vault48.org",codeUrl:"https://github.com/muerwre/orchidmap-front",image:mm,technologies:[te.React,te.ReactSSR,te.GoLang,te.Postgres]},{name:"Obsidian Garden",description:`Frontend for personal knowledge database managed by Obsidian.md software. + +Made with nuxt3, nuxt-content plugin and some customizations. Deployed with drone-ci directly to github-pages.`,pageUrl:"https://muerwre.github.io",codeUrl:"https://github.com/muerwre/muerwre.github.io",image:ym,technologies:[te.React,te.ReactSSR,te.GoLang,te.Postgres]}],_m="_grid_1ng9c_1",Ny={grid:_m},Ft={layout:"content"},vm="_grid_1i19d_1",bm="_image_1i19d_16",wm="_desk_1i19d_25",Em="_title_1i19d_30",Cm="_subtitle_1i19d_42",xm="_text_1i19d_52",Rm="_buttons_1i19d_71",Hy={grid:vm,image:bm,desk:wm,title:Em,subtitle:Cm,text:xm,buttons:Rm},Sm=Me({mounted(){const e=document.querySelector(`.${this.$style.link}.${this.$style.active}`);!e||e==null||e.scrollIntoView({block:"center"})}}),km=Me({...Sm,__name:"LayoutMainMenuRow",props:{title:null,url:null,children:null,secondary:{type:Boolean}},setup(e){return(t,n)=>{var s;const r=eu,o=da;return((s=e.children)==null?void 0:s.length)||!e.url?(Le(),At("div",{key:0,class:gt([t.$style.container,{[t.$style.secondary]:e.secondary}])},[wr("div",{class:gt(t.$style.heading)},uo(e.title),3),wr("div",{class:gt(t.$style.children)},[(Le(!0),At(Pe,null,_o(e.children,i=>(Le(),Yt(r,{key:"item._path",title:i.title,url:i._path,children:i.children,secondary:""},null,8,["title","url","children"]))),128))],2)],2)):(Le(),At("div",{key:1,class:gt(t.$style.row)},[me(o,{to:e.url,class:gt(t.$style.link),exactActiveClass:t.$style.active},{default:Mr(()=>[Br(uo(e.title),1)]),_:1},8,["to","class","exactActiveClass"])],2))}}}),Pm="_container_192pu_1",Am="_secondary_192pu_4",Tm="_row_192pu_24",Om="_heading_192pu_48",Lm="_link_192pu_66",Mm="_active_192pu_81",Dm="_children_192pu_86",Im={container:Pm,secondary:Am,row:Tm,heading:Om,link:Lm,active:Mm,children:Dm},$m={$style:Im},eu=Ja(km,[["__cssModules",$m]]),jy=Object.freeze(Object.defineProperty({__proto__:null,default:eu},Symbol.toStringTag,{value:"Module"})),Bm="_row_1ufrv_1",Uy={row:Bm},Nm=Me({setup(e,{slots:t}){return()=>{var n;return(n=t.default)==null?void 0:n.call(t)}}}),jo=(e,t,n)=>({default:()=>t?_e(e,t===!0?{}:t,n):_e(Nm,{},n)}),tu={content:()=>J(()=>import("./content.d2758fa0.js"),["content.d2758fa0.js","content.2c0ca7e0.css","LayoutThemeToggle.44c0caaa.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.module.1b84276d.js","LayoutThemeToggle.vue_used_vue_type_style_index_0_lang.cfa40af4.css","LayoutFooter.142f4d00.js"],import.meta.url).then(e=>e.default||e),default:()=>J(()=>import("./default.ddb45e50.js"),["default.ddb45e50.js","default.98ce27f1.css","LayoutMainMenuToggle.2e207927.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.module.ab60ac3f.js","LayoutMainMenuToggle.vue_used_vue_type_style_index_0_lang.5944fda9.css","LayoutMainMenu.ff316230.js","navigation.123e305f.js"],import.meta.url).then(e=>e.default||e)},Hm=Me({props:{name:String},async setup(e,t){const n=await tu[e.name]().then(r=>r.default||r);return()=>_e(n,{},t.slots)}}),nu=Me({props:{name:{type:[String,Boolean,Object],default:null}},setup(e,t){const n=nt("_route"),r=n===kn()?Fh():n,o=Re(()=>{var s,i;return(i=(s=we(e.name))!=null?s:r.meta.layout)!=null?i:"default"});return()=>{var l;const s=o.value&&o.value in tu,i=(l=r.meta.layoutTransition)!=null?l:Dp;return jo(Nr,s&&i,{default:()=>jo(Hm,s&&{key:o.value,name:o.value,hasTransition:!!i},t.slots).default()}).default()}}}),Fy=Object.freeze(Object.defineProperty({__proto__:null,default:nu},Symbol.toStringTag,{value:"Module"})),jm="_main_32es8_1",Um="_reference_32es8_10",Fm="_grid_32es8_14",qy={main:jm,reference:Um,grid:Fm},qt={layout:!1},Hi=[{name:"slug",path:"/:slug(.*)*",file:"/drone/src/pages/[...slug].vue",children:[],meta:Ut,alias:(Ut==null?void 0:Ut.alias)||[],redirect:(Ut==null?void 0:Ut.redirect)||void 0,component:()=>J(()=>import("./_...slug_.e2b98af2.js"),["_...slug_.e2b98af2.js","HomeReference.2316c826.js","navigation.123e305f.js"],import.meta.url).then(e=>e.default||e)},{name:"bio",path:"/bio",file:"/drone/src/pages/bio.vue",children:[],meta:Ft,alias:(Ft==null?void 0:Ft.alias)||[],redirect:(Ft==null?void 0:Ft.redirect)||void 0,component:()=>J(()=>import("./bio.04cfcfb7.js"),["bio.04cfcfb7.js","bio.917a4706.css","BioHeading.2631b812.js","BioSkills.696c43e3.js","BioSkillsCard.ae8b4645.js","UiStars.1877968e.js","IconStar.339079de.js","UiCard.2d5cc08c.js","BioProjects.d72fc041.js","BioProjectCard.d54d8b6e.js","IconsCode.6140a935.js","UiActionButton.14e166c9.js","ArrowRight.d464538e.js","BioCareer.5609c742.js"],import.meta.url).then(e=>e.default||e)},{name:"index",path:"/",file:"/drone/src/pages/index.vue",children:[],meta:qt,alias:(qt==null?void 0:qt.alias)||[],redirect:(qt==null?void 0:qt.redirect)||void 0,component:()=>J(()=>import("./index.11dc3764.js"),["index.11dc3764.js","HomeHeader.60c8d60d.js","ArrowRight.d464538e.js","UiActionButton.14e166c9.js","HomeContentList.e0ad0179.js","navigation.123e305f.js"],import.meta.url).then(e=>e.default||e)}],qm={},dt={...qm},Vm=Ud(async e=>{var o;let t,n;if(!((o=e.meta)!=null&&o.validate))return;const r=([t,n]=ra(()=>Promise.resolve(e.meta.validate(e))),t=await t,n(),t);return typeof r=="boolean"?r:sa(r)}),Km=[Vm],ao={};function zm(e,t){const{pathname:n,search:r,hash:o}=t,s=e.indexOf("#");if(s>-1){const l=o.includes(e.slice(s))?e.slice(s).length:1;let a=o.slice(l);return a[0]!=="/"&&(a="/"+a),ni(a,"")}return ni(n,e)+r+o}const Wm=It(async e=>{var _,C,R,y;let t,n,r=Sn().app.baseURL;dt.hashMode&&!r.includes("#")&&(r+="#");const o=(C=(_=dt.history)==null?void 0:_.call(dt,r))!=null?C:dt.hashMode?rh(r):_a(r),s=(y=(R=dt.routes)==null?void 0:R.call(dt,Hi))!=null?y:Hi,i=zm(r,window.location),l=jh({...dt,history:o,routes:s});e.vueApp.use(l);const a=go(l.currentRoute.value);l.afterEach((h,v)=>{a.value=v}),Object.defineProperty(e.vueApp.config.globalProperties,"previousRoute",{get:()=>a.value});const u=go(l.resolve(i)),c=()=>{u.value=l.currentRoute.value};e.hook("page:finish",c),l.afterEach((h,v)=>{var w,T,O,I;((T=(w=h.matched[0])==null?void 0:w.components)==null?void 0:T.default)===((I=(O=v.matched[0])==null?void 0:O.components)==null?void 0:I.default)&&c()});const f={};for(const h in u.value)f[h]=Re(()=>u.value[h]);e._route=rt(f),e._middleware=e._middleware||{global:[],named:{}};const p=Ur();try{[t,n]=ra(()=>l.isReady()),await t,n()}catch(h){kt(e,Dn,[h])}const g=ia("_layout");return l.beforeEach(async(h,v)=>{var T,O;h.meta=rt(h.meta),e.isHydrating&&(h.meta.layout=(T=g.value)!=null?T:h.meta.layout),e._processingMiddleware=!0;const w=new Set([...Km,...e._middleware.global]);for(const I of h.matched){const k=I.meta.middleware;if(!!k)if(Array.isArray(k))for(const F of k)w.add(F);else w.add(k)}for(const I of w){const k=typeof I=="string"?e._middleware.named[I]||await((O=ao[I])==null?void 0:O.call(ao).then(U=>U.default||U)):I;if(!k)throw new Error(`Unknown route middleware: '${I}'.`);const F=await kt(e,k,[h,v]);if(!e.payload.serverRendered&&e.isHydrating&&(F===!1||F instanceof Error)){const U=F||Oo({statusCode:404,statusMessage:`Page Not Found: ${i}`});return kt(e,Dn,[U])}if(F||F===!1)return F}}),l.afterEach(async h=>{delete e._processingMiddleware,!e.isHydrating&&p.value&&await kt(e,Hd),h.matched.length===0&&kt(e,Dn,[Oo({statusCode:404,fatal:!1,statusMessage:`Page not found: ${h.fullPath}`})])}),e.hooks.hookOnce("app:created",async()=>{try{await l.replace({...l.resolve(i),name:void 0,force:!0})}catch(h){kt(e,Dn,[h])}}),{provide:{router:l}}}),Qm="__NUXT_COLOR_MODE__",Vy="ColorScheme",Ym="nuxt-color-mode",pt=window[Qm],Jm=It(e=>{const t=ia("color-mode",()=>rt({preference:pt.preference,value:pt.value,unknown:!1,forced:!1})).value;Jt().afterEach(o=>{const s=o.meta.colorMode;s&&s!=="system"?(t.value=s,t.forced=!0):(s==="system"&&console.warn("You cannot force the colorMode to system at the page level."),t.forced=!1,t.value=t.preference==="system"?pt.getColorScheme():t.preference)});let n;function r(){n||!window.matchMedia||(n=window.matchMedia("(prefers-color-scheme: dark)"),n.addEventListener("change",()=>{!t.forced&&t.preference==="system"&&(t.value=pt.getColorScheme())}))}Ue(()=>t.preference,o=>{var s;t.forced||(o==="system"?(t.value=pt.getColorScheme(),r()):t.value=o,(s=window.localStorage)==null||s.setItem(Ym,o))},{immediate:!0}),Ue(()=>t.value,(o,s)=>{pt.removeColorScheme(s),pt.addColorScheme(o)}),t.preference==="system"&&r(),e.hook("app:mounted",()=>{t.unknown&&(t.preference=pt.preference,t.value=pt.value,t.unknown=!1)}),e.provide("colorMode",t)}),Gm=It(()=>{Sn().public.content.wsUrl&&J(()=>import("./web-socket.2f691a4f.js"),[],import.meta.url).then(({useContentWebSocket:t})=>t())}),Xm=It(e=>{!cp()||(e.hooks.hook("link:prefetch",t=>ci(t)),Jt().beforeResolve(async(t,n)=>{if(t.path===n.path)return;const r=await ci(t.path);!r||Object.assign(e.payload.data,r.data)}))}),Zm=["data-index"],ey=Me({__name:"masonry-wall",props:{columnWidth:{default:400},items:null,gap:{default:0},rtl:{type:Boolean,default:!1},ssrColumns:{default:0},scrollContainer:{default:null}},emits:["redraw","redrawSkip"],setup(e,{emit:t}){const n=e,{columnWidth:r,items:o,gap:s,rtl:i,ssrColumns:l,scrollContainer:a}=cl(n),u=Qe([]),c=Qe();function f(){const R=Math.floor((c.value.getBoundingClientRect().width+s.value)/(r.value+s.value));return R>0?R:1}function p(R){return[...new Array(R)].map(()=>[])}if(l.value>0){const R=p(l.value);o.value.forEach((y,h)=>R[h%l.value].push(h)),u.value=R}async function g(R){if(R>=o.value.length)return;await xn();const y=[...c.value.children];i.value&&y.reverse();const h=y.reduce((v,w)=>w.getBoundingClientRect().height"u"?void 0:new ResizeObserver(()=>_());return Gn(()=>{_(),C==null||C.observe(c.value)}),Rn(()=>C==null?void 0:C.unobserve(c.value)),Ue([o,i],()=>_(!0)),Ue([r,s],()=>_()),(R,y)=>(Le(),At("div",{ref_key:"wall",ref:c,class:"masonry-wall",style:dn({display:"flex",gap:`${we(s)}px`})},[(Le(!0),At(Pe,null,_o(u.value,(h,v)=>(Le(),At("div",{key:v,class:"masonry-column","data-index":v,style:dn({display:"flex","flex-basis":"0px","flex-direction":"column","flex-grow":1,height:["-webkit-max-content","-moz-max-content","max-content"],gap:`${we(s)}px`})},[(Le(!0),At(Pe,null,_o(h,w=>(Le(),At("div",{key:w,class:"masonry-item"},[xc(R.$slots,"default",{item:we(o)[w],index:w},()=>[Br(uo(we(o)[w]),1)])]))),128))],12,Zm))),128))],4))}}),ty=(()=>{const e=ey;return e.install=t=>{t.component("MasonryWall",e)},e})(),ny=It(e=>{e.vueApp.use(ty)}),ry=[bp,Bp,Hp,Wm,Jm,Gm,Xm,ny],ji={__name:"nuxt-root",setup(e){const t=re(()=>J(()=>import("./error-component.ed137aed.js"),[],import.meta.url).then(s=>s.default||s)),n=xe(),r=n.deferHydration();cn("_route",kn()),n.hooks.callHookWith(s=>s.map(i=>i()),"vue:setup");const o=Ur();return kl((s,i,l)=>{n.hooks.callHook("vue:error",s,i,l).catch(a=>console.error("[nuxt] Error in `vue:error` hook",a)),jd(s)&&(s.fatal||s.unhandled)&&kt(n,Dn,[s])}),(s,i)=>{const l=Ir("App");return Le(),Yt(_l,{onResolve:we(r)},{default:Mr(()=>[we(o)?(Le(),Yt(we(t),{key:0,error:we(o)},null,8,["error"])):(Le(),Yt(l,{key:1}))]),_:1},8,["onResolve"])}}},oy=(e,t)=>t.path.replace(/(:\w+)\([^)]+\)/g,"$1").replace(/(:\w+)[?+*]/g,"$1").replace(/:\w+/g,n=>{var r;return((r=e.params[n.slice(1)])==null?void 0:r.toString())||""}),sy=(e,t)=>{var o;const n=t.route.matched.find(s=>{var i;return((i=s.components)==null?void 0:i.default)===t.Component.type}),r=(o=e!=null?e:n==null?void 0:n.meta.key)!=null?o:n&&oy(t.route,n);return typeof r=="function"?r(t.route):r},iy=(e,t)=>({default:()=>e?_e(hc,e===!0?{}:e,t):t}),ru=Me({name:"NuxtPage",inheritAttrs:!1,props:{name:{type:String},transition:{type:[Boolean,Object],default:void 0},keepalive:{type:[Boolean,Object],default:void 0},route:{type:Object},pageKey:{type:[Function,String],default:null}},setup(e,{attrs:t}){const n=xe();return()=>_e(ka,{name:e.name,route:e.route,...t},{default:r=>{var l,a,u,c;if(!r.Component)return;const o=sy(e.pageKey,r),s=(a=(l=e.transition)!=null?l:r.route.meta.pageTransition)!=null?a:Ip,i=n.deferHydration();return jo(Nr,s,iy((c=(u=e.keepalive)!=null?u:r.route.meta.keepalive)!=null?c:$p,_e(_l,{onPending:()=>n.callHook("page:start",r.Component),onResolve:()=>n.callHook("page:finish",r.Component).finally(i)},{default:()=>_e(ly,{key:o,routeProps:r,pageKey:o,hasTransition:!!s})}))).default()}})}}),ly=Me({props:["routeProps","pageKey","hasTransition"],setup(e){const t=e.pageKey,n=e.routeProps.route,r={};for(const o in e.routeProps.route)r[o]=Re(()=>t===e.pageKey?e.routeProps.route[o]:n[o]);return cn("_route",rt(r)),()=>_e(e.routeProps.Component)}}),Ky=Object.freeze(Object.defineProperty({__proto__:null,default:ru},Symbol.toStringTag,{value:"Module"})),ay={};function uy(e,t){const n=ru,r=nu;return Le(),Yt(r,null,{default:Mr(()=>[me(n)]),_:1})}const cy=Ja(ay,[["render",uy]]);globalThis.$fetch||(globalThis.$fetch=dd.create({baseURL:hd()}));let Ui;const fy=Ad(ry);Ui=async function(){var o;const n=Boolean((o=window.__NUXT__)==null?void 0:o.serverRendered)?kf(ji):Sf(ji);n.component("App",cy);const r=Sd({vueApp:n});try{await Pd(r,fy)}catch(s){await r.callHook("app:error",s),r.payload.error=r.payload.error||s}try{await r.hooks.callHook("app:created",n),await r.hooks.callHook("app:beforeMount",n),n.mount("#__nuxt"),await r.hooks.callHook("app:mounted",n),await xn()}catch(s){await r.callHook("app:error",s),r.payload.error=r.payload.error||s}},Ui().catch(e=>{console.error("Error while mounting app:",e)});export{Ny as $,cl as A,ia as B,Ey as C,Od as D,aa as E,Cg as F,xg as G,bg as H,ua as I,Gn as J,wy as K,bt as L,Sn as M,_y as N,Pg as O,za as P,yy as Q,Pe as R,_o as S,Br as T,Cy as U,Ay as V,gy as W,My as X,Dy as Y,By as Z,J as _,Me as a,Ly as a0,$y as a1,Ty as a2,Oy as a3,Iy as a4,qy as a5,nu as a6,Hy as a7,Ir as a8,Uy as a9,eu as aa,yr as ab,xn as ac,fs as ad,Ii as ae,Py as af,tn as ag,ky as ah,xy as ai,Ry as aj,Sy as ak,by as al,Qh as am,$i as an,Xl as ao,py as ap,hy as aq,Vy as ar,vy as as,_g as at,vg as au,kg as av,Ag as aw,jy as ax,Fy as ay,Ky as az,da as b,Yt as c,re as d,At as e,wr as f,Vc as g,gt as h,me as i,my as j,Ja as k,cs as l,_e as m,dy as n,Le as o,Za as p,Qe as q,xc as r,xe as s,uo as t,we as u,kl as v,Mr as w,Rn as x,Re as y,pa as z}; diff --git a/nuxt/entry.deeb6f50.css b/nuxt/entry.deeb6f50.css new file mode 100644 index 0000000..d92a3cc --- /dev/null +++ b/nuxt/entry.deeb6f50.css @@ -0,0 +1 @@ +@import"https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@600&family=Roboto:wght@400;700&display=swap";.page-enter-active,.page-leave-active{transition:all .4s}.page-enter-from,.page-leave-to{opacity:0;transform:translateY(50px)}body,html{background:var(--color-background);color:var(--color-text);font-family:var(--family-roboto);margin:0;padding:0}*{box-sizing:border-box;transition:color .25s}a{color:var(--color-link)}h1>a,h2>a,h3>a,h4>a,h5>a{color:var(--color-header);text-decoration:none}pre{border-radius:10px;line-height:1.5em;overflow:scroll;padding:10px;width:100%}:not(pre)>code,pre{background-color:var(--color-code-background)}:not(pre)>code{border-radius:4px;color:var(--color-code-inline);padding:0 5px}h1,h2,h3,h4,h5{color:var(--color-header);font-family:var(--family-roboto-slab);font-weight:700}h1{color:var(--color-heading-primary);font-size:2.6rem;margin-bottom:1.5rem}h1:not(:first-child){margin-top:3rem}h2{color:var(--color-heading-secondary);font-size:2rem}h2:not(:first-child){margin-top:2rem}h3,h4,h5{color:var(--color-heading-tertiary)}li,p{line-height:1.45em}li:not(:last-child){margin-bottom:.25em}button{background:none;padding:0}button,button:focus{border:none}table{border:2px solid var(--color-line);border-collapse:collapse}table td,table th{border:1px solid var(--color-line);padding:5px 10px;text-align:left}table thead{background:var(--color-table-head);border-bottom:2px solid var(--color-line)}blockquote{border-left:3px solid var(--color-primary);color:var(--color-text);padding:0 20px}blockquote ol,blockquote ul{padding-left:15px}.highlight{background-color:var(--color-highlight-background);border-radius:3px;color:var(--color-highlight-color);padding:0 1px}:root{--family-roboto-slab:"Roboto Slab","Segoe UI",Tahoma,Geneva,Verdana,sans-serif;--family-roboto:"Roboto","Segoe UI",Tahoma,Geneva,Verdana,sans-serif;--size-phone:$phone;--size-tablet:$size-tablet;--size-desktop:$size-desktop}:root.dark{--color-primary:#e84a72;--color-background:#16161c;--color-menu-background:#1a1c23;--color-line:#2d2f36;--color-menu-overlay-background:rgba(22,22,28,.9);--color-code-background:#1a1c23;--color-code-language-background:#23252f;--color-code-language-name:#1eaeae;--color-text:#fdf0ed;--color-text-secondary:#a3a4a7;--color-link:#e84a72;--color-code-inline:#1eb980;--color-heading-primary:#fff;--color-heading-secondary:#f9cbbe;--color-heading-tertiary:#f9cec3;--color-menu-title:#fadad1;--color-menu-link:#fab28e;--color-menu-link-active:#e84a72;--color-menu-line:#2e303e;--color-table-head:#2f212b;--color-rating-1:#ded187;--color-rating-2:#dbde87;--color-rating-3:#bade87;--color-rating-4:#9cde87;--color-rating-5:#87deaa;--color-highlight-color:var(--color-text);--color-highlight-background:#254e50}:root.light{--color-primary:#e84a72;--color-background:#fce9e4;--color-menu-background:#fbe2db;--color-line:#fbe2db;--color-menu-overlay-background:rgba(22,22,28,.9);--color-code-background:#fbe2db;--color-code-language-background:#23252f;--color-code-language-name:#1eaeae;--color-text:#5a5d68;--color-text-secondary:#7b7d86;--color-link:#e84a72;--color-code-inline:#8931b9;--color-heading-primary:#4c5161;--color-heading-secondary:#6bb8b4;--color-heading-tertiary:#6bb8b4;--color-menu-title:#6bb8b4;--color-menu-link:#eb6481;--color-menu-link-active:#e84a72;--color-menu-line:#f9cbbe;--color-table-head:#f8ccc8;--color-highlight-color:var(--color-text);--color-highlight-background:#fab795}._list_1w161_1{margin:0;padding:0 20px}._list_1w161_1 li a{text-decoration:none}._grid_15n56_1{grid-column-gap:40px;display:grid;grid-template-columns:1fr 2fr}._text_15n56_7{color:var(--color-text-secondary)}._text_15n56_7 b{color:var(--color-text)}._rating_11ify_1{display:flex;flex-direction:row;margin-left:-3px}._rating_11ify_1>img{margin-right:2px}._star_11ify_10{stroke:none;fill:currentColor}._star_11ify_10:first-child{color:var(--color-rating-1)}._star_11ify_10:nth-child(2){color:var(--color-rating-2)}._star_11ify_10:nth-child(3){color:var(--color-rating-3)}._star_11ify_10:nth-child(4){color:var(--color-rating-4)}._star_11ify_10:nth-child(5){color:var(--color-rating-5)}._star_11ify_10._filled_11ify_29{fill:var(--color-line)}._card_e1njf_1{border:1px solid var(--color-line);border-radius:8px;transition:all .25s}._card_e1njf_1:hover{background-color:var(--color-code-background);border-color:var(--color-text-secondary)}._grid_1kefv_1{grid-column-gap:16px;align-items:center;border-bottom:1px solid var(--color-line);display:grid;grid-template-columns:48px 1fr;padding:10px;transition:all .25s}._title_1kefv_11{margin:0 0 4px}._icon_1kefv_15{align-items:center;display:flex}._text_1kefv_20{display:flex;flex-direction:column;padding-bottom:4px}._description_1kefv_26{color:var(--color-text-secondary);font-size:.9rem;line-height:1.4rem;padding:10px}._list_89lzg_1{-moz-column-gap:20px;column-gap:20px;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));row-gap:20px}._button_aq4bi_1{align-items:center;border-radius:8px;color:#fff;display:inline-flex;justify-content:center;text-decoration:none}._button_aq4bi_1._variant-primary_aq4bi_9{background-color:var(--color-primary)}._button_aq4bi_1._variant-outline_aq4bi_12{box-shadow:var(--color-text) 0 0 0 1px;color:var(--color-text);overflow:hidden;position:relative;transition:all .25s}._button_aq4bi_1._variant-outline_aq4bi_12:after{background:var(--color-primary);border-radius:8px;content:" ";inset:0;opacity:0;position:absolute;transform:scale(0);transition:all .25s;z-index:0}._button_aq4bi_1._variant-outline_aq4bi_12:hover{box-shadow:var(--color-background) 0 0 0 1px}._button_aq4bi_1._variant-outline_aq4bi_12:hover:after{opacity:1;transform:scale(1)}._button_aq4bi_1._size-md_aq4bi_37{height:40px;padding:0 30px}._button_aq4bi_1._size-md_aq4bi_37._prefixed_aq4bi_41,._button_aq4bi_1._size-md_aq4bi_37._suffixed_aq4bi_41{padding:0 10px 0 20px}._button_aq4bi_1._size-md_aq4bi_37._suffixed_aq4bi_41{padding-right:0 20px 0 10px}._title_aq4bi_48{flex:1;position:relative;text-align:center;z-index:1}._size-md_aq4bi_37._prefixed_aq4bi_41 ._title_aq4bi_48{padding-left:10px}._size-md_aq4bi_37._suffixed_aq4bi_41 ._title_aq4bi_48{padding-right:10px}._prefix_aq4bi_41,._suffix_aq4bi_41{display:inline-flex;position:relative;z-index:2}._card_1wy9v_1{display:flex;flex-direction:column;height:100%}._thumbnail_1wy9v_7{border-bottom:1px solid var(--color-line);border-radius:8px 8px 0 0;height:250px;overflow:hidden}._image_1wy9v_14{height:auto;-o-object-fit:cover;object-fit:cover;width:100%}._content_1wy9v_20{display:flex;flex:1;flex-direction:column;padding:16px}._head_1wy9v_27{margin-bottom:16px}._title_1wy9v_31{margin:0 0 4px}._url_1wy9v_35{font-size:.9em}._description_1wy9v_39{color:var(--color-text-secondary);font-size:.9em;line-height:1.5em;white-space:pre-line}._buttons_1wy9v_46{-moz-column-gap:10px;column-gap:10px;display:grid;grid-template-columns:repeat(2,1fr);padding:16px;row-gap:10px}._grid_1ng9c_1{-moz-column-gap:16px;column-gap:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));row-gap:16px}._grid_1i19d_1{border-bottom:2px solid var(--color-line);-moz-column-gap:50px;column-gap:50px;display:grid;grid-template-columns:17fr 10fr}@media (max-width:1024px){._grid_1i19d_1{border-bottom:none;-moz-column-gap:20px;column-gap:20px;grid-template-columns:1fr;grid-template-rows:auto auto}}._image_1i19d_16{align-items:flex-end;display:flex}@media (max-width:1024px){._image_1i19d_16{border-bottom:2px solid var(--color-line);justify-content:center}._image_1i19d_16 ._desk_1i19d_25{max-width:400px}}._title_1i19d_30{font-size:3rem;line-height:3.4rem;margin:.8rem 0}@media (max-width:560px){._title_1i19d_30{font-size:2.5rem;line-height:3rem}}._subtitle_1i19d_42{color:var(--color-text-secondary);max-width:360px}@media (max-width:1024px){._subtitle_1i19d_42{max-width:100%}}._text_1i19d_52{display:flex;flex-direction:column;justify-content:center;max-width:500px;padding-bottom:60px}@media (max-width:768px){._text_1i19d_52{padding-bottom:40px;padding-top:0;text-align:center}}._desk_1i19d_25{width:100%}._buttons_1i19d_71{margin-top:50px}._container_192pu_1{position:relative}._container_192pu_1._secondary_192pu_4{padding:7px 2px 0}._container_192pu_1._secondary_192pu_4:before{background-color:var(--color-menu-line);bottom:13px;content:" ";left:-16px;position:absolute;top:-22px;width:1px}._container_192pu_1._secondary_192pu_4:first-child:before{top:-4px}._container_192pu_1._secondary_192pu_4:last-child:before{bottom:auto;height:40px}._row_192pu_24{padding:3px 2px;position:relative}._row_192pu_24:before{background-color:var(--color-menu-line);bottom:13px;content:" ";left:-16px;position:absolute;top:-14px;width:1px}._row_192pu_24:first-child:before{top:-4px}._row_192pu_24:last-child:before{bottom:auto;height:30px}._row_192pu_24:only-child:before{height:19px}._heading_192pu_48{align-items:center;color:var(--color-menu-title);display:flex;font-weight:600;position:relative;text-transform:uppercase}._secondary_192pu_4 ._heading_192pu_48:before{background-color:var(--color-menu-line);content:" ";height:1px;left:-17px;position:absolute;top:.6em;width:10px}._link_192pu_66{color:var(--color-menu-link);line-height:1.4em;position:relative;text-decoration:none}._link_192pu_66:before{background-color:var(--color-menu-line);content:" ";height:1px;left:-17px;position:absolute;top:.6em;width:10px}._link_192pu_66._active_192pu_81{color:var(--color-menu-link-active);font-weight:700}._children_192pu_86{margin:10px 3px;padding:0 0 0 16px;position:relative}._row_1ufrv_1{margin-bottom:10px}._main_32es8_1{padding-top:40px}@media (max-width:768px){._main_32es8_1{padding-top:0}}._reference_32es8_10{padding-top:20px}._grid_32es8_14{margin:40px 5px 0} diff --git a/nuxt/entry.ec051a30.css b/nuxt/entry.ec051a30.css deleted file mode 100644 index 3cdc76e..0000000 --- a/nuxt/entry.ec051a30.css +++ /dev/null @@ -1 +0,0 @@ -@import"https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@600&family=Roboto:wght@400;700&display=swap";.page-enter-active,.page-leave-active{transition:all .4s}.page-enter-from,.page-leave-to{opacity:0;transform:translateY(50px)}body,html{background:var(--color-background);color:var(--color-text);font-family:var(--family-roboto);margin:0;padding:0}*{box-sizing:border-box;transition:color .25s}a{color:var(--color-link)}h1>a,h2>a,h3>a,h4>a,h5>a{color:var(--color-header);text-decoration:none}pre{border-radius:10px;line-height:1.5em;overflow:scroll;padding:10px;width:100%}:not(pre)>code,pre{background-color:var(--color-code-background)}:not(pre)>code{border-radius:4px;color:var(--color-code-inline);padding:0 5px}h1,h2,h3,h4,h5{color:var(--color-header);font-family:var(--family-roboto-slab);font-weight:700}h1{color:var(--color-heading-primary);font-size:2.6rem;margin-bottom:1.5rem}h1:not(:first-child){margin-top:3rem}h2{color:var(--color-heading-secondary);font-size:2rem}h2:not(:first-child){margin-top:2rem}h3,h4,h5{color:var(--color-heading-tertiary)}li,p{line-height:1.45em}li:not(:last-child){margin-bottom:.25em}button{background:none;padding:0}button,button:focus{border:none}table{border:2px solid var(--color-line);border-collapse:collapse}table td,table th{border:1px solid var(--color-line);padding:5px 10px;text-align:left}table thead{background:var(--color-table-head);border-bottom:2px solid var(--color-line)}blockquote{border-left:3px solid var(--color-primary);color:var(--color-text);padding:0 20px}blockquote ol,blockquote ul{padding-left:15px}.highlight{background-color:var(--color-highlight-background);border-radius:3px;color:var(--color-highlight-color);padding:0 1px}:root{--family-roboto-slab:"Roboto Slab","Segoe UI",Tahoma,Geneva,Verdana,sans-serif;--family-roboto:"Roboto","Segoe UI",Tahoma,Geneva,Verdana,sans-serif;--size-phone:$phone;--size-tablet:$size-tablet;--size-desktop:$size-desktop}:root.dark{--color-primary:#e84a72;--color-background:#16161c;--color-menu-background:#1a1c23;--color-line:#2d2f36;--color-menu-overlay-background:rgba(22,22,28,.9);--color-code-background:#1a1c23;--color-code-language-background:#23252f;--color-code-language-name:#1eaeae;--color-text:#fdf0ed;--color-text-secondary:#a3a4a7;--color-link:#e84a72;--color-code-inline:#1eb980;--color-heading-primary:#fff;--color-heading-secondary:#f9cbbe;--color-heading-tertiary:#f9cec3;--color-menu-title:#fadad1;--color-menu-link:#fab28e;--color-menu-link-active:#e84a72;--color-menu-line:#2e303e;--color-table-head:#2f212b;--color-rating-1:#ded187;--color-rating-2:#dbde87;--color-rating-3:#bade87;--color-rating-4:#9cde87;--color-rating-5:#87deaa;--color-highlight-color:var(--color-text);--color-highlight-background:#254e50}:root.light{--color-primary:#e84a72;--color-background:#fce9e4;--color-menu-background:#fbe2db;--color-line:#fbe2db;--color-menu-overlay-background:rgba(22,22,28,.9);--color-code-background:#fbe2db;--color-code-language-background:#23252f;--color-code-language-name:#1eaeae;--color-text:#5a5d68;--color-text-secondary:#7b7d86;--color-link:#e84a72;--color-code-inline:#8931b9;--color-heading-primary:#4c5161;--color-heading-secondary:#6bb8b4;--color-heading-tertiary:#6bb8b4;--color-menu-title:#6bb8b4;--color-menu-link:#eb6481;--color-menu-link-active:#e84a72;--color-menu-line:#f9cbbe;--color-table-head:#f8ccc8;--color-highlight-color:var(--color-text);--color-highlight-background:#fab795}._list_1w161_1{margin:0;padding:0 20px}._list_1w161_1 li a{text-decoration:none}._grid_15n56_1{grid-column-gap:40px;display:grid;grid-template-columns:1fr 2fr}._text_15n56_7{color:var(--color-text-secondary)}._text_15n56_7 b{color:var(--color-text)}._rating_11ify_1{display:flex;flex-direction:row;margin-left:-3px}._rating_11ify_1>img{margin-right:2px}._star_11ify_10{stroke:none;fill:currentColor}._star_11ify_10:first-child{color:var(--color-rating-1)}._star_11ify_10:nth-child(2){color:var(--color-rating-2)}._star_11ify_10:nth-child(3){color:var(--color-rating-3)}._star_11ify_10:nth-child(4){color:var(--color-rating-4)}._star_11ify_10:nth-child(5){color:var(--color-rating-5)}._star_11ify_10._filled_11ify_29{fill:var(--color-line)}._card_1i1za_1{border:1px solid var(--color-line);border-radius:8px;transition:all .25s}._card_1i1za_1:hover{background-color:var(--color-line)}._card_1i1za_1:hover,._card_1i1za_1:hover>._grid_1i1za_9{border-color:var(--color-text-secondary)}._grid_1i1za_9{grid-column-gap:16px;align-items:center;border-bottom:1px solid var(--color-line);display:grid;grid-template-columns:48px 1fr;padding:10px;transition:all .25s}._title_1i1za_23{margin:0 0 4px}._icon_1i1za_27{align-items:center;display:flex}._text_1i1za_32{display:flex;flex-direction:column;padding-bottom:4px}._description_1i1za_38{color:var(--color-text-secondary);font-size:.9rem;line-height:1.4rem;padding:10px}._list_89lzg_1{-moz-column-gap:20px;column-gap:20px;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));row-gap:20px}._button_e4315_1{border-radius:8px;color:#fff;text-decoration:none}._button_e4315_1._variant-outline_e4315_6{align-items:center;box-shadow:var(--color-text) 0 0 0 1px;color:var(--color-text);display:inline-flex;justify-content:center;overflow:hidden;position:relative;transition:all .25s}._button_e4315_1._variant-outline_e4315_6:after{background:var(--color-primary);border-radius:8px;content:" ";inset:0;opacity:0;position:absolute;transform:scale(0);transition:all .25s;z-index:0}._button_e4315_1._variant-outline_e4315_6:hover{box-shadow:var(--color-background) 0 0 0 1px;color:var(--color-background)}._button_e4315_1._variant-outline_e4315_6:hover:after{opacity:1;transform:scale(1)}._button_e4315_1._size-md_e4315_35{height:40px;padding:0 30px}._button_e4315_1._size-md_e4315_35._prefixed_e4315_39,._button_e4315_1._size-md_e4315_35._suffixed_e4315_39{padding:0 10px 0 20px}._button_e4315_1._size-md_e4315_35._suffixed_e4315_39{padding-right:0 20px 0 10px}._title_e4315_46{position:relative;z-index:1}._size-md_e4315_35._prefixed_e4315_39 ._title_e4315_46{padding-left:10px}._size-md_e4315_35._suffixed_e4315_39 ._title_e4315_46{padding-right:10px}._prefix_e4315_39,._suffix_e4315_39{display:inline-flex;position:relative;z-index:2}._grid_1i19d_1{border-bottom:2px solid var(--color-line);-moz-column-gap:50px;column-gap:50px;display:grid;grid-template-columns:17fr 10fr}@media (max-width:1024px){._grid_1i19d_1{border-bottom:none;-moz-column-gap:20px;column-gap:20px;grid-template-columns:1fr;grid-template-rows:auto auto}}._image_1i19d_16{align-items:flex-end;display:flex}@media (max-width:1024px){._image_1i19d_16{border-bottom:2px solid var(--color-line);justify-content:center}._image_1i19d_16 ._desk_1i19d_25{max-width:400px}}._title_1i19d_30{font-size:3rem;line-height:3.4rem;margin:.8rem 0}@media (max-width:560px){._title_1i19d_30{font-size:2.5rem;line-height:3rem}}._subtitle_1i19d_42{color:var(--color-text-secondary);max-width:360px}@media (max-width:1024px){._subtitle_1i19d_42{max-width:100%}}._text_1i19d_52{display:flex;flex-direction:column;justify-content:center;max-width:500px;padding-bottom:60px}@media (max-width:768px){._text_1i19d_52{padding-bottom:40px;padding-top:0;text-align:center}}._desk_1i19d_25{width:100%}._buttons_1i19d_71{margin-top:50px}._container_192pu_1{position:relative}._container_192pu_1._secondary_192pu_4{padding:7px 2px 0}._container_192pu_1._secondary_192pu_4:before{background-color:var(--color-menu-line);bottom:13px;content:" ";left:-16px;position:absolute;top:-22px;width:1px}._container_192pu_1._secondary_192pu_4:first-child:before{top:-4px}._container_192pu_1._secondary_192pu_4:last-child:before{bottom:auto;height:40px}._row_192pu_24{padding:3px 2px;position:relative}._row_192pu_24:before{background-color:var(--color-menu-line);bottom:13px;content:" ";left:-16px;position:absolute;top:-14px;width:1px}._row_192pu_24:first-child:before{top:-4px}._row_192pu_24:last-child:before{bottom:auto;height:30px}._row_192pu_24:only-child:before{height:19px}._heading_192pu_48{align-items:center;color:var(--color-menu-title);display:flex;font-weight:600;position:relative;text-transform:uppercase}._secondary_192pu_4 ._heading_192pu_48:before{background-color:var(--color-menu-line);content:" ";height:1px;left:-17px;position:absolute;top:.6em;width:10px}._link_192pu_66{color:var(--color-menu-link);line-height:1.4em;position:relative;text-decoration:none}._link_192pu_66:before{background-color:var(--color-menu-line);content:" ";height:1px;left:-17px;position:absolute;top:.6em;width:10px}._link_192pu_66._active_192pu_81{color:var(--color-menu-link-active);font-weight:700}._children_192pu_86{margin:10px 3px;padding:0 0 0 16px;position:relative}._row_1ufrv_1{margin-bottom:10px}._main_32es8_1{padding-top:40px}@media (max-width:768px){._main_32es8_1{padding-top:0}}._reference_32es8_10{padding-top:20px}._grid_32es8_14{margin:40px 5px 0} diff --git a/nuxt/error-404.711e6037.js b/nuxt/error-404.2ba8a802.js similarity index 88% rename from nuxt/error-404.711e6037.js rename to nuxt/error-404.2ba8a802.js index eb83c29..6d4884b 100644 --- a/nuxt/error-404.711e6037.js +++ b/nuxt/error-404.2ba8a802.js @@ -1 +1 @@ -import{k as a,z as n,o as r,e as l,f as e,t as s,i as d,w as c,T as p,b as f,ak as x,al as h}from"./entry.38f1b559.js";const m=t=>(x("data-v-07b7f6e4"),t=t(),h(),t),u={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},g=m(()=>e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),b={class:"max-w-520px text-center z-20"},_=["textContent"],w=["textContent"],y={class:"w-full flex items-center justify-center"},k={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const o=t;return n({title:`${o.statusCode} - ${o.statusMessage} | ${o.appName}`,script:[],style:[{children:'*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}*{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(14, 165, 233, .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000}:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}a{color:inherit;text-decoration:inherit}body{margin:0;font-family:inherit;line-height:inherit}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5}h1,p{margin:0}h1{font-size:inherit;font-weight:inherit}'}]}),(S,v)=>{const i=f;return r(),l("div",u,[g,e("div",b,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:s(t.statusCode)},null,8,_),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:s(t.description)},null,8,w),e("div",y,[d(i,{to:"/",class:"gradient-border text-md sm:text-xl py-2 px-4 sm:py-3 sm:px-6 cursor-pointer"},{default:c(()=>[p(s(t.backHome),1)]),_:1})])])])}}},z=a(k,[["__scopeId","data-v-07b7f6e4"]]);export{z as default}; +import{k as a,z as n,o as r,e as l,f as e,t as s,i as d,w as c,T as p,b as f,ap as x,aq as h}from"./entry.418f6f87.js";const m=t=>(x("data-v-07b7f6e4"),t=t(),h(),t),u={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},g=m(()=>e("div",{class:"fixed left-0 right-0 spotlight z-10"},null,-1)),b={class:"max-w-520px text-center z-20"},_=["textContent"],w=["textContent"],y={class:"w-full flex items-center justify-center"},S={__name:"error-404",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:404},statusMessage:{type:String,default:"Not Found"},description:{type:String,default:"Sorry, the page you are looking for could not be found."},backHome:{type:String,default:"Go back home"}},setup(t){const o=t;return n({title:`${o.statusCode} - ${o.statusMessage} | ${o.appName}`,script:[],style:[{children:'*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}*{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(14, 165, 233, .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000}:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}a{color:inherit;text-decoration:inherit}body{margin:0;font-family:inherit;line-height:inherit}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5}h1,p{margin:0}h1{font-size:inherit;font-weight:inherit}'}]}),(k,v)=>{const i=f;return r(),l("div",u,[g,e("div",b,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:s(t.statusCode)},null,8,_),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:s(t.description)},null,8,w),e("div",y,[d(i,{to:"/",class:"gradient-border text-md sm:text-xl py-2 px-4 sm:py-3 sm:px-6 cursor-pointer"},{default:c(()=>[p(s(t.backHome),1)]),_:1})])])])}}},z=a(S,[["__scopeId","data-v-07b7f6e4"]]);export{z as default}; diff --git a/nuxt/error-500.c3466f00.js b/nuxt/error-500.8165a825.js similarity index 93% rename from nuxt/error-500.c3466f00.js rename to nuxt/error-500.8165a825.js index 16ae821..2b72a36 100644 --- a/nuxt/error-500.c3466f00.js +++ b/nuxt/error-500.8165a825.js @@ -1 +1 @@ -import{k as i,z as a,o as r,e as n,f as e,t as s,ak as l,al as d}from"./entry.38f1b559.js";const c=t=>(l("data-v-73785db7"),t=t(),d(),t),p={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},h=c(()=>e("div",{class:"fixed -bottom-1/2 left-0 right-0 h-1/2 spotlight"},null,-1)),f={class:"max-w-520px text-center"},g=["textContent"],m=["textContent"],b={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const o=t;return a({title:`${o.statusCode} - ${o.statusMessage} | ${o.appName}`,script:[],style:[{children:'*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}*{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(14, 165, 233, .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000}:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{margin:0;font-family:inherit;line-height:inherit}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5}h1,p{margin:0}h1{font-size:inherit;font-weight:inherit}'}]}),(x,u)=>(r(),n("div",p,[h,e("div",f,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:s(t.statusCode)},null,8,g),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:s(t.description)},null,8,m)])]))}},w=i(b,[["__scopeId","data-v-73785db7"]]);export{w as default}; +import{k as i,z as a,o as r,e as n,f as e,t as s,ap as l,aq as d}from"./entry.418f6f87.js";const c=t=>(l("data-v-73785db7"),t=t(),d(),t),p={class:"font-sans antialiased bg-white dark:bg-black text-black dark:text-white grid min-h-screen place-content-center overflow-hidden"},h=c(()=>e("div",{class:"fixed -bottom-1/2 left-0 right-0 h-1/2 spotlight"},null,-1)),f={class:"max-w-520px text-center"},g=["textContent"],m=["textContent"],b={__name:"error-500",props:{appName:{type:String,default:"Nuxt"},version:{type:String,default:""},statusCode:{type:Number,default:500},statusMessage:{type:String,default:"Server error"},description:{type:String,default:"This page is temporarily unavailable."}},setup(t){const o=t;return a({title:`${o.statusCode} - ${o.statusMessage} | ${o.appName}`,script:[],style:[{children:'*,:before,:after{-webkit-box-sizing:border-box;box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}*{--tw-ring-inset:var(--tw-empty, );--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(14, 165, 233, .5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000}:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{margin:0;font-family:inherit;line-height:inherit}html{-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";line-height:1.5}h1,p{margin:0}h1{font-size:inherit;font-weight:inherit}'}]}),(x,u)=>(r(),n("div",p,[h,e("div",f,[e("h1",{class:"text-8xl sm:text-10xl font-medium mb-8",textContent:s(t.statusCode)},null,8,g),e("p",{class:"text-xl px-8 sm:px-0 sm:text-4xl font-light mb-16 leading-tight",textContent:s(t.description)},null,8,m)])]))}},w=i(b,[["__scopeId","data-v-73785db7"]]);export{w as default}; diff --git a/nuxt/error-component.fabd1547.js b/nuxt/error-component.ed137aed.js similarity index 60% rename from nuxt/error-component.fabd1547.js rename to nuxt/error-component.ed137aed.js index 6e76c47..d0d9659 100644 --- a/nuxt/error-component.fabd1547.js +++ b/nuxt/error-component.ed137aed.js @@ -1,3 +1,3 @@ -import{d as o,_ as c,o as g,c as E,n as k,g as P,u as s}from"./entry.38f1b559.js";const v={__name:"nuxt-error-page",props:{error:Object},setup(u){var n;const{error:t}=u;(t.stack||"").split(` +import{d as o,_ as c,o as g,c as E,n as k,g as P,u as s}from"./entry.418f6f87.js";const v={__name:"nuxt-error-page",props:{error:Object},setup(u){var n;const{error:t}=u;(t.stack||"").split(` `).splice(1).map(e=>({text:e.replace("webpack:/","").replace(".vue",".js").trim(),internal:e.includes("node_modules")&&!e.includes(".cache")||e.includes("internal")||e.includes("new Promise")})).map(e=>`${e.text}`).join(` -`);const r=Number(t.statusCode||500),a=r===404,i=(n=t.statusMessage)!=null?n:a?"Page Not Found":"Internal Server Error",p=t.message||t.toString(),_=void 0,d=o(()=>c(()=>import("./error-404.711e6037.js"),["error-404.711e6037.js","error-404.18ced855.css","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(e=>e.default||e)),l=o(()=>c(()=>import("./error-500.c3466f00.js"),["error-500.c3466f00.js","error-500.e60962de.css","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(e=>e.default||e)),m=a?d:l;return(e,f)=>(g(),E(s(m),k(P({statusCode:s(r),statusMessage:s(i),description:s(p),stack:s(_)})),null,16))}},h=v;export{h as default}; +`);const r=Number(t.statusCode||500),a=r===404,i=(n=t.statusMessage)!=null?n:a?"Page Not Found":"Internal Server Error",p=t.message||t.toString(),_=void 0,d=o(()=>c(()=>import("./error-404.2ba8a802.js"),["error-404.2ba8a802.js","error-404.18ced855.css","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(e=>e.default||e)),l=o(()=>c(()=>import("./error-500.8165a825.js"),["error-500.8165a825.js","error-500.e60962de.css","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(e=>e.default||e)),m=a?d:l;return(e,f)=>(g(),E(s(m),k(P({statusCode:s(r),statusMessage:s(i),description:s(p),stack:s(_)})),null,16))}},h=v;export{h as default}; diff --git a/nuxt/index.11dc3764.js b/nuxt/index.11dc3764.js new file mode 100644 index 0000000..d7d7e7e --- /dev/null +++ b/nuxt/index.11dc3764.js @@ -0,0 +1 @@ +import r from"./HomeHeader.60c8d60d.js";import _ from"./HomeContentList.e0ad0179.js";import{k as i,o as m,c as l,w as p,a5 as d,a6 as u,f as e,i as s,h as o}from"./entry.418f6f87.js";import"./ArrowRight.d464538e.js";import"./UiActionButton.14e166c9.js";import"./navigation.123e305f.js";const f={scrollToTop:!0,head(){return{title:"Obsidian Garden"}}},h=e("h1",null,"Cheatsheet",-1);function $(t,y,C,k,B,H){const n=r,a=_,c=u;return m(),l(c,{name:"content"},{default:p(()=>[e("main",{class:o(t.$style.main)},[s(n),e("div",{class:o(t.$style.reference)},[h,e("div",{class:o(t.$style.grid)},[s(a)],2)],2)],2)]),_:1})}const x={$style:d},V=i(f,[["render",$],["__cssModules",x]]);export{V as default}; diff --git a/nuxt/index.fa639cbe.js b/nuxt/index.fa639cbe.js deleted file mode 100644 index 32db0fb..0000000 --- a/nuxt/index.fa639cbe.js +++ /dev/null @@ -1 +0,0 @@ -import r from"./HomeHeader.2d7392ee.js";import _ from"./HomeContentList.46ff1ce1.js";import{k as i,o as m,c as l,w as p,$ as d,a0 as u,f as e,i as s,h as o}from"./entry.38f1b559.js";import"./ArrowRight.c0024fca.js";import"./UiActionButton.00b8dbe7.js";import"./navigation.ce71bb44.js";const f={scrollToTop:!0,head(){return{title:"Obsidian Garden"}}},$=e("h1",null,"Cheatsheet",-1);function h(t,y,C,k,B,H){const n=r,a=_,c=u;return m(),l(c,{name:"content"},{default:p(()=>[e("main",{class:o(t.$style.main)},[s(n),e("div",{class:o(t.$style.reference)},[$,e("div",{class:o(t.$style.grid)},[s(a)],2)],2)],2)]),_:1})}const x={$style:d},V=i(f,[["render",h],["__cssModules",x]]);export{V as default}; diff --git a/nuxt/navigation.ce71bb44.js b/nuxt/navigation.123e305f.js similarity index 59% rename from nuxt/navigation.ce71bb44.js rename to nuxt/navigation.123e305f.js index 914984f..32d311c 100644 --- a/nuxt/navigation.ce71bb44.js +++ b/nuxt/navigation.123e305f.js @@ -1 +1 @@ -import{F as i,E as r,G as s,_ as p,H as f,I as h}from"./entry.38f1b559.js";const m=async e=>{let t=e;typeof(t==null?void 0:t.params)=="function"&&(t=t.params());const n=i(t?`/navigation/${r(t)}.json`:"/navigation");if(s())return(await p(()=>import("./client-db.9d167014.js"),["client-db.9d167014.js","entry.38f1b559.js","entry.ec051a30.css"],import.meta.url).then(o=>o.generateNavigation))(t||{});const a=await $fetch(n,{method:"GET",responseType:"json",params:{_params:f(t||{}),previewToken:h("previewToken").value}});if(typeof a=="string"&&a.startsWith(""))throw new Error("Not found");return a};export{m as f}; +import{F as i,E as r,G as s,_ as p,H as f,I as h}from"./entry.418f6f87.js";const m=async e=>{let t=e;typeof(t==null?void 0:t.params)=="function"&&(t=t.params());const n=i(t?`/navigation/${r(t)}.json`:"/navigation");if(s())return(await p(()=>import("./client-db.34509f31.js"),["client-db.34509f31.js","entry.418f6f87.js","entry.deeb6f50.css"],import.meta.url).then(o=>o.generateNavigation))(t||{});const a=await $fetch(n,{method:"GET",responseType:"json",params:{_params:f(t||{}),previewToken:h("previewToken").value}});if(typeof a=="string"&&a.startsWith(""))throw new Error("Not found");return a};export{m as f}; diff --git a/nuxt/obsidian-garden.39e6dff3.png b/nuxt/obsidian-garden.39e6dff3.png new file mode 100644 index 0000000000000000000000000000000000000000..c6eae417428bb29c6170db3b7107b7271029f0b9 GIT binary patch literal 1015012 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≷(Wh~tyzd;k(l>p!8vm*%{J0)>Ju#_ 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 z

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 z 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

xvmMq;V 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 z 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 bhaiX(`69VpxcUSQ{HLX^cc)bC$-Dmp?PJ6r literal 0 HcmV?d00001 diff --git a/nuxt/orchid-map.2f398715.png b/nuxt/orchid-map.2f398715.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c8c9bdedab063629750d8fe7bc597be1d62173 GIT binary patch literal 4548169 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%0DWHG?Xj*W!&qzdWw@$ zHgmOnr4DI>tSZb6qd%47bC$N1(_Z!y2sz4<8${sf4L?3b$}HxoGK2;sjacrfT$AYJ zefXDl!l&xHO|$t)7aGSU=Y@T6Wyl#mu9NH|Vu(hbQ@LdQF*Ie3uwvyn`)xFtX+(AO z!+1g;jJzLWV=ON2&Ce(Or7~W#Zbs==_gx%3?(q)=Iz$iYzvZNdIDm)`FyIXpY!hS< zFd|~nGv~m6F}%BHEi~?X;xB78xO07O&a!m=x)y6JQpQu6-=l-8V}u-`$9}V~D#{BD zSpH)V;yjNs!}Xq-Rr8O~5ja=L?l{^x>#(iBqD)Y)>EeGJV~^vbveI;8(!XPyeKup{ zSY%v@Y;@lk+Jl!D3Zg9EBZs>WXTPCg?SO?r8rLW+ z`c+sP`tz&58~m$ivhHGRj7cu^q>@s(-bgobs`6RyagCATm9|CYajFA%(&7>O5fwl> z9g4?><{G>?c4;4&3y2}?^k4pCmjsS31`pD?*@A>oMQab^Y9qOt}a&F+-8-TM(l-~f3Z5UU`wvb~dz)hTs3b<+8EC8D*-frJo zt-kloTh-lLta-pc%9?TY>hnaInDu1 z_DiL0Xp?$WDvRrkw@N^8=p{Yr^f|&>>-=#~=C~>2snB!aJ@Z>7pQ-Gm?GesBbWfd8 z2vY{(g(zD1_q~SxGg!7)28}xNq}5NsLT3p0Xg*Q7=MuVrISR=#SsQ& zCwMV>K*xh^^n5+Nq#&L0o;nILGt945uf2Aga~#>bv;RMLZoGQwrAtJ1f@`Q?2V=r2 zMv;{z&q+56l;_ie-$JVN$@vR^LZ{=g37%OviQ=@6^{PZ+NOh-I=@%UZP9FrlK5i={ zD(|B|9zSmRS3`TwQbjgWZ=|k8IYtGu&hbO6eG_9-QK;I3$KC!dl`pq&)IHo-!p=7-h+P# zk6BKJaXu(#iWTq+?B%;hvCQKnw#hr*S5|Y~Yt{(o1B(WZ^~@Xi+<=*~EXP0lze%Lt z-Me%Cz%X?&236OU@CN@n-+@EN3DavTJ8z>K(6L0P3nQMat69?n51F|%EN1<}LC{PB z?nOM;(ecZ=RJVT?|CyT)Xn$Kn;UZ@g;siZ5{0y=h4!0BzALcV_Fnt(ce?30w*}2Ea z0b~$?kE=IJN^G8c`QiGT)bRAJ9sjOBg-#eD)>`>{57FP^-wX)R$;01mFOHGazXPq< zj=DQ}V`viEP`-$a8rn&xTJ7J*e`vDsJ7p_n9mXBJni)o3aW`im?v#GG_SJo`vh;;d z*Jm@_=p5w&?ie{x~lEX*bB{`P+9e17D+aM%M=kKSBI2Io^&nq4fPL)1SzL|Rln z2iViGtd)zpd7M8DOyy3Qp^w_W9ZFeh%bPZC#lYNZpgbwJeZi~kv3CMXtHh)CKlRid zX>UJrZ%s4OmU~y_U}>ndRbX%*SIyg?vl1YcQmzFrv z21g7R);?%^g7wr4LCTI>9B;KrW-(=R`ET^vf>ydGaQA(0aGkkGo8nAeg!?A<02&NQ zJ^F7bR~MzGGM4-nS`f%9)e!(4lI}?ZK+h>zZ=OO^K=h5^ zv3|Fd^W}GGKewp~L|bG220-fjF|@A{N2{?L0F~TfGB8d1y2k>f;YmT%jnn`_u$vW` zuwE;<(pdyiHk%%7DWN^d{-5X_4>K0qT|}pKYAnq7yf^+^hQe(&_sdM69X)lyHj8T) zhQCg{$aPQ_|E2*wBC1cKQb;$|XwLx5hJWrS%SgWW_&aIzZtjEd^~&qhqf)L|RySHH zwUiAUsS7#Wd~F^>1!+-_NzW+Pb8#Ak*^LufI55on8Y+DhC=2>UcA?MG|MY;Wv#^x` zD$jXriEb2B1KnfQoz=zaYj1uXZ^k+5J3>e_(qI{nxUuThr#@AEZ1(x;B02X>mwKo- zwwrAmf?$-WP_XFon6AsT%R=IOQt(dWz?#jlhA-~#lgN8dMnV0H7z(c~ zUaQs^+kQ5kGb1zACocaC=PZpPys{a>c$PX8%yAuwV8GXSO4EZF-i+v>5F^Q_?SexW z6xxVkm(}8gD4K*B17io?_QK~#NDH07?3`BVC;c1M*olJJ@>#TCD$)mc1H-8Tk$W&R z`|sGKM&4tz0#CCj+vn1jP|^lv^kh=dGWA3U{VJP^0xyN~K0KXE-1*5yP(vb{;#}`@ z{OP7uQMHiNe^W%+s~-P$iuNIT6O zmSzh6r9XQm{b7FQC-mQCN(aXNv^S+=bSN|lfgGbyK0d^Y8d`f;{~y%86UODtIU&VXRInoD@&@X7VHe>@F&=!iJJK!Jsgif71#j~Bw$>CD9 zibKvFQY>xav8C*AKZ%j_=MNMP_QQ116 zb(sd9HHJN9_{WY$PGr<=`g4R*T+Fqu;FI#q3k?8WoDXCQwE+|k6YvZ-F6@<1h;oKF zkr&FYZi1vEl_K$e&AOUpjk$@O$G<4M6}GsFr=zl<>pvGnm9dmpx*o9c2ED1v&Autf zlq5Fs7C*p9Saq(kjvb(gQ4Z8e0Hq5qGlgcXu;!b5YCza!9XiBV*m2BR!22DnujB9u ztkX0e+RB^unY1ngJ1CiP+e2k-#2ke=tABbgLUcN}I`SN_M?1n$b}~9yb(5W<|H9>}8wGosw{U^@zW&Qs6SWPW)nI5A1Ybz+ z>|>e&{{qbWw(q6ENO~$t7gOAnJ&_6;W%ks|0C+%$zb4fv(p?qn7>G^X=J-o+MlfyR z%;G*tB~A=cR!sGQ7uxZM^-x>dH)^@ae?HQQ#x=CG<$Efc^P5)q>G?3D#)dn<5fQGTL(CdF$v{DiM&)U72idv z#y4JbkHCCz&qJGfHp@TU1F1OC_-pmHS@;B!K6?YNcKR1aiiKWO*4PKnmYbTM;r$LRE1KellX_93Ac)( zy%=1X#~2Eap~)B{=u%R8Gp{{!CI)Z8gwAa*VB0o8`(M+4d!r)Pb{wx@nlg?@oE6z` zct(?sn=8nPo>3_Mi|e!fe=qsFX`kjqTHQYM!Jc&Y07Kou5@UE9{(DTOg(-M3>2Xn- z8{ORS68jN_7-xg7ZSHZFu;<<_SJ!^XTF-gyV<^_l4)gRC9U})(f^ApJIL+Ley9xdd zFrq;9vvPA7dj|= zj072BSf}JeV>~zO5on6?EPFO5haK<|85svrAu@PSZuzkM_6fJ!*B|liP2UM!ER7({fr2PYQIi3L)9!MXJvfM$I=)8BN0H1^=Z5-=9{9UXUeGwW7Iuvvy{rXB zDNK%%?i@L!*9-&9k%mu;kDo62*YtFI*-Ob!_oDB?HJdrp$9`*)OhHL|FF%1#(n&|- z^eP?7?|P`q_%qm!A80S*SikYp*Z+F`as376@R^!c)w9U=b?)CHyTvAF{UuVS<|jI- zXn-FlW$n}y>E?$$vSycH0{I~NNm9VOwtxkuj>l4PG>N(bSnbit1WuT{tOIZJ%#2u< ziA3cnmLLcmXU=5G70iLl%q@O3)8YX5be2&jaZ3^>6C#J@|CVXWl?pOr!;9q0?r9wu zX|wF(;T`-})=b0*WC+L4V=km?D{I=P5bL0LqYlTH=f(Mi8u;xzw{8DP6Om0&@E3ij zyuiB+kGCF6;#9>tYUF%UL$~!m@3W_|Zi63O!>yq-;5XkdZCS<@L8FQNDeG%_Zinoj zx*oG(2~RmnrWi47|NY?qZ2ManG#BS@!e?;27{(#9hloPq0v2U}$Z+t~L^5HRalf;$ zXhflBv=;+kX}@4d{FjdM85Gs)KRhS=9{k%sWx{Tp*^LG>t6GeXu6MlLI1`z@z&Wiv zV`ROfVBN0s;$NMlf1Cb$zZgp!+)>Vbr2POe9fNGoHA}~NkKQpT!S&Z8%X}*!*Pqs< zBW6E*q{mIFZTXi0YnQ)m|55q>8Ua7IaF*3zs9bhrKd7{i$uLP4zi}KhN70-2(_Z>! zv-Y{P{Gr>ogMgd9q+(m)_m6x16MxRd>`k!c94L1w&M`-wrvp!aAdhJGa`^J2=hG4i$YA6L}3A8{_ze4%e zJ*$WyTT0M;-M+QAw@p(>eXy2 zC8z-gLF=+i-x_6Zo=LWgf`w7Yd3PGtwn*XOGtV9HQV6qdBZ{)=muP)(U;C-C)ax_9 zHTVbi^pCqL0fQkbkg&x6KAYL^eB<@%?H_IN__8s+) z@Ly)P#LhqGYl9PiKf(F`BR(pYIWI$e9VGvCx}8oI^Z;pY?SNg*R(M;WM?N zFeM(&|JwVnFe3jjI@2@nWJL-*gKVPpM$UPJgGM`)^j#S${+MQTadC-_B8IOhj}W@p zMDBNR81=~-8+1HeIOj`a{6yaj{a`2R%k|Y7Yk#NG`@W=9bK8D*VsIPiMiJRVP6SnCff1K(99VNf_6s&=*};mInN>w<0NAJ+c<329XhmJ>!KBmUq|3$4`qrTyqj!5HxSOZSWgHh#P~1%1zYG< zJfYaZfHnx;Mtf$e-eZi-l#jr|`eN$9%a<-8ED&DJrAL&Wax0u8IX4I0Fpj2Wat+Js z6)E@q_usmGt6-FN_#ug^G~DN$w0+MKMA$xN(^58Db%C?%4{Kl?0qP1PBmq-WwgXdM-{4}aBy&vO{tMdDOo=G>aag({igsWZPD^vl)vagU%41vqh+{E8xQsG~LVF*WU&=1J$Le z&)|uCk#a>@Wjnb78|{nG=3XB7qlT$|WFIV+{_|9HhMf5mT=-tA4jxt;twt&f3>7QFVf_T}N^sfbQ=>vs!wwG`a`T>!IoCCVM3h&@B zc4&QoXml0XraiDPOY3_?5Uy5tR`6`!+>dZOg;8*3%m~iGYJ3PM3{oEBoILvRPSk5v9^qLD1o}AL|4x6|IyfBXsx2n-@4@4rOaAzX?Jmd_0 zl>YNBS6?6H#+K+Wed=JnO*+$Hho_}X3I=2Czj;dM4v)ai?j86n`#qC2OO|^#{&Rq1$0jMTs?~*RlykiXm?J$Xu{DYWYW@Vurd_HPMJn1& zA$UmTBx|g?G@?KAv8sox6Yn+unsr`d;Vxv%k=}+AVE!w8-OBa4KLP{_BF4iT- zmIw3;B@HDHF~lWu2YM)J{>Zk$zR2?yH3apk$oCArHO?wj*-AYsYt(r(hyn<1=LdDt@)2~j(t`^pfX?* zLzTbh?_ns!&~SQYTR=R;1wT*MAF32dR9)z=lr4Y7+@pLx4te z{(++djmgL-?rF_lF`?2xnp=DmkKPhK&lgN&BfP+S8fx_hH)^Jdyi9ZmFk4<@y;)DT zF@`w~NykfL;Z3$8y3$6g7EmnRQ2*FUW)P9@mC)xdcBcKLJ^*{2n9a0aw zk6FW+VF!h|wkQQx(YW=%XXEz*Z=@P07*naRE5_-(8BjY+SdT;x@~{gIcHGAyo&BaqUjG0mvQbu zp*%TQ{ncN7ulk#>zgGR=hc__<8p&XKGUi0R{bd>`26-wbdpZ-rjEZ;u~hlsC)@F^wE|^_gd? zmtTIl`uU&#T#P-g&+Z@H|9IZIm&b%D8^o~*RK=L&I?r02tP`w}?qf7O8VurpNFiDG zH6XjzI|=1$uD{l&OfZUJ$KW6XAokFUmB=yl2CO-ap*H~Vo@<1>_pko)FRJf-|9jON zZ(ghJ-Mz;i$urqmyX2Q2@xKT||Iqlqa_E~OBaRtg{zG9SFacePSJ4&|1r6`XTBb>!ugvFW@3hw_sJ?@T1%;kNKXi)la!8j23B%`-&I6u*)g!cZ>K>S?#^r zcT@7xXP>V=^Gh#RSAXUy6c2hP+glk5sY2p)wh_iLJfe~VAydH;KopE^c?UzHgWZpU z-Sm=vFOb;2I8Lzw5MO;(`v2bezkTCg_0>Q8+v;!s{JUw7*B*QSPf;n5Tt8;~f7E_M z${*qXKR5c5k9_tEKU00-*I%tJJv|Fw;M@>W63&iY=9Bbm@&PvWU7lNrQgwClt?CG4 z1&Mbsj-hzN8`Ds8d0xYR*N8}%yZNJP9|PRP)nBOw>eQoBPf=BcyS$VC1-bGMJ#18l zC>W{Cz_S@eZ#L9K1bFs`X@C+LKrObdU}YrBjvj@i!`vWM&lWt-NLM3SdoiLN679E% zr{E!HKXs!h?CT_jMb9)5azuUUA(x1|0z~G#0P`i^bGyD#!`Xp>u(KO)`7S)o_}9~m zM@}Ew+%A+@T=i_JOP4z;rVjT=XRE(W8u{l#j>NWyqP zx~g#gBxkZ-B(2J*DGfdQDltzgw>S?8<#!i`2g}(b*B_&hcS%{gOIqNqU84RFE^(%& zeuYh;=O1`&)?ZV!_Ho9RQJ6*)_H>W}h4shON~?Gz=}~m)%4Jf!VC=v_rSag`$U8T8 zD``eNlSze9Ji1W~3eBVTzhKli$`wIEr5uWeq##D=;`l3&oS@i+BATN4w9oIk{x+p) z!tTH8`X8t%oN_fS^F8GY%Cbc1Rpr@ho_VMjew4?&R#x5ztp82>rRrAu4nsGF?w&p) zOExgXFK~9l95^RM46=cWWtE$woVznJHpB)610}+m%FS|70l==VahA^YH;EMJuP)Dg z4$rX5%ozaJAZ(H5YWnZ*<~yIK0G0cBtSn}ac%CZw)BfEu1znT_K~d^)Bk$CY8orUT zb@|}G{rmf9Umai%Mi~u;WlT!{3+79uk_VYRb{LXh;i%NSU9 zmYCYRqzvun?3_#RpJAc^Nt4Bd*+8K!8M#vO>v`6h2l`f17ul##-w9CcH(!{((# zFJgr0*&xLkhQeVDVdoh;Bjl~M&`LwCa+5t2n(M4Zi$p-2;E*smuvztShU?BIDM9Oq z!WRDXelZk|jLf4L0LCuPRf(a{hlK|;^j8(n5XqD$Se9@}QdQvbYj@^$K1+z^` z^A4hGMnC?ks-JV63lk{)^}BDBzhI$8m`d|~)4=NFK|OhgXJ!4NT(&&5u@0Itm8eG> zhF5xlriWw&~faDykd>Zi&J?YWS{2e82mMIqJ@f1HGf>q;j4A5fJ4)V_r4a!+v zkw?5ASqMW>(mA4}m#&i*lyyx96VC)`H~J-_47!%irNuqgCN=g`SBs0G*si zp`bBj4Ub}#Ps(%Bj<|F#>y(xVH{}8PWjaOIG8ZD-Q=ZHE9)qvPZeWN5hf$WXwi|^; zk-VdFO|R>24anBv7`A{EObVtx;Vh28uEn>+mo^uls>tB z23o#|FL|W&FaI;LR%Z_7E=kIw!D0GNoy-F>ZRkX0zvQ>lXK0+ZG+LToJ`sn)OWjst zJ>tc`!KKKc{nX9V=pq2td2B9?7#I02pOt6JcTJPtjl)!is4nAL=$W_9Kk;TG&L#1b zHf{7w`vsZ+lRx4tIPw?kk5T$ZtVxH+`TGaR$Or6I2D++?=dZA5AY~vhweVV3qoH>j zr;%kGeD2HFtH2a~J;e7cW$=e)5x1x-N6}&hpX{5k`yY+Xc=%ogsQw1E2I_ zKQ`7kF%;s+N0tDo#l8r)b6)vZxlBc^fN1m`VBAbKI*K!nsYJcM15P|gb$($H*#hSY zXiS+}*=}N-Oe&n6rK4ntiYVh^zr-P^=a2m?E$3#SD053#3Tpk!Q(y2szw%(`^{fpc%1FqXJy(AWFpUl+~cT~YuA2Q{pDYOz52#qlj^k zw|RDYNhgknrTuOZ|F!lX1u40iIamKat;!o*R?h$Bae3M*!_A)eS3iY8rKC=E{Z(#~Z!{SOEX#7iJ=Rp#?E{=5lvgzx z>Lk=+hG9vCm$6z$R#5&>R?p&- z@o9)NpiL#Ntf`Z_jy=lXis*50lEC=aT7O+6>nqD=L2%wt|C{0^^=La$%1r$2U$1t7 zg`d8K)a^%}_$hUV^etb1&qw+G2mjZ9s{Z`n|4m(nnt3@Bk&UI6`=W59QlaEedu{$M zHhiD+#94{AV`;x^BH!7517Lei&G*yxOJzY#T2Y9xy?8IufJ{RVGt*oB;;((G`X~SV zzbs+v0Tr)2LPpK?Z2Jn2ZW0u_WFMv?6<$*h+Jc)n8HZ&ekjtIY9v@t%zncCFi`P5x z{|EoapH^S_4}Zgx`}=Qrs~f7MgY-?{EH(T2=>2a>`c`RQwb73c{~xt~I%*%`|HnW7 zpCtXsx19g-KvQz5X!x&w^YhiO{dZqXwB5PMa~KLSpz*AylPKnsfohM9>(ZU?SI0!y zj1yckgf~=^8ZNxlxeY&A+gPb?-n>TYQ557?zgP`$VDu>^m0mU2^z$tLQ&7>1KB+@7 zLTOlVJ4QG{g4=3GM3;dwwgk%Upe z$V0e#Fr4+0O0yqB;cyoQ9SmxP%jI#4Q~?gQS%BOLE)$8iKll@X$aj2u*PVlAGrvPt?^y^59=R~Rc( zIgKVo)BEXvYyAym^qhJQ!NEQTog>d8jFL`ORf!A`H)Vk?JrUNXSIuZXxc$?fJ38fR z-l*4~6nVh<-yjYcRoL}lBs9&U=?qoqJzD#v#Rh7}whQBP7l!EGKGH7D-Kf6u)$df- zesnvuZseC|V$GbJCKc1w>bd7GRhKWGLosH=s$*GdS|<|m`i(cCLC%)NP&k62@L(6} zAq7hYoWl0f_Ppx-Kmpk&rph%cu%;ny@mm?HUjIvDrF`0~@$Y@dBA*482Ah6n{?~HI z<7l60kf@cCuAKJLp;LLLfuNDI8X7P6Q3k7&#(2KNdA#fM@Vng=l*dMEaELfwa=m=^ zl753J!&!v8)t#ly>c$<;Md2I<`O6pvr>AC7=1mMBFq7hndC-ef#S!ylbDcvYphK#heHPMxq0Yk9vGD+&o#}d=OnWD;bSd12y zH}(%4kd|tbPc6&SyssgynfYlgzqi>ZEMY`jrQLM~zl%Q443VnPb6j^wueomoX#0DG z{(CuNba;4y`ZXAwXMBh2a@KA6rj7Prr}Z2YQFwsDdzZ7Zw}?bPIH(PU6e;WO{qi>z z)^*nNub%&>_nl>ho3`d(4Trxq_#9%eJL3GCqc^`-^^y8?gfmY122Dj?&tpI?0m5SY zw0&v7R5WX=L~7zyI{xaq&;FX0M|d@2>B*h+m%w1d!YqF)9=BksUR;H@JmWFX{cYrtY2`Fz&SHSj z&}M2M)27;vBWCK;7-oF!35`FX^=6ZgR$Ux29vFkIUUH15B}tBg`yy3Sd5 zx%|QyaKkxY_V>yQMKR$^uY502c);0@VcJMq z9VU#5OaC+fC{FvPYLf4n=2YWq!LM}JIIoFM>lF?l1lK~6#+++DtNCwnCQh+DH*!<_ zCjyLdKgNig^1PnNMx#WH9^{|D*-`}l9C<-2_DyBwJ~-5|M7~|dnE6E2aV+yQc;ej} zsscfSG2Y3O^01x%ncZS%hg4X5LbPZ@ua_GglS*3#d@Pt;Ux9WOie@QoYlpiM7rIAkF1l$ zWD8x(J}JnZ7bP=;J;BqSc|8Iwee7M#P@%F+eCdEQ%=w0c)T6V)4)a|DVM*Js(Ua83 z@E^}7IyXI;^rL2m>E(SL1i5`65nH< zVmyRjx}PaJ_rlj2`D2jG4l}bjobleuvJPk31j_m^i!07jC)NM*zy5F4@BGgH!!#=^ zW3w*kjHQv%by~T`_5UONJ8O#T$v@!v7kXx24mF3Cb@KbCU;0w@FaE{I>VZIGhT zhU4t}bqbW0bQsk6Nn>~9S!6^n_x-M~r}XDtf0et+u*!>OZmLs{wmo$)EE#Q;U;KGm zS#H!-mAg%~WgJVyAy4@K&dr7D-~H=9sP10BSA-^nWY07))s4b*5hhA4rC#5AXZz(@ zt3+D&SNog(Dk4}7Pus&x!w?zYY8gfW^8K{00RHszm#Y8vU;blKlb&M|>m|qr8{yKn zRis;=9_wy06p#f}&%F-HW|M(JMJC~9IMAP>E@ji92lT(ezfpw$?qC1=>JHJFUUpI9 za6=_dpJe~jVBMx*d$plBzdmYThW=#eF9<(_^N;XfrcJ@klb!!h68|blo_XO?^*{W} z|EBuntDhh}0_SCMk64nb?_{{z#}KznO3{jRWYe4(F`}2S%wEM=0~oV$b$ty(;oH@o zhQceqPz_Ez4NHw7ZM~`&QEVj1ak^y^chhsB<~1j;ILV>eZNs;zh+#))wIEBc0|bhnf#` zaV`jpmP=rZskE;@D9k%LNnu91y$S_$4+`MH!8MdND2*|qb(-$8le7Cs`Fa2RYvv-+ zjEA@3*BI#5W>GpB{ayO+r{53(gNxvUwIOGW%8RM-=oo_>(S+N_7%@nDm$RJe_iWE- zoF3DIc8^peos+^|F-{8@``%6(rny^-yjSE0s~X~*(V6p;)m7w!Prvd4b7ryz->1CInPWF^ zUE|web$;^aNIiOqGxt=u@Yn{k=GX8vIB%nWOXZ@vc4*tb`y{_HDwf81qb{G!1)+yR ze?ry3|2W%+jG2qf<6cv_K!HTW>0K`#rTfsoXtR0l3$K@kiX+ap+}|Y~@8&X&5x1({ z6;hWGr7$)&P0CE8LkFuP8rbIiP9q2B*S4y=E8Eq=lJs{{O_28Y;RE(SFID|Rv$PHrKc)CL8fcfu>@LoB^$>IoEt=!DQHU-R zS)miaG3WK2z+=-7@RKOQE*vp%*f8pRWPBp?UAbJZ!g#kLlWt=)Rq2Cf1+0?d?S!$OI!8)lqBf-`9ZeGDgW}QY(T%)o6gtzM zG&-cZbG<-e-O;hnyd-7vAjXX$oGCCQc61PRQc+LFg0GAV!-~Q5q*`ZFeh7PQPe_}_i)pVlIOJ&~s`+^Y7z|JPN|_6BEg zpHJFOs!3gbdRayDrl0;YCEw~iyooWN{PZtYgBPF5{gkE9yUxF?_ZT-c)N@vtbOH9m zMwA~sAFey8YcNC*O=!w-s3Gn9rx>l=*J%)9=ru&tz^OcO4Km%VXLESon6k^t3g?&M zj8szFNOKr-rC*frM$URng9?2ki=-cWOs$Nc_0g7_SQRR4eszd(6KrZsjcD?mL};NH za!nQf_u~J;y+?X(H`b=C((tWZBdzKTD%}fT6x@MCcv@X7KY|ZuPdzeC|9SeT4pA zdLGA6hWzI}-;oEXTr2oZNUA@Vl^;58Crf{uI-KQz;j4ND?w-YK^SZOIl^| ztl`{Ot#paj|T+*xE7z4A3?G|DqkAZ<7%(nll5oSpyTMCinSNRraHQWc3~G3VW}Txw^uL$}obc>u=bx$a z&4T3f%q!;y%)QA#QG>%%u?FqfJsK2Wp}Pha3vypasUxDh4{)H{+h3)>tKe;&=<%Lv zcAB%+IkVf#_R9RDKIqTX?duzyXLpa3>~G!00gJP%FcNNUAZx*Tr5g?0u6Jf?7%)o% zYufnO1m{3suBI^*4v{9*b>Ebk8>AZ5NNAM1^IuumPsdP0v}X`%6tq6iS?jIOtI`R{ zEKl~&C`*-Tcke9$oBM@>@Q~q=VIm2~su>K0o+t14$DmtdNt!KGR{r{1{5ga%R{Gr% z4yk+yocg<6{>e}Ocsb`Okf=nzQFoKXZgaKRNf$kn= zrn_HnZ>@T-*37KRtj*td?*CV1y?(vFrRlD}Dl`A({&zX|+;h)8=bm#S7jp9`OUY-s z6vGrA>(L3;BS^MWrcTH6Km0b?$!0iU#@N0|3&+w zSptHSKEu)ZjLhNb~mPFF9B{=bDn3;fu1p& z!iVAc1|D3V!q|kaLEU6;Y(nY(Q%^mae)vN_oX$RZcAx&qC&2kVQ+oQ7=h83! z@V~(az5y3qIN(|hW=y74f}V+bkrB@h%8!e9$6*%?s|;!&4e6g#zUlML^3g%v%e-6= z*mQHuPhV;Ilhfnr8{hl2>BQah#06oo1+yx@Bf}2-VV3iv(#4vG!BJg=>7HePG<6pX zFz7PQLgAp3%Jckt&<4)P_o=@;pML2>zZPya;x*nh*lV~BxrOa7in3{ayj+HS{tk>G znOFI+MK=omN96-d0m^YOmmI-gp!`+Gze(bp{n!8FH>S`0?6=Ul5Ods-4((M_4~ww1 zr=Cc4gz3jwu#U6nWz`u%gp3Nb9AsEUQTXIDPh!p2Ow*@7FEuC6gg`~Yq z+dIVJW2zBL5jdmV93t)_Dzok$uI~2O*{r}4d*!uL+h?E{(<16@yN)Y&%HF& z%Prq(SPAhQMH4bye!0PQ#)7C$lyT7i11Jbl!Y>nhh**T(_48>E+;4)Py38CV7U2LE z6MMK|UL(Hs`713pCA8Az6?gpa;!d*`aR^V(kER(mQH(SZnpUVi^rb`0x8)TSTKbTt%4KW`o9h z3o8zkpq8o;6e!ICoswcXK9A_8~xV?maD3SIP1!uzDI=T}`dkH_^74oZKWF z&qsgyb2XjUc_jPWH~!*@DLitf&c|B|Sm!_T$AzMBJ`Dp)aUtq!e~>iF@Hg-`-|S*l zvvi4gp5s$#_H(}|HBa41;U-QsK_$kz+PsnaK8?%C`BW5%d)WmQ5*H?l>Q zZ@M|h{Frx9WMzdQ+=R+41u~Qq?^p^58ueiw^vzJ7@hiWR^9AB2^BJG(!Czrf-fc_F zvWP8X>}Ng3V8KdUwBS{sLD`CqOavsyjqiV3Alz&R?WDrF&CCJOX2v+<+4)E1dR-+O zW6=4|w#Mc%##|_V$V36ZZhjq;uDeyFx~YdHDu)UWVV+?hg+{qH&Ii&4m80MWX%v7( z!>wY`emk0)1w9GNL4|H+P8#D#$_rZ0Z0&|}nR}rlQ<+8HHc&x?ZaDR1VIA~Xp=GD; z!Bi+ME?x>RJz53%Hk$P z1$(%;+Rr)D3h{5@@_PEjUtT6m!qsp)+FHjo8@uMV*~kOf@-@Pf=~3&RWjo5$<(W7ZB^B95>iD`b<^O*l`&jz!_x}%}EX}oneqgB`uFYxVb@@-q z@1K9l7F%~~TOL+ZjL#f>etOXU{#5<%n8LvV_8ygg1ph!ZFsVc`FvIb8gny2o43rWy zN8|6s>CZHqO}^*5zB9cQ*Vgh9D)oZKa_+CxO5}3Akfxe)Mu|BDQ6N&ACoyp8ZbDj&Q# zf`7*Q*BSm#;L7d$e(c-RnR`yKkVmkha*f^hZDK~$A@HY8-kB!csT-?QhrffL0|K%J zy**ECosB(|eKQZF`p6u4u((w^V>&(|NGsoo_gM53S4j6k(yobdV-b$ys%I={l}SSI z$Aqzku%y#vao)mBP-_`xXO*42t+YJ=U23vZc?kLqYGz>_aRm9RBLE(*V%dVbKd57B zW2MpAZebZh>{kAoDEykZ)EvcHPOCiWUmR3-5ErI{Smaf(AgtFr&{Se+Vc}I#s9e#t z!)U-L7L-9s`6^y7kb@uQi~-%NTHGBRDg`%ptGO^)49>OGHacpinJ^1PO z#;^17W1o0B{l;(pVYKzDzUptL``>gYb@2)L(zf-^DhkG@n73ivCWw)M8$>qZr#)Sd z+U~M^CVg5G_q^%3Rv@|k{E`>{k>~Zse-voD0^TAAN4$_vbA`CYWl26P?nald@Lz$b zdjBD<3RM0;_(9q8t>8g!)5!0H%RmGY?4 zbK^j5U>((N8PgD&W|Qfh(o#sgx4!bET0*M~a=K7yldWem{)x}VpW7fNWEUk*2P+?W z+{qc}4Av~+LYe0tE=)q8OV-AV(tV&-K_Z$$+j^sm5cVqchqPFf58x71D>ds8_%DX? z-(}&wLSHU-chV|t*dTw`62o-fM1%gf-d)-fuE!4T%>tv{HM9`=^uaG z@$d=7?H~K&kGk0YEnJUw9{H10gKkU^GjEuUJHp?$;+s6B|Kf1;j=waZi|}C$#mesJ zWSaQ&&r8Gb3WiO{+8Lo@`uuI-C9I_@-gaJ7c^Aqll!dxGb}WY*^um%bmrp*FuM9;c zno5)&N_%&pS|8hENx8JV(Z*PE4HmAm^T%QnfWj3OB=Hw$Lr;LyzUF;}{mxVJCGs5# z`nR#Zw>-OV5LcC1v8}=b+8^{kwu+Yk>F0$x~4^T+_ud3TiBO-8tUC z3Q0wSx!#EWFMz}k?Jn9cF6LOF8Gr35d9TcW!9S?DXMCzOtK+UWtbwJqv|r4L%Av>z zt4zkT3Zs=}Vimgf25zBv<=6gkYzGY>KY5(21Qk0hm4h_pn27$Qv&9n?!{VKKz6=b0 zsi625zudGhBDN`Wah+ZHRo1+2SWsD|LMtn#Q5?~~SxG3p)`c>=msvYEP!f*8hpI%p zbXnKG#Oidz8qX;Dy72eD4@>;Zfs zY;Ml?D#dnyr2-Z=JBaVPAk(tIF=O7=Efjm?X+LG)SRtPBA4)^-l3)4ZGGJ1UKl#F( z&NTL8*+&Q{Q5J^9AeIS30DrGi!cie5?P5HIz>#`p3){jHmb6+jXgTO7I+eC(c;vc> ze*w1w|DwJHP6qEs`k?}^bY1>hT9Er{7lhGs zMu+&at1GQ^?%AdE$&X)1moK_`1(@Ql7_d+Yu(;?K}9SZPq*XvsNGCi>=a9-u4^+Pg%>vIB~lX(rS5Zd_rAe4>Moc#vSJ~=B8CP zy(|&av&CA*e%AuIhB9{2n1m=P-8?W9JWW;t2i*<&D?QHR!EUy%seW#EJjv~kXQner z@y#h``A*sY`DuBN=Vli9m@=T5zeTGXSpKITJDcA9-uJ~u(*`8-;Jd| z&L$JocN(1`e3?) zO;z&#^0&HN*XTo8pZu!EBpMdD#`16t0M-WoUzRWatG9AZU<`TJM2B3D=7p!PGg-;d z7L1D5#jF_5b`ci$RLkKwc8|ruJEr{5`+uQuH|hX#z`)R%z=zZ?6p?Y^&Enu$ zfB7n0{Q$xrb zyQ~oigo2S=WM~w?JIQEOwW@o-N;lp&)}Um%hnr2~@@=C~%DL-q6bm2fF^V8qx16q- zI=xofAkJTl54qx2lNcem)10W|G7HzC`5+<0(_PBLjf?F5bvH0f8kTi_2FZ7iPX%ks zAoTf*S2I<$Z2=Z9Bdb+}Qdlc>byYOaB&fhRQbcjxT@(sCxVYM03k9Y^pb#_(e;VgT znAnlcoYV_TKZI^Uf0>gYg2rshF&9U1JvtuCy$uwi8@lIYce1*v>Z0rJ!4<;ypQOcLSRP=j;# zk#R3-Orkd_3*67ZZkoY$#B$jN455u+E|k6*?9RxSd?tNM|oxO;?st z;`fLdgo5zQF~-a!u8VOwI?_P6jB?Sj%6o5V*nZztQmDfo|*!LRUd}1@2mPG@#j92`w#QQOMY@v&mo>xM_(wh>(*(j}Vra zfWX4%(lF6U*K08p`BESnZbqR2Dhj<8!R)ITzx-yT%)f5lix`A%a$qj2N%W8O`)%X& z#pvG_v|{rUf0`;N3MYxlrAtZ6+|Q#pFX`?kIh6N4ImVVBIz&=XK?bp4fu3(*8!hI79(TI5mo`^qM zwu!3|7bC2pwD`r+n{n>^sY1U4e(H5a>nyFQR0O#63;ctKh=LgnDU)|fMT$slZ=+d@ zR#-Q|a^3l-A9khzaQ*ZDexA0DeB41hiOXCq&=ycsxwdnMxXPeh+NkRoq%%c_W}_-}0%jmdzG}xt>*b8Bq7| zU;zRNDc=dpLF%dNOBK=bqda0PQWl>mo_y{9Vfdg~@E-1m4K|l!ld=+9&RcMv&_alDP#%UWbvCQAM8V5TmyIzS z5eqTgSTpau_dDL3&OUxN=$~_qmWG-4w16Y}cSQf4**sqP{P$+?`A2{J$C+pInhY*5 zc;9h0Qn_(Tr0(K@XoYZAZqk!S3jR($vA}Qn{2sVD!~%VKdMf0EC<=cu*miE(<{sH@VED0kPiTw_4P(p{mYJ`C_TO&!AC>P|0C8>;{vW~r=E47K{@$0QZ~Cvk7G)TU z!o_FP+QbtutxUe=OpJ9}FTEUH?B&<_67xtT&Qf*?b(IVy_YBGd<#B)WFI9Ve$ z5SDY2!n{0%5vvpLqUM1lLA0~S5CUU`HiHO15RZ@#3J4X6k%PqD-Sg}+ zqwY17o>eVlNV!?$qcC*~1zWqx-LQfXX(&zMBKXW5C$QYag)OUsbLTIoKl!6aV)5{KpZ^w= zwDV+A2n&IWO4j9-Mesl&@M#<-&ZME85%3B@ma7WdqwvH9j>mrcJr}M8|09%RY+Td+ zs5J2KwprMhen+43o%c5u{gsmlOp=h!U((-<@>LKH5g$&y71f}A*_G86@Yw9Eq|J4# zwXQss2C*=n7{wY6OX+448ib;zg|+P(?#Px~y|lQzo-Qu2!2nt`${0~Wc<-r+G(VZ$ zfhpXx5Z&x8v#BED6`?2^svS$CGY^rkR)h$M>5~FPx1{~A7XHF4HYn(}xC-9mQq{4m zOSb8mnP|`I3UTxh^1AD9NOw52QKgH@4L6jvS**G-q{3oWcYq~*k6*y11);+Ih*_YJ zUtBEEf-~@wa-lPUTP!BDED>L}T}a0U1n@S_$qQODiqKZUwzOsgcavIm`m&aUD({8= zaJ`L{#sUg3=bF=`hwjHA#4I%*Dhk_Jo3v0ctP=~h1HGgvd}t4}bga6W=9(xSab-G) zf-iH`A2U3LqSj8~Pp9XbM@J`&{yi!0(IN(AZ0XZYjHtnHIMfJ&eVJ*X5`FR=m z-X^X`J2MENiBTnN_{-yq^El1detVSlKj{BhpT+&0vPe||n*1Uy^)&09rORpKiAPce zdNawKJj{9_Hiz)oS8`p8@f?KJ_odSa-s$sQ#=`F8e5y_#OSNMsQjPUlS#C}l#YARd z9T!iz7v+#1oFsdXhBxjDxP~5>{P*E z3*2Vt#kx{u>y{glP^d?YMv}N0b!K*!aiT>YiW7LZs!AUfCzj18zV|!2z(1bEPGjp$ zO4G{y1d{WT{cHKwI}}PP3dvKRM&(jin^D)OrfmY2J^I=8Zx`I$MgbQVdE5`>5N&b; zLAIRBR*?$Nv^4{2e6-+9vcMzaxxf*y45AE2Dwy{YgLWr0#cl~x~*pisFMaLi4;7)t8MLpn9SChgS4E)KA*3VoR?SvGLFP z(HFwUb_Tvg4G-{dn})iv%*w?0q+Zrr#j)`0$G?wO_Z*k4{uOABkvQNoTlBqRYR zaDno&l8%jWC{d{lc47eU5MJB zV<`D*z{B-UcqqU+QMrqj&s}6v>sTYY@p0t}8w6S3NMDB{zXtJ+N7Dp6-UyrNq*3%=v|{%`;NA}#QLCG_`3mj9za`cvs&{OZ4qx*88yOTw(A z%yoP%%ijXd0$n)rCwhB$-{S!OnRexVDW7x2dqF?wIny3m|M1wXkJ=Ap7^gwRN|42P zJxu?O;D3aFe^tld-~BuPX?oYUeDmS)&)Ao==kX6E;9UMDT|wuLn)Z#y)xn1Y#D#*%AFYqQ5t4{`t@T?%zq@ z^3C4@kA;L4eo@}pjm0D4Cm-bldKcU5B9jdM7CeXlaf6#1$DIG=<#hi)J2jK}#ozk# zUw{wIL_e@typ6+2loJMnCvoa%A(L%{hCN&!xe%#h-BM{F#AV0gq_D|yW!Iy0?i!$Z@yS~72lgj_j z|K(fLEOA;|_{@(*E&z{Ricww^oCPU#NbGDwkYX_H+zxeb*`tbYzxtT<( zw9E{5qZuS|fB)+?wg0I60s=?yzb)hM^^AWX`latqci(q9b+4RDYmfdvsR`3@$6Y82 zr;g`lm$WcQ95iHjI;Dww)7~)dFXcg?m@+LP!0;NOsI)d1f1dfLvQVLq!si@==zzFL zZ&q;0vr3$vHC&B4iPWpaqpD&pGO&tZ4=WNE*a&IsDEqV!Y;9c)C6~LWjlI`EfoAN! zvC4D^9b~q&%G34e)*kc>7jQ!ZxT+%tUu^)(iG$)%s?aRkFJHzLq3@d&ke+``h( zL^5&lO}ZY>5Z4s<6}k+Df^Zo3sS16JafnC-SYeIALKN{7f}PE@w7N`tyQzuL!_Mg- zJdu{yN9t*uemgdDM+nVySsIp&z{vX55EQD6ovI!q?j9R*bmds5(oP{rR(G*T+(V*H z)ewsGh_SLB(`Ez3fx;4fm+Q*Qyo@opfgoTRVakQ`m%`F?1_iMeD*^U>7?QU~0Ye3m z?G2Q}C_4>|Y(MvPQ<0WC{h92;-%L54XZ}5qL-KOGlauFnc=tN<|NhikB&{H9tl~~m zMQbf$;{cp!ixqmQiIDtFz@d+*05V0btGCLKm_KQNZt?dbv{}X9=5M|+>{i4N1(afmxL6wU}1YG;U zx!?Xn=_x6i3nFAjh>YS!Zj9$yQkV-c6Aym+^F9||BL4sYKmbWZK~(fg2I6zlywvi; zZ6WxoqEJ_XTL>B3YYVBf@@#4^J%t{&gMtu62z}-TtFW#>Ft^s;PEQlZ=)z(vU0K75 zkg=q&Z+4=QPS4_wjNefdwskB+q+bKjhEyA614B10E}W;I*rd=r!wx#*5u#jY3@Jz+ zP|9C6@D{XxzpN6_FBAUOH{y*!Z*||QVEGb?3&->HG#1$4dyZo&qt8YL#^yTipf^z7 zL=3HHtvn`lN|8VBYhkP9U-Qg-H3(m!eVz|-s;w8L3bBjB)p*3I#|9NkZd1Yt&YPf6dZbK`f$irA2 z4uOM%%u}?2H0-WKA+1%Bwp_V9tC$Bl%46yKK@(H^4Py= zBRHZh=2~8J-rxV0=p(APPxj&+==2KlZJ+sMsxaq{;c`(tkBx`aZC|!&865j1P`(>8 zwS?N@ya%!jPR*y0yY5f*Dfoh@Ur~TCit@z`%QqJe9{2ZuzRo4&H?1=`!AFZyl`5MZ zt<0GZC{Gu(O#~%cC>8eWsn%2Yir@NIy85l*{Cda3|C}r9f+2OB(HRGT4w22v}JMg3`id3#{gS#r)yeFNL zkMjtW@ypCDGwyny7VzX$9%-I(QEXWebT@)rw| ze*2yu$5&hfTj6UxY)4Qk@+^-~Omg89%i<*J>I=SOom6=0j?)bz;$K$G<~pe4EnTmc z{C_};I@uP-gE%Ek-`H4W!^ByXh&$=zvC~-nvH34t>KFYQ)dCTzgy7p?v(NI?PC9>n z8H=?A=C0+mzPbTES{Lb+c%17gEX?oZ>63(4IFU}AIEKfD?B&GzIuE%i=G-%E_@hpf z)3YeV^)3>H1~2Ve$1xx-X*no88pcK3uvV|&|27+HbVa_35O;;V+}z!RXSS~5xEm(t z;p@h+QmhwnasDdnnBf9Wq}+ekYmR7t#*O{lESF(dmLDAv zFwC#y>wM#8m;cs>-WvV!$fJ)Gg^|dvq5VDchzo!)3RNj&Dh6JKmBxi_q*Rq!c6~k zcO6~;UPJWnR?(k_q_e>9kw+elY2dX&|8G_MGlCV^d=vZsr~lbMOLyOWH+TjgDGv#c zTf^FQ0{5hDO0ynr(A49P>p10ArB@d>)aj+c4STM8!W*U*g(7>N6c3tFp2^UJs{k7X z(Nf#E12f-SyTXn^TpB3^AfCg}$YlE0KmP~mPyhYHWQK(a%%!^r<6!W`m?Mwi7xG=c zExH()#h@$~!sV0r^?k;eNEOfHov4{ZHvXccBR?}gd}Z>RRsQFH$!Dgo{pNQDljXw0 zvgjK=+3Lhag2D(1i_EG!4%}fIjAGQczy0xg(TaiezyH&Zr2p{IM}k-B#?IZm+qQhy zR^IORAC-T5@$U%!uV488M_>5`>A(1%uTQ-z7gFovf0~*wAZPA)2t^?lg%C!0NaR(L&HS<(`^6Il!ToQyHDDXL(-LiV*_RIRkgi5`b-LMAiV8KGrUo0OLP|4u=W4aw(s}_rC zEyPt0+D4oKMvgs&)F>T&LE)3nb+@&Mi$DcoO_Ur`?G_3U{_r1_ebHA88+ zcM;1*V>It?2wR`R}eFghWwjixun`PbplG(ueLI zI)VG9G2AjKAj)$mJF^kuKmGJGA*>z2HC=-kE(%0cY?VibOootc-rO|yi$Y;`$surY zLbl92`ZC0GYVVdaQ;{3D0*u0tb5rEQQWVhnfKQ3grtixmZae=M?^?1jEKAW1n(^6c z@FBxk6b|8D%rbWAw;cpoJA>dGN^(oHzFLXacEKf-3;VSx%jb?q)C_>BtQo@nXr)3t z&W)?-nRCW0>!opBx57|)=;FGKT#7BMcG8oVh`)zWu?LPf zNvIX!i8);A8jBDmp+Z#gU0?hI^m%jUZu+>2MS&JHF4|5(GbR{g;5`E^n$_3b=iDe8 zcmvySR<8#BAw!3EH1?~wjE0$bN-Hq$xJH|t#)^WC10-^M_E6*-H?U0{C>7G;lS-Db zFd+{+RiUcxKeY;!C*_nh@TY++U=jTuI6`WLcMAL0iHofgpu$5pxQ&dk$lygSHH>+n z+euwpx&Sdx-R)S94HSDWJi@&(<08OYz`s_-Ira!~t%h+6XWZ4WBnKG+Sp=E~)?HMh zL;ts^#}yP(DhlmM=ZglkYMlDaphz1gf2zKJ?CrH6Pv>|aAEacu$(KHv)J9$RrND0q}+Ic1^U()V_0j$5YwxZiSjJd-2LS856;SGJc@_? z?LVmNLHb;NezM(ON!^Rjq(NMK<6xF~lags~D3N%@w>-*x9RFUa6o_$zQf`CY%xPjK zjlb#B)9~E!xUcm}^fBrCsAtZH3YPuvjYH2t3a32V5XvC>T*1BZyj=5Gy6YST^IG9l znWwWAGw<<|ii%i_0_P^1E1dVV9P1KKtOZ{oebn9N^UXg6dPY5M^UZ?43+f)iof-?| zd15JA?iE}Uy3t48CzJ+#<=b#!UMjHyYK*y({+9QJYbdyR*EZT#-ApP(8e)U3ijWwC z78r^l=5+G~Zn|w$QK%J^3Z&QoK!z%XLfOQ-j&t9a9x9wNhR(5hLV{4v3NeYLk%50e zP#p5GUoyUMP5+A7p_HXfQ8v%5PV_6|Ten&@#+p`%B#b_@{icl__RN893{Xkv1_I;H zDhvxn9^*3vW2|Qt)P8jU93cOvki#4=M5jyc6k*0G}_9!ir>=Jt#u7+Y+xd+ zgpo1HH@fR6^}!=HU+nB$M21mGCy#6Chbv|aihtpqai)iL>jv}C@=`lpxUi1L1^CUU z7Sjq!L&umMXg#Bjw85BxS_RI5vv*=ac;dwIG>5`&1in=A?OeZscYzkM(XTAvnSq<* z@U&VKiW7l|O*TVm zS?DG!d8e=}gy(i07wZ-HGuJ=U)5wy+Y2}Gs){=)}6vhl`3q)F&f_%+6|1v4M9PwP& z4!iCgB!OkWw={yf%x3Xa=y5+z_RII0 zgZmVps}rNtgjP`Qp&;&DamJm@#&8)~0 zCS7T`gV2k-yU;})X`}s_xsHlO`~Bje{hRE%`$zBka4c}#>8TmBNS0U0ubuYaZulRS ze|z!&2>v$@{wkV&>GyshRf%!d`Q*oNJ-U-lpLvj7OEb`jKKiH2G?XKQ&AC*WyblX+ zEC^ockp4l-rI-Cj>6j0fwk{EiYmM&3 z+Hi0rjRUvl;245#`jPpx42tQ&(u5U1|aJ$vR)$jN{ zD1fKoqj*-XJfhb9?T;J0U$oy#;Te2b7R86~$a~)Ab8S{ReLODS<(%~U@E6t|z8uF5 zEFZti&As)6pFG=>LR4v+>kEo zb`HEp7#K&uj*&av08}ifq>zR(clghkiE(A!qOPU}hv*Ak)wNL6E?z=7 z4328;(HzG;Y!ezmzjivt+#U$42{0g}h2MU=-NvHymuZ5GzJ zc^r|x8v|;J$9c0wjDPae(ngn!3iG$1KU?A||AXK^qHfxw#WlY+rT}h?XJTgU?w)5X zWEaaS1}ha^sARY#==C1;8#KnP4bETtzq@SI*x9`R4v|9(m!sXhF(td^G`)v&O;%P! z(Q)T_#$TlG`|9ui{+GFLzB_nq>8>n)V5~Om!+0;}?_y77 z*9tB@2jLSY-tyN{bN)o+YqEG3xE{>^1qBoi+z)V&hwMcNwk?Z)=}Z@aeLED#ZiE4^ zaDzR}`bGsv4F!$LAU83T>z^KLL=}qi6&|J=8O2(MUs15f8fOK?w^mCL3yt@!;Q{@R z*NXC^$T-h;Z#?|7D^(P2C=QOHtk6nrc?k~*;B{DQ74R?1cm9jrx+qMIyBC(3q{-t9 zr4!?GNClh9E3Kbtbj(-6nTL+)_)~Ga2~E&drOHD4V$eb3eC1qN%wg6^m$3Fv6)R;01U2hRe^{<~ z;GgmEwiw$zHVCT>GH$i=n(c^mL05ABc|YnIb?14ByU`G-t11N% zBx=cKyh6u_{TA>ESecszQZ7}C`W5BV4W=MZzNu%7Vb0}0R1#aKE%4A+RZNO=VWl7A zlfG5i&AqUml$*pr%s+svoo^@ zTcHsR_+9=S9~*2EX~VOM+u>pt*liNudynxKFb7|pZyNBphIVP{78Urb5Or+0BYq9* zLEXXWy1PSOo8%!pM#ma4w@ngn+PT#+Qzb73>vQOz@U~AxVS6GJw1G$7u;uogDs_iW z(pPQiOXmMyWAZ-**ft_tx^VIaYrox|`}>XA|3~eAWB0%F?{ED2Z$u337o>j@x;WgJ zm0hVjkBl)VHd)ic3BWJnL26|w=3;r8zxNH_5IjTBS@k01@p{pJI5E5&`v1^Fna)1^ z@rPd*`k$BE{y?2u(EqO2e&hcDpIM*Dr^rXjXZowmWo$xxY``e-xwtoZ0w8cW*`izc`$HFaFrmUCk=iDDF8qK2KoR{tYQ!EMp z)lYpS+V755nfW3iFXm>)tK{L;?QH*1`A6_S!oQnCf4=>DzcKyI&%ZNmKK4jzB3L+a z<^dM!vyzXXah@oLlRE5FC)2>_y|^Bof?bgk@fY+P>dKngxIfZa7wGP?Rqz-V;xIEV z;H5JgTPT?jz%MMGOP$^t)@uVH(4T6|rDhdZLj%TeG9O$E5le4n8`oT66)20O@(dS0 z2%*{t7_=Ic?p1LqszsshA-lZq%T*Kx1H_0zb%&rgr8;S5QmNokI2?32^2~(S`OD27bzGp1qCiz?w6eL3@ByV8LUdz^ zA&!9&q7JmMhfre!;e@q}7=;LEyyuR8-5pIfXVXmmG>`YvV($WVX@yX+i6!A=?F0%` z1l%0D9~>N|-)iS7(J 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
5rqcPZ?Jw{L$+N*=d=M4TWTlQ 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®obnp$X9X#e$~A&|74?+0}B=t7Ye zANg3z=DuY$CR0)eGMGtIPzMIa6x>l$ASdXJLxi>$6db9OxU^;Dn=Br}eK*k}b1#DH z{ZQxoTMUGuHj>B+dS9CqND!LefTV?76HcS0*rfI_lHPeUoz}CVmFhR>7`6ko;NxR^ z>HYUCxqR7ym-lWN-g>puo4zK zgzj>D`6|T#Zk=ti2MV7cR@)*4#mg75-Oh~d7HUw3~^v``1RCl-` zmePX(``A-0qK6ESza)xgFZ!oZ^NLjB4u@c^z#{@bwZ21zoSM-C!7<63$UjcYx7|E{ zSiD;E;!ps+Bqvua@8DyU2dnX-40=|VGbLEeOFlTV~9=Glb~2d zuW>?a22C2nmPQpCqEORiW>2B6z9r-3*O0B4kO3H2&CAwGkP;3$g+7D7mrU61<*Zqy zHxy7R=sXelP`2`6o{}D5{U{3jn0+;}^3BZKUb!z8y{XNXW2DQ1jXH=@7ssI>oun|n zB9Iev*Jc^AQn=+^K0tc2{WSkhnk1TOH@-3ExPH}4`V75oW$&dG!4X{uu&@g)GcEm7 z#7(OmsMT)+(gx!{w|<@M%<7@T!{&0oIo*u>&An)pV~hxUbK_n|OzTH*4TeP^ckCxc z3Ynh7GWhF41BC*gp>IXH(zqc>AfYAX+J4HD8*Ek=ZmL))DAvs^cD9cRP-?7*Q&Qm= zv1xN}0!irNa0H4_Dm=X{nnAfA9Y=S1ne6{q05PO(ms#r)sku4U8uB0% z0UtDE?9KDv$CaBET$Vprm%Bht(?^r>q~kgK?v~=FH<3nG8$6;E#%-J24Rz?OLs|v4 zQPVF1Lth=M(1p-UVo2Who5`Ro%=TCcil)W!Wfr_3$xbB%8xEjLfcbl;1g4E;A~%|?y=uQM+kgceOad9q*T zWEhLm5$vH7R~2Hk+d?#;=>+bYuYFg|MjLH@BFB1;p$+ccl^NHal^*YMZ%?m)5`#51 zGxRRIvu*1k!ic`WD3%a;`}0=}SU?2A`nm_!2b(-4SxGOW((w<1@n9GXhJQS*Lm;ZhB2xrXG{t!au9muqGQS4Da zTd6%1z!)!P3X1okkjR;rbTIp$JLzeJW2nwkED6Q?2>L7_{xtKyxxVB-U)l3hz5y(E z!K8C!KS1%TMLpAvUUWQ!dl519&g?}0a?B&oCAyxAdndKC?oF@zZy&=a$Dq^?N;hfd z9BVNc3xVzDFg4EHH)6=;@Coo= zA+z6&M;3XLSTuos{AtME{>AJ$QsU5Uq=Hg>0GRSupaO(g1EI$r*jqyL*B`V_0jQOC z<%D!p{{B!MIA|$jo2Fpd)>)%%d(Y~qUl!YZb{6-LrCvn@G>-*sJGv|3Ti`^=)8X** zois0C;hNGEfe=4bSu!BTA?kTKXz`F%&Y+SsDN2r@o5T_3N0DuFhOvjvp84I z&zsERM{j1F%yxmKB)9^U(gTl*e&~27>93JR(djR7`|p7~|%qh^DNgHI=Ebgd*3pm*uy>T&iUm)LJm4&24S zAnyYS-B{8r=2L@2vHw7Zt5d3nx6!AHfZ19X-6Vy^;d#7WkVQJ_N)SDij@;<+A&ODAG@*MxS@$I&Ec7N=sGX@e*K`ad zeMI7A4mA%zIsD?DD5wGSZnxQ4>7O6=LL5iBI^OQ2M6F_g1ptP&bfGhiBYda8Nq+EyDyvea=5v~Yo+0RbK;EI+ zvVfe2#QiI;{UD`x@%l8vTb)>*$SVG#M@5DmIl4c&dei1s{geb|z0~0`Y%3Oo1~}7@7nm&Z@NyT0G0FMyLx9%t23x1Nk%cdg!D}B{A5ynfa}Nt z4A>rjk6UUQ(fdds>_y^Y_1?m5Oeiy#_C9pRCinigE08pl`Y3_*m5_VP_W^Ep6&e&=tFB$mtF!XreXz>66Xl6% z8Lv=a#+oS65-}dgDJ`*H^nm$qgXyZ3QjLC*B{O)`)nIn0`uH*we=n{d4h#KT>9jp1 z%l?66s>R708bU2l3Pa=}Ma{;Z{edko6stY>Nc1hi6jb|r85t3NLPk<{cnE)lRu8iC z-SCzl$bOThL|?VQ@*FG}K(^x2tY+9`x&Lqyxn6mZrdKIiDmOeZgf!bz9Ahnaf1tOJIC zLTJLAZ4&Y13-O-wD0K37B@K&TXp$A#pW3|V=Szn{NaiiKA))I*Ar{Z+_6!a7v7KGLrbv~&p3i>;pUOQ>l(q4vP630~ zCf;+`JkJ87$SK_`2Zw=t>-Z zB3ZOm*CJ1l_JHRz)w%Szor^D+B59(+>PxNOT*?3R zh0%>aT1k8;*|4m;fzssIY*kIpnn?f|TE~{Nks!+YY(9q&^!T5)d#vgkZLC{#w$}2a z%B$d{sFl?0BCiH9DQFU#{r{VhAA3N6vH+;vG>{1QOGtvt2yDURHwY~JavuAuXu0xQ zylB$GV=8CDt1^)1{o%D2@#_TWLtnJvZ+$HM9`3?vx8QqGFK88hrg@x19tl#{p#O8@ zK-*K_7$xcL_Ul6wYme+T5l|lu#ZWf?^_C`}w1G)J0=>{t!kx&5dA{!bz51|giERye zp8=Tk!PDn{LDXx=E2^_sSn>|M`sK!rdNdMp7S6!C6f2usFZS!Qbm0%- z)C(^I8|4Uymd3TwnvGMzA1BrF47&lA>u5u1o=O^)sC0Q<#)j(*%Q{_lLkKS9q}9fryJl_336n= zH(Ln-Y*CLO9PVQFW5CO3E`>!6(8uNT{6UPxXcbp3*ZEKTo}ohU)lje4y=7>Al#TJ! zc+-!>gwb`-9e3XZzq^OTocKaoVcQou%bvIu!S#y@NgaLqlSK@mF6dNI~_v3Uq#eaDye_x4(R-@JDK}pijfsR``d(s^$j4I6-7t zW)e_*$)#xR0M2y6uj}zGDAIpAnqO^&i|TK8vEIi;-q4fjHD8s2ye#eOMfh|07+5{{ zRhjNr2D43|7@dxREfugd>rtKuy;_oy9RuDYD6OKH!jsqoe?vAymQaFv#?OzhqA4Ji zOxW#xzd#b+Bl6O5C3Tm4uIy@cRQQ!)4v$7>`nixjvTOVnfER!X@vwz(9qTte_Ad!{ zDD?_*QL`WRmg}|L7{~;leX_gI4RNZm^xJI`!J&iuqL7*-0c3)<1g(=va#`$A53O7Z zP&qTZ5!vzbSc{M>BHbL1LVT*zL z08|b&MyQ?t>P1D8OV)0UU&+`!w0r&OWH^$JQ8e{*f9Vhd6?nFZ@^RT=XBs$o;a5&Z z1vE&AP0~V2&C`#_u6FhA^|uO!6Hr%=cW1w&)f^2M;H3|rP1#JL#@{TI2m6q-d$s{D z-*rXW&D#VCn}5$K$__6a$Kub;a}Gqcf&XECnD&Se@$h=M-t8~$Wx|7_k1_~r7_=Qx z&}UvT=7s8A-cWMov@29HpPe{77V=+EZ{B4|xREg*{-Zia<%?3ptv4x_*;0d~?+O-H z#OU4PhGs4WeF@Eq;+%$-tzH^}Q~mV%=eGP<$xJY4HT4VzIfcU&-@3 zPU{e52p+M=t#D`9>}3#^3CL7ptt*r-;(k+vdGKI@KJ%H(EQCqPxbJrR$Rc&LhamWt z@bklL{O@veWi)UPrq)TLCx1UbH}DffH^?E&_sIlrC_P%744`*T7RJ9a?bR zwIu=Ao2{ep+Zb<9uYP+5M$*AQztxqIe;E4{xuH2UdR2`r$Hf15UwGi&W;6@p-Kg(%*u|h<6hJ^# zmW;hjV)8oU2RB0k`*AHY8P6yoX6`5 z6a#LUe}{MVM(_Y_s<}JKm4f19K~|2Uvqw)_J&*_>znJc zI+}S2dq~Z%NH08vw#_Ff0sfn6urZtC*ephss~r?z?5Bt29N$R1G@9H39=40R0q4hC zZ&WEJ)4w+O&u9lxmaT(H;6B=S+Y4K({>vE1YVsYnj1RpOS>LHoPgCl9Y z+DZSqKHhCLVslZw#-!M#h%wr5`5dy_0`PTGySu;iUna9etcr0695*23~yhR}l{ z0FIj{eLh_!{LLKQI=&1pGirW0c-+zZW*)%Uvl-+RK}Nplrlg7>b1c|zL?RuNMgB5o2x&TAF4pvAyvC8YwuDFvRcJY!jh$*2+ zG^tliGNG)}n;~{Asy{zZ0NB_Z#~Y~qFZ8!TAvn~?A2%ceFMJiJp`}$-7nn1l6%KUe zwDg&%EqnD?b`r;TKf+RikgN@y?}gk=WG4|%s(bkkO{jC9ei-sWc+2D>4Y0${c^Bws z5`#6OlFPL(e9vO%b8*e2L(MU3juW5~_PQ}I89{Cp#)244*nNx>JXbnH zO^XvDQPM)_iA4-YKOI8#r3>>pCY`Vr4-G%fzYH*ayQpItRvHrqNL$)FHe_^63YOPr zFpF4}GHFVIH{pPLg8ZAPz*gMz&v$l?(B1ZFV`D>dF{@l|e0^x8AZUo!%i*ouaMg6% z<4lq*WZi$Bik$5Xt#yK2-0vNIt1B;Z@Ph}50?|a`o*^D*V4>fK!$7L;$y8XtGjo(g z9&>>9;>}bRQ7a|4awk6VJH7y-_7Y^6dtf}f&3Pvyso3kEd1fkPn4xwslmHHfg6pH{ zkk*q@3$8Rp#JW=4bDD~>f-b%AoIUuP8?(I}EiqASZF5R#whRim4MQYI(xNj3xBd{>hO2X_ZoTz5ilZomdkQH)MlLtK&O*&_09mG474Ubj+$S+QTWu ztU$$KW!9whj7UKGNH@u^MTQR)%Be8!rx)EtV1Gb|Pr%r#H&XhVQ+NIVy3ihGqhHq( zq1yrRA>=$NHWrM!2&f*%M4dCNz#UJZzTfC=yo+*y;!}gSJ7;qN7)EI8{MFyDy)tH% z7k7~5-uBMFNymzz<*J05zYTa(EUfElLslhq@_N}jpNSX9Fk`lyiKd$jpM-b|@i~Ss zFOB&OwLT0x$EajJa8rEKv9c$V_=@J{OZM5BFWUz-pqqK!=!WCN)u3OXAy55o{yw7H zBot8XAU}cUG4+D$B50d_ru>zlR|{y(C=JRYk44f`o1p$SFykR)4CWE~MIF`-hnvF{SHWtl|Tx9m$M z`7x zMyoECw)B1yuVPWWBvUB#O>HXG{&MO`cJVzLb(Q{Tu6>_1Ts zr{tF$!9ls9Y%`Pm-q=y$>gUV#A86(Ga$vSr(2HtHLoxk84JfcHYg{@^5vxK?e+C`gS|%ui@3q6nI0zWr5U)S42k@FJ z-0qov3FSqhGz88rfgum^gsZ5yPgDrR;YinR_Q%RjN_=5 zQ>+@BofH58$w3s-Cqt%^LV$xBg(Book&>*E1&`Xv)qvo^PYShWXZlwHB?6m%3R~H7 z0w>V7P*V!oF{8dw(72TOTJ=G}2rtw>tE6e70oUtLS~r`M_t5(8p6M13ZU&QBQ~W(w z`gutly$X*%-i*_AC4mxJb_eO7I=x)2+R5+PMA3Uw``gux$h|HGk{VaejgQ#B>*9d4 zo0Iz_I7hNb8Uh7;VxuRl>aLA=I6!(_tau8%=s*ls+IW=cHi zF<^a;I64MWX#3p-87Z}=#cjV8ul;@^&vH&^Z#PGdIQq%s<~~wA&EJu^ zG@_&pQ`mX%Wg|oMbP3T4jpys(_4So>(91@+Esef(D5-DQF2i1Atl9T;`gHN*KY@P^ zHu_3`+vNj2>JeVd5)h4=aEc=SX-h3?fUUss9S^|&iYqh*lXQgPI!-L98!1{hpV>yM zgo}p2-jvw-0FDxd-s1_%<))YIou4Ac3UqK?(2NMWb&c&Q8>EOqg0~?I2x1{<4$oyZ z+mH5r8IVJ=Yl2Yo`-&NWA`taNd>jK zat>3?M9SaHB@xmzBk!UA4|38YH#;ET5jeVKoT8QJYndPNQJx3kM+R?h_$zuZMUl@E8?`3 z=B?A*Yozx9ci-N{AS|pRm_m$cI-BC?QMH6Xg@c54SsSiqu4d+8?FN0I-7y*&eqNkc zp?!zP!&w2!amPknYEu6L@#Q+Kge<>Um%SzAv!f#bD`YA>Q_olLR9)EL&V>Tz%w9cr zeK4#p836Nqa(d$40xd;RB$sVpB5JlIh>6j4u=3;3?)I;qxLFHlUWEH)iVuyvrXT1p z*hHt7g_N=)Gy)V_r@oSF`M&C3gP{6GE^3C(P3{(xSET=m>_2K!Dqvp(SDZ# zJZcp2L#nv>#$C0VjruDD5dLJ^oT}76Z*jc1e89MlI@oZKW;Iew20hY{<2c7f|#;Ota+htI35M1yh^j0c>SyAXkj#0G+reHu`!juox=jF zZrtUuwoqC*8&$K9MApxE%#`q{LhUL^bH0Zq9*Z<=Q+^O7TVxau_I(fGBmjEWDRJ=u?$Jv$4IihEpi`?0sJ$_wDbwQen)qXf)I1DJFeJ5(2oeljW@0ssENX%WYLKZ`sP1=i&N*i(K zh+W=mQ{Y6%3qL;Rlbyo=>toq+y1LTMCE_m18JzrZPmT+zPzPHPzYX+(h^P(FurHV9B>j6zdI<8d{&n2;ei!n{m;sK!y89ds)CTmVInM7K z8lZRPoPJ4?od^kuwf=s@JoA+B>Vw)*?Z#$3zo#+7J#doVlZ+~UL}E9y88 z0$H!mS6L#I@O!F0;RS83DZ?1Zb@CWP&9)<$yI)& zVIf>gFz;_0xUbpV0`Wa=!^*D=@2h3no1kyP2Jf##{1K1wr!#!Wl9u!`J;1CVOQLH#=2QIAKdJf0Ya@n>}K<{pIn#K+IKXERi z8lUAJJu3ol{Tq3@#+RZ#E=)W8Y!Xt0s%rx8Iiq5JYSbqulq*5p%~Am1p|I zu_)K=IUoN?%_8^AFPF=E7wr;=_HRi+bY6=SKG3v5-a0$UjxxiZdlQhzYJ6n^uwiebIL8$7a@VsAd!H>%+-J!9*yMef&lZ)mS zo%gbcZvyiloVZfgLC^Ydb9fI40|JeF^si7fhimPwe}oSa@e+duj8174WYqE(dZ#u< z+JuB!zUNLT&v>g=KE6wZPTSCMSF=g5NdbLr!_E7#G z!Cw2vcr5I9NEc6S+M9ZsyMQ4cQ@^@l4<`6h>)$Q=GU4H(H6a5dR*6rG7OU@_vIuFH zC0)yohTa+B@xwFuKC!&*Vf#y>#wAAW>mPuv>+FxkHc(vk?%kaixZO%Lv{H@jHM7%K zmwj}kjEO_BIbZ7-7Zl?IZM;B#MRivG8~{Q|&@CbcQ#UYB*o(2tPmhA-q@P>tE&q8# zWC+Yqx`C~;C{>DRo6{W` z0h3d7xINp`b5l#RCZ|;Az6Y_D?0T~lBGRyN2#3=8&tkQtieC(5r@<<(qHDK5DKq+s z=K0dmQ}c4}CzDSQK-)!DU~eRYwtd3D=Nr^;`p$HcY%^iN08pec7`KelF!==W?RT28 zkoMYp=EEDF{is*~iRgrLI{%DiG;;gK_-lu+&otIr;-}@B&L~1i`!wTujyh1h|5Swt zN3^M%FaC*xDZHtjbuA`-xS4*-z6DrTsM35vQY%0C0(yo1q0&Bv{aE#{@;z=|SsvSx zK87X~3L`h|R-Qy0Q14A6%5Uzdi(Xsax%+}xx$}PW_bI3EWFp*Owk!P5j7>U!_-rO? zRyZq2&UHyMU)?Wfik{*2oDG<}vipETSh@>UvJZfCNEL>J(^qSfy)Aeu3)h@XJ@~me ztW5cAk-6tFvp8BuQ#(YpoIT($K(Qq3cJBj9L{fj0!U1G{EEVVTl&F1g1?)`DWOg5) zj4#b`IRn0fcs=r|0yoION)p__SEV@5mv*G|Ztl3L=1~{ys&jE^P2w=dE8`qx_nYd) zy*Xui7rO*qY7P6r-;pE)=t^&1{ zwtlD+6i_sYB1Opc0iggGl`uz>D0~oW1RtZ6zF1?xXRU>JR<)|T40kU_oNqbyf=N7Q z_ta_q`smgB_7@v_yyI3~%)%J~RnMLubs&0>A`wT?(wX-1Tm`pPaKX}gxFnu1-xz={ z^4s(4QTO$Ff42tr0Uy;`dE;4J`Kp5T7fXc~(R5g_&*Awk|DG2s+--#O#y=)C>B;@*J-eXopz2;Fc=q^2iJ`6JsG+ILX_ zq1FqS5&QTlnQ7Y?W7i%UtA`g7#+hNGsa0>|+0$$uk>L&l$6Ew8xUD*(9Sh-PE4wS# zYmZVOk4Q^rjolX?#dxG~Z)f-fW9wt6B03TeX%|L$P_P;7T11Afr+wF9smP!Bk85Hl zK%GT&t<>OsmM7uqwi*sN6s^a-I#0Z@nEw+8`*oibX&i#o9*Q3uWBtu-_E1rHRzuJc zDA(W(fJJYQ=TT~dl{V+?`<#4}0%kva^_ZTgkZeSs*uIUQvrhp`zW2Y<>tme6tRoeB z(AJUn^xM|PeiZeLPHVjeUHqLvFc|kM5cm{Te%SiAR1-u^|(xjHG!;9Nv zU*!Uo$X%OB6FV`DIg&CX2!8rFC1Sx50stW0{$3IUajNE?#t#r>QiC5)i^FqtQ`J~IiYdZ z69Bly5RJPO0r{QZ+2)=ptrQy6261Y{&xeR9%V5Rt(tDK|zVxQPw}FZ2+oKZ$6^GsS209G3?F_-Flc)-)ERcJG}&m57qGV0uAquz=7; z5i`tc$R6@o>02o;aT22vrCG4;%RmcFuV_@v`3>zq2>!&vDw0bE2eA3cLHi4|2h*R6 zXr_vW+|IN&^HRwzc(z!{pHLp8eECw5@h`qk=8d3=gSq$B7xPr&6d{3XDFq*xdie4< zTtZI{3-rK1(5>n|Bt)P$elo3F2fAPpm}^vV`Bj-TdS7z7DS17+&#r;!9efdDE?x^M zyU5Tee1%ffg=FcBbSI_OzaYQJ=Va!Xd5iv&sD4hP6=mky3KR5@sf5aApasrVnLKzN z=ynAN@vm4(v0MIvhwaCc1Uc1X3no#Ss`Vd&k=_4f$Do}uY`)98ob7$_8|EIGTQDv( z8wuxiMkxyE>D8Y*1tw7xI`0|>DL?TG(`H0tgK+@VGMnA)A|eeY$_V`*f;@1DlIn?S z(B81e=Vdk2XZx5%ey1**<$;l0sQ=?{RurF%b4Rr^9zq!Ip3xqbWm!{zyyY28hWqP| zZ^TA13^smdI1-oE4s8hU<*+uViv7?RB9w8v`R)Pds(VGr3{X-#-AXyAmD+oa?35U2 za;ZO~_YGr0fF6%Qr+S3G8dMes$fO?W)_N(fCJXqTfzkJ?t*#?{{>1gaG<@T5G7tJH zH1v2Z<#$kg<>Ho1(&P$CIh6L@mx0Bz+W5`$dS(xwY$UkGAb*G$Hxiw;g>sHb_W(<;Epybru_HFZ;tM4**nX!M@5(-bX# z*c^F7D-+l*2f!jD3Oz>}A(;44Xj(|megdIyg{G0nooWrSogPRg4P|ZFR$@BXcl!_G zb#p-`$BWM*N2NbEZuyQJ{tBZcgY%iH2(20_^MGbJ1{>Sl!AdX zQ@VODHU559m7F^Qbf)Oq8Ep^{WOte0Fhm3T?jZ^UEsDQaTu_2}UsUq0R-Ph^bquZ} z9^^3M)*!P1U2J>TKMU1>R1tl!;kFt=)2Ia~`g*!}hf~hrd3>~S_#2u)cFHY0 za^Y=Ngws*ivsv{bJY1Yq$!*M~b+ zwhfAn3)KO)4 zB{eM-4-T7NI-9{({vp_&O`R^_I>PtQ2rqK5An{g3?v`-*XUhRC@n@D1V|TKy}oQ|Qro7PYt~j*e0JvxncU$|{LM?*LxgCy#?U_$^#2k0#8Xxh zETu?J#%F= z<+d5W(x12SWE2XC*(0ziJX9kwEDvk&+Cf1Jwt*5B$+4lr+21fcBo8%~+++qgrjvnsGRbj4Zu8BDnhDk;^aqtLjwv{rc&{BQ(TrzM zdVD`0nv~U8JtxlNyxK*f<#JS&KxOIeVHWztYZxbhH!rqRhtUIllOU`#=Z|lj8&WvW zx`#NTD(qL*atbEXb*Mi$|L5OG!W<|$=PSnXibbcsklJmYMO&eV0$RPk1`JwJLSNr~ zbm>$ssDIxPY{4MZJ`3G_jx5>+1D*YQcna)@VBnhk-)S$kb?llvv#CAP0Of4 z7^XvrrC_N1p8Eq+-F5y46(anXrHXINJv{JW>I!;%wZNkFGj|A|Pw%!%KhOSfOTn4) zPd(Y+!ka-{Cyvqs0x-QmoyhUyTLk#U2cMupsF15t2Mi2<6c+6`7Sa3Q#EOf(mLE62 zVV-9qbxQK}_nf29ijS@k1hH^^`~}JlrVZeFH^P6C|8)5S_+O^ICv*0~Y)g_n7F_I} zxLf6|I@~mDbF;KdABJXrnsY5^^f&dLc?38&9YbqoUHcMiuIne2h91a!)q^FphHaY8y3Ap z{&*@v>bgHD(De#9RyBM>SSc^=W8&d_y&?H>dP>1c(*H`cl!-WF@v`KM4H7xUq``BM zK3ssUcQQ4-S|&DkC1OBt!{Ww_5Hg}g{HgquKy<_&A-b>}&=fy*YCKvBcWU`W9KTzZ zVK7ynUed1<|iyhH80Il%KHggNXL|h-t=4mN9-`&xr98aJBK7J80lAV9S=Cf z=pt*uD}>7kkh1In)mOg)iFPYMw8Fvd8Bb(Ww!B(ks(W!rh-lpQRo~NXXPb26e!xoh z@JRSK%4lkm1~BsQ_GJ#*9wa+&6Qa9>^pjp&dvi*ij%GcK?^lf89K!)!ufDgci9|-N zM&C9ErzYN%UrR?#UQRJMeIpe|Mqme~X%xhUCFqi5!=7DScIfpz>+u+0DY4L#3%(9c z<`A`FHS1aMC%`LwszYg4)|4MTnJ58TpcR02Sa-{RWY&AvNy7@Gg?EW3T|!m!U1xc; z>!<+W(A-yr9@*x&9Wr9Yee9i<|L`g39-FJIp#XM$AfcJ#%;YbQDcR>&l$#S%!iRDL zgMYWsa_b(*^uY6wvb!&y3J^z&eIy$9p_5as^kT27D!tkMcLM(O8mCB4+p^5qr zsugj+n~c%W`}#+cZ$!9m>4L{YZ%{o+zHGBERERXp z@t%EuNeC1>2qN@y!CZwhI$`KJmjiokQ~W*^yKxM8pY;6BrqdvME_P?9aksOT;f>v3 z|3LJ2pm7%`K*T=o;#2i&HgXt(61M;w4KA0l%g2apMwwq171*+xjhbbhIxiRU+}yd9 z;>J~~@LMT}&)K0Q5@xFi=!WBLdIXamat?N_sk7p~L~4H@_t^?q0xfX5v}z{d2<~vl zi+ivm(dZ8CTGL?=*iXIIo3xU8I9B$-MhI{RhcK@3vYJ@($uGwQZqcSW+Z(TKq)tC8 z3D&U!+-}P~(~bBz?mFN09KQXjo`-k8Zo78(3~tK}t+td@2Fx{hRJJ4;TNall`hPXv z%S?RJ+*cCe*kP>Qd9Q2V9(MpTfZ~m$^JsEM`-P(tM#|c6izv{n)8{?+xZaPZk|R#g zl(eM$!&-Cj1u`a--iz{%qdUhYf%jR$+Y7Zx{@{ZaZm8Q5;IP1AFbN90xzvpBc~+Na zJeR%lcRRwk48d`Ky#=?tEC;u~F6`?ge*-^Z8Jbun?dw(yi@kw6KtLKDd zr-~kkE*CWO9s~Vd);AMP(<20NxX6o_AJvLzZ_Io+BQoW)i-LCpxqt#MDBZXum>i(7 zBuq5!n$HqPC+!}L3pi-c2CUhGFvBn!x{2^rao8VQ?O9SvpO<9c@Y0~xhil-Y?sd%9CPfR8uq7K#1>$R>v`r^ia{)ICal zRh*57`QrNE+?JJh2Mq4!-aFN617tAo>FMR8I(ME=X4|{oJf4zIBqCo25TzH8Q5%Ti zKkZwQrkwtS;y|a4EBXa-RiwKI_cET4>mMB}yXb?S&|WJ{WMl*{4#KH4t9^lUc?7i(T5uFh#<<00frl-mRof(bBJGz(Zb= z)~*DWE)Fx6wi=8tC7=ge;ZrYz#~xEs9eAtV&c&gc{n)Td0L6SPGMebn{HP!`i+L=5 zU-q&Dw~?2^Ew0egu;5YWrG<3IHbGXav;0=@w);VQBlT{*d!5O`=C_YJ0=}SDPi5Y%Th;8yVT4x$ zRo%Z(EXVENI;9JAtrkxydSbBjUej3sK*TgjuW`AZew^(AHJ+D`l}r3$CEa;yEJr~o zP~XIx#*=+*wR3y}0XA5sw|U+hprHHmFUR!k22PIx)%$c}&CkQK6a8zTbE~O++KR`P zGp@x0P2>(d>g!Qy-O?@MfV00dY22{}0ReWEHYZCPW}dG4H0R~zYE}av1{cSOvbnF@ zy)cIG0HqUi9y0?Tvo7+6F1c6sBva|x?W0+5Ueil}xLfU!ipad=9$R_hmfQB29%XD1 zhv*ZlE#n2eJbxw|Dpu3^ea}WGp2iZ%%(y-zlx_bp%U4a^5piHs0c}y5^N48M)h3Dxqs?#Z4f&ZGOi1sCw?1^4n^Y7_^-v2&bUXc%fB$pHr4@q!mraG4I3Pytn(;qlJ`o2>KpRH(E38>gL<|_Q%KfiH!#ak5%42A%O}7VR<&Mtph$#^F;6Y5;Hn@f_e?i zJV6Y7V{`<2L#yviyqarxyEgBYdXFJl7idbNtoN?z>z#R%;j`oIdt>u`CKj2eL}sN`V~!N?6^36aJ0Jb_vj5sy z4ub3Z_R0&_-_K;r@upV_eCHEvblZ2l!=54>qEvr57z9z2y()YkQ*sbhkP7JCW;0DY z;R^q5%8k5kpc`N{Z8JX4O?PztT_^1pwf-fxji=*n)YyU-vHFz!UhdnXhG{9kDSK>d z@!V`TFNA68q|;3h!ux;i#M}vc{f{a7bq6Y5_2u)Gw>2vnvI$m3TnRtH^vb3@h9u}7 zbfa1o7)0&y;>f$s>F-3uEeneUox{`kFQpjBuBDHGi4SOaJhRVYpcZ)#ivc~XuIz2@ zrh)Fd#z`}o7YI*~9G?8O7(MVO7Qk83aF^WiEybU+5pA*gnq~r&(z4cy8jL@xY(RR3 z8l|g+%Fq_vlt^J_dpv)HG~8;Xm#FaxLmMaHc7s^<=>m{jCh(tLmOJx?>i~#pn4-Y~ z7p7Nbji_fqcXB!hIUP*4_3c-Gm+%lu8Ht_2giszjdIBgw>7%i$cx?;7rJ#1Y#b9M) zzYToR6bnG3NMki~)|zQjsI6W`$4mj)6x8$Pl~u$2aNv;h04i)$lzY5}m@U@;y_}o) zop0QxIn6Ly7CU<{7q4p>d9N88K3!nuNCVAu??h@#EGt2SvrMr?971f~0>5Y!z|i@u z4G8cu^VqJ|XSHJQR{M*PNUkubJ#_k(+7G6EK`>jb?L&wKi)4IZ6%E3%ap0xL#A}3@ zyx!5RNnM{gCS-LZJ@UB#!1)KLszHpNMJWC&+R3&N6L_11g!}JcJGFkTRVHeNL-s{u z_`sIR5eneDi=5Wc;2n%AZw-SOF`%tP;J)arGo$!%<cel{3O;U*+P)AGQB z@|@J9+g&m!b|>fgge(|CL?{0Wr!zju_}#GJuL}?vEHLAYdKrhJ+|WlNeVQeCp(&p2 zyiq^Op=;@GiB6wrCJ5atxs z%37`&nteL6u7OBHP)w`>-KhGKQ=e(MHW0QdVcX3_p7ygjjeNy2zd5t#v!-_5QY!hl zt$_SslHLUyR#M@b1Yy^fC_)C_&!E7XNcD92+Ira^F%rXWl0K~ukAYp*^>!&AzGrl@ zYCQ$rwBZpqMIrXTnmCQrg*d)HJo*#zi@8GPKCcZ(^(IlPp3)A)kOKl@$O-=<#^--3 zUtf_vQ=@|q#}{Jv*YGZI)9h{o0PE}N%Sl>0d#qeR$14B(I5<%6N$~>wWX&FdBf7;g0UqctO!CE{t5ADy0zS3-?0Rj#H|k&{|A#jA4$MxEZI`OMdEhohmj zuge|UZf-H$u^+pMnOdvp3!YvdwlLrVv?0Vv(2ob--}8^*`#*wCcE0?M6vA3aXxM$}g-YnsB5?TnL0XEqBLy(H#`bML+g}rC-D$7E+4|`S3ai zCN}=#KQoi?Dg>^>22VW#rqi9AI5~=m&$heI@%ZG{V-i2vSaitVj$-zH4~gvRKZIpr zyeZCXzSB!bqp%2JxkPCq%wEhTi(6QHmx4hx$mt0Ep zZN|2(!=No$BU9T{z6~2qC(yDJ3<90uy(-%X1ki3p%FM@;iw(|9VG40jPCsWVL!c2; zJ>TSG7|o;TI8RuuzVrK&b88MA4rjRgJ1u*@Di)>)j_{MdJ9P;J>f|WfP*XcY$8t5N z2c~H>Y(|%UpTk=R%uBnBJS47ix&7AQMSMg>Z>gHzSt@4|Q2$+0JNM_R7z&Zf)P?CY z?aI572p>!|v1T`Xo9RDM0+K@21;y?()`HU8pZA0;l**%_r|q2)JWjm+N9BGDN{WPK zJ!#TBF;AWX{?d*;+209Hq0SO^ph;2ffD}xoireCI{n|l!TmE_*7bbla6uVI=7*4;T zG({WtE0qP8<3X8^#-%V?(Uhn|3B~ugyGy$iuZyG{3mH+RG@p$67U0bUqaQ~wtirQR z${V2SzIl3ZW*P=Rn)lhox>cj6oMK)K0B;TS@Ng`0$Tkv?a|W9a9v-6MjRbJI*lUJ9 zstZYL=wZ0Zo)tB1?puMKN3Cf&@*FR7@Iq&kdE)X{^2=UnMQk~2cu3y4vLNEETa&6_ zBDulh=c-OhB0a$5AnwXlK&O86f}mwL(D@Gx-zJ3qgt~v`NlZ_+#r_)g(>hB)^+G!e z{{SvU2!HWg&~N$Xbn7=jH@#7jATR%5Wq3;i*iy_y!SexnzkYi-?n(jcrSqev`PEGMPK~zBBKs4z!KX+3`?*2_s&UxId7I+)7 z7rdu$vjkE}bsvPbAc8RmY##M5Dfb_25@LFfe*L`acxoJqc-;`LAFOBTR;84&r*iKg$H50B+tc)y!+4`LCx#A8V9rq+1ihRS=>-g59KZ8Z0{Kh zjzobi(UQ=uQu+`Qq{HIe0pNFv>&!Rg`SnKEShv(@+M$)nLYfKr8Vsi|$d%AVoghTf zA+i+_pr&dfIem$81>Cn~TQLV}olko*`!_&;olLze6l(lsN|5V$L}T?MDWK=;1w@;& zE$PAWw{mKsgPRE!dILa!Kq_#ZrPbuJtt#F}y#oUl8xhE*!lY|bOKs1n8&smiZ+~lv zyv>s#%*i|v^CZ_RQQ+F*t<3n3KGCLOaS>jSrR%3H(O=*x`KFQo1I6nezujByRKdx7 z5cPZX3bu6rqu+mw{bH#^I8+FPOxO`F_oDhPm*0B&bn8@4-u8mjWn4bPs8Tt@);*0G zP@d@6EV3_wO+ntN+9Sb8Vy8=}WeK~_M=+ewqJm74nPXe>s+UZg!v24;yksd_Pn(dv zeVT22%l7(R!NDt}04}gkBzU`G^i3=DNdArH+X0VG_SH^xTz*;oKP76(3}46z;3}EM z423;onT#G{R>v0nhDQQ-DdTwfA#W;z8QjpzlnK1*;VvnN)r`OEmA~oj4Xn=hrGs%t zrqIgh)@zaqOP|iRd8g1>95$(H&+bk7(p>BCWBH}w>mg!lSM)_qas3RKRSQdl(kLV+ zzrm+6(H{F}_xGY--cX6na8tX$me~tZ2)eh@=?|a>s8-%qctTI~ZH6NWy-pAXj8y$$ zfE@h-xWJY}t8q!;&XSa4h1jj5a27uvY+FF?`nT(#7XQU+k=cbO15KDmlC6x$z&^o&mNk=^c9QhBLP!~PvWBh5jr1@Nh z1egS~6Ac7dT#oP2RzF7?ZiZy8u#)=+>cW7S^F6#{Pfj(AyT4(o+h9C~ub8Hgjt>g& zx&#UK?8|E7YG1l;)L%ZSKvkd)pk?e*^+3vPY0wfFP!%x{XJ$;}7`i_*WkBqU)-&C* zG~UzbYn|kX+=AsajPG;(%qMl2zmI3&*M4@?!VScJs1ztyC!sS$>X?}Y{~w_fq!}ZA|G(BDLC||ZE&-(+CitW`E-e-K&W;EWO9iwlV%4ZsviF6&hS=oy@T_H)PkE{W zrS>%!7haA})%7mkWq;Jp-Yxm_lbUEEk z4UFo9Cp|+~{=n&QmWVHN;E4t@F$tg?_!4E~9Z8l6Ih4gaNXdT{+IBVidgmupULP(n z_WsqRJ?Do(FbS!16vkPujON0RKmjIVh5ny^LF51gSh0z{F||ZkBHF%o1MzR}#j8?k zuaI0;Q*3_M%)Hrdw0OQBjE(=U*V8|ANLh)f+)Bo3zx^pj6d{U$$7gdvVCDk&!1G2T z=KOBF6(YQ1_J2YtX&Fs9apfjx`oha4QLRV20a&c8?ukAze}6Ppf12D&l`D z*oMV#pZDXXFMR*|5O3ti{EQ-U;TZ|MC&}e+)xfulfQ7JUMk~CW;hYEmSi4wfQU{V{ zrb z8;cT2Z0~2lQUbpZ$~dpCi3+eSM*GG(sR4D;O}#5cT-pZ}0q=ScP-fsk%8QwtAcXHe zg#YTMMCca)1o+?w8ci{j|5(wnL1+)a{DOK1dmNStR0$>;_0D^5iV?kzY&VCS8pW#i zR3=Is^n-b;g)V-#-+$bGjU&LK{BRIXd7rlj@!|uhZkz`$02W5NUx6fYuA10(X(ys8 zz6BDA;A2k~x#?RJe&H*f289D~pr{@~Q-P%%%KC{%e7RKUlpRQ`XA7)B% z<@ty0XUX0J<=)lhpF!(ghnGNlWdwCwXo%)7dGl88=;{G9g}w*#xg;lp+U?_uqulfR z+of(#DUMw#D~#@G)6f2KHMJ0m}>UfT*R?AFU*=l$82k$Tc| z-<$BBeE2Z2<-9vHei!!bHRz3hB=8ti!ClZ2_GZd53MzO+`NEv5xkoGGPC=(U%6JU? zcj#L%Mit2y449l7HQzpmEWV=5-II5dKAnw5{Vwc-M|RRqPA!qy=hA z^=P;-fsx^Yo-ipT!ZuQ@BXUoO`npu^a_nAhCy)vZk)l<@9C^6(hphSc?sZ}Wwawu} zs#8#z2&^ym6TFt4-Op-9hA+(^n5ifFxO%``1_2yY%2b*4Hp#h(LQd42i%tB>ZkSo zQZ9h?E%*)M%(HB-eo+C~MxN)((T}7VHQZR<4*V8Vd$C?=+j+0hJ(kWxY=mF>q^0x< zN#OL3$F*w8Ht=#4oiXTajg)zJMS} z3|xwC3(iYtrx0(IDKK!A>X8t77=O_5S%;>d@t@C-McGIDEw^YX5&0Kex8Kt6!E=1_ zsE0!zpMN@X`<(1EjkBdZ+<_?}S~knb2)NR!Yu4`5%YRQ7l%MCnJ;7_de*r!`7ZB$W zS{naG@e8E1vQ!`Y^*qeECBcyu>4Tq#0*jc4NP#b>T=-i0(u~@6L|Spm_`CIcxXqX^8 zm=?YpCWbaJTt>zpEyoEs1sK-gc9w26h>JXdOFMCK>4gUzPSe^)B?bg(1;`lHGw z)9bCRa0mUD8KSK$+bg%t=Mqs zcE>%O%%0;53Uhl&3u;y;I5=A=s2D%lk^HUxzNFc|Z@m#H$Hgh$R1KMq3e**n2%y)m z@#$^dXwJYMZ&a)zK23+bD=xoln~(G;I*}C)&OQ&X!IB=yVaxvnd96KeAUpP7oq0d= zbqiEUiAW92#svTLQe?<&$N__fIf<^m`(VM9Sw*UH9Vr631D$?bgK1#Z^$uV!e@PE1 z?5TWS7{VtV-u)ZPvVDPk0`K(stD#HhId75vtm@%sT-3UQX{F{bbTCo+N#|FC(76|S zfO8Vo|Bx1uLkDM+{A1%81$??}c9XC(!!?}Z)f35xxe=aF^1*% z@*d49OJ%Qz12KUy{5`xcR8BR-mHGe1lQVK4=BgsPj8K8L8uS7q<}afcv^zOv1u+5% zfUL5m`XXd4kR-8^BTGrXE$y*jXa51A`XMAxpq-;vAgAnU-${%rWTF?Yt{f}!RfGaN zYLSo}W#=FP=C_v61+~@ky%) z$y$Z5{$kmRrcfg*lPTn26*L%F^sK>1;0nE&2i`0VFKg(=DZC+h&1`ExYd}fuOqcN& z;40z?NK95BZeOVY%F?ROJ*P+z@kJuBKz>DhMJ$1jG@63XkN?%bE1E_yA+Z5}y1u1c zri(-&j)Q+1+gIVTjU@qqV;vk9=G^B5PqGb{Te>^iCBQtX@}j^~bde zl$n~{eY!`LiYrZ|Xt(Q4@%+%%yk6iO?=nJUB4}xm<8CDu_39UP>k+FU2|^f&-zs%r z&Z@upoxbXp>+==iedh7&wJTR7;e$vq&t_H}JJ5ZMi@Sa82=Y!2h!} z2p7jUIvtR;TGd#SGe1Ig(`^dmBY703FDfoidThH-vI$z8m65!F80tTdsK0w2LHF;< z)hXOd+RF!*O$M5ONpy`x1kZAf`HjFe>OomV#!2tw%>aVW0OD_*jr<|Ofv_VbbRj|M z$47C@268EuLBz>ngzZMxwGPHNArL*ckdE$=5PG)(VtODSO5(!9YhB?=1Wk=K(RW>} zvz8B+L}?$(sk*!htI;|3JRh`0b&}> z^~V}!+E0XIfiuqF0hP4A4#=C4*nR-xN>&7je2SR0kuZ(%7wI5DHDB>()chaoerUEL zjB?_Hq_a#M-_wx~)KpB=ZUxHmUmj0nH9YEJ0uvP>GQHw?dOo7w)qegM$HJ{r5}IKZ zvD>iu62#$h57q~m-iI=cl)x8+{g~9-8Bx1uh#k$unF1Z>hQ!-1|IOUu-mAcFk+kGn z@BHZGeG$%q{lS&JAKb~yfdETv`EUFB2bZVJ#=N5Tic^8G6Idz`So6&4%fw#Me-{OP z?JtnW?&dXvqfnG?a4{y(zD$&GDCT%*bwNz!rtEe5*SdGDSFZoFE$Q@5d*O)@&?&5c z(aU5aEp=ghK|D9q|F#|}|I%ZM5r;~OQFac(l*;MT7KD9Kj-R+$v?xU2?F|B8a%Z*v zb_edgwmJWKFKM%5YzZ9-k8trL zvc(RZq8&p@yvvN_)`3EFzwqfoAXwiQ7d*xRnc}j1??f)g3y(kzAXB`L&N}`0cLO&N zyxz-vo1^)j$!)zUiNj`}`Vc`v+R3&j44l?UaHX*y4F?7%B_{1s>Sl|OX?n?rU;@nI zdW{4oBxW~CRNezj6Ouy8+7&IwHy2^xa*l-BO6=wT-7u+jd>h$xBW)G#`+GqMv@}OW z9sOrKJ;H=NR!(=hNa~UDjnvv7#2g*vbr-`;S z4UuErSB^VUth_^-@ett{QoZz}e{-ro4_jq!UjwLM!ocRM7WcpDc`?=gT6?*L6Z4)% za{3;WqD1>U9$!QMPih}GlLHM<@y}>ex{q@XHjjy7qT!s!7774va8N=&g(Wm=D zlZdw}hKHE1GQci!i2o*4u}jP|b2;_0X8DV}|NNtQm(O*7kT)D|p7!%5`yVT<>Xld3 z60Lg;DdB@?WH}uCyZ;YUZvhp>8+VVZh#)8-(j7{-l*AGuDF`SnOA1Jrgu+OqtueivODt|{J!t||DQQW&v6xG=9%ZYpZmG@eqfrA`;*U^LMbkR zkNm8{?pk|2=G*Z%+OEcw<8^|U!|nLZ_~MWZJ!6o*js_&1@apoS;l@84Vydq31O1zS zcy+2&b#wd1{*8=Q(NRZmYm9c}7sr&WqZ~#5M5mKKa!9;`7+p?u|JCy34iaD3mkQ?| z*aKf5^^Uo6IsnC$g3EDuN>k;$%X0!y#>H3kEHA~9C@@_3g?-9q+NQ55wDG=%x#23+EO%jFn_=^-N^~UQrrJLUX?gcNQxo zU7I?+`3Btl_f%h9D17nzyq+=@siYT-MBJRL4S^fwnN)W z|KQdt=B&Forpse+_v@yzHV01_!70+?~)lcmDgWnt@!RRRo{>09#)iE zRpDZ?*&e4UsQYT^z~DVAPU*Azr(HNFXPqRz4YFO=w8{T5Pdcj!zGCi=?`6Gf@H^ms zVLqVsq%*~nA-pt^kVq(qyRRDX7CH|fYeW^D&`uT_N$`nn^0)b1m5{t9;cyOgT+kXOkdvMxrH9MrpoL!x}G8 zE{KwD5xGl(HN#(rwW&UbtU9JT+=t)N` zABJAHfL9hG_d0E{0A8z}3Vd3WQ=d7s>ks=EV4;4o`T{B0kjDFvCgg7J$S5)Ii>vJ6#D>zVTjHWYGQK9Lk=Ed4KH#ok z5Aa=)wFe%tbw)H-&)*DWzS|8cKOl>PZ{6e%iPv}Zk4hb;TQ&b-D4dd-^bmU(FOe=UinXXBU;bit!xjCY0&Hsj%aIUZjI zv)J@aA9i^=ptGB>eBRjUVuyhZ=X1*fIQK2S9mNFD@66qT8q?_e&V!1m$qJcs6^M| zJ?q6BM@=KkzTVY)@z}P&_C?z*mW$&dyT)))o66kzs)y_g6=fGvjQgPEm&Djj_&=#X zoMtG&AqpdPBk z1^5;^ZidsVu?X03jVL6KnPwZ#B*UA!J~qPp=09SLN0R^40!LSV2P~w6{;M#X#7Kdp z%hp6nYdrXS*DpVH!slX4zFvhlO=`c0_PK4DTTspkdmpfZYIFkC_x00(VZ2c@*@z8z znLL0_aNe9ieqTD;&HFh!FQuBjVv^$pz{IxQMtNB)Mn5nh*5NjPKQBr=Ks&V4l}u48 zlqUuAlbRoAuj(mY`2ap{4EXYa!GDol*z3nIr?T*LL$|WB@gXQPp}ltp+oA}sTpN$| z*Tv*J=1u=n4FuF_jQ-GtavD`3TAQv{$TE=Dwjz1eZ+Ua-JZSP+wh2KK1uLaW$Sfv? z|9)x{cm2yd8iIAyzt%)}Y>r}=^s68k_L)C8L(I6zx;LC&YT%d|*S|W~EQtJnj}G|3 z_aXlM#0%tm6tb*#owY7hrR)2Mvb`Lfo+ z7PqF@lYkczC4TPju7$zY0g~URU-WoZQWWpY5fe;Fu9rqJ{1L&Y0fxnswy%xYFPyu{ z6cfF7c%*+&TxKFra-4(RNg}FPEb9q`I|0=H^YT+}eZYGJ5C@Sg#P^2(Vd%kR?9!Vp zHB`QnX+{=|%0>(DF6e8=v?C5Ao97-}iA6NOCIiUfYeeMi_Xv-ChvkK9xhMK!7c$Se z+yZlS!(yDk+9QG^0gv8kT%yUeHa)j$$B!!bcM)4>jjsBCa2_i znJ~oHI#~fC|1h+9>zTW=6odZ#NZ2xg&*edjkOdpxis%P5{b&V0`~YSpC;aVK`!CX@ zVs{UEFcDbPvOp_$1^4pJcr*`Sud`?*)^c(^`3C=oAImB}qY4{HeuOyNTlmn*)wS>2 z&DqosXKiAgn4^js4ta3r5Dg6-d4*PlT+># zL7_D=Te@#Fi!c%r4*g2gkIaOrkUL z##ifGgBlp2#|Sy|uE6O{PCQ{~c;-PIyG%dzm!;_|zJfT7iy4&A6{71YG_M~~&AFDV ztsKtq88n;JSMn@g17p*hp?j(@yX3~Y!8k^-{Kp4UJ!z2}U0xey_`-2h_Q zCTP!MwxaUHN+=P4d!vNHb?fbo(74>tzqUs_*ZT zTPq)aohX)FB!ui3P#--CEKiS$_A`z9-SNS4S#QEjorXB@QUSvA?L*fHw`x!D4%9_{ z#2$PT*_d$ii)_n_^&x8gsqj>*cKdQ2yub7dS_M9&*7WPpJ za)kaHiqMiim|TC{6e0Nla+D^lJsD1$0E?g?FbUc-{5)XiXvgYOGw~;P1*3p7& zenuCnThYnM1m2J)%0n`IkF5yh^{Z#HW+3a17a6`KsGECP`#|uyCtHUk^*{F3lq5#- zKfZYx*vDG@M-enoJDI}}oH7=jUJvniq+M~wcO6s03kJ;n72RDII?&^}_maVApVB^T z6?qH#a6)gZ+lO`ni}qJh>9_+67Pdm)UZu{6L1O#7S~86la=vMmaPpoF>H&d-^#;Mu z`%MO~6iOtmtU2c=R6o_1m~_1I>eW0LkpDaIz3Hb*QxVAl`IiqUts=Xj>l4xw?mxHm zrcN7?Z8~fi;B_+EfkennhN7nPVgAs5;k%X4pOQ||tZ-U|mFjh)r0<*z$)4(03=Q)S z;&m@y8tP4OldK^aK*=-V3cWF)#sG2vEf%?b(}}_PrXvOZcj6v`jXa=J{#e{scp;F` z+eOw9KwOz9#gedAvWT4IG`?;+=y6{oGK~7*YfN-rlF0!~{?KVX=9BveRVfdYkLde} zbQ^&a)NbjvTi3Pey_G0@na>?8k#>@S3F8Hiq-|2*C3OfXKxg_0zQgjx>R;K;0Id_g z0F&B|JR_zqH-5r6ioe!8ciZ#>rm%f3OANX%G>@?{XUg$xyl^i@^18%M|5Bh+0oMBh zrgu9nz=4IiGpCRv^N*db{T(t1*?AkrR!PK2gTMhjcC^|xF&sDXihwgmD+QPQwVbPp z*NCrxU5SHAxLvzvU|Z^D(VCU=NZ~ZJ-;YanEAOA|WF{P2t%6J4TGC&W{bqdsW*t?A zhHSZ}r=94(d{2FfwuA~cak;4}d&pz_gv;2)c$6!%dqtiiJiiF9FxZ<9NdDP}evTtB zKzkJ;3E>X|T|bx8-!1IJ=(3MsEc-FBbQF)34@vA@!)(uda`9|5hc8dYhqR6n=6S?* zzuv!Z^J%^Y9$N9`=0yG1lp_gW4A92W-&H%}#d5%81koC!q}IgN*`WnnV*vy1C#&pP zf`NFNn<=i>!2GJgA~Hap{uao$ij;zjXq_cdQ{q^3BayiV%f^Q@EC>^UOQNv|x#Chx zbuBUO4XLcgZ99B8u|l*>*1ab0pZT{2LnXWoulT!$o(fKPum;OEgOM-tt5{BGEe!4o zD~$cxvNt86!EeIEbZGwidQ~2JcG6`s-hXCj)WYX#hQoKWp%=ZB-(3x>BDS;%(DKsI zQRkZuI3|U?ss|o5+x{F^qo4iz7^;(m>_bNhdJ`s3GgyQf{$w4FXSmn4z*D^YZtXw^ zt5B~pFahdJT~!lx$DA0kTh1lNx&CN7I+~6aH8S57jU2r48IWw*FSJ^+`RR7@c>;k! zOg#g%zoM%QJq;zJp;WvM82NK=h!oIckf%G6uM@9P$IBO;2d{2+rh5m|&T_r?xAS#G z+D9um=!KD9Q{g^^&Yl0jo_F;h$CymWWhISPu4~3rZ;IBFo(bvHHXh2s8_$i`jRt8z zOKgu0tdxS=g_dDx4q*{dh0D-wnNPgU$g}Gg(L$L5k^`^Bpz^m<4J(Pg|3P3uf1JEC zVwaak4J-ePJFIC-y@;RG8LzSivx?mA^ptB6t3af5XH*#a6dpAbEV6ak@3ksT+|Bcn zGSxP|mq)*biWspr1Q1)Xy$w`)utNK=d!#5iAk*yPA*XH7(45OymRoAp_wQ}=k1m!r zFU;f(i^Z@RzVy6N*~#P~$J~>^Jb#l}an-2y=ru4UM{ns`)^K!*CJOX9KXB>qm#q~{ zk;5;GBh;Z^Q}Abzr}J|2CY@op6Vw5GikQV`u1npR2?vAN26qNl~+QqdXTeSAEqCQyV&|Gnte zVsaUZVecST*v={X>Xd;HLf^K%!-QhzUl}`M z7dH^a+(@oJ=W<0P@#A{3`WYbTZsoqE{*TMiaZ7-@=w8BUO{W%_T!!En+&tjK6R%K# zx}E9oUR`=cZ<1gy!ew=~rL!kG!`lw8?yGiG`P-`G5c{fvGoJF`0~25$oAcTUfBwCe z1-0%Fmb_&57~LNqBgD@iGv6jj3cR9S)-z2>V+L@%RbRpTcRSO6lm#15O@=RvyrJ}1 z){SX$4@qp?Gf3ZG2Oq~Ba`rw{Vz>S2XwZUez}{*U0)*B&7U9no+3 zrD8egKJkvtPFB44g%mXws3ul^7uIHtxfS}@Bu!WK!wBvwwckKPcHk{S(Ym_{JKZPm|6cug{K;gG^5zwi_x_%>XRU^|eWEs0e z^{P($D{JI3@_wXF@cWG+U@mG(Qd~q^vbvCd?Z+Aor|tFNT_UUwTzG0hP84UIFHREY zOdStS$Y{rBK}J!auK3i1G!`$~q`Ru69Q}iP(o@9Xz2}d&)F20ztLF?Ahe1-{%fvHb zA}psb^jwDb(RJgydoZUPCKn(Gf;!J#Oe<{+qdH@ zq8d$TB!@J<*t}Pi^xh9wePb;#uKq<6b0~60=9Z}fw-3!FG-g7$U4o0YIa~#CI}J3{ z5wcm!3jBGv72C#^=H#27v-5IY`J$1&-5Bd#^%mwsX!aCzsonghZ!ScCf{*D{6S+NR zjC5GJBYlYa&B=foY`&1Kw+(NIfa4J2FpS$RLs*(T?a;BK<2oK#>?(Av-10xw?nG`w zOvRrW*;x7e=m@_r`s_z9)oqQF)1QBk+koQ+6gTDSz{|RS+WHkP z;6?HNfu=v8CvD52`_nY4d07*~XvRs<|2y8H5C0j5I7CdVI!>@FLS@omhWQCQ!kuMW z4Gs)h!ifcwJkrvO&R7QCx3`jkhtr8MVcjabeXu#cS8Ct9z~E}->-1-6>R|7-8s(5T zP#dx!wU_uSbvCPu#+Rpnl9IP}G=R0X+p zeJbdsJ!aJcST|pI_oF~3IQ-Oc@c5y6QI`4-R}CR+)#!v95kAlaiDNWs>E<@?R5MYz zCP&9JWFD0I$TO}qGMqVoo*?Q3r$m-k!%5FmtD!ZuEvG!wQ3WA+5tluY^!GKFVP&ScFd1PB~7e0`T<1oRFHR9z~7DS+nYm z7K5Hac+@->p2V0GP`$PYbFeO#d$goDWfte_cdP%q+S$*upEX1Bj`|)2^d(TlqR$9_ zqoti&9~uh^PN0tsup*=O3~w!r&y<3a!f17hhGWA->ndFJ|jy(4jtSDzfW zXiVZWx6!^T*;Fd_D*RRArjWIvo!e_NTVH@jc8brQ`rn?_{2m@m9PA;3#4gQE?KHUP zD;&ne2EjR!hyAtECSzZ|H&zE(A7?%+@tB*Po%2;qp3q^L70&LZYv+0?)>P842_=yC zOKsOJvh3O3AixlXhCCo-+nPW3z)8#;{Ybz-mH}yaP!c^W2CuJ( z;hTE8-*>;vB-SWMWF9VL6de$a7qWAvkN!2~jfBGpo9K;flzP3Y|Z5}2-Xa4jsWwc^%Y!;p*vL}jrUg9=}fU$~x z@{9qffs?WOJ9p=~YIMkWJ(Ygo%_wm;Mgk==v|Qukk1&8yr`CvWKA0Hb(k;!02Cy0H z@fDfp{^`Ef63pNOG+DP~Q$QE*wSgcjlQ;3HQy7H#r%zGzFmunbfwnNSS1fkSR~0a&{BA9 zUumhw-M%HCYEw&ca4lqS65dbK3bUOu+$2b2xuVCblax;H)$Vl*mQB^rTiT{xsrlRn zidHUPgOi{`9y7a@hhRN-biQ06+<9clGe4tsn8ceOG!ecwt_+14``}>zxXEk^Vn{#trRDt1qggpjstYG&-zL* ze?LR=u9YC2EFwb zy6k*jA3HhkMK4Q%%*+;SQLHFfqHH~RKSTZ_;}WbW-e;_>ZhJ0ZGj7*GVQoH?B3YpT8v1%>LqGGcx5(dg$Uy7@x<&3WDl(_WOwn z+ubHl?uAK#7kJm5_RlZnV#?0+WmNEUryyN)#;a>pjp3qufok@zEq|%7FF1%ryF?vGbZVp_O}i0B`PX&14a>w|(ecv&1Q?9NlB{f(zs6N=D} zfghtA+9E3Qz?mP2#j%qIz_Lss$mte}Un-oaMa5#vdH}W*3U{KifuIJzJ#>q-#bg&O zqeOX!fOWW^!mT0-9Kv7J#?vxR;-?sYgHlQ84PofRS&)nhxjitgH^KtE-TF^@SwYOs z2vYB!aE(Plx$!nPC#RnGg#;y~_VH(nKfGJjY}pup88}@gfwh;(t(O6bj%fhK;sOlHl0-%F?8=i^j%2-R%&|% zF8u4&(zp_$4(N|#%3nQTOf+}l1O#__uk27&n_W;f6yxcGI5xTo6N zG4Su>Daa&XV~zs%_lx47h|-$q&{}H(1Ekx|TUFkpu}EUEBh%?~qV5P!;1p<6Trzun zZ5SpnD5g$dAWwr+I0o)3N(haY#Ruai9FLkv*g3!WoXkCY=`rD2+4s1t0Sr<>ye#RJl za=Q9?`zcQyc(;X%Mtq*$O)0Z@*yL2Rw((fB0snc7{%1QAh4aNaEa@{=r!A}jdbd|SJsh`#n^<-M zYIycjumvt&ck3f^l(2Fl3Y!3)t-#GKKMUNk!xnl|AD)#S%S`_CHKe2WThS$xVW2KI znDit#t*i#>3rrVN)5J$yyV}hma-Qhd3x$%@u=h1V7Zu^|1glIBp(>fdBipJmx?j$4f{C zhaNPtrF;*U4n4jl4gc-_K_`yStJcr$`{Xjl!WF(E=9$vgVy5c3!N^~o`7&67x=a=~ z;pXby`@HE9{uOc5+Fa|sxf^?_b6VFcyY$+U0`8i%*T_XUE;W-u#H7pBpT_!vLjs57 z4#pN#GkhSX6ho4%5O2P+dhlauCFb4MHl#|xO_pbT!2~7ubPH+LJ{SA`9a0m4V^E5{ zNZ1afh6Z%e8}Fvzv{|~{oZh{jqv}Ubr$?nNkL5?}HI5g3l-U7^N!Y?o{0tXPzcsxt z@_oz-XyLzj!?0&HcMCsfTX_#AGryOIpB`4u)>i}+_6W`LELO!Mz}DI4Ypk^^N41-; zbl^-&C2jIIb#GOQg$IDGm&FsxLZ)WEO(CNs(TQ~J$oP|=r;EbZP7n46Tz`F%**cV& z`CWxs8P{gK@P1MGf= zaM+oNILmlN@!@{_=?UM&SG-@=-;D2VA2Y_=Lq{te-kA>vSugavRwf|Mn|3_M71a~A zmt`lS_*dr_4UN)?ft&pC2HGCtz1fp0~rve)k%r zlb<9H=y#oq2Y!UQ9fs~$097_|6OKMOnwz=@>c#^Kr*$(vb3{jQT1PC&3NP;0Z9-<@ zBt%>u;DXo``Zg&bIB^#1A6V<>XTI4pUa?d@{)gxpZo|=S_wCqZssHR!)#M(Y`4D&s z8z+N-pBbg!_qs<(s#ebn!=m?iR+;|UqQRf=++d3;1bOdVPaJ+m)Zo`QGQU2Lo@4g= z`*^v_cNlXCH79ZM2J}0c?qBPn1>U1t?szpBDh-@HR~!>~D*>?@SqFa_C?=A+Qa|Fn zi}%U?A#o<9H2bK{=zWra|Mm%5eqeh0Nd|mU7XD)GR@0c6gAJwUDR;}DKOAP@yk930 zd%2-yrR$0jgXb^16!C|ei2nmVM8!c(~K_tuipXT60nvZ$|6G|~2d z;@!P}{-8L<3yMEf2k(&rH>RjQJ-|xZ@mYqWqcQNQ`yUI+`{-l)Tskm_k6uOHf{bIh zoanslHyQlXq2G85$3BGg;TAk$Z#_y}bAj14;^v#QO;N#S6|dLR$Yx2(2Aal0^6Q2& zkE~LtbK6gPi%nMjR>%3&Zzosm^&*{?n|yhP5G(JwT~A8^s#wh9`8&9rG2*M!#|d+j zS7l~izgB<#3odYYp`Susit=3t;Eo>gpO@Qy z168uSSHG3&d-X0StKY=l3#>GLtZ}eDgqld?&2}}he5Q7lph;0U%mn#Q`8}J0hw*%E zFjZKH@SoPtd1=0<^dWM!H8Oc~u6o7>Ew{Zi^Y+3GsX3Rs{x03)1mP1%Zcq$D>m_ z6AK-LA@^6)#wV!L@oR+e@_@g`5o}JOmr7kK2P9mg31!`L7N)&^tzNup8rx2ffp^U1 zRWku6H|*2>-{U$87a|aJj#TbmheEP1dCeexzyk85d=}8U#J1x=Et5BnIQqsFNc|Wp zOeE0$Qzv{clGTA4o*p?aV!gH{ce4b4Bn2dG-^ahZriWI;Yv{N5QvT4#Jbx2Q zzwmqi<87}U61;xNekkN)Na=<3F#Q*VO=jgmZ&M$~?om@uS z@C=8cS>VR=Sp!bRVu53L>w@r|UVy8=k93RJ`;6y@IsLQsO&(+OHO-wNuozzZ|25z+ z$5m_qTr9T@yAWM4e$RRCx9vII%|FK!E|IQsM^}}5_^OxG-KW(eB?ldtK>X~!cwgm@ zCf>(!KR;m=xGM5C;(tICo7+ReQa6Y6ud@g5X-#=|%oL`B_0_ZUwGrj0O>!Ws5frJ~ z{QO3frz`#!#7UoRS6tT28t|dRs+~MzCU78Fno=pYYLTpm4onP5!taLq$*L{At0*~+ za&a$Lqm;kRHPs0j?MCKqRnKxwX0CS_#jj-$e7JF<4SP{rHFKOt*ANTKgeM^0fBY%A z{4zbFnmFiC2n9TmpPK#z#jeK_o|mxVBJ4I_19L0{HC8k5Xu?kBbPHBAG}f^`1i4KX zNs?)xzv}?lM*scb$zNHT(3X;jLz#(hp##;lsU0FBpB`)DJz_zG2#ae+rf(1iUthF| zV3PMdeCWDM>=;VVb4|gfHjn*rA?n0m-g-yT^_`icFfK^~7aRgU#O>HsjAWm(xTd&_ zZXB+Hd6Ext*Hwni8437Pq+X@fOl>j@yEcseAn5%FE1CP7Rp_jYNrt^0Q6}a=WMG@a z*0iJ^N$H6K`uJ_E>mU?_OV<3m35+{CW+m@wK<`+~V`jvb7k_QvLDBA6*VjNQttj<+ zyjy*b{$^rFr{ocWM?5wD8G4^=V)emWWY@1deLeDuj+Wi28`X`#u>ISV|4eMd=;jZN z<(;6t%ROdB&^c&)?#$4%QCrbZ&lEE5&&HN7Tv$)p5!va>9y!rk3;FxRe`t+Su>3>) zZ=-J8hi9Yi6HUrQ)*Z{;C&YU*yzy%w^7ca z9bjXKIs-L!IM)8W0?ifJdCMJ!=4Wo6qY96ymV$W-wKJ4msW^zuXdhA`f}2zDy5%H) zp_dNicyY*|HP&kh`w%Ru)|eYlqB?0!@T1EE-44jpdZ{E6}!jJD8iLNtwtgW6B^(T!i(n+jf zIL5wP_cbYP8o%0&ba1YEbau^udrNw5%AWNE9<*6?WcBRo+^pkVy?(3FmDnv>MtI2M z6Hk(C<+*YC$+8?|CFdlTJvM`mMaS{*MAvpyLT(A)v;1~!)>=8P$2>iEpi_f=T~uSN zC`8XXc}@L(_$+NZw!4xrF(d;Cz*=yreFU8$^W;539{fg$d!&bXp@u z{V5Zb4R-@Oiv@GkMU-}QHydFYR-!2Gx)Vp*J4&TLSza~kqE`6Alw!kYH%^}6o1U$7 zGW~wl>l8~=*5z5}a$gUOP#)~o0(Q%JSK7Z+b4GVvA{&&zT9IoMT@7BhN~zz*kC9c} zHtz9sbb42J(tql`m$oJ;(Ym?`yfzOuUXPOx-ua>abkat{KF&?8-7f{L1c!jr)3K~H zbP6m1?`|o5{Bp20bnofpWqBs&dt>?_?tq=cf0oF6l2tH&nA5aT(zZOQzYoHSKlqzi z41Kd=O1vSgFRwA1*3TMHVp=Q}T}785BY@yPi9Ub>jrB@3u@%#abK*A}xZgpx5d8~+ z4{kI$a0B(^^Zwk*z~Mk|<`g^J!hLvXUN!bu#TiOnB-L7sFL{9&K0|(lH~Gca zf%3f-hnC#mQG(8&YSI+-w-fZO!zAvQB|WXjZGx!^-McsUTGoK)V8j!mt{hESaGDFl z8#gFG^O_T1?)tf(_mrWZN-|NI8fWc1K1x-%P{fkX;lFK~P3PFo^E}1+&D%8SK=gKe zhtRhXbjdI}=CMW9WKKBuhd6nRZyIJ|jrcCYQ`15-?g|`RECoYSZ^{E2F?ft_UT01w zw}%i9DQ(M%Q*h3}JBF8Ldtk&!L0i$9IfcXHBnzGInP###H^^#sH@}~#0?R&2`Hwo7 zeQk)+(tj}=kida^OF zNvD8GH-IiLUKBqHz&N}g>Fk0Oqh5@@FSLhaV!Cnxmnp~?v9vfR+nvAB<+dU@xcIQ> zc_8C{tM#C|e9`n|n%stu!`h$aojY&^J9|1JTzq(EKK1bZ)5Le|Q6!JF6+}fgyM!U% zDCd*P^tDY$md}pSeC57vFXN838cm{}?%#tfNCf!I`~`3aycgnMm7~AEh`3hxShfO+ zgbKYr-dID7Lz_I|ffp**-laO+@h=#_MsDQI#2;(+(IrUuT@fevzt)x-#9<0i1?Kfj zC9}kL5dNouVa8Y4a>FSVEFVw>!i|)xM5*_+ir2i;WOigGwve^jN77RakQ9k+Vk!s! z2wNh#=nlscufB@uW3jg%ku|n~fw&41hYZ(uZ)FH`kSSjonh@rTRr!7)bSB%lwi+XBXoGFbkaDZ@$d8=go)8#DXy98 zRv~$pC{dvOq<)xydWV*oy--@IrIY`lh){qWu-LuGuX5@?q>zGTVG0@|?MQzQn?fdTy@Yfdo5R`uqCff@; z^+h{SaR_IA7T|(<0`YY`6(ep;LdO#$-o2tNzn+&Y=JH zRr0m~@n@aTuTK^5H*;5IxbUqr20!+KVcjC{Zy^JR2!@(+^n=nhW5dTg6;xH1Y)KH-0tmF zyJC<(ozkUmVSvXHuMoNVx^)JgOb4*W7>gW9Cp?5A{I{DwV&eziy?FU2wdzH_!o?AmQSlO!!1ViAj5(GP`~}Wj}`9%t1pQ zuX`{ggz)p1JCO54_N|yy{s`^xCHJR%ssu{6-z*qm)F2gS1nl)vD;Ib6%>ekz6UL+<&iODD>%M2E^K{4Fk6 zCgTsVZ+$KMA!VgAg5%X_Z@6#3N`#@Ld7A9AuX~%Rfq|v$1nSW3)ISd?M_yK!?)3h$ z{Zl-WzeNn)Rc;y@m;r4RREsAU%rEO*a5|+?ii*h+GZU%Vds1q&eZ>B-KK)AIx>d38 zNjz_94Ml$CGR*6xjP%!B4>VZ?7&qM|PbO@%Wx)Im02|GsFEy*IY@U2piandCik!ykDcUxEkmaQOFC z`rX~HuY5+zd^P1574g(ABz$Wh=RO58pSX^?3UgND*&h{uRFEzg?NnKROR0GYHxS1t znu_#O0MK{CxuY(wo$7!xI(vBeJ?;~|Q^B&n84=F^pcaXnmA~&(AzdO_{Lp@YOJZRo z_p4*#45MuU7uWF43;Ys5DWAqr9`=+EsAqdzq5OXhVfu4ginr-W?78OUMW zRdJuXA5Y;f6!dFH)*a5CdK*rW8}~p9p%olO-8SiI4n8re+ZDiLfDrpjar@5Iiu)Eh z%5he~E9jNs{r=$};~_^`UdZKxWxkTS6KGXu$zg{}T}bidO>ZI?S%?zcsY57kcwDQg z_4nU={;P91Bcbs;>C+}TBc(V@$O0d#}vfMAa zjof`KSK?HxgW8r^GA&(7<4-mr?@HPjcPo-}+V^|7XHtAuDiAIVg)6DMR8Spi^^tZT zgq}Fykk7^LeTOFkJL9GwuFgUAA{uFlA*Fx56Y29&ZP^!(=h>HcrqNf?h)CE425!tH zN+m!|&l0X}X+Rmu{3BIwD8~E~skt>crNzR+Umpzw*nQrt+m8#7GG}62-{&ilc0`^F zsnlHVQ-|s*`xBVU8VvV8uEZZ8L)_9cy+DWjd|xv#rW*M!>*=)0DQdy_B;)nc&ctFh$mj_9+VLZ8Lgo6|99=!|e z#@g?Y`(u;qWnV{^MRPkY{#caXF?OzP1IM1^^0?_GHG9hid%Du@k-!^ZsBW55E#4sd zLxX`*K%4&=jybUbQf+1G@>w+L9pe5@)Fd=EFJ%ph=QTLZVuiM##4hcr(s;3c&me`ouU^kPlZg zg!$3fC&p3fbODs693f919tmNwyhw{>+fEEwP?hhA2nu_5r2Wb0HJItq zkVro1XL^IsM1<=)f0{~qpmOP9z{c;fWt>Pg|Gi838)FL1Pv;{El;59ZV0%(x^_<{Y znkOqy4tIJety0~7IK5dOG<^hydXK{ib(9IU+pI5ePUnpH2*!OG+B;LXB@+$ESQ$6` zw`Yymm?WnEL^V$1ko#{0B=EVXoznO0R+tH*6>3A`eddC}-N<5^xYXHo`kSN1{6ttg zzdyczS!G4sO^2a3gT6v(MNf>&K16@EgVS3q%rzM2S?T6%@Y>y2`07Z7z^LnTfZ*XlCh$36j!>}Xy6wbc7J76tY z#Mm@yDDyzh(8e8jd*c@4pW12YBBh#v7o-CNb)usdOzM(8gC>m7(X4}%us*&!W&^u@?lTn9px_*5EcdO0Xjs>q$ zt34Iw?24KedXw7bMJ`6~lKBl8jJ6CGDWn~Bw-aB+Rj zjieh_ou0TU)3=&!Iii?Fx4!%w`qLs?>fQ7mCBOUYb5yvPJ>$j#Z`2XCOSCgQ)&Cb& z`*Iufy)aX#dfGR3Py8tE=I@`;4~j?bgrv(*s?brT^Y|zQ5vhcY{RlsDxrUEnl+h9) z?0neOV&TOts>6qo9#hpfE`=w@bbATifVFp5aA{ zsD`b^mhWG0#;d%K!5?JCS9N80Um7FTC6RTjuGb zNbnx(R8OEI$~`cNg%Nj{ku6mD7$}HQb2I)h&_Ez1&q{%qJhV&?kpSV50DElSNENZ* za(nS)&&ha&21yXpxBZqEY?GeQUtDda!f zIFalxQiqvWKZzq&kjed|3l(mpe!efIm~u$7t;*RPU-lgSvazN8lsq9@B@W)4~aK0U%5V3>myTotXe-IL0c!ypxQc#7ezwD(mzD*?6g308FWSk2#>RX8LZ=aaA>bYU52debwzY1@TsIkU>Yd2| zoq!gN2K!xqW6U+v#+Kh7NcD3xl1RGbv@-9NyC>VGTaZ`X!L%6nx?DWJ^V>|4Qnk6m z<9aUpMDkDZ%=wQm))AQ9b8;8RACG@sR#lt$STr)5@O^FZ$Hxo#`i~2z5ZB?w-b!tr zuWxnn=7wAIGX09`W@DbE^eC4CFT~7d1Q$~EYNt`pA5TnRSF(2e(la@beS~*c^sz`^ zRQ<|fSDsY(jY#bkJYoyNKa#y+!(Tr9bn#O zW44z4mE?{5jY{_lNYI$CP~**3&FS{nsqNY>_uA|4Sf4f<=;bs`!$Y5=AIRhH)3JRq zH5u+}=F0pI6US=Bv;t`e9Fl^L0y(-qwf96X6v zCnF@4PKCI+||Pm2$uH@pMU%0=GM+wUPhHHXxbBotbYYo zlrW+~-f<>+iWcJE3R>LtOKBa!BPp&2oO|l4J^31+V$GKOI~3NWM-fnoq=|+Ks?oG- z4;znok2DQ6s?wrkG8-!9PAFA$Cs0mmMa)=|qxS@}x1gi}mqkD%UFO};4_RTm;Va_x z|4=pJcZ6RBLZ`fivx@8_=OI7v{_2dx)Aa8K5kin2JMadW27kgVxDG@me8DTsjI@LOR&sfAJKK^D10V-} z=%mW|JU`#x(J0t~>L%}is<@TFT@1<9Pw@y@)asHbJ1``0w`v785CC^xICFcydA;QE zn~EJ6)Wu?3I*?+Qf4zDB9)k0}9eRoE5+1LeR9OGyw!{u;e(SnYkd^@)emFfFCkG`+WNkaK0k-)a; z57j6CkEpKzit7FTwh#~jkuFz2MYb>JCQT z5b-0zrNZEQViFYmAKwBe6nA33f-*Jmb!@+V>rJFK{fSVN;;_17SKjh(r&*b9ex9fz zo9?XtFe_l=iw~9#v6#9^N}ra2WI(T7`?fe4t6b9qskEoZi#fR5iXKc0_IjS_J0j#) zZolX``ngH3@ukcLtl;5r)(h|m$G}Y7zgF>dLuPx<`HfbEdJ{=eMtM zkQoiM#n14uEz`Ul=t2Fndyx0VOkp1O1o}!!@g|458P?4D`4xI)LryJh6}5kDE6jEC zj*$1_fS#WUVug@t1>nbkS{`2Oolbb-i zL^PBcCU-k?Hd{{|f0MR3od>;mZpah5>@=+kf#nD9AB3h7bs$P&gvl`=LNWxu#L~a! z2g9MGPMqPIxs675^oFd@&n*&{;f3aUjal|o>=N6m0aJ#DWEwhSUBQqq^kGD3kg+|c${O42Vk_vSa7{l!ngqG3E!V9 zY){w=&-?w4dqiu4r+*@E_;0qJ-+by2V33w;_Oz^%CEM)9Y=~g1fJiYm7bf80Uvt{+ zk*lQeth8>NDgB+xCeU>;0=*@G)-Xv;vhDEYjOI= z5Rd$nh#tJmT3^PLUu|=8L$OLA}9M{PZj2UHc1go8qai9h8m) z1b16%{{|2$+S*Z0(g`;+lXOZ~avP4QW>D9!NT|8S~KsP&@3@&Q>9Ve%@mx zW&YZGg4xS}DU^M9sZH|&x1Xiq@=3=q`Wc0(d+Dpx3hxtGoholkybHH(*WI?*p+gRJ zzg7)i{MLtX{|?5wuKhd()(7jF;r={KJR-*|ybH1d-upQqNRr_w@{RgGqkaiKB0N=_$v z$}uQ;-uQYG^0xi0-$qBGinSA5mLhNTd|wxy=S?89mnO^XYt=Ey?q3_faRyP; zaU9==xno?j+v?tN^!ciF^mGs2vG@okQ^!0iWo`nbaJ{C3UMYBY{L5S;d?WbFUf&)e zs)jnkW`W;8&YSoDCX~Dkg^u|ZkUJ2U4tnvxg8Q)beQSq_#2Vxumk>E7%$0_&914L$ z!^(U8=@c6U>ZR}xOh#vJ#C9pg&6p^KUqBGRC%Syxdu)bi^TEXCLGo^67KH9T|EgD) zSdZmtt2uo*6@$$q@#~h{>Fp9kkob*~k77M7cXD6GGr#jvE6yO01LCXmI$ucbI8ZG- z4~nvMUl|#YNp9!SkTbHSaIBIs-wk>-_s)*_?I_A6Z_9d6&v##!)GQd+YOxGk0`PetZlKv=@`mY5?~omXbbjvCTO= z+%9SIu0l*1e>i&Q?Xp>*X8)%B)%@notLM$$0Q_lCG}D(v3a|g zv=pfd;JMaQr-0AMLWe^=;%wt6>jbC}n&s=Cd{VU;Xwjp%m_T*g5=}1l`1y@^+J4~U z!^}a=SD8NxQd0l^#?rqO#8AEpZ#thp8Q6{zY)M%;?bs>4KuC8W=na>^>mBYrX)64$ zzdSPaCHg&kpxbWU?j3%kOcL*kB|f6Jd6i{!em((iu?Ma$=U-uq5)`ZgC;sJu3d=kG z7%aKh(_Bq;HE-vh^~hy%E42_suM;$185@zh>x?Vb37qY7f{LH-2-r1|Rg&}#e;?e) zh@GAsJUES=H7NSd^^-KgI+(^10ikRQi!^8QVB?=PpKffu_8sO~JhO8Ch%}*0^s&&} zg1&l8F0bHmmkmX6)SJ9hjSv2jRI}ikqB}fr60h!iIzj`dTNDOkWN-ruhjGm3NCY<1 z=)HHx*s#-Q0%>x5F?si+mcoV=BVlc$#-kG>ri{cTfH(M7*RdVnuQFV`v6oi=g=grA zJ<^?NJ&Uvy=!m3?lz)g4{&do-@FaP;|5f2pV`!+-#LQlAIq()VaSn#=k@^nZ>+;PH z=oNl9q9X&^aVLZAFg~AXJbJVQm7a#j;tBOETbHXfuVNveJfEPPidp4X=(az-KaL&C z=@K}x3}yDv^f#Q!?$5i81B_?%zcGolvuYo|9WNn})`3_*o2@Y6`Ef7f1jYR>DA@9x z=?lNldCP(b*lWDtyrYE~*u3^_Yu}+V%ei-ajFftJ z*u0C>pnbq3phk__^We^wASJN}r4#!QVtCt94ZV;}h&9`loq5d*HPYS4&^`3=HSc|;JReS&lksK819Z}3Kd>olwy+T>N7 zg?n>&Hh=usdSK(Oo$aXeh8$62l*Uz9Q(9A>CCx>MTBi-3aEQptgDgyTTX29=&mxAddXJ8Wm9HBK3up@MJU^=Xa zQ>VT+{5(U3L@J_{N8t9Cp&Jxs)AB;^`n&hPC~${ntUidzEk90EYf1V0(dnr#LmR^O z&~BY1&OZxtVre@6?U++RJaJCK0H>dg#vt3_--;AYF4V=8mP6d* zd}}tK{O2y*dYe(B8CnK+JrDi(i8>4^$N)>Kqh4beu{5du1aRu_ z{;t$K4fVm^07ow7@V*}~U1OhEBbO<3291LaH)Q7;&awI|HXsP1I*pXXOlOa+12Ep} zJWO&lx2~%X-oNO)Wi;#am*e`)C%HdUO%5j*6m3t|T`i*V8Y6tK!SwNk@UhQ0gvoIi z-=9n@Y6&S1@~yBEq6G5Kkv%5(bI4`mKmd|mriAzEKDz{wTrVis#`77tM`=s}bdG15 zYTP{QNK8Hzo|VEp1+~wv_cmLYCj!*{)M0-l{)dB3w8JEK`Fqy!9lm)O)pOl5q5R_)*yVGmi?Ou8# zC`J@tR_G|8OGR`;U^S)UA7BBMJ8i~Sr_xffCyA1khg-)=x6MkRjc>O3kwMa=Ia1rLIg?;uZi z1`2?P-Ew%njCaLw*h4#ZE~n?ekTrGEl33*%s98Xy;PrL*uJVc!$?!NGtR|xW81DQ@ z=icGO#dyE?>Q8!1K&v1R3l47M`>5mVdxggwPUyETzLZS3G19ImU_7Jn=$+sV_bR;A zfvr9-CaY#k6YYBc*0;4x=t-sB@M)k&#tZKDbvG7T+V}c30+4R9W5z?GB0g&Y5q$Y+ z`BghiR)|}5)*&akL=Of16JDkag6?*T!{;j{-PD#V7D1Y1&*&RFv*+{=`w1aRJtG4` zX$*htF%BdoAnXV+uE~_fP09t_j9XIanU~trNY=4QFF3B0;U=+q^v)V{heioy3o|~R zsj!b`s{o}Y36}5VWF5G8cN@z&(IZt3_x%b4I0yp0Sd+cz>xuxeTu|WK5BqPvu4vn` zfhAu?>~ufHHUe&o6-9*|bs=B)dhK@lK#P#F$pJf@)Jn#f17O6N^t;B0a?EW={VTec zLsBsFcS;xFI*=l+bo3+4jkI`i6+dw~Cw+mbzG^+NF$Y2WEh6IaxYLAWNm>Z(!EPHU zmBAk#Bwtoa)Fo(%24^Oagu0Sa|6>&rPRrNl_v^Ujcjo)Ht)EF8M2M>=SNm-~KJkGE z-6Oy-*bUTjb-Mb0DPc1D-0se+mRyl&hKTqvR2awoe8jbv68g$^prZn!AlhA~gH_ynTR9A3WZ;de&j;{7V6jWN7sz ze$PC$fA(F1^W1T&%K&R#4+s0##{eTg(fi4aR6L*I>6KJzSGvF`nSwU_K=XCHruMIz z(l56^Y)2oFPD)2bc0ApX*FKSIJE9oNk{SEhR# zynRsJUW$vw^C5fVIo%nHb?|AT3b4~>u#i(lj0XH3m#(oJo66YdeUh>+N{^zNjI4BT zd&ajKyqIFsiHxeXH!4XhpnkpYrQDM99YcGZ183|og<4A-wEfma@}c?I^c_?stMt*)u( zSXCA1_`~jbl7S~2Rw}#2xPdfV)`HAon8&er4VD2+DpA&Q^6oK-zv&+97_8>yAD);c z(%T6+5`Fjgsh5LsEs%vRwY{elo3KP zl1cnp5^N2o2?0+rGU_9;>L%_&3Vf{kh;`fXUlhL!E}HQ3Zo;nNvw#Qqu=8ZH=Qx3g zD?s^S2`n~zwh!Q}Qf5s_{r1>hmw{&WxJhUYx#)EHKva?n-}7P`-Kz1I4(VY*^O1%2mL z{^er{qP*JOJK5f`PvcWxPSigrrC5i8ibL(abpr*CkGB{r*o)#J{#fOk(9=)S*mHig z1xxhkaP5JZ&BYf{yT@x4PhLlhV>Mgp^u}m1ynB+&t`1~Ws!6z2!o;K1h6$v-2O&_j zJoiEqD;vse4!cGsUHef{-}kKNcH{;~@imPG*c?;(e0v&5UDY!0ef8$R#tfVv#DA8`(;<6k#KD7V68DQ2dYD#}qo8xWzJ zd#R`KpcO5`z?-!3sBI>96M z9XV9S$Z<0yYfVQMXtnO>&RP4)L&&VBpnb_rEM zO%f;#yV>C&`bgyGf&B-n27%*k-`)3Rtxz_dc9qjn@m`66lTYt(cskS5pN%eaoxrkz z!I;J29~aE|`XPa@jk?y9p^GtxgTrlqYc?3mg?2RbGQAH%KCJWn=@{Pr=6Uhef9_C& z!VOQDksZk1yn0BxqtSfVD*jU1cv6m3E%_K)|C0HoMNyLC4jf}*p8k9?AExG@`(7j5 zLRkD9$`d1Rpr4k;%78WLjCw_X5!&G_;kQNR9D3gIA27Cj_0bK+yF8$7xa3BA^9~>O z^93Y7_+tLX%a4qg#Ox3K?=3_PL4szwD!R9wgPl7N?PQnI13&EIGT-FYG>~r%BPWh- z*1Kl0ajBz+L-VOQ)Plu2<}c+5giedgaQ8GogJwTpnfSUe*{+@CG400(c=zz!A$g+B zsMu#kaF=fo?mIRTMfXLTOCuS+M_47m9(0aNc`1Zesg{-Xi&KH536q@W>>wb3a&KrXQm_Wa;6 zT;~;v?1}Inkh*#+W3XCvRToY($@ynPB5%&w8P-&bo8AnMDG{rRbmdqpRbhi#!AFV zyW;fAS4~|yiO{EYdzNRj9`RXkb&?fGH$li|w^cgG%VhDp_gh+Gbc))3*$s?~c{P8^3 zYfipC_`3(RU)^$tM;Zs`l#sf}i(|S%eYe&7q=pRdZxG+2<$a(yCizSf^gV=A&$8QD zq{(=`+?)kK@4zHE75Mlm}*q*@orVhzaV= zd*|6Y-MXNqTl}Y18}fV#=~KBe!!SB}f-oXBa=yqrg>}tGls=}C79b=&OiB!@XTjS3)yk`BWAU}UN9sBi_A-T->A$bD${tL@b_# zFO{oL$g))biQ|4aY!ZHwRyp~9SpdP0One0l84%9l!&_eHw%QqT+Gi!u@#hFDT#Z+0 zq>p3Z`}$InIdjA3-0&8WJ#l zz}VF@Z9U*C$EY)c7a0OThRuqX##>klRahdQ*EJuIquQ0N)e?0ttcUUn0cW?}s8lMCrXaEjXya8+7t~OoN5KGZ%L=~b?LEk4p<|4zlQqoJrSlZbW^5ac; zhyxNg-81im1Rg!vtyK)U?f2|-vi!63!TNRWTM;kH%FB-ukivciN=d%BooZL*i-MIF z4eR`m<)SB>qj9pH^FQ8ANHabL+*W;gPSUDw%*b85#F!L&@OZD^8_fK+fF#|3ot~yk zxXBj0j>f|e6){d4U+;g|ZTKRBz)`r9vUm^eK^ItRmVedB`JB>dXT%wP!Le~YUf_(1 zW%pvy$c&65p7Y;>CBr6Q)v!&TQDa`*79U;rN2DnmHGm3$kv>hKM)4KBH8&iiE^>fb zq^YS$4=MjdW_OUti~H>d&UJy;MCd{C7DVln-SbwYBg~fB>&IB@6N}eqTiA`pg*(M! zs`1KU?A1u&GSk#cnZ4{+CYU&=Lq?s)?^0GZ9?+r}&bj(&UGeh=>{<^%p-y|~?Vldl zKC{pPU^0elJ@ik0gXM#N)59mz^Z#ZBQ>8!;!Qul?7cjU)%(LHSD%8DU|H+k?eU2{_ zJs+8wi&Wp5N%(`gn({R1`JLhoVd@c1tAZQ;Jgwb>%8JsCYM9qtx(Rg`$D^}~W%?fq z!pD;mE8seXqRWFcebxcOV?%teGtzP|=9#ONj+VVF?-YxSkbh<0s|PYFBymQ4E&QwVw2H6Qy?pYwYqx%3 z8YD4qNBnmgMnSpdW9Fh;I1|t>=Z!faEK#zTdL>ptgEgEuEe^x8h-`K~+rCSclW>gi zYNdI6pkFL9h&))`JzW3HUYSM;##P92+fEJQ;aGOuuj+XY^4s?U*_VM)7Yz&AFH75P z?n{6lxeRCZ>2AauyYQ|a3&oJ!(x}Jm$=IBYJoNl&v&Z2uS8-`xf(*$n3zbDtKyFq2_)iBO zGAK>wvp!(+12=s@+D9?_~UR0;2nzULJNSrabbOPqH4pN^%t@#3T?uUDV%U(C}6GlbL zp+wjAc=C-T3S^9*U(RVx?f= zG@5ZYP|SPSI%2Vs_To+D#yf*=kDt^TJKZSc=YkBZB;VB|z~Q)bCYW%$>yP@P-(8b5 z_%Sv-al75ido74O#|oVH+(q!olf@~wn;jopm00v`t{1CcAQ(>4jl6f%O`rDTojea} z4(B~+4bjstq<_g@+gih@{LN$6nF<~SEQ#zKQMkOGtnde>%75u zv|y)x9Hpb^eKdPkvHkb3LvYT^g*$p~nk%8#wbB`U@9Z!}+vA6kZYe~xHRebU@{{M{ zz&p}YzFEMbv@%|!z8*IRI+8}OO~ASXW}pV0IpWW_reXe3S_lP0VwMb8h0^rEeqr_B zfk>Ns=aA?s5uO%qv6pXs58v)Ril7IU|Fs6ARF`*o%=K#IrocMSUts05X8%hV-=qJz zGf?Lvmrb%mtCcZ}Yfx5^_^om}2y7}+#3-*HWSJ?;uCW|kT2TLop`>+WSKkgQawb{y zStkF7sq}Q1phfXZ6b7#f@{KV9>3rwmzY3=4esro=Y9dl3kBI*^3;p0$fHsfRX_=vW zys5Yg8;P}u&r69`EyEU@Ez|ou-rc~gA^bur?55Pncnw8gUVYeqE2DWamB;+r8=m5^ z3J?9q@IuVXM>0@(pLsuI@3#{X?RZbtA`OsRdjo0+BFts><6vYaQhzfczPB5!IB`Eu#U*o85J7kgmDch-GD%dWa7sf%h*8*PHDpRuQfNMBEo>uxy+B~{H= zmVKQs)rA7TBSbah;Fmo?6F0-K^CcPnpoz%_lNuPe{Kka)EB`8mEvF7 z!qr3n&On6{ye+-+n6+pNiu@YIFb5J!aRz_s&{#LiPLy6NN~ohZgPXWuo?S zy0ZW^Ifxg!yw@J%Oa#-3CESp)7ZBg)A-7?7$GYR-cF7PUfX>nF#puNLvRCPPea>nN1cdjsyypUfWo7Juo%2=x>+8Qsjp(6#t7ef`X z!asF2z`@H9#pekK#k)ixSxIPk;yPTICcb)-E76qM-taf?(s*(jvri<}Q2YZJ*+CLw zYe-4FZqZIF&wa3pbExKtW^YN%9iaVS^Fn5sRFHZG=G*fUWx?d#E?l4BuS75RqAAuX z4>7F5sayCl<@FJafDVmLF1P9))kWRo=EZo=VY7{r(g&*pTRz;bZWJwg@#<@V(T`{M z;YQw_^S68t(j`bLjD6I1{hVX4f-o6ny;K$3vBPRY8mrkkl#iVz(vcOG#_*mM&~K%E zj09a9US)WAx-f6%T=!(r1U{H-|MUZx`TFX|eG(7dC}%XGlo8P9k!G9!ejOh2s~k7b z132`bdTy9heN<%Z_E_%b9=^5rTML%Cs+VsUw?ux!@-0IMfwzjdO$~P?n&o7Xn;etO zj(P$ib{5{_4Mz1Y+YOf9Wp984^B)@2%bV*BOS;_|PH>jdwmQEfO+2%lG0q&#~0!)i+B zASH0mcP@Q>Pe1!}!e1mEjU!b&E}VMo>f6QUI@8il$l;a~tW!g;aGy7t7=za3HZZL_ zm>(a+t5A1$;U9)8AAk_R_Pesu?|CuU(+h|oFkylk8L;U(CWk&V3FgqK`oN4q4)RL% zun@BWsr-7zF zn=>3!;r7&ygX|4g z)!tkgT?M#HUMiLFiG|4@EJm37Ge$_oxP)Vi7e?Ka9Pdh)l!!*+LOiJDrjVWRm?p7# zZ(SPh^Oq;-)4iwVX27e9wVgA(C)yL|c|j<4hbCc|iyNF$>lt$isI=AIo{wE4wz89= zYmeaYmV4TWq-nfi5dLQ=^?bs)91XdrOAk72vB^0k{Qo9*jm1k51;W%kgJLMX7UvF< z$YM>@n1%nOjORp>#KvHf30XY$awZ3FbI_Jkd7~scf#6a&M(d^WICubx#(o)qVz6Aa z_c7R`RWZPU#7n%8c$tB5wK2@1krLjhOzy*-+Ly9H=zE*Ytv^*y@olYmY3>_%I~#vQ z&z)2OcRN8YIu36M&sdS}-(L`6 zCm7^Ur(h=By#z93AFJ^)!9e^XRe+QYCpf5IuX|U-N9QrPM zXW8lBIY7V;(P9YLC&hiVZd<<$a9e*ea&5jmJedfL92uIb&o`I)`e4lSx|i3e2Bq*m z)vni6mWmYRLYXXO&oDVz+8w?{xzLB*a2u8q6z zABX^%D$ifL0$cbAT=9iT?Qo*Q&E~%Vr$wa5<=Gjs)7Brp)CVK1IhkQM*~{YiT(C7F zOM4~P$s^75=ZJvEm!{n_Z$Mfk>hwr)X%_ z-h1rE`4|5{Kmwo5ZTV|m>e=VZV4B4X1RQG1l}WCwPj<$uF;x)siT7wLMK$Q1k7yEwk(v z)3TBc0sip*svD;J`DFq58Odwyh70m@zQ{_V@^!u-K`j2$XM?BW%N5uqpl1!crX%F6 zs#hRBo@-e~1iwB!M%ebAf^p{kqpxX;^A2;@IYn*qNadu5*Uha~HQ7_jfEOm-D6H7j zzlPESTqAG^b8fso&Xfvp$S2qO(53lbU+D}=9sWtckEzYnG8zJTubIi<`KvdU`A~A! zc!5q(e{)-vL#j9WlArtk<59E3H#QS%mauQY7a}|vB1G>Dn)eVcX8updg~Pq zo`#Ny106!rtZ%OF?subd#C@yz_UIS#Ht6ymfbk^32Ku$Wp#=Y{pkP6_)tbfM{179a zvLJMuk>kr>;JKX^u<;-D&G2IKHntekXk$7|+JsOAJq6S$wRSb(pZch-BCU=G_8rpv zKmL~3=L0fRlQVaX&Na-0xxN}X+%aD2+b9o8l z<&`6+|J_wna(e(94HK0{@CI1G-Or$NV}cMXuacf(zNft^^6?32Q0I#QEP-I=9W{c*pd9O` z{XOPrF)}sE;&aDis_z0Bm-#hhYA=lN`FDT8R<1n&pP&CO7zuvE7avTmn+`&!6gy0s zGzP75c}b$YgcMpmTMr@7M!`jf{k37F1L3zq=@mYVUHHR@Zf}9s{o=MZ&rvyu+pyST z^g{!KrQOfSuQKQI3S8w;&{#u;gm|=91UA}_a{e+gD&gNs_;utKr1G(S)JFJ!mDd5^ zgX7!2u6_d`KY|Sz*xrd!jOM}^swOI578br6ZMfnepO)dK_ig1f6P>ZLa$8`HzO)XS z*c1BVyZ%pVLvnv;-|Tq=(E4Ap*kmI)<0y$gS=mD|8uQv~R6oe+lMaYwt0KALSs$b762UkUa!`MP%;%Hsc%^Ivh}+ppHh)-%nt?EwIkQa~S;fqllxMzT za@%UBXs83UqCd%BT?yStxG-4`x|mN8$?(d*i5odU@GNL~+=wv8hx!f)*~>jn42uXX zJ22%KKBV#rGY^~@zLv_H3r~`oqr3>d-P_W`oi?ItEe=XIuHm&bR>2bAvE#I)vCboi z|BKUb&e(-D5v8cRWt_WXOMf1~Gk7jO+GAa@@*0f69S6nBup|CxB$3R)z=7hD#$_>b z#nRiXF~g+rWGVj$J=RaB2fBf@OZA@hU)nz5j?sJ4YrqK+PvDE$O+?j0I+|`Ba|d*< zvNpANh=GIev!|Tg*H@>A)l|>gq=3n1<*T=BQbyPZTL|vCn74`de%#*%@1=-qceB~F z@*)$S`f6j6R0oWJKta?J$7tccDEwa@>B-6>oT zGk$)ev_ZU+^xt{;FD?UhPB}MxAQlPip(Bcvfpb^`YE z&`Ytl#`M*rYDg2Jyu=twF|}@GJ#hVS@G+y@QRTpD38dxMcTzg{cr) z($TKM6qHL^M{V3RO^NG1?F_nPws(HqAZqnYXd+*Wbi=d@twC1;f*#(YW>0TH9TF;N z>Lv)avsuImbe_Pa!&oh9|5MaL)&nmuB>TI}up&OZQPnvgu1Doo9P1>1hU#8{vBbjs zLevh;$qP#U&T~W``!S(s#!6$bzx2|)wC?`>CkNy>`j?V^`%UO#!5ab2Xpl<1eo{Ol z!kp9TSXXdGTFj*kgny;mt|l{l`1IwSz|~S`130z}`lr@2@m+b97UqoH=M@;YMVZr3 zx;_$es9o?o^#qo43x&c0Qt{R*NxUYHfST1uqoX@8|L*zKzrdpuf&v(N44>2&om^W9 zf2EFDo!QIo_=>B*{M0+GXj_0cg92HeufJrA%utQ^y4?nihIHI(e&t_akA_|Y4po8m zU(5iZ%`bmx)MPdPg~eFZiP*(_Db7mUe154!k;@Wvrgps?h&(-jSj}}H31sk>IWsj^ z#1j+;_}()Qf20%|j2@3AhcKZw;%N{siH4fq1-bXE@8yjIQehMBZHOK` zMm6a=V6S`?*z{qTHvD9L9r&qXjjm{E!V6ws7MW*Q7m~~!IXO(5^ZyJQUye*rEhr6l z9^^3`;#Z*agFAhj*V9yg%JE{y>NLIB>QvXnEY2mw_k4)Ggch9#W3P00q`oouc)sWuaN=|bzcNF*AXt8UBg*hQ3k@a#`nB?4-UsB+@hfOe>s9EV0ZFZZzvo}hqDGUn=sg%#>nHQ_qTuf61!)?R?nTO69LuEB+6D=>`}L zm!Bl++Ur$w+#O9|4U8)QM;B8!dQLe7=?o>-qyjY$u%Bonudhc}6bjVwEzLjpxcK`sjIyw|^(t&8O)aAGmDEESO}68~0)M zQB?Gg0vIV1UNquX?$2Dw+i!e{VIs39D|Pdpo7Q~y0Q?@8M2#^4QFHtGv9?6e**NdS|7|E z=fop5Oi>STx;ORah4g`!t!tGp&_WK%uUmL%V9o+PZlJh&XP`~@eS(%n$MWnahquip zw1^K$?`x~FrcI_(MQy&Z7uVx&8m3hsG!ka|N^yjVPo5gnT}1w*_FUFW1S&B$T}y2d zDAdGUO#keM&CpX=Egp8dTTrID_{OqpI7hq8mwLzM)NjC0vWLD%L;HibdYf! z4}M_s<%em54(Nz66Z^vwrB4$=CGw!4CGp3@ulm1xTT*`6+fWal^Fa^RlJa2>Rgz-1 z@NU6O6Tbr->X<#?D+H@~JLCu3BWxW?$umA(8b_-vu01D!O-0kQLqo@A!Vhol`$E)F z1rmBn_m~3-3LZEXVLHg7`(~MNKuo}y(rm3_X7tn{aeE5s7exKkLh&JrEG{fd;k#pq z_rbC|I7K$|4~wO)M$k_X^*Jo~UZ|aoRYDBe>nRRC{Iw zx)VlK8kK(I!p241Jpboq1!pC6C=}E}Qy4f)9@p0#gl62m$hwYsNYL8K!+}*bVm#o} z`jz;J|JvJ&yo`{K$^pu^VO!`%B4y=VTS&U%&hO7C3=ftk1vJHGZUPS$x%uTcO!-D(%*33RT!@T-HbRUL2fah$W$a6KBI}ni&I!Zz^#H?a zTzL8B9FWcVC=2i8d2;apqajox(TPaQq5_t&)s?prd)WcE#;XreDB`R^Jhk9a1Ygds z%VgK%qK5p^@4* z8g5{#vGI$8pJx&Hnzs13zoziVF0$8DPJHEr5c6pEX<%z|PGBdTp7Ig-xojzci=bDGfxwX}FrkBg(ebR|-t6trGGw%L?vGwHW-D=~ zm`9@$0pI$J%))6=R)-wuvc{ty1BRS97IM%uIjvZLJ%B%F5Opfz{>yZ3vh~^ia3zcU z;UUyx=|RnY8DRS+3on*8d-XJTX4%oZx^ee8mI4O>7UVn~#$KHV!NGr&@$vvEJ?#DO zB|$sD$&|H|ddriIf9QJSb35R}!;Y{Ei}cT1BI~Dv>>f7O=TL{+{s)tI1^a&KS z|LLp-yV8V8=hxq&+ihGQhq%OKF=YkFik?AD<=Vf;#COw`fi5=JmK!JpsG$e39i^bI z&`io(N(x4!z~nd(rjy!Fu_b6W2;FulKG$WZcin)HSjJM|9$zK>JZyUdoLps-=%ga6 z_hJ38FZfK~$8Q4*L1#1L3V}Z-leTgD0^45Ij6=cRN?+VVRm=7~L|2E9b@v_;V0oxQ z)l#*p*hMC_o$sSDe@+`c^wu3Caen`lLPZ~no*}5i*B@f_rm{L6zt^bo?m0(EUochC z*x3Al>wmxj$8UBUUn(7u`B0H~IW~xxtN<&NUwYm=sU?{0j`Qh2JQlL?&+z?>kEJYg zTIA!D`~IR+CXhh-i#CwE6l87ZJGs)k^E+&y$2-~B%&&oXdvD`i$wxvMx==8*p=jy~ z3?0er^%&*|49QE*$lKjYvKKit`R&Z&{qE51e81|8f4x(lq>!<9fzNf8`sHz6S41i*05t;#2zl#c+6n?gL z#IYuKwI33Xg5BN#b)!HU4%o#;EBI9nW%f8aL*~{RgW9H8pzPnA{7@(T2O*o{b&mnWz#u{?D0S-0RuvWu zNV)Clq@%q@@z$7blN#|$iGkV)of^Jq2l;Df*CmppG0ailr*NMA)}V4Xxt}?zC^Yo- z92UfBwjl|g-~=>MqxF<$xd5oFdv&5XpCZf}xj-Ou>iD2PIqr7Ys`&?Ue0sk~Y+FK* z=)9%nmg(25rTkJwHa!`TY4uBAL< z_q}i^uB>?#zLJLO=GRXZJIs1&b!Xww;2515Rds6chu-#YsRDj8#?Q$W!Y(Fy8fIRs4NTYw~5F{3RRcF(Ni|&6QynBLJ!>b1*}? z9REuBdm|A}VG=IB{70Ap5%Ps@ET-Q)K5Jbr-~l%i|sp)?V#@YXl~ecgL38~pJg zwq6_?ZZz;?!K=h~bMr+O&`?7)hHp$zzovcoA^hy*eitCYRILio{x^|9!uTA+9Q5wF zh+KlDnx1d2Rq@VzF!)`{GvFZVQ1C(b`NQkg_81ob+Sj~5;W_0Yb{goC6Ikdvcn6ef z(ev4p@s>0&zn}zF3cFU1Wp|_Zqf$TS#><63W&inq70pzk`yvsVx_1Y?+5;fpfC_`6 zZ$YQ)JhkoO7n9z;y@0H;HttYw7ie0nZrhgnE7runAtbGz^pKQpxO4c8gAg zDa93g)TP!G{ddT}df^OyIa^u-;9}xYR*;4qKVP#e`2T``e&qhDOIEDJG*1#)y9^Kd ztzRbg_JfAVMI2LifqJ^W!I0h~f+~lAFS9g8_DJ1ZbTSAHH@X@1{3i5{=6|gAAl2&B zg4blli!jiwmwGp7IX$6+eWUs$1gSIn`_?l6;1ulBUO$<{KNR-6X|dopkW^$)MoRfk zatY$?{N${EQX^_MehYYGqM1eJJw9B}@eQ4yL5M%sh`l1Zd;m(;Y?fGoDRQelB&ed5 zR8W7w7y!N7;e^{K1N$li51L^ygXb5mq(+9lGX{zVBB3y3dybdK z!xbaMP3;=`7kXrLfnjuoJSN6-MfV~+74p2 zdV)lqz^bj{7T61{ezTrSTp18RkXkUePEduc0rPCyh9L4V*S1BgliQ5*yAk0oLR*sX zD`Eb!cROs2AS@%l{U_m=rxP+h_7`YqfCyve;98_{f^@>Bm7%3??~^*X0|xZMdOPf3 z&p@wFjKRmeVX=5M==lJHpsO8jvQwc1NPm-xPp%#S(+36`eS=K!R?D788a!nD%8*CG z;P-meUuPBZV*e-i@W%Uo63iK{28dvyY+Q0AzY-j;l`=6ch?0wZ61*qZE~kdE@Y`SC zHTH1kZ?~%ddffn}&On#s_p^v!V_!a+u& zVo@DWPV5#G1y@-!PBj((9_D8*Ki>CVFW~#`IW5>{c7JnNsNL2r*q=D>SBR%{56vEU zcdc?Jy!vA93}S|XBy47A{gC)c(^+ta`NmAJ=X<>e;At{CDb!E>cdJUpY6x<{VX_?4 zf&5y&$Q>K511& z^uVg#mT4Gp`-_4ZkP!RVFBK+bmx%;K9bV{0h3YTXIcroAPg^VvF{{%}QY<^Nrj_7* zq0VPJvlYM*Cp|YcbK^_ zk>vjp&5-&>LXh!i*ou}e1&|(4z^lX`CYo1Ii31s|0xWnKuK!F`&VXffhY~CE(N}PX z&&#uI!UT-KaGDTbS(BVv|5JjLk1y|4<2IRwb>_EsYKUmKWMs@fEzf8_(F{>DKz;)n zQ(b>)f>HBDoOu~0#)@fy$l-s7R`0-4jW)p*pN#GK%u2-)m9n4~VRET25TEe-yEW3Z z5y2KjHu$U(5DH&-O9vI*isIO3DA9p6gpALxrrtRedRx9;KqD}uBM!Buxnzv71$CgV z10{^`>Y`a4~ z+#YjaETW4O1Lon8S1y~JLEIJkm?n)-xG5}ZMZe?zo+;o4wRb)+zP`JWbA8k8HHOKc z2!=7*4YoMs{ZxrMy?Z!;q?M^8Ox%xkSuvBdN(5CM3S*$S*yo|&Qs%T1m^u5!o!Mr{ zz#3#y#W{x!b9v91P*IK@eBR@@s8X+nEx$7#n}eCdxB^%Xj? zFVU+f3oAQPH|s6#sGtrw09*l(F-lnAJHPi1zVCg<78bsWxs|2#vj%8%0P86^_$U7a zjRg@wflt_$3NXBLutSERZli{WT8?D$A1IZ|Ped!9Lx)UMxp=?*evYuM5+p>BD~(S_ zBc&rxF;8XxJ8|^Ku6ob58`h+!GQP|G5aE!0tJa$-RW9bv6gaxIJwv1ed9}l`a)vru zsEZyKGYaYW^pv;A=HANwHNM(WYo~Vq?9+TvC_ly_w=?YLFy;a;j{4}X5;W0`OH-Cw z^($IcUc~QsIXM)TFnOX~uz7M3Z8=$U9F=s_l)SMeeuugNZ*9FO+dkMVv+vrlpLa!? zJpwy%emIAF9YD7yR6sKhRvNi{H^(ax9dx}vQBB-F-(OI2ynK_$EcGOij5Tu9P2rw& z;5Q3!u{A_?_eOYcs*Gw8hCtuyjpoXb-{tT)jOM&(CwvX>v4Vee4FI*?w;sU+z$ih7 zF<54mjPLM%15;SL(!sk*pa}0~Mvk*5>m%Fi(J);$w~wwnZEkSxvyEPyL}E_@u_{En zfmWWZ{T99FU$n3}8`MtTj`}yDM6jH5I}&d-q6a3UB0)7l5>$+0l6J-(dS^pDS1QMN z_UL{P7y%WhFROyCx*kr3T&lU>_BUgiVTN0)CHPPRNeXfAlbFmIdqN!;bg8A$0*-Qu zOEK_IGjCD^T;3OJXb3{PwIG52;)fmorE|0r+_OLeS`L(diy1<-CnJ2qtZ)I z=k;&S>b?YlOp2K!nR&v+AEFLIf1(k80mghQgf0Aurr;Q-YsA5vtBmg;e=*MGhTp{) z^6>j^p;s7#@5zDsA9B5k}t*(xr$m)Nfid9u1CPSeDYCbeNJZdod z%<4}xte(4n^zO+0&2!E8q=2}LH^XEW^E4?>X!=B?3)k~k$>}9@w?DTN9|5x<@pK2+ zr^l^B-f>ogA@RaQ)RIL1LJu7xWjCA8FNB}loO@U3{r+wjwpyx{{&*9^c@NjOgO6i9 zYR}(2&lh#wyl>dHm{0vv{rd?Vbr+SRpbxK3E_6Uo+W%q%>bstu!p3q?;6}gf_REd9 z^BXW^_`t11l=RV4oQEKe837}Gk(CGX6vEWf(4P-`e&<#N<|c#LqS>YXpU&=fw)+LZ z3izYLjk#?z>%))wgsuJ0WYC#{hQ^-uV}fd_9YSZD9sF}2&F7+3RiLbyYN8Gb- zwA3d09nIvp`AqRuPV{t<7Dl`@TPI2yr78`q)F}y5{^7@q+9aV-lKZXM}oi#*S_;o5v3a5Vx%DIfNO!D$ZEi( z-tlD-G+Sjnh$8~9(C(8?!I$Sj^~X3uFMp&ho8u~V}Ji)gnTrYI1aG@dyCdX z?{$in`}xh_PHL;1JHUcXi8g<4yo^6mOMQ}V6>^6=VW2gjC5iQMvGJuL5<=y9W^={Q zPj~i=rvsb5OzSO3YXE!XtJC9Lbgv?W7nmx36QQ3M{V{eCvT~=67c9r$2~o-3gb2)^ zIOK&8AyvL`&7a^zCFZa6DgWx|v0`k62?Wx{SE_M!RaQGYw-D0_J972&O*!=MKdAGM zo0>UkCbo=Mo?mE#yM*NN6Jberahd(RKw?NDF}FHxO8nj=;f|gk&>_IXc45_{tQAT% zEae;Tyw1mUtsb6&7beFwANS7;^3{owZ4?A5u0 zNx2maC7%y)0y!!(JrAjSNCE~KkJw*M%~O=Er}Lc9+SrjC_}kH3DITTET;8g4xbZr6 zimXY>BcNX+s}KoL*`DT)IgN2}$#?sEem;qtb`^`|t1lfx>JF)7BwuFr|0Z4ucznHv zyrDboxXq34Z>E_-%IE{_=P-`mgL|P-H2mTQ@!Wbqq!&>WqS;Q>YcQqTWN6UNBUf^9 z0utdd9l23_Bn4Ry%&m^71J?tf*>aKxnE7LCk~_+aFg^P0#GqhI<&lmdl;Tc(v{9e8 z+QM@O7WkZk5)Yx3`-W(1jQivj*{VjK1}80xY>?vhT5d?sKi46q4F~7LAb+}HA_x18 z_xux}YV+hNL~c6aZnoL|$9IR&%#b<2W3!#ZN91RzVqof8@TpFGC7tj)^In;4WUspT zqI)@-Z-tuvT4$G189i>?09ijx1+>t%m4IA`$lo2fFa%Hl);d!;-kP&~V0(q+Qo-Gl z|6TG<-r%li=U-~>UCH{C8Z~HAx-Isn2%0ha%ljeTAfoTVeLS*3$TjE~#0s5Hr-5$eV4bG>aKZro*qYJvu_T!vS?WC7i;p5<*iHwTCFkJva+JBP>iwKbTdQkwoue zp{gx^wUg{mz03#HGpaJ4m&C3=Tg1iv7xg1A82>=Qy8HGl>C?VIuQt;}#X}im%M)tI zIx@iiPg2M^a}MvV#ubdBflbcT_E!hJTz8L*>X}Aw|M;k?tvxB}@x%sw$Dcm*bhV!P zCtqimX+m)m&|isbd?PYQDyC61E~ueBgDvk6QA;*Pnm4ieWIfzgDBz(gO)+kt7G46J zZwpM;+XpT*0ZDR(YmEti`XUMki&U)T*@W=3DU>OMS+b&0>bct zNi1~K2KesCF9j~?TPl;KsJh{Pw6;sLDD6p*%g{`~%>Jzqx*ZiM*x9K1Pwvkpeut+KYXZ zNt~&QKg0yv>#=S#Sr;Fe{xbn{nfJ%-e$I{r`yB`FEml^4SjFaH#;uNUFE!dv5)Zf( z!GJ(wA~F7ww0A%qOO><;%WH4s2kKn1$jbx1-Z)yj;gg;*MmReXeH$}ne|kFM&&mR~ z#4>3<6UOpAVI5y-iwp@t!tkOR)bhU)6BdU`;%ru9i@Fx0OOR}p(rGm-iNIgRnRLUy zOv6*!;Fx!IK)S0S_&$zLw<3rk=3z*{<_so% zRh9PLTrV%Ou5;OmYP%}U&C%uc9zY!T1C~Hv#`i^)l)U5-_>WboKl|Q9Ns;@n5n1=K z25P?4;G{Xs;X3Ff9kig(4v3&Y&zfP18A1i(KUbRBnO?ZfMHp_=oZ)<%0%ZJ--(*^% z?Eht6%q!-{B!#?ed*dqEEs6F!n$V`Fj2C}>29fd!+Zu^X`_c$p&!*n#BV?CS+_+FC8Dhb3<+o$eElBQ=AzxxGNL zGZED0XCjv>uarAdb!l7%<{p}cY>n-BER5JL7`*9 z|4>In+OXgE554(|LY>@>MHYWbrSxBujSIiUCt)DF12_aj${>P%L=~K{z<(ya?x*u} zx`pNjIV!5D_ddny`1OSL^FOEe%5UIN>3}+d^*#H$jCI?Nw^8PcM2oQX@hDGs1v@iL z*1QP$IigNuZn;^RL zX^7>%0m=DT#JRGMi*vvvK*0Pnh3ii@_y7yIJAwDN{DPcWgYx<|im!?DEk95F_W&pU zhnL-W{I>p2x~SO`208Cn@#kZWt}7kti+%?Y5r5;b9#oJ)*S`B{(aw{vC%Zl5_v&xY z`X5ta?SzB8SL>KZ``Z70;#&F~okCV6mxAYG&2*$7JIpKNy1*-0^3>$F;iBIjAG|UZ zv~P-}jjf`vL{B<01r7zCz-`Zpnm6#D3>h8F$qxd$^S0cqTo)LNT>RP;TyWM-&gVyf}`ls zLOkq`&aiNo%nqq{yZtYR4j)M-Ycq;!#9FiN-XjW?>=lSHP2PL8PWRdKqu>~Tc-(?I z?&8b#A^aTiIU~F2BU5W;XABk~^)S|2&8?bG`637DC+|J*&48ciLGjMz?&SXLG4r2n zn~yCgYw{P&BGjZI%&7J=w|iKPl(1BLV5%&kgC{GUuw{l|KpeIt?%?Av(ckC0RvGbo z_7gw&`q1lAM=y5vEs@@bSz_U_d;`jg$${eOVv{hsmcX_15{ zLu2XP|^DBylFVdsO1z4C=FC%vejDbi>=#wx@V{Z#meolYl zLFBI<1?-;_+wGWr=1D@4&5Ym9l912Q$0FTfTEXi7ZKEG0Qca%!ihK?`v=vSk3vvqX_ee#DDgG{aATR8&nftvy|+ZTZWQmZP4d)V)dq zjQ8$hBbf5~bJT&f0|2Qxi3=pheEvan1erU2dsl7wm2a~(R4yDW!=aVibL+3Mqv)^w z-w*feD9L7>u#=d3W>;N;TL!6Oc-m7P#TOejIZc2XIJciseihQ$M;ojh=B`_5%Dsmu zsvH8v>_YD}+i3sRP_BE(UO!TB>b9u&j|f`sppu}sPbMsqOU+z+TZw}1Bm#o{niQ@g zpe^$kX(1aY2a7r_^y>_D9zRa4?ZkZ1i? zs$qe37dxOFkuJGOh3^&9@J~}K6MVF=Z=51g7duv2&S-~=u|U6*T}7iQT7EM^o=cIJ z3e?Lh-95`)q~_U4-FWZ{C+l4nQLK8&`RdY;{F5KZhuhZ(780Jn)nkx!W`Z%vs{ff$6*V7@+)-&VCHB3WsncPMgs}{RYAvtr^jx-)3OFPf%;To|Ga3ZApF1cRq5S%l0uN-&`tyl^dGt4#BjN<1OA$0kDJ`+kUchNs zkOEcbKPonu78*y$FMI26eF;U3 z?stYOeR&2`pTNE&r4Q$QG!+MnBWR)&@414&SaY{~oYQgaZ8w0Ihij;EAI$QFaqX2r z=;qZN)u5KoT9^3Mir8#^oIKDH-4ES6qwM;Os)$&yRDmBsR{70J8V_H(6KL0e&M1o? z$&uBfv+>W=eCF>#69yv&X$0Ib?QR!r$LwHTK$GJ;aqwAHiku8F)fh_r*q`wj0UyXuY-?#`C%cB3-E{Z5u4_RST+Rcv|&m#&@fodh5 z_N=P#&5D8?zWT+XbAyAz2`e(PPp^}&*FA)a*P<(cyAS-#$2GK%UoFAukt{L8yv}$0gAfW}q53XXX{ZX}mVMmi=DsX% zF+FCOpQS7yQ|l1-CsdD<9Cuh^V?=Bw2iBK}3Q9^{=!D@<@G+wYzJrE79^%~$fgVZ& zcYG%)MrnV3)ikZoEDA;4DE-lSO2$D|k&qHL>oDcSkcg=>ARZx!=8U~ga~dhmErY6 zq7XH`(+*s1vPwhN>?~T`%}Qt<%@pH|5GkC^UIFr62)>q&fwRP`|C&$}_wXwf&0^9* z$5VfbkaL(0+)iyH+b1HU&Jb6CiDJ}%Nlh_U zmG}brnxfcBv>c$rfdh^V5e7s#CRb9VrqZd}!S;P0_7>}4RiR9hw@fVfC+sCw)!J*t z?@rymY>IL&x7-=oRiwBtp5QsOls$cfO*95rxh;PoOV5B+TM?gz`7?awd&U7s-7oY< z+5|b@3%>%Jdeb4;JZ+DM%cJr5h6A7vd)0XOtjcTbvfFV5vtdn_MJrn9Xy1!#7Tqc> zPF&_rx1~mJxg6!mE~hb(1+>BG#4bEE;M1=Ges`fiIhm57Y}05NMrI(pyP{RyY~IZ^ z;}^oaGk*0&DIlDy{70-3(qjY1?+opypb3>?Jem?y>=xD8W#xi+-&dJeb}aJrLwa~5 zrAA zUnW!5``I#`AYv5x47mIHtp5iv5ilkI1Nd7gnt-PWusAkU)Vc5UEk*oz*0Uv9@eRti zD&KGnf}S3vu|R)|7^@`YJY^`iJ&YO3o-6l1m~_0m9pr!k)O4(AprLF^kQJK5N^&|y zSb3&hn!0)K09M=G1U7UCdZ@G|pXmcZWNB$UyZj!nV$OI7dVLHYc2ONjuy>dX@%Kxo zx5aLFHboWar0nnl5PvckKjn*EwB3H)zp_KpA5<^Wx*HOVjO^Mf83WdkbD7{uBk~Ej z-)eyRtPpx~G($;_NzM>2fu7V=bddphadJ5(Sp06zs-6>@FCZi{Tm?EXpUu+EEy^k}Oin2CIh}=i5$u6c7*#*Gk_B#6MIHGWj!YUM~)tq%-$ zuk%{AHxor(BHDwAlLd$ts3|^^Gv2a))%mJQAuisgymn`~)E5g2nN-{7pdk+!N?>{s z@;j6zed*PWL`xzsuZE^B;rh0?0o9NS>H@kYKpA6E=s;6l2O)OQR=O`FCjn!{@jWf& z6a>yv%fxzzq8j*z+ngpHSrYk*xglqs|9XUz>HxT@gwpL`dDW)h^K*WAp$_j~ zn%_EoDpR6){NdV`HX+-q{I_2f%t)~n>BC0f&N8D%-9OoGrTS4MqFw8mxW$7R_4v>7 zH#J?D_;$%?e`i#gR^}VS^?z|Z_q}C%+8?X&QjEz7H<48)aT@RD%cxyTT~C30L9DXo zMwI7NJ#TS?I!D`D=jQELBl>O*rfSomqPJwxzk#neNiD29AOTA@&BXEqWbM=@p|mSar5KKx6Khnr4sm_YIUN#!KiEEs=hqbS^zmJiPyL9?MFt`#wz%@*{ z7k&%=9BeQBhoEgU?>w2jt#(X-CtgFb97kJ0aGfPeu@s0MmWu?F4tj>>krklvPhybFHahbJE^f@4hh6c98VPvqak&Vv*_e;9buK z-X=SV?tBk7-$i;IES5wkW>6b&j#oEv({M!8u$0=r8V!f|>k0qW6W?ui`iMc*Xz&+n zF4n}7$^KIYE3bvxS~a8nt`NaI35n}kKy$feHACU?nqw>hnZ+834Vm;)kuV&Vh2#Ee zGFeA5GcjyQhQEI#bg$%D7O5#jvLUKe7j?`pKk0^qhbt`!z4T@#nWs`;L?mUJc+qv{ z<-BtK4d<@?@T}PVSv!Zea6Y8AE06cxhS7YabQCxZ{p1Rq24$R6q0tNV!chTp%Ax{p zgd=VyZ5?Dt_!7Bg1K$VK@m^oGg!v`g4A}%j>e0XxXmW z-m`is4zwm@7i$$kNkcjd+tZ+eC4cSBOrV>y$1m}>xFr)Y0n|^N0iMC5Xn=Ksz4o8d z7yjPJUBT%6S3J!s6h4W!CpMJ9!@i}3OWc`B|2VDka&%jQOcF@8vk(R9+Fzgf$-T+$ z@V>;CPDtPu86L91c~I>gm~4Jxn96F8^N+f|TKG2-d(l{LRW)NoKNM-vei?2zXryQ( zi6)P-wY__uh3^DnCnD`kpqjBW*dV zL|AwqU|Me96yjWaF(sKC`ve@PS$%OsAI6=qn$p=W0?)F0cq3;EUiS3G8>RZsBMzx{iKxXQqEq2(|(l~RZpy=MiEN?40mQr|k~sZ?UHEkwGwOow zX=cXwcGMtzo&I0J+DWI}3eKgTFS^xBC0ESvc#+4uW;pzgXiDSkbMvW@vxFmFe@i|y z6*!mD*`Vsjxe78~w)Zj&YXyDyIF~d8PGogr)~wU&V3%$@~Q9LTCTY zFL%}|r*YbiPM`T_4uz?|2A)b92piXGaQ+sd(fj$qM9e3@3DE8gEqhxL`zr-fx@=KL z?-UV30qkZ;FgOthd}IteL&ha{dzUW?4uCPQ$5Zbg7>3OI1G1AvUX8XtXseiM|Euh- zC+lBhihFNlX;t;VW*!r%A4d!{AC`7%)dlb3inmp-jfu1NQ>^%4D zNlg1(TU)U9e`q~KUb2of&*OypCMqwEBfZn_pzYs`EM8ZzahF%)d2`qeZ*7X?JfraH5`}m8_YcR_&cL8|9!WpRn9z3R*?n z^??{$ekjkx?u)3h>H^BnTd#JSBRjeu{^b3oHxlP}`?A~?Xe41v2Dg9ssOX4IF7nf` z>a9c)I`im56t8SfHE+ms{2OLe@zUFmA(}9H(|0bAc==zKRLwYpddQO*Nbe3tmmw$n z(gC5LC?3B(SFw~t#i^!oMQqc2?CE@4FoLDL_w;!JKFC+(Pxc- zqFZ_T*e%MZ?}s@u+=mUrf4J?y@lqH7 zpzEb&+t+$1;(v=eWea^uDK)X!FYtfSYQP&BVSd{vQbmvHF0juN`2qhbwAC(5`t)+| zcpT@kuHl;PKG)$j=?tVaZ?P$YuU_L!>t&Jxaa^euU=}h>Z_}8)FCKTOT%Y#MC)?2! zx4Q%_T0-I1?U`9O+w;&^I z4^{Bv@=-+>1C7;&?^K?GJC%1gyduqU8`_xw;}BxnuXi?iL8ezT$`wn+y}`)2(U8w5 z`^D#V{z@7gJim4=THjqcBB9~lYF?!YnN4~g>m((wfE~{M;e4AS_XKrwqe^3WyvyTK zkdsr--hZB0pcED~N@i9)%)feH+)s~|&rD5-^S?G4O@-vfr0|TtOinVl`J8t4csX7< zXs@%Rg2NS+Nxd?7`u^27>trnVw|NK)UWjcJc}9v7@h_X$>VV48TE|`@*EcBXnPh3w zIKd3S%=b9udjk`H$m+W#1`nI7jezqFVhyvN-qGO{2I5*R;0csTDB@yAiKQ6X9rkv8 za(i2>kW~tqR)F=pRZTPKv+re76cq&>uB|BA={9(VffK^gc9r3zp{A&8{4J8L@J%{V z@?zw{T=j6<*9*lS?I9iGYga4bYIX}sEuUWnzCESJ%L@f#1W@D&H20?AyWu-ZmNu}C zMP9heIR_!LaHq_$u*7;%W3JsqZMtGU{sUZTN_iLlJ`~OK14kuMt%7J~{G++a9pt#h z!S10oJ({}9k=B?x-0RO0$WFzH6EOFdtaVAPz-b;f`Z-npd{I&z61!DBe12Cq0Ui@T zs~g9U#*49AqN(7I6WT11TX2(_rxmw^H;leiqE9Do+$By&!SA(Mi$>Z1h1>jB_$q7q zbvf^mnM5Y-Uq%zb^&>c9!PuMOZzaPNF8)E zWax*KD)E1T4iB)a3+v?f`^}Wb6d@#Rnk`SB7M6|Qhspf?>id^X{yxFO7|Fyy3f6lc z-w@Z4W+4>vLV;hX@!PGR&APb9#vBRUJ@~Pc2vHiZHpitkz@wIacPVye1noO;u_`W*^9~CRDag&;kdJ|GW!IF@Z z%I21}@-N!|5mF0is4X;ZX zWV=LG(OSDGd165YspZy~Bc~vZ#$T2d4$)JPJlrk%@U4p0~omfq%qklQg9{ z1ixUh8ca#nvq#XrsR7(LW3>}nHN`!@CWDpAwr|`JpU)(JuIBe>9Yy|~4xKrJUEV0g zwwTrjXBb%oUSnAcK6&A`@^hOZcfSq` zR;ZXJXxd@=t!dtXV9v%U<{szWE#dNq%91F-KY`wx)(p3oA6h1s* zl=OlV^VqI(Ocl8I`mCIR~{c5M09>;5C4j|8llmd??re8H}^b6}n&pII~ zX;aAs%=>{Sq;k~Ck-Dv2CvIaoQ>vQfg-Gqss;TBRekkp{QI*&%T2)HSUF^M4v>;X# zu}i=FoPPX4Zrjb1w1-_D3o@`)nw9CmBvj^;|B*IlapY0obWIR;q_bjUx(f~x`WN|H zhhgOYfWt*nKHpYlEF_%NQ;7<9CvQi@!QyA4dm2RO-eDj@ihjv?8%ib{KVtU{>hYhg zB0A*>M{W_Aka_L}``@)x?apU3L2?1-W_)iS+iD8#RTJ`zp|hf-?}1P+SBz)He&+s) zR(L5q;lC=dA&Mnj9BumQ4GEM{_NqJd(RIz+igWjr+tD!b9Pdk}R??8i)6*rd^i?UpX&pbwu~fJtzbw4Y=J98Y z?<}I(zU_Fbnu<(mOx4<0AZEn>Ff1naLSa@g*Tox_&kdvd_W zx%;Z>p~rq8uw-At;2RDNw*c*EhPUd3>O2JTfbS(c(CLTZLt)C0(y(5F33oAf%8%-U zLn@>qa@OAj?)cvxn8iwJ z^nSCtffkMI(W*z@%>jRq7ec;Prjh%STYWHsv0K}|Cvkr{A;%p|ZGvp59`dI-!2Ym| zU+~fyO!bxnNv;eIaxu&)W%XGeDU}krzwL5!0a#$^U^$?wx!m0(hTWkM1Y~bjfBgGB zI%sl&pWL@>)>V+H=@40c1#OGQzdC-urU2v7f<0aNWUCW~|1;P8+^wEv+<)?ynbp_C zXl5r7Y&J&l?F6^blB`oec#>Se$!y0V9ZN+(dDF%`Q%np60NNOOk|K$kWP*%7d=lPS8E7fF9M@NfQKr{l{ad7F9VDa#z(j3>Q^s zELrX%)cJki=i7kr+|OT*Vh?kbW-2Q-$EWa;37RD5Zd*vx4~sC1t3eZk*&ix)k)==H z%1Q&Ig==o*Na%kn$I}6#|PfNY5(u@Mwgw?E2HvUpPFLpkFj8J!<j z(tuk9{n+LX!A!{}-PpAOenjDEw{2Q`v&Oy+v@fJ`ne~yp;m=K89sZ{Bka)@hzlr%;lq=4FR)9ZN)=Tqz$77YL5vyH;gHs z(12ag4oi(8Acd~=bprP zlu4ak2JV!mDf=wOFOYQnpAqubjo2d-(zLroQZ- zqJ;)FM`x^lswb;TB5ab!Cid2P`O*N7yWTi^kFK|#q=(?!+YN}E# zxEp#7u1#J+sKVmA3EG`|ff)NjOYhvW6f|D8k`A=1@yH)b_}#{+(^al@zUByzGYEP| zwgDnliK*qbX_KT>+V-4DQYKD*vy80ssf(PXB{OY|jA{Jk6erO=2y;q)ml$cq^zk@f z8ir3^dc0KQ88bQNAQX|Y`bsAXhJtbH;Ymh|r`f4O-__8EYzdj0hIDrGpH<>$w;BGE zy0_w#Tt>5unJ2KJ)e-dgtdn5RADRXB50K)09A^JV;ly?EIlr7)XxpzuuA#w(B32*2 zN{~s!*G59T=TXIUIa;S9gRmmt^ylB28)280D)*Ehg<2`ib^sN<>lYO?!Ji3`Gyrb) zDw4)K&AwaO^K>*7pFGL&iiRVS#_Xs4g(msk8>3a%yxX)m*VeFgxIe1*nMa5hzU2*3 zX3rM&5p>QEezePBLfO|sg)g29viV`zMj6*f@9;DT&5iafi5nhZM~wv6*D)8y9w~eC zvmUL@tM==&7K0%kk_0_E5^3nam2`vIZXE@;O(zQiG%lTakEGXA8PR{ZAaq)+1d697 zzmEk*a7|q-482tBDmI?KBcK(%!do z^LC7o;8M(GN{3e1%4U4+(+g(*$2?l)KAA#Il>Q@n^Qcc4Da@UZK%>Bii861*{_+OQ zS%(LxDzfYW3(=03F26gIP-IE=9xFOTeH`^B2&##7;NU+h$=Z5#33H4$3FMP zDUl6DrA&sq(ub~lbs^E0oNiCmp{(MQxL{3m4-wYwNvkrS>Lx(j0HDQ|F2x{hROlW1 z=RaJ)m+Ih1Sk^sa&+0??;MS%)ocg-TAptJS5M(QLQoM9l>56LFxtK`xWEh zOywNbRJ{hIK#b9zQYTrzX}-yww^%e^#@Civ?TdbV@pfjVQHf&WWuO}49>@#%yiU}r(SY_WSfLX zV>~QNj$F#!Y{6IS%1VnN{i2#;)Beib8VprA~4RCXPe6Z6BANlP8y z2YED0SU+1;CH59L=<2e)GGfwDQU@Q{<<~7`isD>DPTeP^wSL8SXE6>wOCR}yY*JJl z2#8zbqVh~aA01?T}C~%ds#Y23$|< zoYGvR6MNcb`)|R2C$iCS8;fG?$W*2?Abh~p&0(NmLXnVDj>C!NGiy;6E6ciuC~3CH z+oh`4Op1k- zxb1!DIi;^N^VACTAL4po>%jvLK_g3tnnMq72OgbGO;lS!fBHv8t+@sd*toOG9|lpg ze-&kG<;wYO9O*7()lx`lLD(Y$yuagCC01+U3{h_TYw(#5pVX7ZXkD?|s5z5vlYdGD zpRr6^QKHK7hnCrwrr^1d3Vo`^c-PDEvBLFJs*G+2d$A3h>$xj9ZR4%U49ohxRm}gP z>8u}`{Nt`KC0&AqlrU0S5Jrv;DFNw{kVZgBiP4<`DiWhXMQH>?M+hk0EsPF{(PM18 zo_+88e*S^$m#f~N^M0Lk&Q5MHv>@OoCVtnU?3d89a*4evLiJZ*ta8Zw+N)1_s6bu~uxL){n`~NCSKXKQW1K;2{)J7&eT8^}eH2M`3 zSIQs=#gVXG13j3tBL_dkT6mtr!zdV6#_%YU?Y{`&k_p%EL6QHi)epD7YK%f#IAQ)g z><@ve%>wo40zIX^%>TVMU=8ecO;OS)eu9pFOF{XyIA8sAM_(xxvIlv-Cf&`Sl8wCo zYCox9Dd>n%OV1Bo=eQ4vZ%UYP{+8u=7rY1~PU?E~?4QMU1RHWshdzm)aGu$SBQ7G0 zF|a3WH5qrU>Ou}iiPQ#a?&B)a6OvzKws+?SDlJ{|pgzF{S=}~xcPomX9?WWVCj7O+>YYWKozvqY@$Ma0~Wo@2(8KQu3Rc;~^XCVVe z6oera6Z+EC0)4#lL*UP3S90Iv7^8J`Jj3+!#av1<8$bf{0{0Km)@L1K*Ub1ayUk|u z5{TxoMWuX3Wky608i#)(Mhe6Hwlc^;i8`~xmYBrly8f?ImqlTo)9=*hyV;_P`q`l@ zTZoOIqNv9tBj%5GbQu%`D5h3L7X!0HQ{Q<2!N<$y_jve{bD#7OM~lcpgI-PS z_xQgxDG9V(4{`Z51f$WU3VLCeZ}*~$D!ns*XDKUHJnnn>m^7FG{*EtGoeibXCe8$= zS6kVGYNb-IB_GJc1HCK!7u5JOf<|F8vIEN4P26G>>zphXWOLv z8^6|5RXiI*b^PN=B$qp)=q?u!Y0O`NM+cBY(o(fn%5ttuRik10Xp%GRDXKhkk8esz zf@FxG;s8$v9y;C3Sp8lP{wN@l)dllIwU3XIh^_-C)xxUzbJi5gS@EXnv!<=YHlOIz z?4kdNwkS`;yL;^V1CG5!tL{9`k#u|3{m|j4@S*d%JEPPY43GH_wf!+Q_}+tD9U6$* z$n!DE#Kmr=>P{V(!>Dy{?C)8%KWlBxY?jd?=B#?MVa(~_n84lm{vU8@7dEJ0MN1Y7 z4+_+{{cnP#g$nD@)b;T(2W7+kOlgt;griG*rSPoI)a+p%@U@ml{fC$iX^*Dv;hiYm z+*7PO7JBrH0IXKx5DhcVxd(bUpjx3#IRn`V8K_#WQcsxyJ}vvKd{@|4??Q^R6%vm) z-L>foTI&1c^5+~s&T{{gc)*Gb-GN=7ZNAxK&?;@thX0wze%WIozjgK2G5P`arplqt zKK7NZjL0~ab{Jw(sX<(vml{pzLn5C1PrRbs6djtrl=)u~B$@^0<=jlQSBYssl}nI`%u{gy7nox4dhe2L%XkF{fz>1IJn zotH*+*M%URuOanDv>K{0BMq22L7IJi4Sf-I#rLh5d#!@NP6P67`Tg^eyC>sZo`3;2 zo$oxz-ys>480#xg5r*YL2Nug%A^L+7z~Hsw=j zUX9&GeviBlP;L#CXE)mVx8`_6?-K9yjSY@g{hbYX)<%HI07@^#yM!5S2-vb{vQ>1J zir`0Npr0c)&C=s|TTDy(TcA0g23QgGLd3nfmBq6;h?nco-q)h2o0IA|c3;a@70yt` zGnw<_nv&FL5PV%ZfPeBwnVqvmD-TLli0XLSY;9_hgpeuLTigF>d|Zts`*m~^t9!hpqylZl^wC+- z8WubLguHLA`%8%O>hX6XVi%leT1=OHBhV`c>b9HB4Us&70x}wMY0R`OWt)2QJF^^e z-y{>8;A==z<_;c`vT_I0`|@`86>>#U(OB%-xiMQ2F?~pXcl5xbZ);wM(T#>}aF$k$ z(j>9*RcOcw%nYB54GY+Id+==i|D0#Wdh4W#dGRdB0{7@xGE0BspVwktuX`I< zOBH3Dkqf2H1J7u?8Rqk$SsAhhufcoc#&iR}{s-!;_pNz_nl~1*|0+L9K3+K_yq(}}@?Uo<;ogLl->G_1?b<2uwKvR3YM8Ya8;Gth zP<GSpS<;%)>1z4a z%l$4I(O=gPP~M5sF#E*KssiwnCh<$~!>z_cHR77iP?tp%y>excalP_Xoc9 ztDS|iJIVk6y~HXRmob(kT@F3?ge&CStd5Q5v_d_m;N~VT6`q0HPK8GNGFp50xgFf zqyU+qQKb{a#XN)yI*z-+Bo3;$|R6wGPRBc6B%p&zcdLY1tjy zPp;#TA??{M!;#+)xYX#=Yx6S`l$u3CN9>^b)C`8W;huzr37zqxEE;!t<)l+=!AHMV zygqP`v}&lq0>SoXEK`J z6D9JFyvwBn3q|WTsulG8CV1zwNfMl+AiTPn7>s;5gQhn5=AQ}`1wN>KW>kJnlpPu3 z_US7NYPHOR$YXUMq$ra<_#WTqktA*D{p^v3I_s@!su_slSc(LWnQqj9Epy%e2Bu`A zC1l?+#{8CH;b21GD4h zJV1Z`x}7-nXCcp%pKYn(8?!!D{)6tZx(%gILcuR~eR8=ThKrQ#rp*SqjJ;9aHh_8e z_0a{NeY0td*x_7gb^hi(-)T0=&5?71Q)jV9|3Fu(^&}R@(kOJXPA|<&Z79+Wo zrEu?$We@kI#CljT0lyxmN(g2+cMt!0!}scT-x&X$G5?CC`PK-5Lh`FYv_Zkh2py*M zeBc+5tF@v2H$yJgYG#`B6clegl{*>*FgP zbTU?^#FzG?p&O~KOLy1vLZWIrT1{>dEB(Zq6@gtAjO7ypoZWG9atHpaLJ zn7T_6((X9;e2~qS;gX&4JOB>;*xP!NNFC9z*YAWP*jTL( z9!H}nDhjzZwFHP3$h-+kvh5A~1!JL6q@X+G!NoW6>zNOdj$Vu~ZM|1>Ub<8oFZz3W zw|se*eiQy98ba^d@X3hwsZ6+p2m0rn+a}}&`mf{pDL>QaBKo4~L*^E1`v>h&ioZEUDiQ*kV94n!X5ZS80h z2u4%4?Mmpvf-ze?Gdtx1znM+JGPj3he3D3>i3H`eS3vHTDc9$m8TF#D&hm%hy_grprjXtVBRA?C3Td_S+-Wyy%3S>@GQ}`ikQ!)aKO2p?E`)U1lGPPdYi-WH5SwvDo;P?N%IWy`*tHL`=$=KJB`< z+Uw8jNSGJfmz7#2+U<2{h$GH4PcomW(v<3jP8;M7W`K6{5+@wWAC@&=95IzZ6jlu+ zXfIAzCt!DItne!unIfY3Wjcw#s$}_#!-)tT(raR?Qo$W@>u3hU;#yncTUy+oTpcTX zUdR0X=ssfvCN?COLA;t{VH+YFqw(pWQhedMh&>!bxh0@li+X4|xR-3V z;Pd{QS@aoxp<1636Gs_D$*32Z$?m-F>ulV!^uoH5|93OUKu*lPL~0 z7YxUq9cKDM51++Co=`51-qL$&fH#J5K|S~}*NMRicyydo8R(=W<=oG>$5>QLf-ecM z+R3=zSsiwedGEgHUe!Q&`<8@(iaqXodm2+!a^o4~$K~6L|74-0Pk3aAqeQo18a~-a z;kC$ZNK*s-K^iGmE}-9^zs7eVDyHnhx$xspP5Zvopoy<>ED&)MZ`CR&G!Wck(pn&-Uw7gCP+HQW z2l#-~a|WoJ#+?r-HG*r%vHY0$(Sra)_ka`jz73xa!?WxTWy_Mfr(e?)Z-%7^(Ec_j ziKj4Bdlv>2#3YYth8LVTUXC#8wr~YBEaH)FS-d0@w@c~wl-pAb^}MT0Pajif&293& zLwAd|^1;(O0foy0V^04ymuIk}s2HX)A1nIkof}HO{mB=Sr|*=!n9^BJlzB*q!}N5` zF=%zGmeX&3tn49+0sPl@NcSu=j+QlcQ-HJVjpyS#%mSeLF|*5#2ok& z%nH7!LM-m=@zpKd?G`U5?nY`J*Zc8z-d~Y*os`4Nf$<6F#(-;2*3ZTkR9G4>X-p0N zY2&LP8e;;_ENFdjH{wr&mpgETWGTm?tButZ=|kADY;VQ0ra!Jcz3m12Fq(81`?2kP zoF+_#mxu1pcC$KhG3(j32UpIEI*hoQWq87X8^A@3#nQh}_w^*(%q<0T?8y#p-Efv(57y-vIx=t+WJJs5_6X(7j3Wv70?w1N=|*IscX zyLanL5B72M)OI<0jy0wgNQZOiSy0h)Zk}h^w*nDsJ;E%_EcFG=J?qNP;_(HP_Dikq zp2el!>$%68{{XNhqTr;@J@l&R+ugU%!3EXf=!<>>t0n?0MKx}rKFdx*TBlGCxlUsjMOnE9|3I#w)KhpA(?(n_G& ztwbf4Dw>!a#$_mzK^))D))Ns-PLA!;+zlxFWjbD4DS{2A%S#+BphWm}xGxOWW5$a4 z%F{SxG??F)ugM;${%YiMkqhuzZ?6GujJh2S_MOfF9eK`I#J;D5ZCQf%sUqg--FIT)9&KF~aM13I@&j3*ymYQ^H zhNO29xji}cKN+0yo8B$isfaS9ETVsuQW84eIW%fCSzDI2KdN@-0}&f(t$%?br|YahNnG0RV#=7#P& z?bb9t|B^z*I6~Y>JEc!NW!O7kIY<89U@6;R6t$5P!KygjtK#EY0YuDcUJuK0>~V8& zfhHN4H;AOyBBig@yT`A!OT5V|Yab zuMO+KJN&px;V&R}7R;But}}lr^QqYEWyY`AiwvmN0u{B$FqtCyMa-+oZk;UsCYBOi zM;7}=Oy!iHH!){xFy7NM={CNTbb3uS2|J=dxXIn|m?zNTMjuxK-<#a{jJSXEQY0=y z6K76VHJ`jf*%243*ifr!Lif(sZbdRgyTzUUoq)WQ*g5H^hdc$2SH6=D?AZAs>`O2I ztO+1?BogH!LaHb0Ans`eP+_&c44A|@KH{rzQ%p_UT{Z50+FY7aQnG{VMl<3}vuwq&=WH5KW*qkk1UF#{y*XnsV*1bC4x z>=}EAlNK5t_W!d0%2tJe8Q}slMMI!*YbWeoprtyIP-5EjU^*u|@aO^ewnp?UA#gU& z`08|=Mn-?>-V#m#>o!`HXB+=m7|Ty+#C)#6hl<2r4FXpJG=Iu78)xdj-|J?i!M@fw zhE652*hC%7Irx@2G#E#twb@nPD0$uHuyBaqFmJm~%=ql5QzY%fUlxt6z<)QmY;LrR zvu}$>N^4v*EdrZ2z2~bkTA>3n`5<|0^is;g!0{OX{e~f74|!^kre(rcs&L6n;b9*j z_@GT&San0cT$P$~m-Q=hcv?EDrg^(vfqt1E;k>@u8VgTJ(FGn>0V;2Y^Iaj}UrtU3Elq=))ZP3v`T#J3chEXfjrW4UVCeRl6-Yd_J zTQD8Tc&vPLZ|yIovvwsj#Ppv;9}VqUD1ib~gH$?Y_FSFAI|vTn<|DE`G$h_h_LNsp z?cugi(%)fADr0mAC3mldc!PrQ$O}KaTHL$ye`Q?EzR?>GP28Uk$M@OX;O-6rAIuth zAJXwCsd>t}C)BXo{Tu$fdPd9Ut9{e(#uui%p zwD!fkCIVJ}ZFdUl=G>$F)n$}#8OLZbvJ_xqt$w}g)kVh&@qaMiZQtU}y-Ygpz?y2L zegnNn4c~x!(Gq|$+v?38|2q5h=!<`(#`~gRQhNN?WZA5Z&XTHAo`}}oO`*@-Cr^N1`wR8z9yzoKl^1WeViwwa88&A-5^uMcU9W6Z2bO(gyKVR>z zwnkR+8ol8y0nnw^#;oBKG}VRxqp~ES`=WQ~<~<%pKHWl{pcj^v^}1#X%+aLM35%)%xp|Q8KJ@ZPyb0lQ4Sg0JQQ@>O z2^a(4j^^)r#AL;gQZN4?r>slHKUyH9v?Fn`1QxHOfsx_UPw{5Ao?Odat+2mWM%vJC z89o*IAJ;qZfRh{dL-kC-Yc_f_Wv)j|Sb6gk24(`1$#ahrvNVO+{*vNGlIN|pTKf!0 zSg<*?#d!abRx|CgKtLkQeI=G*V!tnqcwl>yJK(EU#|Np<+RediyJI`8W}d2|S17Bo z`#q}?=WI?^N%Qld15lwACJnEkxC;?H;WB|T6^I&Mn&nbl*Ue)L_Eilfw2#_~` zmn$Q@glr`;b!YlaO5(wJT9}p2Kt1IbOPaGi*`kaPPBz?WUAaTMuP>3|$b-8x9x-A3#$E&LKscEMGF6)Gz@ol{qbPWiEqh?MYgbH_@ne%VHwqw_x1+W(Cb#nZI|D z+S=*FDNxozOEwS*Pl|_L0bYowbTQA~kiE+hf++0A2U^;LZ=kFmv1xYdui52`x}&uz zOWF6_R?Rqy+b^X(aYg|p*8=56A8O=Mtg5=!swj7Z@b$gWm2=%U903df zUq!%BTJDRA^ogYR54BG=SebF{&$tkf0&kB(rNHp6=pDiBL`_M^=F}5(@0#p+1Ndfk zkVTAo!T8PP-(ZQ$_ks@(0D{;=uR*>6sA%HpYlLeJu8$WeY}!toil3FGo;kU)sBr2a z*!c*-q1DSdew_DEF3PkD5|wG;LRbxVo)MlLN89pFGFtQBb|OU=sBLJb1jlG` z6B-R~zy`t36wse7HWix_SJs-?{Z1801;*a*!b9+u!N+uHC=D7;TX?X3|HF_L@?C^e zaRZ24{bW~k2)Znd{baORSVbwFA-yQG9CZF2N6MnaqWVQ@(oi1ri4wj_BMg0qh}uI+ z71;t~TFZ05qtB{Wj^)znA6pCY3fIZIGe|~qV79pl?X9$4YW9E?)7?(W6jj-!a|!eq z41Rwh+w&r{g61hHovGbV+c;^bq#z~+?8+6_28L7sjL>GddmMY78L#a5)Iq*Ao`E9n z>Kg>edV1`Zx1uE9J;CsC7a5)$NHdh~A1+g<_y>SM0aKHz5uUV~`Eos*zN<5F3(2vO z9SLDv+&x{&32{+ufX0V}_JW6#lgvqx|8R|JX8u0`}KDXfemE;}zU7;9>F6nDvtWY9^Z0!}9_;57DYSTr6#2d=TY- zcOry6vJUgNBh<#aODN*-wzfbvE6(N*W$G$`i?erxnq-B{LpqsXU?j&3fUxT^g%zBI zr7~cKUy7KHWai3f`Ygc`!-kEj)yTSo?b4@p9gQ2S@A?;s99_|3+W!~f*n6e-@E(L!<0?Sp`w9oQ8P zotk4;1l=2A9;Gk3{CPs^AdtkKm=Ba`Ala+8L3A%P!w96G$ME_0%Z4JzhEV}`4mMlw386KT0L~fKEzZh_w%Kr z3h>$NQh*IbLD$HcVakIYcz7`M#;ihA2092^`z9pvbq1>GzP3t6@HLk7VV_- zh@5^CHvuq^2JIhN{uD4OkkppH+IRkUr(w2db@x9tWAL45Jfn3~e8>31KcH=!^Zw-h&?vda{;4_NuJLay&{ldKmo1& zZ07~JJCPBuTh~?y@JAZ zlfs*JUT0y567c=QbT!1hAIGdUUXla#=4)=~X_oJb%C~ z!>2aN2@%Y6p5wm;`ZP4iS)%L;04I!4E*CwlU*a^*W8>2!hd-_r%oDMPJUl-44MV=H z1`i*qYiIny`}E6BU}MQJg=;-#aUQFN`gcltuA$e@MVuC5?*wvWYo0O+^TBO@xFR0# zL~1s^Q#?z9k|R~Ei~3XqZX6)Ev0}Dy$SnKhx9X>T>wGrB2E8cf6O+vQ(|MF`dL36Q zX5&}5b^*IE)uUYCYefU!>#b6l5X=>{PPYYI@cJR5L0K6P!6|~hIM-pjD6#(d%2k!v z-kAdr{JxvCSWqrt(@V&>^nsxPa8}%FTBRWgMpBL294H%<#@mhmaud|j^~r1>ED%nV zk9r>8JFVbb`Bs|~&m9>@Rjj)y@@SnOFfVtr-M=%|yH-6sC7Ec@fypr_-CBdUPOsM` za4g5x=PXS)RG9=W1n<^#)1rqM1w{R{oFdrud$Ylg;cM&ccnW;<U-41Ph=wr4A)ni{HfX7?>t2R5K-4i?-yMn-M!j(5Ekid z)%>2HnwYTD15+rr)&_Y-y z+@+fp&W&Bjt~$n$h?$>AU{)Jl@uJw9eGYlk=~$_F<&)pAUO2hJiD^|hky*ApMTT&i za?s`Oi_rBy)r>oFAEhd7xPA+jcmTk=GlwJGYO|AM>6%0CIhP{UUM>FzFT8LZcI|uv z;l~)T&1h;gnF}TnUCc!9d|M4I{YG`~@*$6b1P48>Efv>IJU*MnR@pRSJn3l$Ey+kM z9cE}}EJi6*`x=lflMld3cPMd(R8mK{yFY!nC3g4+LxP@`9(fjoYN@S+ZZnr>+4EJO zF8_giAKilu)*eDdT_VTrO?p6T9E5u;*~~PgP5hJOY2V5>d;7VDIxY&DsmQ4kS9gh1 z+>1&QLT-S=>5rA}-QjQUeq@x2L=sFUE3#4pYtGs;q1j|kZ-CQ!$O72jWhhP1O_yEm z={0Fal<{PJs2AQ42KwN*xYt*QRxMLI5RXDgJgw9%dYr;InmL`s%IDk>aLQ zQJGG5z89e;Zah#q&Vv(b+V=RBMEYlS_K{wR+aE?)RfLeb03#>8AHvFKQgYq%qdca? z0(a(Ns*!GzuL-SpFrC;-d#Lw%zV5Lk#ro;wxBlqFEiDz-8|vsOLNRu%IvSMD%j1Y_ z3mTC}TB0xbEl=>{i(KGnj+)m!rg;U>OPcY%dBBE#O_*d`vKca9c>k{fE0`MbEUrI7 z>^aS1&DrvTL&6~-XG-S}(q^gzcF7CWgsHH!>+mMP{$?mhqHkPCYpQ-gO~dY*jB+j| z?J5@x0&TyO1<@sMv0BMMs}!BCzY}Lzz|v#Rh;YKRZWdZ0rC2ur6Bjy+%-(QWxif4< zv^Q3U2uP9h%KS=T8xV;(IW=P9V^@{T;H@H}EfMJkPf}%+EV5tbC*rGN*Scb-GYx_K z6v@_82aaQYq8r5DUz`&%%*f)zNHNT@S+#I)vTCoEqnP1`wcOjJL{-MT_#=K{j(F8* z{f4;e`;&oPn5GM0tEvH!U)>|9m)wJtN;^w`x~yL;MVdC=V3RHO07nl3goqEsg|9APyypBGke+iUc{Tb?}-S2xv=-HCz^%Yx*&}Z zQHxJ;j6zvPbBxe6|Dm2VO;HbALe_aeJkaG45f3q6tcG}k7rCG5Z9 zb-;C@vCZ5^)8XC=*x{>lhbP~Mg5|2lKZq&aIN@k`ORpd z9}$kb;O^b(S!d3o?w7I)Mo?27{AlZ@Bd4b zkTf%)pB)~nUx?GQhqz0Zj9F`o=GZSKm);|cDOGahe!w0QC#V_u^-8q5($d^( zUwmwYgGgP#4*cI9$_YV)wE#J`j>XC(fm%hHD^f*6;j}w?=lq*n z*_y0Ettx3T162E9`uV*&KhzE$wHWp0kAEwVbWb6623!qTh1*}b5)o&^=_0CB_EKJ6 zE{9gG-rzQcau%(PjP(?V5st53`Z%I&9QX_eSxb) zrB(ngangv2YNPJ^^#YH?aAnciI@cua1nHm+DQCjToF;MN$oSards}OTnjO3Bm*$JL z4L!anGMbVvwzgG7nXPPoi-CJWO^7arjL40y9K#!+i@suMoO3{=N0f(UhRJ0G?eLj}MvhdUE+pn-kUpue++1w2nO=SNQV+$C}YIh*n zmG#f$8As_WNF+d?CDW%OE5)DUCMTjvCnnET7WzdO@d*)=4&^3t1%|(naH>MtE3O1k zq9a4MFi`px?4Pw@vV!0eea2)@ADwvBUcc0wXO%^p2bf!i_@u^L*mI0nMEG-44JywWTX9{0SY%SB#!h`{>@+RSpE0|X>U&6{Us`zR&1$N{ z4b@i9ABTO}te?)0m^cq7XeT6hyUrwV191+f?i0}ilQ0=CWiYut$>q(7g9b6@%ey>0 zz4YCxrtZj}1&Z((Nq(Y>=)^;O2p>4??GxN8ZX;Mjx{F0SiW3J(!acz? znW`OfnM%6q!`^0Y_U*uOoJc;-@xXCGdgfp3jF2UU6?d4QSdm$^wCvZsGqRuIufvRpEo(R;p#|jrf<`$+lLot6lBpN zClv69d#JbYNp+}jUVtWVhGHn9jabelqKd_H`A#-Zm&26p9X3v=H_G9g`J=#;kTuPD zp|JOi0XpKu#7nbc?_B=aTVQO0kKR6LVN=e+`DPxxt%kjRyrhAft4aKA(^{F<{Dv;$ zp10_pJ7FTEwHUvfDoyQ*WowJ%qL=t;U+(;Qqqda6Xl74;i*l#8KO=ECLnE&QM}0I! zX&B*$P=&Ax%qmh$3j?$tpmzZCG#{ZiJ<$}XZ&641B!pX9!&qQs?eFQqlu?6?OYiof zNlpL}Tx?$IkZ*}JAxMRo(+>4bl*h~vM?@dumqVkdUwStq@^B8oSCt(uJP`kJ{^k_O zgy6CQ7AWsW{PiWkv=+=yN8u#RHg_F$xLmg~M-^fd(p?DhmB?Ss+7>ox-FI4t`7M7< znwHyny4s2MWe@2P#5Tk8CETbhA~X+w_#t#FHj)AlV$?OkSg)DRCgk) zJ_+M>_zKfH73sWIGx{a4pi_s;h=aD@aGfBBnqx=ZE`<;wc&bMNG{i(bY-b5PKO z?yv(gQC@th)ebnaj{c$M@WY*L>=+HS-;1F_Wu@~&Fwc3o4_Kt(mDe1Ozwfb`&KitM z&o8pqdce^eU(CB3g#{7?vOh1b2#$5C>;xzhqdrMVkUB=T7G{Jn$qg*_1uajoWyA&) zYroNgyKIX8aPpPfd;&%y$-cbr0bOviC6g(#o9a!U{<>xve>U^@?p+{l{u7O2t+*s^ z;bttD9oP;)?ERhTDhCQvr3j7Q;Hr8)w!3Hdd;<0uKcq~joMrOFaGx_V3pKa_G=yEmO#9f z=$|>nRnoI1o?W82jvl!1&7yh%ZNri@WZ5}C2}TYs;FhC6&B(`x;$LqIQZO|3**A6? z=VM*qJ7I&MU9YZho%&6a!(Wa~p@;dRlgYKc!I-llm1;O-7&>PcC{!lrN3?)C78U!t zp4ulZTXhXv){b-;EU0r*uf8QC)Ae17HM;sw{N?T5iF4cVt$QG3*R}~Mr-n`PrG+)q z{JTHL`!O}Dn-heXNx2>%;4)x=*@2p2n=sC$&V+$2xos>NXb)|?TA5euUeczEPFy<* zj>CAwktq`0T+pnOXLI|-&FCZ^U(Sby%@qwArKxO+Tk!kY@VZ8Mf=0XGa>0c*w{_A2YAL;U#3 zKyjDfHiiBN$BmZNFMp|&aps@=t2o*EE~Qnl0gRKK?kjyhi-RZ&`p z9fqCG$SIrA7bt3!nhX-yrANK|VL~E$g0CqMHa!0qQDMnv&T!1tXYq4u&<_MQwO0!$ z3o7am#E7rJgu?uZXpGL30b4_*CRHXBJs>y1^>5wvU&+!n5 zq9VVbB_E4v7&n7`ew?_&QfZ-G+}JYyJ=y6+boGLoo3rn?vC$vy8EYVn2UWNiFR@{X zWQuJL$ z&_+L%_GfPlm-^Gnj3VEOS&x}D8awsBm?2>=pdEL4>7s>@v%Nts6MO##4I0J4_N7w3 z`ShmG2{$uU?Zn2yX490b`Z_V@hbkIekh*GE|Gz_8@Z}*+fnK=l7#JMOty3N4ThVO2d}{-m+HrZxO>YOTJAkwJ9784#o=o$J#C~D*d(f`27lnmkw_U)497(~fNw#=bAEST3 z`yOfA`5(XEajC5IPQ+OjN&Zvvm~XBuBWX9m3UHF0DNVQUaDEq#^!;%dq`}Q5JTmHA zVfgviTE77sy+27oGJVFZOJykgZvA((mx2D#>}R+l@^?8JbMRi9FZk$(A54#f_~<9# z7~~;^%CRqLYT@9%#y)00Hfcc1OgKm(HTA%|^A?UKi#qHO@17ZKn}^g?>+DkJ*ii5om5ZS$HMFFf4jeWr`9R(td#^Ux_G;P%P~tQ^I;*_W4m z@$Cc~HZ9v$LFWP{DDefroLM@%*iIh5%qPQcH`wpWnuM^=Dd4REe!d5@OFSvidpmAJfMw7=H&_@^WGV$_%W7_n=63ACJSZ0cyxf~Y54zgT^1*lt2wQQk{| z$-J`_kqvC?f0O-$lYZoF&4}lDwf5)khE!${(w2Nc>}|`v+DG9(X=oHVYP9E}_k~vJ z)4F=K*YCjPkT5eR8b!2!G=I{x(zpEKNUrR{@yi43&PfBcf4G>w!K{dzY(nh6!mEp7 zV`-xV24w*vZ=GtTN?^PCbKwMLS;ro>?^+43(1MEE!e3|+*)SJ}tr!nRI zI1re0-(o-RQxdLaar`dA)P9(dOZz4^;|kANG=J$<@7T|zU=jLE`S%qi+i;Gv@o@tF;mPw_d_a!byX+sAx8+s z8mD$mJgE5%a^ZY{m89n3F30s;trg{Kh~8TS>U#x7Zyk1hFqt9jDenIA=Xv{9)zjBO zIN6@&IZ8-A==;&2kt70~PNtYf<6$v-0;i^DE{N@40JtP}M63u}Uw56gNrI5{PdFKu zc*nYE+HZa)wkQWM%$(BJ>F1yKOntH-hxVo9fn~mQw645l+42#`HrRh>d><$(iPJ?b zY{6R|IQ6cv-JaTL5yc#%fXqp*%yAwf&6nKeLaVB&pJZV#`I=a)SU;>YzW?}k)cb8} z+1uwQ`a->7xV~4nb736c`=0X0siD@s*wd_@7&-Z&U*SwuH9kIj!>2=ihZJW@UKV_* zy#4Ze<8O!>Cx&h&9TfrFA{y|nD!)j+R*8yJYYSKUys(?6=AKw!zH|n&XFG+xLHejJGXZ<=yL4z8 zfV%rUCdr`8=_5%`m3)SiEx~U7O@}-NqpYg)eKaH=)HYyXSe@Ut**zZN$sIb0Xjr~1zpyMKspyiU$FjT0# z$4R|!>5Y?I)Q+1t+83_GKC&#FyW$C^>hGT}2|KV#wOk4b|BY%WUsG%<*jLp`YhT+w zqS#5Mr`37R{wmK?57NAaOJs~>hkoX2PIBkjc_go0KB^xP(V_N5C6OGgiRAe`VU(8h zPa&9EljSI@-XnVCD1-z>Lb=_0;uO1O8czR( z-n{uKf5!NrxUWHR)Up;Ohr(4>wvl3GWzM1FM!%El4>dUrL^sykd$4$+#v=m_xf`9> zaw}3)3(?(Aa@^joE+Bdt@E0BUlILfM+j|@tSXE@*H`3Wn~)x;**F--bFd>yKH z4om5ZU5?XDd^bebo^TapH5M{Fav$8*AQ}hsr&+zUPffijzIFnHV;yuYgfJTWGpkFOH10Pxd#3BPf`J{k@yG+y|in?o=Eh zU*9pWxs>1JWx=^dK8OL%0r#8TL8DQKgzX!ag6X^{BOE>hk%(ThJobfC6P2R`o)`#6 zsc~J6!G9;+<7fuMHbRikmp+HaF}V;PU5l+6`;}0R24e<02X*hZuxH-=9OrM>$jGKa zj_TaG9r}+c029Ngq8Uj4X!nPl%vS@p4RDkFUt~thlx}@Sq|eteeM0P1^iEPw{G)-| zh2tT)bn$ve$Hz1%==RB)Nkh0*XYWlEbP)Fa=%*37TS)aYHA&7@9Bj*qiz*7Y^-AWZ zJj9>9G=2p6_ul*Od|=@0 zv-etSul2+tCx0YJ)kG5bW%_eT_Q$D_mmul-uwe4Mgo^ydiLcA}-&=fk)Qp-)VA=GK-B@249LA+|A5-DcS{ZNV;U8D&04hhT#9+&(<-_>}{nJ9-h{5G5aDC(LeT1U8Tfu5+BPXJ; z>S2O8>h1YgHu*Y&r5bgaLTvr5Ze8I%Yi77HX^%B)<;CnM=X1qvqRq50<%4NIhXXJ` zMWzAsxt8}{1$fmm8#I=nrxh0BwPiQ=IMldeRt65V(T1?rXHp!@<~hLvG?S|hK5pH5 zRo?sL?1rcerKpVkJw7G6vozCB^9jz6ohGFgSVzHDuZ-U=D!clIp#Ei4$k4TtuV(or+l>fpc(i(MheTp{+L$6B^Pd8&|m2lC55*~x@WY95uN3$&G$@!duVg{TGidB zr2}`-`GWhvGv@7!sr9(Z>BZnORx^Tb!@fP!65RyV*^tIJ$5|yNX)!UaQY7S#zd|Do zU5OgOb((q=^AM*ejs}XxhtkXG+8iCKQs$T&73g{1 z`z-f{f!hJ|cvN-;*JA7 z_PF#;{Xsshynt(9{>#q827Vln>G|HVk9A45L?K-ISmd{h0CQA-!sUvn+VZUKhg|+d0Ya{ z!4fV;dWzp+jjTQ;RwVMCl0eMOz!pFBMb}?BszAEaAGy7xXfY0Y#DtyYiKJ4l;KREv zXI#LV+?Qv@FFi&%*D!B@@h~T$KXJVPYKTH^t0m%LpuKm~vA{F$MkR2r-S#^R^N&CS zP#F!5wC%>IR{>VVv;hF zzm4iuW6G@?puF1hHfi_MT2;XaoQa*mu2qp^+bpZPGjH;d9Kt=qW+8aEX{1FP2NL5I zLkrzHc5(f1A15&}{Is04_!?FyUO$`vRoS+(#cvEr=TI@j>t4CSD}&_$pPOXpSmS}@ zklO>c*t_5GynBOJ1^cVyB>~?85PtW1qaT*2oXZF}(-rsP@jfB4*RdDNdibZbS1_zxr_!D5KsRu3ucadafl*XEjCltk{gWltQ-<#rn#B+5u+dQ)> z{K~Y#Ll)m&XQxjUNy?{z10PuLKO)}7m1`6`KW0lu34phk1%Jj=bbK$hj&Msklxee2 z|3fWQSUy+im}NmBCn`!?n4v-gaGk}n_vJlk|JSeZp$0-a(1lt_SO%R-~6qei6VTp@##$LF-yL56q1= z$E1z)&$i>YC7mok-QXS+Z2iM4^CscseCVXti$un3`#udhapHr~^P$!!jRWmEsWK~x z?jLwow|FzOMZ&^l@iB-P*+1Jik4K1%-CYGfN0n9 zjAKSNe4;*26_xM|Q!CE25^X~)Ty&R=*`UJnW4AW5SXklD=w~8aRxg9+Ti}5-ERqNyT|UMDlIs%qbo8 z!aa2vlY{#gRve|#kMZ^R-O;=^J50;VeOE%kfz_xjS<=$?YlCEHJ0M*Y39aPwonf{6KB7J+J7 zR5qGDI%>^Q&Gx)SwuS2@$fD;pzsq#=)Rudb$pULVm=PTnJ;W6*+lSLhrYg=t^$9xe zD$8*g&x9nkqsSGjb;HEX$$ihUSn{uNH4|Oln*Jx-0$10bP!@P!!P~p&ci0`+jafv( z&u^v@O-^{1z3ki@F6`3h>OjF8$ZoDghkX!<2@_o)rah)AS|O=z=RuVQF$R4TT; z87VnNoYYig8E&d{GMKTvB(YBZj@ymCqJ|Q7CDIlzWnS?PKW6@g@QtJOHw5JR7w1Dc z^!m!c2{dW)cGtCAT!7CzVze#x=svs$5N}D&wX6sX*vwnV zM7SfZ{HKMRulopf%2Rhewi08V%Q>o&&ZB-LH~9Z$YdmO>8LJ!viM@gtBwj?C49r8r z=;jt?bh=O{Pk3^9yWdHhNT4+#si0u%sC%NY`lZwQ&%W3{RHu+!73o*|#0%#UZT$o# z?>}vdwRl7JE6RxZ@kZ1kgArC8UBzOf%T7%2;G5mdBe=3I<zEonjH%E+nCUx|_QhYDD|P}{G}ukD4Rh7aKvle}X`eXg`1ztLAO_CU-cJKYLN z3o){rG&gz8#BJ~E3)WZWl;pUM*)Zo=JWIX<)_)|7==1U2l{7jAy#28+zuTpb+`mO2 zIKDmGEwdxvzJCIz#1ui87vG-1X)xRzlJ1;Bge-^Z zv7k<=d zSXnBav-nKK$Y)E#a6L^HTto4Qh$SkhMe4NUXoITrFTp<(V(CFjM_lh?;vTMv??n2aEu4P%1A{*#aa=Aq2vmX{S$dI(aGN0T{ zsVMKvE2*hOv~WIhJCICwUNxRJa{SdRoW5(*v<>eiH!$pcBm3@9L1f3`V2-fC(dKXh zH*3Ba-pf&gC9jhi(p>^v*X%pFEEP!C>ppimTu)r+w}l~iykGv|hvBxUya=#|%{*gIXz0byX5+K8jv*!|*sbjzVt?Sn*`=;d}j9~a%-4eqK1wxUUL5e5a zAa{2&n*?V#*<3o4@ORd|W=q?IJp_+aDkxSkZXWw08eGMwV_oNFti-8I{VtJUEB~yW zo{ILG47QHS_hV%&+a*gE_Yw3^FZb0gw`Cr7A~%0xCpj~1yHo#& z;!`jW)fU0ij*`(A2Bh0^2vD=6&4t{z#U9jzY#grOU7_-hRchks3SX*xA6**YZ8c!( zjT~NkRvvl$DEBO2KZ3J7n{CHnlSzS~Q3=W6?)(w2ZL?zdwP(GQ7~nt^=E{&$9hba! zg4#-(tt8!9&c1r)?|(2peEDW`9dq7T!zX_)Jc9l^WTnLp5p{WcQ-akv*Uu*xO?~o^ z`R6L;fGo@1Ti&@=Sw=GP0|27emLC&KPBcQAuB5jDO_kocem_XO9XRY1hE$?b=sJ|x zq6+5k4SwD(AkTe>G{gnT;jvWUecm3bok%!N!3qKY$kF53Nd%;L09q%RsT5QJqJ)`8 zmimkz?;IOBa8N1viB@mHu)UEF^zm0MJR+FgBlXnfqfAl7eWkvSIJt(k%gj%z)w1(IEVGg} zdU0RynNn(n!<8>5Vr11ajaMQ2cXc#Wi|e7C9J@6DZf&&Zahf98gfsCP#*e3$%< zN`J1sK{&G_1LOjwKgw_x;Q9OZ>%L-acXfEQF$cQZpNDz_iR@Q_`tZE=LYx_6O` zy{18Y+8QZqlm*AM9;h8=kk(({bC1F%Cydh4*>V~Se!7nVy*%7H*50&COZcg;XQk>z z238${oaf|kvr3HGEk}aipllZ`F19ztd~P(?P6Kn07A|4RdLo#)UsnN7{FazQo5<~B znD*SsfUn?IX6acpLwfuk)p;4}YKCHn1qj~p<4Z^`fds$B&0 zCFP^CMfOanfrh2fb|K*eFVPO$*yRdAn_C}yFb{I>4Y`k6%#};62(hl>|-JA zr2-Q4lHUr?s0`@BEqB3r3aH{sy2v!{Ed@|#=o|NS@B;N`hoyVl_DP{)0N?Mg>hUhZ zUI{*Wa#sab<11?GmA{xv{^rW`-k+J#T?MCM(>qiiR|hC0b9}i|8U}W_aPFhle*CCN zwhuOSgn#v0as>Lt=5+1hvTOdj+=-VYKMQ`qEhMSO%O^57yDJA_KlI0|#$kTf-JI2n zhIti-s4_m(pY8|vhb>TyKTv;Kp}81AobURfaMn%J=nW=;f@A)jdO^ zf*ktHm^X~_-OP2eMb6v3A~PIS5bvo*eRguf)|fAg(Xd8EyNl%ry_eVA65@|xEKs^^ z%@~*KBKTiI_}NBgtV)$G0zdhnSw{R#wZ)fX^H&d7rk8%se2T;pGaR-ZQ3sC32}l8{ z0K6p=6TDZ!-MqK)z%UDR97Mnbm;ghxa*g$mIRA@IdWI04{`4uyF^|!d@03#W;w!SvTh_xR-r1AaAOcgRyFG2uBZV|)aorE0z2USp$) zwpe&%+R$@J80`S;hWgaXZDsr9H7EgjcG5|YN)_~;0Vg~(k;n(Fk;8}UX{&gJwSEI?V(n52I1f%r3s z-RB@8Ch4I3kYYnGZOG-b%u|0#`{(VqQsRnixV&kOvpqA}eh>S+lC}?u)YC}h5vJFD zj9UTq&tUqjQ>2}{nQJ7tJR-AVZ`9s`7doC{T1pUcAIFCtg(T;H5XK|Fl@Gpdv0Ja% z!$P`|C{4^|3pDF?X{l4kweq@=sZbXk4 z+Da3sJAY7S>P9vcy1mPK0+(uaI?3Knqa3AR0)CtNu}&V9=0KJcy;br#DrEwRYG^zo zp(l$(#r|N}KpY<*K{zLmLw(ve{pUbimt})?_-SW)7qq|F* zqXkhL@T(t51Dg%8mRcdEK{V#({2w#EGOno`@> zAuH-vP9sf{-(R#mdjz=}UaJa7%n*y$z}puDZNys+lhu7kN1t2n4ZkqfO;4pDZ+Da_ z5;%+?kx+CJ`8@Jh(xd8`%}KVXs)F;e9<*Gon&>3B_vpqPVrPugx9z=~U&m)L>R0w0 z_{l7$?Esw6+^|s|F@nG31Fo%R3>MGnNED%=grj)D=Z(AmxX0R2#W>?;=jUoCO)-*NAVGEStK+ejKce}nr>61eb=q`QhVJ&Qp_Qh5zdpsA(t z)$1Q{C_dPL6k3e(zFc~}9FlaD3WNe1PQ0-CPkjV!$tR|y3@+`OGXQi2-4N3QPrPL8(M=jbdd6+Vk~xayK$}VJlpL z&jtI>GXSS3k+uU}K|U>EMI2$NRlnhW-nntOEp>PgdN@aQJgF`NmWP=&wD@r759VTmVBx|q@!v*hb;xfS&o`9(N7jwS!yI_eP)EADzL zCM&e5!KKNqPxD6{T_`~|k0Kn0A9|~XbtXLZeQfL3Tc?$=^9yMZ%K=V)Hz)8lth%xT zr#X)Umb%;jUoC*PsDx^(RHcvpGgi-QiO))e+6N5M6Y~}EyjC>(d@Iob{bly+^Co}HKP=fMG!v@G z^B|Em6E#7vNM8?lUy~~5$>!7dDwVbGQ@o?;dJs?ZyklQ*qz_UJmB2}96^d1P``)}L ztad6==eO(a4fov53ZuJC&>Gw_P5k1s{?AsKnvzp03V!B9pQ@5^zgI=xF%;Tf91y{R zfy0B7x+H9OA=`I%-!c!Qj~ZEEi+|aLdN_p>=c*Qy+ed*&UxdJmn}DfPl4WBUNossG z&EX{Mp_@b?>voYgAY+w05@hZmwAA6up^3rb97QKg|Csg?V@${%D*pD2yx#>Lc~W-YQ_)NKvK}UjU?I#AFD0L5vJ~3Ve~6#r6)SUi_7>4u<-_jEla)& zE^ji3IRycA)-=nYg}f-RKV81@|uf&nFl9A!;l+)?b#}*=(+FsSjYxToj%II0Wd^u8Z&qPSPJ#JB~0rv z1uiXrtca0z`Y6)VQL1$3!_XSV+Y|qd`;Us-YuuN6Dzc~YF?uJ+6D48B@U=UaXWf~7 z3ZjY+$}OdrKBnf1ro+iG(`p4H!jf&(zxEz}IBxBJI|0>MRv2em``PW$IEQhHD385i zm^mWIQ#LyZmo0^57X?Qu8bqx;{Qm~t0W{Oo21blRN6d>11lhzh*y58#vI z-bKU+#Iu?Xc>S7IuR@}4s?tp}?Zz&DUQ8Sy60R7mBE0;QdNYbjCsrNZd3Z3gkzqv0 z%JrgI0~}5aC%}1#{}A*=Z^$K&#IGSc;Ic}5Z6#?_F_6%l9Vlvw^2Ib6J69%-W(dwTLM27q%Wxi3A97@d z<#_?r9V)m@3zfyK8_+GVRgxq%B-H0_50?#|9`3;okx6zvLyhRC7x&T3jqMtQ7e4~^ z#_i@KX$?p0ZEGr1An@32&!vc@+#;&aIz1`_>c z<$2}BrOpg4Vx*C}+~VW|?r8OS88h84-oklgp>qi9^o@GOz-Eq`U72`!7h(Xz$u-Lb5*qLDpw z1E7|}12QgA_qyHC{TIfu{2hV^oY)m+B1vrJX{OC2d8#A-n9g49=|etXb}{;NtD~^9 zvW?>8oRnFi+ylQK;n z$81HdQ7xI&xabm@1gI;URv&bf>K9qtm>-sFW+a}wTopWU63M(bN~@% zXL*p*ml_MnW=S4d#bigE2mW?!Yrxn2D8bnmXM#AVBO7yOAA^78CWdvZ&Gpx<+;V3a z;bT5;_v_?q?h^E@NuDW%<8^;Z{Tr&5{&^2OY}aM6^0Pt`Fflf{bb86>5wCvP2*(tT zU7L6eq=hQd#}0I8c!Yc;7=9P~xfmT+tpE?fwMZv$I?Ea50lY=wK#J5Au1V7kd{J)y zW^GOhQhIwG);;Bc+f*uEa_9#?;$ye8V7HhWFh5{qy%G20InLUCX!rMakmP_;cfky9 z7ua4)t9b7*A?TBC=(EKfPDc}BRMYA6@CCg*B030JM=0ILgCwK(8g@N+F?3-unR8%SY!y>WWmYHu#|RjbggO#oQP_| ztD7j~w{CpnY;(G6?EQ5yMCGrR3_0VYS7SX@biLf+6DzIlJd*iF?em#ydi6d*aw^Nj zuNN)A*}*@tHzv=g{_+Tjb=<4lq%oG z=l*(qRvaM!n{8ajh(L3os}_Q&&yX2T`u+4gAd>YRWD6*s%&wP2@SY*ug{?v^&=JvJWyNn z3~Ag^&2=4R|3+gMZnAOjCZDVo^v3 znWlZ0x+Zbzt;yL}iNTN#q~eneV?7ruXY?G*vI077rx+hu$fdlaXtQ9iiH7{S z#r0W1FZJ)UyqI(0eP z3s6Dw-mmknFYJ3kpRDFq90Om>`$`=_C5VTt@)S#~Y7Ohj=W3%4c(VJT_wP&*7Z&g*%aHloOyR!dcj3!MXLkUR)_<6x zdhHEF{cb$l;-qK`i-GZ>BwoMWdz-+NzeR*t37|$OQH5gfhlG;BjwcMOlSP(-VLM2F zydxo33*a!J2XVV|=;j(1V7h9Sq)uhMl}8lQ-+iD0rt?Ad+h zHrVO-a8TsLa zp;2_6Dzv5N6;vACsTo_tsyY?{f;uo3;L@{+l_h91x6li*z+I?`f%9TYbS_qG{G?a%&!4?ps8Vrr$$fi zE{q5=u*ZvaTISpK-wb7ISMa5IpgVT>p!q{g!u&xve0xF_Tk8^BnD`pc9j{~W5>8tn zkz-X{`6pZcm_>>nA=Z1CeCAidPtEHJYnc1@Uwyx<}MCovInV{sw6-AhT>?` zsCawVtHeGM^{bVpEBWa2iw&9@UFi(2jitAqnXC8S#+>xj-$uG~0Zci@>bEGi65<~> zkI1A8$wtSbZ+8ZzvD1sW^5@Fbn%1|-SAJ_SH@={aLb8CFb=9#J1O3C}{YKI^)nk?e zIAtH4!p7B3^CLV6AN`HzxwW+F+|d=pW$1?q8Hxi)=mxmQsf-=zgDh8<2J03dP>@3y z#2vpG!#jXSR%}S=tz0iz=19b!m-iNkh%P&} z)Lny|LRdUW?0dsH^JErimL_M?A#=#yhrM*8l|s~*(x(u zZ;}yyHz_wyBAc!dem0{2Dshe)D1%>~*Q=h+g-H$xtVW!cUwYTbO8GHwZQ_}KS0`pz zOv50hy}#1(nHU`kGiHC<_by7di8~Y|>>g=cHZo%s{gQR_+R4&IW@K^qHjV`;DZA0> z{ULJLPB><>Y`63 zhAZx4A#j@{J5}W5mNB16X!*7#wq&o}+HcZtBn-RlEm*XpafVFQeUWQoeI-MqJ|q6- zb#f19g73lz>2&BMWSRx5D6A|j3^4E5$EIV zjs2AdOm?Txi}&e|FM$+w35J$=$Ylx0?tLB6W&1Fuz>J)RVkt+9Sel zYeWI%szoC%l4{?Va{brLdIF`RJ3Ohu3Y<3CtVYQOB)5p@?0`&tSGbatiZsXT*K`E^ zpVrom=%Kov2rmm+=246W`1;^YAqhrM6V7~F+E=tgGP6Y}puY7glIa53tuGI(j|)Fr zmfN8m_Ln+@%c~&we6^gU@~zBY)lN$*1y6mu*1;juGv-65Ddq4*WUw0W!C_afOjuB= zG(1~=Ec$j~2HCxr6ziVs%;4`Qb7$lQe^Evxch*fr zuXzE^dG4;)NPMzG$Qf;gsQ%oOfHNtg#tbrscSkag-sz36eVu_fQ6GWFQX-M+R^Dzz z5LrV1R?UYaOsvH+Ihz75v-p!vYz@EtpPq4rzJHFxG#orrx%q43kFM7rDHG1< zvF25oHiw~E-#;X|8L$t+_ep^-96>Y=-^Q4Qr`_k39EbC=cLez`a#)%tdr&xWGHUh^ z*#x>->Ymieoj|S*&`AI@2!>wv_n5LV=c^*xej37lKVm)kK>S%a{cf4Ii&ba8$KkZ| zgLNI~T<}zsj1Tlh#pQdVJu(-UG%p=LO!VXSpKFj4%I!|0h;igGvLDjZ=k?*|M}F0C z`S)Y-!)J>d<+~95@ZF^ru2l7T!0XC&Zg2RN+51(a^s|`WS)Q2EzR)8;(toP~6x<&ZorGueRBw4SY!v^T% zfJocS3!n|;w`)4K?D^_%?s2t^(r?B088GOidI66JIo!ZEk4@TNiYRB`;Bnus?MJp# zK#dSmm6GC7{%Q5G7M1q1J`oKyRS%zyfQn`qC~GS3 z&sa=n_)W=ByHW8KDBsY?3G^d~klNvKi>IC9tdKn8`<3DH~k= z0*#|(Q$+~Pt6ddJihqS=Kh_OyLx?tQ`Fyzilf9R6nuOX~LXM*Dw~DBe&=~>1p6^JB zNtp)ePts*#XTCMPtAuP8S@~GqMhXxd2gS4FPW1`vxq{xX+*fO&;b8SXMT_8hHy7BdCo2u>-by! z3?zhv?EC&`$Q82dQU6B_-4^uuVyJHyG`XhW@9M32)8$kO%1&qXF<1kc`3eoB`yD^K zD;00}wZ#uFc1#+%KAr@XRKNf+XmWr&fSXtq+_wzVyA(_jL`uhW6_V8vfvVoJL@YpP zTWT<}Rd-~qX(q5~Ci7eS5>a-hLo#1d4{N>moq37M8{~;aWl#|u`50F1tSEKnTzgnz z#8gKQ%92EnMu@ktuKr~FJ|clA29~4Wv=7&wLGD*;7tJcabENN$k$f62_*HsJOTonT zvbuSI`5|n;^ND7sDZ#nAQUA1z{u)_7dJ`z}V!CHKy8>Xa+cK@5)*^Kofh*p-%^Ris= z6ujQ=0q7sy3FYw?MHpGV@GE%b(|8G&+$wkmU?s^t1(~<2o;1HlDde8}ses2V=I8GV zlZ`H#ZgjtVjiCy#W!i?yU<;y1mE~E87jdr9$w#*}|ID&t$Ik>~H7tTxCA*9zJx=>C zVEN^Vv32ezNbcc9pQoKPC$R(mi`k7hXSt@6x^L*Z2jIIRumxjjIeuNz{K%rZ6njHH z>%24bM`5pCDaL;tM1(``JDeRZQDbTPAlxw=4+WA(F88VgS0;K7*E_}6xU;VnFJL#$ z7@(Az<2U|f^kk=_=1AbdTb{vxU{vyjvKf4aBK; zqWw%=VD}Esde(I3zk={|ur?AzHGtCTDqXry;EQk=2#D;0?D!NLcU2%or6f=9!f5Gf zV=z%G-hzdBr3pDNd~*f z;@;1yUuCKmUNc!ZefT)Nms{K=Z(j#zkw0|L8V*>%-C60~^Lrw_|6VSwqpo7+d7Y-D zjW@;^Ri5$M{87n-+Fq}muOCo`2${o@>3UNp4te8Fi84_FaBC3T3^Xr_=F{$h$R{Gfx4a%fD}Lpr5~|aH#L{qw3gM zUAt-P7KS@t@|suX9z+UU=?Sw-&WIaMG zO6GMq+jn25YVa?_CuTy5MVR8q^ARG3$GXBI_B#Q~mtE8lI0Ra5!Y%BAM%QnY^9?s% z+e&)lR(t7mN%sqwuKD`9a~cWQ?RuKp{C+C!@BC$bc*|$A?w8SG)*)isqtq7()?e?Q zLGQH=g%iLC8%;`-;Y*jC9B5i&8cU{*BwzlCqB~yI(|Pa8-+d^Q8~XDlcPJ`%!qx40 zM-=OWRru>aau47E#lbX(TFhUx7X05U!lXmG;qe6u61woBn1EEMw_fw}w@1b#mVMA6 zcuP#6{JlJ$WGmn&_7x89Gp&8+J;%=#xhS4U0{A?@rZf-Cy}ho-LE=9sX<`YlwRVK= zrd7kqkeXMfF60bpC*6XK0cDe!WZ>s6XVDS?x-Mm`?I_yDQ?q}<-$cKAe5K?RwFc8{ z+ZJR8L3gYviMoGc2*yUr3%s`Pn~*5#>~w#6Rz40MjDyQ~FPEhZH}-@hX9d5gJFDU` z-}Izx|F=(m0>*!qy-g;+7`>(8OV5nwPJh?r-Em_-{Zvw|Gz2%i5G6(kiKO+M4(on` zGfI?lcV`ORfA=sWjngZVYfv3AiKCeHky(2rwNao1z}QS$Mk}BZ>wi&xq-fr{iIfM= zPKjXf!&B~=+m3sH;nY$Va@x#ee@fG@ldAId6-7GxxqPV~+qCj{<{aDu_ktQlX2GCH zIwr2zSQ@6TS*A46Fj~^EuP_F~$6tu3ZMIdS>kHa7-;SD#XZ(@qn$4kn&JbSo=9w5d z?C_b{ODxV?=%&=Q6j+ZXW~vf^>zw}t!UA66UVF?O%<<86&Dmyj4P6*FC(#AdKJ8u2 z7j;~q3Tutk_OBlar+1$mO3a`h%s&_4(~8L{1)1g1sw#YyWKb&0taO#8Ma#UCM$8_r z>f&Sx6V{*xIRKfh7J?%A9DOypL+zbk!6k5}Kh~FvZ6OgadRnv3@VZ_O2o=CjPRfTL0z(37!W@df&1Fm*4z4iH-5`mTYsXw|8?ifOd7v`#Q;Q^a1ZzumVl}9VN3|%#9=}9ByHHhqQqUBhVyLt zsA#FvDHD_jg{=#NHesURlc(UHUn?hicm-$q1^92nQ1U=4P*9X;WLJFzI)EAc-ihgL zU|}Bf7v(mgRkLe&tErc?Atw0p0IeAahg?embvOeyr7vbPw;~mb+e-@WwmYNB9{KDJ>WMi1dSmlU)D zbngoylhTwjQM}}MnJRlc{iU+r*91BGpC0=0Slodb9CX8)r>z9wcc}#6Nvu!jPazfH zKv>LtN)7ma;W?^(z1*Ubjnczvg9O_#f0ltV$#_LreP}Xn2lV(KN+?y4sSJ7?X=zpb zz$F`*YlC(^?ti=Cg67EoHe%#6eCWf+Pj}2K?~uzHzj$a}kBtI^eMe7|pAyzcd0K%_ zL3xoEkw!eQu0#ej;xn&+N4t#m=&>*BgLO_W3BVH!*NwBWZtwu-{fheUlJGCz4F1M|HBc+u z;q%4?hVIj0$T$?Y=biK!cM`^EMcj11>bw_WpZ84*j~k#|?2`HPX?%tzOsnRr-H(eONlbW0?7@}214I#y1u)ilck32OqDk;n8sa9H^aRg zdyDLnClfwqeii!H5&n@k^*36z8#QX(LEvPq3-5|a9e(PT*+5*qj@>-s?pZSYY@GUp zJ3XS~u6eCnJ#J*o^WWbE5Z9wC4SXBbJCmY>V4EtepOgmnwqh6&L-%CsK22TG11wV4 z|7!D~3XG@Y<-rZM9>zd|etgBQsQ)XtH@>&FQwBN}BdBlnZ9sU>{I{T*!$qETsCnS! z)!e@4G~7iF`Shxc2?;mw{CRzRK8sVD`8T!SM8S71gVmbxJ14pxD-#$d|A{Xp`d}eIH##Sr96@Dk42~r#A#!WtS6tb#@^9+9&UtvPT zD%-@rdkp?a$KZPgxH`8d4MLg07DDvu$tG@{yX_cm+ zb8XGyxW}E$VN|K$K+4%g=4fm=_?$6|UfsF)y^1Hs8AiZV|Cq{Af(&8RW$?03Q*VYJ ziqgLkAZ0@8J+&m)_ck&`ga)5NE9PnTEE2b7& zXknU$j--EwPnvjL5hSjhO_SF^CB9qpWj}+z?-9B#Jm#JGRPE{8s$keq*!e{M4#o+u zdD`c5(;+K`)GR85<+u#>>rWkY;sQ6DC_kb41Ji}Cll_Bc{FlUDT}AvJ-50EbDiV3X zcd;=vBsg_Jtkx!(^t+Rbl3~>A>(*)5+tCW6$6H7q?vQKVCOY*F%w={t^z!mcIqGxB zeB2c5^!6ih5=WL!T0n$AkcQf-aBbP)0i&C;Q$40=9RFHK_1XRX*A1V(ZoKr+;lA@N zyZ$HUMflhgToC}}2@~DKy`XNEhhyRWkW7@~=KHA|1`57gw;qW1yOR!wUgVihsB1Q< zIuz=@`3}G1A1^hHQqytyZ1CY<0MJtc-OTF937?xhl!_LP`Q-LuoSz*zmfnF?G!YVF zhl@%XBPVm-8uL?c4Tl_!o&I2qIl$#1U%>Z&B!9i?#Z}LV6mR+E%gm{p70YKt`jk@; z!`nhW23iCAPis0ZB81B2xpTGO_|VB0q#@*w(xNY!rSgKaMNdzt{Bt2AMb zKAk#fnfe0mY%%5BnESm6Nl#Cw@cU47yD}Xr56*nLP*+EstSBuRBK65i8&i8I*b zWm`z6ai)y@4s~hze5lrx`vX4sCrNOy zYf_YP>P+tutm;kGZ+MWr=aXrfkZhS7?s(h?_|v3u2(-Z;AfRrcZ@95~#9ag6VAnwr z^tb@X&T0jQKbQyfGh(e)&N4Nhyt`|AJ-V;gL&Dav4^PX&Es*~W`mhJ3#tXpNMa(cX zks<`Z3tQfWHUk^So=7+mh%08$r$o7i`^%@9i6IvW;T`&7uG2CE%En(4@>f`tV`m)> zPQO`Hurr(|&e#=KSDF<}Ryzu)9%|TrLd$mo2&U-iS#IHp4FI6kBKe#KTf}8$zMpMQ2!)kOj z*j#)rOmR#^SNQm0@{z69^%7y=+mwe7e4Tfx4HSW8d-EE2Jzt77K$)-NQVr0yW>MCU zQvOAUQ51BH*#3+H{^iK~Kl`@Y{w3#|H#Y=u=k+FQ3(a>p^;?c&J8SUaL!&wKiF55f6IzWS50IAs*cMOLvAj&6dK6KMm#>%=)EHwq02=d*ICPG z6jZ8Eq3vxam?0KMaQ4(L*CB;k9Mq5UI4ZKI8JDW}#_1Cz-BmNt?JN=#Xi2iAm8u2OB zx~9NLil#%FczTtn=4*Y?TBR-kv_If!G4{(m|Ae+d=$ zZJ7+2wMt*op4UMa0Nro6kkif;saqa`+bw#!$Pi$Em!cVXYXKgga`zF==+=6b^m|&_ zjnqiP-~<)}4HL#XFi6Ev~p>(yb4#^Wq?6K zPS@KuvgY?QVg`n2r8i4uBS*EZKV&@T*miUO3+*2Nm<-eQ9FGX=py7{h zUTF@BTq~0Z$@KjT#_y;x+%=l?&bKr@;55Vvh+*i!1i4T9Caee-o-eSZm93jFc`z~q zeLI5_`^SP}h5N&ZT)5+U6hX4EwMwPO6T*P%CGWD1IjKW5D-F~p^JAD z@EHXLJ7JC!Dv7Lp9+d_vj1NZ@J0XKbVxPds1`(F#HE0i%y7_+_5y|$z8u;{zRR5pY zT=^X28R7pGEB_+y(FM1TDiXIE&A{@mU^B43>uIGLE{Q%>hr!7jMyHW3_wAef#!meu z(X={bre|c7XK(gRfLdr!vICXQI!w4(fJ20g!~iBFx4u$dzZ)rP9TI&=naDF2KaT&H zN1tfS95t0>AEU>0kB;*RuHj1F9{zv-m5?=%_1oapbK$mssxY|M^}PrWw}WRh=Um_( zR_ED$bn#|1!mVyoapgEk(ERij#zZlTO00D6p1D9)nN&;&Kg1!ucoZnM&KXL2$t0|@ zThZ|E!8IkS;l1NUBDkUp#pe99vhyE4Vfz2!=_{k6`oFKGLsCGRA(Rg35EzjL1?dK9 z5Rn#8V5GadyIWFfK%}J`lAzjPtryQ%)G4^xZ&{@?xRLc%<&p-ZHOFBaWT zWwKp99*;L8*ef=EzMvLX^O0?{p0$d&j$;}WwQ1(k31!&Nv(fk|XTgBVh&YQVngWy{ zo&~hVQ*TA_hyF{&jJVTW6jzYAcpZjPxu?pc4cSu&b@pP>?&}6hw0ti89@bb2fi_8?L#S_?4>f4# za(8$iDrqix@%0d8lAy>2V}Bnpps!MB$S$>LRKgtkJyU@0ewO&NW5usZ7H>`mb(|xAFP`ce$%f zdXN6=npiH7T2-cC1I67u59TraSFX?=#}XdSVZZD>inY?lpm>~VZH)3H5|^$- zx#!#B8{{wd*Gh_7=0p0``>rKo@VpV`sjwou12H5<-x=Fm!AUi>e1h793vkKH|LSx! zx3WEtJJm@Q?libFV)uV}|coeuDf=iBL&w>1Vj1h3%|9UX&^*zG90{DW~Xjw@9JnA`U(m?pVC}JtF#F7tAiaG~l&$ z@CYbktLppoHs3WSvYa!2<3;wyJx=0Ep1BFohDrl^n!HxY`J9r?(@10JCwlIg_u~o* zstZt?<&2Xl%R0uqSHWWUoQI^m9P7oCd4qLjZ!#5s*xV2s)jZ|@B*MhANS5qIv^sGN z!(oV$AYf7vQxdrQhbK{hfBV!XvQsF>1V~%)_#ch&!Kn?geX-j zsG*|kzHz}({-sAQgxW){JU^j#H#d*e3^@PCz@R|Oe_stuZxw%fE%+buQF~ufj6~6H zQ~$85&vdbH*d*@}T0ENat~nObr!o5&P_V%qw$lL5Fq(D_?bl2$rm5w#CkY|%Qk42r z_8IoC#X1rOq=VQSZ;O*r4lN>V-5W^Ml;*YytzXxlF(gsUj96DKCV97Yc%*awfX|C}oaPWR-0M}=N8w+qiE^o&QOHCbkbfB8 zR{w%v8a7CUmb`q^6Q^15Yt3nHoD542Jx@eImOgJU>}#C8;1O@0HX9gT;ivsjJbzLR-Vuef6}a54@PCfM3tyH zO`*`Fna)m>5kkm+LSQO1j!?$t-*I`YnO75rs`p=925A2rIVQFU{fsKhmK{(47qy)B zIV0R3xot3ZV~v(0EJel6naJG4v1olK3*W_u&AVn$P*^oU#Wg?MZ{L))z&6k50X4`N zBx#$RnUm5ODMy%_k|`6!>W3nlQI~SK$z2A?yy#|ddl!{-b+{0Jr!9IwA|4+>M7gNpEHjL3edCa#yH*fa&>|V9YN1l3Dm7azCu8pe9LfP^2 zhLm{u^t=Ssd5m|UN3HVbS`BZK(a=o!D$2vr^+LO?m_)Rap7;UOAmV=b?iG&dJ0URu z>jQ2AYiC)KTC688#2ASkT=2~Nwg&PIXCC^`d$maxrG&2I^5`hZaFusj;L~!DNW&?k zjD~Z6cSDlKVeiDq(@#pU%kTHn?~REZ!A0E5@-R@`~#7@uZ$E@Lgf@Mm-7g z*Qvu4Wn>1)3m`~88@5V^4Hs3p*U?|J$TwVWHEOA)Fk@Yg$lx$Aa_J%&`SQn15vQ1b z?90=7+bHL-r*COhCz*qvt(u1pjYHwg|4eF7US#qmK@1B-FhCCe62&(uyU7Qf0HEVs zPBz`RowwbQ@{a>4iLv-<;!({SN{PC9>|AXKTZ#4YgVigs%TK$_ke9|^i^&Hwi8phZ zrdNElau{xZq7VsE8KJ%?Qv><;0Ez2Pa&sYK02_au+Xy5TV$QI4vAPXK{RC{ zMcxd;WYSX%P>|@Z|;s;;h=cF)8-m3@O7j&G`js)vdnQP|11s{ISnG_*D!uEeb`mlw0M4Tfku{U{=UrX}FIK4<^zq7m$#Wj|#Fq9_8kp{w1p$zhj#||Iv_P{4);CzRX@JON+ zIJ%hsAB_y8T;C>P#1fT{D%n3Nk1vKWAuQd=M`gME`^Bep6R8<-XA_dQqnTlA%{Y^a@v26IFxi*Ln_Sd+WV?nw ziJmrF%cdWJ$ll+^-|u$&;}CRM?R#q09F&g%%NziWXb^^aE`v?xqgWj^FzqDgQ>5kg z>TZLr(#fB%fvf^s@dJvgwqj>;4~J8_luEa1^M`afuAMHCa~J)~f})84;){E{&0CuC z4{NL#qu#!+(o1uFWoo*RtQH35Gu2wEA%sVzmr#NOg5QA~_#*{QT`4NUV@f@qhz85M zT+6D$M;!y#d?>9^?|pEyh$F4(`tGV4#CE=%<90=uu@79g*())4MfPa)>vLa<$u&_zzWuKhf(e9x*G6%+m{dJP#J>DaGC%Es@LR`l5p*iEf05ZZksMaZ-aQU2>w4AIVZEg7_yv z4ZxHxER3&o-bEKaTp>_)?;JiY1^;W7R^MBmlbN-IT`GqPc_+^c{~47!v9jt^JG~Dhn}%v zH7$V9USWDD3FUJ%EZYl8RSxTDIOP5D%64R{fp5o%dJrh*lVat34Bkk29~q`BH8`q zH0<5>`#2dytUhT=8%DEiy2k+u54KCcY>V~l3+%A3_})Dn%*AHKCgrfERsZ~vd({-NPf_U=Kaj{S%gk>H;gEMj=wD)-cd&c5t8jAy$yWlouc*{-xO62ku5T zr?es65X36Z2$g_>*8gzUx6;aKrP_;+CmKC5BWYiRSF$8v*16B(>`*L!J#K-*OR*X1`g`H z)kKhu7yE+Sq5`t%2BX-aP2xWC?_Q;@KeymG_@|Am&cROCFo@&Co!;tr$32F$U+?qX zf(3s5vI+q9y0uV#40fTsCJgjmNa_2-SS69SG}(bSR)e?Tssv4nN=?Q*oMkpha})6L zH8KrDop?}i5S(|iWoSDTfc3bkZ)*jT0nZfOeYd z&b}_>FgFO9eRFZC+33vlS2P`VKyL5d*E9?=+JvC!-T0SWfN+(W9=6O)1sv_~yx1n4 zSQ8K92%`FC{HMCjNKJbHr3{3_6pnE*zwflX&nMCU4tae7ei!oRwp)z@uu=1-CiPnD z#wgLm$!VsKG7T&~xPgwNuz>Ac#R$|f6(S9kZWR^3u2?5NA-l=dn7J8+pbRIFO8i9? zkR|x^{_5T8Hpm0rI&DAr*aWz58G@h&A|&Jqhaxvdk*uVB5s$;U zK`O!S)p)m8Pw<`GWjJ|BN>tBcQhP-ui_a-s4q!OmV*kY!4V00^f6lTQC?oweCe;TH zeS>>4ZajD^BDuM=m8q`tW*3_-pW>MB%cdPg4>FpmCL9q4p~dcn+~=HfG`y-ka2&q< zyyzZ;8bT87GLPUDe?fKx`j66PDNRGJGW-)(5!NSB<%TI8OP#mJu0U_>#-f<$#VV>- zZZf|K<&Q!9ZWvcm)B`$u_2`J0 zb!RBsXgG0vVyc(h$)*$T_&3I^bCe0@Qw6d!ccKbLi&HcfJHVT+mHJ$XA)Z(lxNI1}YnOK+&^ zoQ4i&p=~=2+C5yG;yMDaY4oh-qn#c{{&? zZBh3X(VmT1CA}zhkwwLATIRDyB0YN5zRf;&+pkTorjsVLkG0`sXHb?k+Ptbwz;^4j zW6|lSKbxpwM!urK--S*+npGuhP)i6 zAK!t?joL*fIcwkez2$9#XJj`6PSBf#t#Qw^n5oN2f5p(>{r|k5k5T(|UE(%OhKt}kXcYpQ2$g`@(2V8FRDI5olBxz?c57_=? z*ON_Dl^rCDQX8#?2 zCfqjRXAyC{h0@MtV5lE~ zi_4Dri?5^dSykfPC7$EO9-6PU8pCqO|LBe>BNvPk=YIFtUgU~Tm!8K`5`p$!u<2N^ zB$RCCURgI5+G%`wsGVLNowvkzG0*#b)z7=gU{j$V5{7W9>jXLn+Uy^!1Z9#g^pUH<^TiFta?oVJJ*0p{Oe$=?P1VXrmrG0nL14Y7T>fAaXv_H+~P-q6YA5(Tls(OJV$p1G71H$ry%mSX4%-^4+HD zI6BX-1x+MjdUAWovTe;KBb9pJ=Yn#f_5Toc{GsZ9EM62+L9V7sgepRbZ$vU z_>#QH8zY0OSqo~!Z?TVcBUsJ?^x;iYKJ+OCeKqn1m%W9B*CGV-}RzW{hM(nDGMKheNluj?NW3dN<+!ya3L6zQfy3x2C;wNB+culWlW+ z(XQ)PvL2v3S7v3e(8@iQI5clyQ?7FL%-=5_K--Dx;P{r+OqNYHwS*)L;ta&#Ait|1 zomT;z!>}k$=w*xljUA$&&~^D+PXrlqe*sCe=$mS+S#N>GVRWxQ+KVKHd`yDl)2v;e z9El68Cv!|y$de6yg_&#Sy)qTA)aB`rflTmE?I?mE1%dFto~t9B#DwD-NKq%(8toeQ z0P^3tW}kb+;-$g&SAyw6-Vwih#kPwe1UvcPl9?JN=6`_vxCu$|wo%q-&&^h3w?}H9 z4)^Ib&o*N|+ce!8w2=3ZM0F=HhcdX5^jik|;Oo1AkyM-frk7{LisBmp?ppcK55oA6 z$<;=U*nV-`fu(GN2O*BH#`fa(WgB6w^`<-HfXYg`lpX`UFl!{Tz3MvH^~@jV!{2KE z%D=Y@TBoVJX1tp@Up35qo4o2JMGiRL?&dy&XWctdM?Y1sHq{wU;(cC>qGhlyc2bkU zRY}2Xlj5h4GDqbba5=!&RrZ6ORWg^*xwq41}5nPdaK*|8xgS9G@(` zU5k71wyW>_Lp+j0ol~!ZahnN5wQfIM@>T#9iMF2+bBc3&H9Mq;7F(pD7U+FDEApak6Oj;D((zgUlqPG zy~85aU`BYNN1vknIhO#^GE33}3!&`q)+!_Q0}L!*kGnFt^ve-*cF2iq2a zCyMmpcD5empX@g_e&LtlkfZ;E-1MDaj3!tQW-<}Sc)dyKPS^B*AsWK{bHLKha16eR z4lBo`6V$|a>39UY+e-9~$Q|mA)%oz`*$vbq(q^qswmb5!C$iLtVY`p|g2{?#oe#+A z5DQpq!Ow-&Y9Oq{%U_G%yh#ZN1$lY3Hhx@@<4oe?Qj`HznKmdG_Gno5-GUj3-3-3E zT1xVD?xF8R7k0;nI^1`RLz7}BLqu)H5{SV8#)H`4Q}a+f7QcGzrR-ZN817P=t00ok zWk#bLkv)xY@ zlV7CAZ#?xyG<5(yikyedv&hlJm$4nd4f&#*=f&re#t&}vbXO&NzOV33CX-$ulRA0E zz1iVZU%i{yV7egV<$4$Q_belZhf9GInLwwi6f!aMtq1 zR^YO8@nSfs{JVCnlbnn3)@emD=j&Q}wg)8Ws~Ot+zWOQ?+Id)HEy@gJ5?`G}q^Bx`?X&Z{AMu2+F7*(AAVF>|+XP3eSLv7T09nrS!XlNFH&2*7)&ox< zA9QP(hw33-o1^pmIJwD>cOePWw&NC#%h63v7|t3`v7vgv5EO#2wBD4HvzO7nbpR|H z0EL}LPX&-&@W7k-c`yWdcQeoe{=nk<;E;k3L7dNBRovO%OhN*n9Q;<(I<9=AKgf$Pw~Rhga;_fe!iXi)x-q(ta%T zN`0x&T1e}1&pXQ*JO~oY=`&R(dN~YrIjFIx*h^ToRv&6R_;soT+H!eDPw~tu1optk zTL>&6FQ01Kkp>t+(A8h-Tau4aF*TIWdeDMO#!evD3nu~P`6X$H+VmEiV&cmqz;0E4 zgtkuF&kWgxoGh{2*~{7>XuE~0CJ4oUH2pDnLiRf+Qw|5f(qOG52UA+EWzB0EiT`)}M$wHgD`+-xf{EK6g4fk~l@R>ka*IY}03=f}a+l zrv56G_VD-;RIlALwEG-7kuq_*Au$ zP&-$jZpDkp?oA*&*SIx*{So~}2YEP-NUG3&n@ub#Ae(yRCn6XfFS zqZoV-nkFG)m_fc63`_FX9CEq!JETn2cgsLhQupEUlk1AW%|J7Ux$0COakq^&j3zNr z@12kP3xx5n!*C!JBPj`}Y1b$9-&6P%{qA;_PtRV6)f_E%5hZ{7S#pyRS+>EJ?5>uT_7J8KFtNF6EnztsM>KZxlezR z#FG0dS!^6kOh?X0qVbNK0nWBgl1g8m+W2P|#`ZQri8Y#rGyLrRQY1>{@ZtcbZMzah zvfD>uOmbJuAvdS`u{cNW0Z$B~LSas9UoeO$PpQ+(^aD15<>b|3_u>ra4l&-%5aJ|s zXQIh#P)E=O)Mu2Y{BNsA)gc76OWO)%Z}9}D{Ji6$1%0k9dbwE@!CJkApY^0F@2F*P z=A7l3qL*$TWMd{Zq3{)6FSHYQb)u|u!%c0q^Q#{1L965g4+~CKac|&3D?LE;_d#j< z;`z3e7@rt|MM@2Tf<4s=7mflOs16-^#EZWU%<;!S^^n)3cOlQw? z-sg9Z{5H07hta!5J}oj`XEujS_b2DUdw|l+c@>{A`IpG8=QGHuaHhq9v`96;y$Wyn zpjZ)5VC1oM$xJy91&vi!t0Z!Y!%D^qar(iE{u|DFa875SQae0>Z&;Up_@a6ex zmxpSorc7wx>7w*x0iy^5tG&u9E1<=juh>NzW6wI=PX;fcO< zn=sH~6KRYa9|zEWdz7e|?C?mWduiY2xw|la{OaYk+>138w zh)q6s_9DoMih;nxm=eJ1YRkfHh=hy$qyQi#-%*} zp4B{E!u^FgF|ejnV##orw-?s#=@!tQ7@BOml$&4JuL>}^-|%0aGR~1KQ68*LSyw)H z*$}Pv<@X}b+RpuA+@?u*M-XGO8A6m0fOWwx^$XO7tkQ4L{U91pg*N|Q0RHtBjI;i& z>C3f*{c=Znkd*80{nuKA`uc0{Vxv%zC&Ug~?0#x0F@S%sVv+U3nCrpFH2*;^DuyeB z7LK}H9pqNf%!Y4{JMrl9>6f;Bh>b4D3wE&E0!bi00g6>)$n)ia(-D+N_68J-xZTYa zX6r)WW$5VO5B9Y{k@uUm&@>z*5@YUB@B{B(`F&DIs41|A2#q^DUATdwc7?y^F=ny( zxWRPRZL=IWBP58qhlQ3j?T8gUDnKjkNSQZnoL26OV{U`Z92c^g$tVzAAYX~ z@96WUWqHzSGfiaEb?|DxKMU1+v$XGLSn1OJn4z7crQPN4p$AZ z^QT&eziN$Py$n7v#V%E9dZQKN%wlFw}Hp8nm7H5?a`(n;_DAq0KJG}|#g@mRAh(XqE%k>*_6!y<9z#ed=A?h4?c`y8Uo$nOyGo;^}+aBchCBLQj z>Q9r%;?gQ^J_=$XJ9g@5ojK1-%%DZBHV@uk2M(RaRCfLZCmk(?{hqAG$ilT)U!6p) z!7g@Qa}oOMfT%6H*vHKUU-$zI@cesEH5ve|PFS^{~k4GLW?ItYwX?&!uZ4hWcffafmAu;D1 zw@f3Y+=qMwZRnoDUuJAhvm|lF1TWavp`-E(jSO-zktWYx_1!+wO;&|X0Hso;^tqJ` zeszAu9QJj8RY>mo!#vhudf(}l`mwFgAj$R2_?HQ-7Nk&_mWf33CmTD=08dS;Byf$X z%t#zM9GoR)anN&nrm8x=hb7DZwkzC%J0pAE*C@QGP6u*mtJ zB0ys9Nd(m5tb^d7bI)T4mBGjUqDlQsh9>kFZ$u#+@(Q!;sBW1ie4-Fy^M`QU?rB_j zB6QuP5{>odPLYm(5po>s=6`N03xZAx4^F2-XASm(Yav-YbI9(nzvI`G%d+WLzugc7<%8H^yT82-M73(%U5@{^HGUqH z_PT1SE*yD3;?eW*y}Q=oDOj7seYD69{eh>U7JtRZ%@+0+?>mPy6Bq)NPPHB)Z?QFJ z-#K#%s1RRjfWCjZitXC}XthOcg4`K(^i-fVd~YKJ^Il%b5+!C8SC~`o`}^kR{NZ9Z z>H7NAf7eVyvS>H(52dM(Mw_RdBLO4pWrZ+pd{>Vgme@DZ(e$>^OQ*Exl?yl4IoKD%FT%eIKYqNBHrXG!h zxB1g5PptF}uBN4S3IV8iE-~vAY}(3bFSs+&gp?{0HOD6ku`DxfDkysW0ra!gzf5#= z*<)^XzIHWkyK;W-w0$ubXB(=RdZXFtij|CY2gMu+Cd_QHzegG6nk2l&x?~DgB=yF% z&lrS|+x<4J!<vGBc=XBOd9R{X6gG52eTPd@KbNQ`S0aIHF_8((b*mT zjmon$Lb5_pjyvmYG#U)P?H&mgN{@>lKvxgPEvx76JR^qp&lN$_d-QL36z+Nf<)?gR z&!b^^G```fFUY}T4nopWfy7VSk-o@%5$|&>xo`DSW6YgnQ#uaoSKs!CL9B^Y>C-IM zlm$3-kCB2K-COA*!6{8ZGKoQnQ!Ve(H%EajcJ|euF2OG%$p?92zs(iI8H^pR;|F#x zu~hVe^lF|kYkFiS6|$)_=`1QbV|vRcbRn9BS2KZX`g zh}3*EXwc8`zUSD^?QUV@8FrO>!??*kK5+#NfsnI#<^;Pa?j1JbCN zHne;Dqy9Q!MfvwmWNY#M2 zI9_ym&cRTmCzDh%u=Xs7brJ?#j#mm$+`C_GrCtyhd2$*Qh7*zw<>g?(3P@fcYzW8Y%duHOP~5n{AP&bI9T3WtD_=*v zn-5A-mml1vkV{_oMqdbJHw{+RAvnwB@Rg90>M@q9XziasYt)n!+~w_V)r6vSH^myB zHGXoiQOLn6u3Ux%CPTAu_ao9P0CP8gJcdD@ya`e2g?L(@yl(J9bh^vBbAW!@?v)w?Tir zC*@E}8pGzRhkP1er(L4)p6>%pIO%zy*0WnvdJJ8Y~CmV+6xzDl`pD zy@*8UqBMXs{08O9o5`#3^AV9x@F8d-n2Uq*6wcN?aYwm)@AQHev8g}3^W}PV!0BrA z9~py$7dE}P>}dhlpF({e4r{^4dsS8Qt8NqEr>iry@N+9*cNN%XomhoP4I%}(k%uC| zPj!Y*rhlu`?eWjPP36{+$JehFU%>5SXTdrpikfP(bjztbi^Q*#GNvsPEfc0R7b}LH zRf89Cs=civKqYMFFqrRMWyD_SB;NrR(RKHJinz#bxhib?Fqa}BF&+%~Jjf<~unDhk zk*JR9yG9LrBVmVptU*u!=CleyT+d&3Bj-PTiO!!%2lqB-1LEw2LQ?(W`9c{+(sQj^CD&%3X2?7Cb8 zRX|HTJ-r?{nY&cf<~&*C3}2{P(9t#qF2Va4H*UM*g-&%<`Y%*9Ss&h+|LyQrb$!aq z5yiR@ybTjg4q-@`?NBzcUu?}6Z1{e=##F9d*rn`NFuImUa!X+#;n~*ll#h4t^>aJa z;Mv()CvR>e(+wPd^xRX`vx~U*LE{E-$%KIOVyS%SC+98HuJ8#$>-V`Qnq5iJ z*kq3Zqj~P+U*Rk0nqr<+ikOAiZz;ee98R}_NFA=!PBn!x8^vHAf1<1w(+&^fTc0>H1Y;T|04oqN2Pk7jD>En$DUE;I8dCG0d^mciz zrv)RxCJHG;NcwrjlAK5cGt0)2sv6s|Nr)c%;aFIp&Kgn*XY1-{TK$LY|UXYO3_>zjpot zNt~uiA+*pZq%%1EKf9C0Q-#3xI>es#lG|%!N=bYV#9A0 zGdLtJ>-ge@9G3Ae3_cKX104L6sg}G4ol0x9k9T<_T(Cy6VLUy}c#r%6(m;|~LVIco z(wKCWa?R@dFs0rZ<&q^hiFli5rX=tO{EiyicG767SPyJ|#mxp08Bao5QiCn(ByVGP zz1ZCah{yHF9R_YA3chS#Og)ZC`|?O^@iDm$j;iOMW^YUTrM#4Q=yvWs%+FBFJsxcY z_@yEHjE~M>5HRQ-i(>&z+KaalyCXNf5x&?lAJSc!EJ)HPx=KcA#Ogmth&w>0Y=$Tr zshJ+eyQE$!Z@XGg@T=VXlquH#QE|WgjpYx!_fC50_GPD$qc)|42Qq(hkI#}N&%xO;g6=IgvFpj&C8o``ypQrmnOBekQq@yqGGV>Xsa zC>e1KRJNkY{a`H^d$uB*nr1oX3L{xn$1nZ|X(>-O-sPvxG zb}iT!9)}mavvttrd-rf}TM{vk#J&!48_I=rA^3G?XmnAi4K)@v-VVfm5`?3Ck08zs z>$(&tf^dYQbIkiuVbr=W7Tj=$s=tZiN5=|+KEh1TZG92Z}MQdZi` z_bUtUh`svE-(yN$Es%J88GGgW;_4yy*Z5ieU9TXAmcL7jnAdNt>ziu!A0hCwRUc2a zm<_^by=410Uhlq~m8zaI{XDpMjsKU&?7`V``?n{Uef{Y4{`-dCoqCE;ebL)H|Bjf< zSGA0E$2uLyLnLLTE;0?Dmw7w9uh@7+9%Z|Jd2|CH^e7CW-S~W;m5n zXPPV9gwys8{lzY5{)kEu1RPOM4Ys$EQi7aZJLPE3Lv}@ROTW+vF~B#9jN9N2Rrj|p zDlr3G5{3#(UWo^TE>Uc}`WhCAkeE07XFCIeDwUSbvnknL%g5@=d^_i*a5EpI_fQU# z<9j%D|IJh_bfiB!m*$;Hw7E1Z{0_C*Mt0^fWQ-G0@%E*&Af;v1g8YT;_{Y~@3IjZn zfR*0dk(RiTzx`0TuA_^03%zJ}tF10tDW4Vskb79h*e33GTxwY@MSl{3_H{kO(;kTP z%1a4?Kxse0Il4!~VvKCD2=9qIP$Cj*4L!1FbHr@>!)^v2%6kWXx4WGCEjtK-c>KVB z0==r{GKoKKs}d2iYq5XnWp$sy!rT7|VXcRg+Q2=L__(79TowHm@PXTm7Fdm%1`eQc ze5d(OPg3BElEB7P50`m(trcSn*<==pIm zOB86DKgJF|=fXIqa`k=hw27KOri93&=048gg7*+8Ts>Dz!8GQwz?7^?QKc3wH!5lp znJwk_?k9uDq)EwmpKM=@Pnq40+5VF`|Iiy^;QJ15fSm~S+KV2XePWJ=j@pSXBffMI zH{N!GoG8TMQcdwpxdDa89^sFf4-0SRs+Pl8Tu+u1ln;`ItQR}>4F`xzF!?z`KhByQ zo&Lw+OZq$y$n<)b!(=3Vhej&#`q=5G=qkB{gH%Xp;Y|2@PR>HxsP1V{d4A*CYgWrK zxL4dKdM|DytA~SfyRH{i6};P@E!pG7f=ys=9gIbnpv#+9-n!8B$x@84%7FGQkRy*z zB~d7K6BOR&j5+!ILKeUsR5C8_$@j1u#0BPId3Nd40~;VXj4s%?R^_`Xu=*XuG1aiT_7bL^cE+wjG z*MM^P)&CiSd^~hwk~^@AQc_evnrA5N|Kx){DhV`)olcf_&ipc-za!3=xx5DijS9m2ZtN;0 zQL>l}axa+yw)Lzy3{tN!a1wC##(6D#iwd0umX9&6CU!;wKBi+iYyD11#L+jRqbp{( zyAE`pL_eXtZ5aeg9G8nUM?*?7X8}!TXKIN$(E~=j8EaXUY%Q}Mf1J-7ez#`snv!*v zoyt7eHe$KcHlu_~Xj*_$Q@qf$tfO%~$?copKWe)qcnsF_*0;eFC;mLSPIO*_;6lF1 z^s!fr+*l5Wi_~I~~E!n)@|kV!RnkQ5OSHhEAN})**LYVR)^XG_hL3 zDb)tO-wUmL8{eqWu~+RZb^IT)`I!eJa@WGR|m%&2Dj;cZp4N8i?J$+GxaY=7^l7Z1Ng zk|_`*z`b2L06G9$KbP|G{^Qx{N))b*vFy9F*O5e$3jOFfIW$xCZ{7OT5vm!S7|h)K z!707JoXEQo$Pt#fcqaRWJ-jKWvlotv$XiEYBFSG6+{t15?)~vsd6>URp8U=#-+b7MWh zST@1A<2*zZKnXFbSv9cx-ErtQ3XRUSc$Czy;k>mBT1EEP0R(n2P-Gc9Di0q;z!9Mh z`AFpEr-#})7#<2Lde-QNn7?;-2*_aX)GrdKXK;(mbT&0Pdu>R&_#7YVVfnFT(vH-) z!(Al9|3%XcnODKu-N`+o{meEnu@5GlEfX)0XZC7XKRp6qnlj(FL0lh-Za)rs6r0r| zr~64p-&lxn8`87qp8(HpNmj+sd*(W(8BQfNsBdg41oo=Obi&OPTi5m@b(O#qREbC)s+aFHU&KnTqf5+aG4JyBd&zM+ zhOoKup5ei9bVrkHbA9kT-|(Eb9KU??w0floc3J|MWX{H`^ua#!-WwvF{&X;bD5?w0 z&)c2h8;xSzly0-pZyUT;;D0Bhlxp}%NdfA@}Rb$@!;Qm0C zh(M?tLVOUVclWDC01A~|0PR<&Pgg#PJP<6p{w{bqmL(gH zPoh77PVYg>NJUELcH{$$370HVx47#2@yburdk+|25H5B##q56y>D)rg+`C3n>V4 z!pkPjina^HsT17cd%=iD2?-<_DxqUZSi9x(!edz+SjR+m-|YI`-I_u;GrF&#YGSGm zNpydjG)$v=m86tX8{LD2KF%_|2ZYeo<>XcP-y83L+hZbvmV_M4>YS4~Vi##n<4WeB zCXrfDrZ2OY@NQFo;FctM-Ba>+)2l`XoMA`=IjGw|bTX=25_!;L|9l6ya_ur#}c z`cU@|iP3X@?>4gZJONhSlJw`a>w(n1`UOL`3_Sl3ME_=^3%|4bhxlVk)yU5#NzY0& z4pu8GFUHTu;{s#UycYYXileLG<9;rZXj0)Tn(#{g-Mx42 zwRg4MN~ah#Q1_MmLQH$6ar=g?p2xc21E*QASlzF$*E;k-Um8wy9Cpa@AS92>?|Oeu zrb73dTkI?##7m=$3!Iw@YB&;f?uo9EQH!HpV&0qmK%Z*zD3ug{!7O!8kWe45btY)@ z07la=yx1Kr9(7vj;&AFpl;{SMTv(pjiin*(8dL7*PLYC!Ur%`e;TkmIksLj^f=NKJ^N~s-b1-Uo%mSX=4QDmt4=nZdeN{e!zxKuR zMNuPU0nJ-3FM#wF2N#Ah^!0TuzUImG@e0Q`=+|G51o)9%?tUk z7fJf#)vJv<6?6W*_WJeqokkKUlDID#xU(x)i)z-)iHL^x^Z3*oP-@DbZ3*!#BUE z4v;PZTzbH_L^>9Be_Xit0OTjT*v!^g^)B*fm*m~R;!I3`5#Uj&N3mqGB4ml#@+WLe z0SW%wtT4S94_s3ErOc!^ICL_R;!54{;c1pR7La8%$+HZ+{nZw{C#I4%$e{2d(&=b- zBe~KMpC=3ZknqE#e`&h-BYlshs9@k!-LGVC2&k)fUZWQJv-S##p_G4Jv7{9*ubSH1 z)tzDlH$@!IHU(-|>d$qfA-`oa^BX?mwt^e{r9C_=bBS*rT5SQu-LCQ^@ArDY(Xy^? z_D$Z88V(@?l_;KCKytmY`Gf*^Q@Hf%Sik&hgSgEA>PNv?YVW(rB32hcju>|jF#e|` zfqrYtFaPDp7c)Be*pL}Ec;pb0D*N+swxsXB?ga=i00pd%LWG&ycqd;wBW_VF?7wcf z7E_CmU#`GD%7IB9Ge_?8@^8FAM_f$#h5{_JodvoL_Bzn|jeMp?o&WU0FEN>hC%|qBPidj1*(zcVLyHS8-&jzl>#lV($tev+U7|38|}GAgRJZNrp+fOL0Amvl3< zG}01+NOwy!bazO1iHIPn)X?21jSMBy4Fe3bzj@xZzCZJC)}Gk=zUn;A3#K247uqw| zTW-En!>V-)Mnq@1|2oA->KBc^HDy6?Ze>r0UmxDp zWr0w0gQ#P`^UGZ$j4RPy*HI_uNB+H@%4${&@PfFmL!t_1Evb~);!2*Zm%T4CBf0Iz z^mRZ~FTe#oind$%TDxKEjzI1;_^zMxa{g+@gPgQU@8b7xp!eP46ftWuSF7JRU;RlVZp*U@oWMep2=DMK`n(w1a|~q?*}F* z06)`b=*##_+=tzBK{>;CV<*Ste=u3s)xFDPjo{ZK{oje`jy* zn=g-8g7z-hOJ=W*d*06pW)pCeMhLpTCs)e<%+3JTJULr@7gTAUy&Bjb^hDO%5XqYH zYOa8KZz#>K@TYkc&JZe08zC+0Nr*44y4f#iJ4|~p+bV`F&_#(=%r}fce;-5pZ0~r* zed_x>RaLshYTJ7Z`UQ4Jr^?yw0rjjm2z|B+^qH?Hh(N7>!YEkuAD>BwintqCnu@xX zj@US2!DLfEcf+SdSMed7S7Mu*rJP2E@Wkvo<`U+2c)lNJ*i_Q|UrbfljH!#C3p*!I z_lAdBARv;LwbB>6JAY|q_xa7gMG;n)O&pY{mUaEyi)SaK!oFPTAlV7eGI!AruN@Bb zHKeQ*VxjfVmF3C;i^2|Hoiil}PE^(kRS6-BWOw*#IcEzoR|zsAIxR-J)aJx^*uvd* z8k|Z8NnCQJlRy8+=E_RSn3Z10)G`jv-XKckeX26C{GRP@b^?S{(b!6ZoAd|! z)Jt_lxq!(f>8A#5aD_D$36MRJlOA{K^G7d(&=!kxiqJI{R)eH*jQzQFl z9Wvi`?Ue9psN@L{A(MsyJ#r%dwzCJ)5lw-+FUQg7B);*m1Gs?i@H*vv30XY064e5C z(o7Fb;gU&&A#n#{bI~vO6|_%=kW&$7Iq&^GN@_p|d1THrLOd*NyC-rOCm$`oI`NS8 zKJCA}$rD=5893=iuuK`g`Ww=@CCdb$%2p80<&9m;{2Uby!53Iq5#YkN8j1pmKG6t# zP9^0wR}I+9&yeIU@8BTJPzh3pdz3GH7T_cWQYp5~GX$^*zo+@nt0X6^fmib1$VWkkWljqmFQ_xF|oQ6-u9&fDM z8G2%yZQ7(0AV$ew!sgU74y8^@ej7+k3%P<-ei+yd#H=Q5=@wr1FYx|Yg8vOI4|74)u1FBb_UaKS9w=k(`kLX1cls6jTP20vQ{*H zm_OtGGC)* z&CzmcpD=tPG9rL<*Jvf9;%M3(Vr;W{pz=voQJxY7nkVTs*6oa!P6`I0F%j+pWLU* zP<`~F7yuK#r8*^Crc;9wTJ9;GKG6Ft4GUs5*<$+Lu|P7}|K9Qy4!-mmTl_HaQatIJ zPQ;`v2!w5PG1v=+v?W(!Y(8vZBt3&rJu4LZWDWt~R~-gUi)wU^Jm?9Lxo_=K&f^V>37Bnyg~581J!VhoiXi6XB{s1xtB`NCrru+);#*tkI38Cstfo>1)=>bUQ zfoGH@pI#!xQT1R9@UP=p8rdI(-_gon`I@rA5 zJ6qMozhWXFXU8qpFz(8yGcLX_DFA=Ja6d+!zMNqJ(`UMcHZ_R8p8|h=Vj|ex1y3OE zk(1X)WH$h`iGUwH&J-+ZVH7t~-a_1pyqv%By$dI>j*i@47r52~Z{tBu5IN+DLoH1u z#Wyn}1ov;0;O=)IZBtX_EoE+%m_F~*wXsOj7%aG7-p{vJRfPGbwEO{SKtO9a0uVE`hJO3oxP&KQ) zWc&1d>X&=)IgPS@?Bu&r*X2+CSa%mn(4Rgg8C5e6ItKtU;^_(20ICeK)v5^8lw&+S z>WhNdMRkdOimkp6EJ{$%Dm*=hkoksA+f>>Le^?E=YG#`U4>X?e@vcSk)v<6X=~DLv zO>O_h&XG`t2tV_P6O%`=r$NUK$5@d}fl`WM7J7Yxpst(Ix0`E0SKoC{AQFk2+G5bl z6-axx`6#WDvBYuI#*vz$2l|Ofmz$|5K?OKlXl3PJB4=<;Uqd*Okw6^dJO=&WCS>Wu z`77L>O}jJ<7Uy)jlyCN!Dk3IG=h7;MvkBJUEzc4`oeF$8*=Zc zj-%40z#X}p2E39pe5Ta1P~zVE>pW{uDQlT!RSS&<>wW0 zYGG!hO;bT>O`RkjBM zHBKoDlO+2r{SY}$96I~Vx|ig!M2R1vjkx$N|4I^wx<6jf8S@m!mV7#rA;gc^VIz{@ zd^J~&hUCVKe&HN$V`L^&{&={Zl$bYV8y?*JA;`)s}eD_^C)gEtKB^wCh` zv50ltoKR)#bM`&XE~f=B63o5gZ03i=(=UCU(FGl8 zN6)kaMug0dd#J<9{$~|fY6*TM&Cdwtgw@%m%y6)Z)jlb#ZEo9>EYiM}&@b*QX!z#Q zwfZWWocWy6QH4QX3{er-nzNoa??`ikEANydnFx84%;vRyZ8BshysHf#S)9szE#6}k zja?(5=fG=>MIU)Lp{2otzsBG%ZpSkr=9c|e2J68648{&-7uZF`Do(r5i6u47alzsJ zs22yIU-63~Lf~)oEfK>XnJgoJg<}ycdHO$J@?;22Y7yfhZ~&j? zAg4!Ew)44VmxDWTk`W(1V`m=4Dcy2gT>glP``l#_1QhutJ)zU(uU6PTBGvvcu!@vkfeG_d^}rU9Y2e;HKx!dYTw zG$)OhOOhvS%2)g8bBY_d1iJH$%0WmJYO?P(>b(HEEDQN7FH~pdnt|{dDO&%paPHpl z8t@rkjK%r*sNirodmKbprgByRgI<&wIIAB0Ot2cyY5*W*M}!BC&|d4@H(15CKGbpo zq{>Vky6)m!q|Zk!`8l#}*p(L~+3v-hHxAPc{PE1|Ip;*fJ3zm} zPUddi8x^5-$gKqZz5_`mSl;RR3d>Xf_FT_F0ulM}avq;xx!_kF85AU2=)TOC1=y#1 z#o=3%$IXV@|B6!G1Mfn6^uE3ct;4p;V007|7TOuSErWv#MYDPGMU>^kMZ~c`<{Vr> z8RItfM}(q{jOZFjJfLH!v3ZQ$4)3?@^s$NsP!Sr&-#DcR^W5Sa&+5z-y2gzO>6e4EfqUH*q}?;~-x{NcB(t7Q_;Bok<*h zg>??WWXD9G@lgCC*OoD{$xx%kn`p0$ISl%RsMb`$qE{L~BSkzbw=$8t>qJo3%qk4> zAyu7eEk4k>3PzyPdxl&*s>_b~1D#YTv15t)MmAuib>u9}#}2fZTrr;Pq@p5HPuKWn zKz9T(^n$@jNk!tyvYQYs`jCG_d+drSXqQOQ^*FN<;+_(}_7|{a&8EI7uejGNvqtE7 zBGJVA?g20Bd1lRldrB>N9gq!GeM?qb@W)#6G41~Bn1D{?A9Q>>8^qM=x=5HF{BN0@ z&9Yd+l@8$_lRITm6!P|$)!$bCKqtC#BjbjpI9?CTlY1<egvG_aZ5G-wU$Vx~a!`ShFBM+U9`_X1$x)UJ;B5XH>Pc&MLb9Gpb42f;{BIuvuK z>D?^-_~Kx;gGx!^N8|nCPh`hn{&8cB1rxLf3XHg>lh)*9)_?pRzE3vfPK&XIbslun z;Of0hkzGMm22(@+M}Wc&;P};=onSV6B+QejhZaC;J7clqAkLjedX*li@v)!nc1P*~ zeDJRmGeQ4BaVo*!mNq{hO0PWnkJx`v%%oNm^l#c-QILh| zHXNF3=;rPk>Ye!&_nQF2@UQ%jlIbo4_MrhW!?~Mo-pS6CYfOPMogKJ^5EAgmE_rdj zh@TNJWVhJ~IB|^{qoT$VXJoj~*wuJ^Cn%695?k^|t1$~jw&|?&g?(yPc}t25)=@gQ zzf+1h^}2sgq93=wM}_gkciG~o9jYXX8SZO-Zyr+elEhMa!bv7FGf41NHwuh>u)Usi{0(u4;brgCUG+`?Ij>!688 z-3^Ox)w|Me!kSh&mPy4oOp4p>n-Ml5LXtsEUa;;5KSCn^YgZ{fwBRgA^{ivZ37a*vtP#vqJkq0|eZAad4S@6EQ2B>#I&SXllQS zpq9CCcwVjJ@y?q&%gi2;eRK9V*|}pd$V&45O6v3XFZJp}il6d(bARH8XD=B1c)|(_ zbU&u~;r9&~R4%3!Uzmpa`ZPwTZaPHrgX=i8t;!u!zH{djA3)>)iw`)wO3*DuQ=rO>PebD<`_< zC5oTEN1u}DLC>ZoaG~oLybrmk0W9)pE8ULS{rhnDweM1T4gzSYoa+EV%0E6^4Kl@d zlzI;DG6)u;*ZyE86x^LkwcR7NI_@UjZ!=!1S7HzXI7(nDP=I7PGwm=@8O>ueL9H@n zc%-l9$sA=0Ze<+rcs2)LYH}(+}p+Yvokq6~Ym$Q|gL#s6ouZ1(} zuvG28UT@_Q83TYa+@7ou^X;g~lU=>AOk(px7TB+{w>J7(yyF|Hj+pd&$j6iXTY;UK zkqr5txye;qPQO=gye{@N91p}D27Ymw< zDp}c1=yO_s;_jPImyp0GOeLt}w|(p-sMux#rAQn1DkUYHFFcN808@z)?r^y<1Da?| zx3;C9Z+)_=$Rz~-POz=iX;1kV-U9_COR5#J8$`E(A0^ip0?4rJ=!N^G;~bxCaq6pY zoUvf3I{P#z$OcQ*ESmowgn-#5Nhu0%+kKOm$QX)OZC-lTSxf1;mrynMW_J(rvV0DY zMy`gE^_`Q53t!!$>+G#QVR*uSGL3CgJqI!+9Nvi8=D!7S` z48U>P$1ape9BzZNVKGT}- zTa-{yU)Z&N{xm*5qxgO!COD6}0Zu1dJi`0at;C=qa4e)-Hq@8zXUqm3YW9TLGIDUoHN@-?sBfsG*PH|ta)W(~%b86eF2hdUOD zt(*erY@y_#;HMpT`LNRZ=L#r-n~Ft<>lZ>SI>4_ju_HPOg&El(fK2>ETmKk z=!?UT?Z5X!x!p5Vf-xha-&Rm=O>FJAN501D8*bz`;5wu#TEeq~defcnP_66BdU~|q zvak}N6K**N+k^oSYhdS^Ka3J~fK8clUxJ!m_6K|?qh!AQ*5omkLDOobo8ZhU-vZ7C z5C{S*3u7gl7Vtny!YCrufB%gO?_tTs9VRn3OSL4BBE(O3O9bM^PxERM$r5t^$+P}z z_zyADy4~)MtU=EHV=H!UA?DUdh5@O3C3~I-1b%Re{1U}SeTx&bX7SD*mP~ACLy(+l7wh{=@1p|9)5&3W8lQw z%J&~Edk*@e3t+}bUjVHRR2^*K>}8<7UGThF@kp}bcxG~K$7Z1v`%kW4EP=dxIQyCO zyoYNnufe(3R06te{BNtpVOwmWXzM;EvH={-8`5R_N$>%i>+5?DQ$ex6t75P4r7^}Y z*byx3+RSJK3WE{1i>-C4Czq^W{nZLM#oYg7In{TL6%Tkc>DF2M^B9Xa_+TOXyIn)|2P=AH3cVWzHs3a-+rRQe3m$ce>X_=HbL-8@12peCC3f zcO>C>Ilf?^!XWtjw@#wsox*jhFAorZ1rohK^1p{a?wlP#KtO$RrLBR~{u-ziSD+r; zQT(~^y}W?m*HHsEfZ`4eu6cs^o&>f$Ezuo84wDnm7*ulBAL@>N80FoF`2YidwSlm~ zQKRg+KE><}@b{{3(6UDY22j-Q?%sqYtCed(12`?F2WuGu^dm%Rl1td>m@%be~DA} zGY60r%lX&rBMASqZd~sGsi{f1C3t-w4q-s(Guuw$NTx2| zx1gj*Xt~-Hy+PcWVbNbgJPy3X&wbudkAd?t;(8-vCsF{U+k|R%N3w1Ixx5~uyIZzI z130y0Q1LK=b@>@IJj)puhh^ZE$n%Ls*Urk|7ZzuTklV8Z`{E4!SQugEoAhcI*jp-L z9|IJ~PRYI_IJJV8A$T5vj7C_}*T21Cv)Izz9py~U<;cvMv!&;;7^FqlL$g%R>ADqM zcFXWvO}{FqPBhx+Gr|$4J{oCfKzJnL#>`Xcu!96$nTEX4LbM+*b0T3?R>#%Jdcf3^0-m+dYw@o2 zS-^DGMCB~bUWrGK^aomhn3NZnzQfH>10!Iz_zG>tY`i+YcOgkjHwm#$0Qhh`pTUbI zhIgij$Qp0W|2IFw8JYlRd)Y>FPS7G+wtnu$dLw_mex@aCY5(5oNM(&rd8DQSqYzhI z@pHzZ7o0Drmp0YPc4IDeu!>3IV7uyPp?qjMSy{hFjbunMK?(2I?{=!{7`x~0ms;N4 z9KKDm()(-^;9CiOignz1t@h2OkrlaX>AF2bLadPd1diK35P7GmStg=lfHBy}6T%kTDI0j$xNXU9>P+=4<*=dV2% zzK?nfvQ;Nl-sNAWBaSQ(RvtHs37+gKy^T7BtO_fdHe>n(GA_OnkIKqaRDCye%5$hG zwy6S@uL#UnaGpY6+a&V9;l-?Zvki(BVfFn~ICl!-6r9{)Qk5FLjvSmZczf0>f8++| zFGLQus?;hrz_Bb8bR8{k?{oO|X}!NmeJLl@I^8~8hNDuJ`!r{nckh9S@M&1I^to`B;qsJycHl>a7h2loQTH_}@i)-^)3m+8VT8_JsY}=hr z0@{2v2eRe%Ag=pvoMvP@GutNMh;yi>|3CczH2!m<+3I?!O0ScL@QWqi1S0=8nixVo z&^R>s3nzhSqbn4|E>+V6KQ#FcAGzryIV%KdJpTF^3C~t;rdi>{Fgy}%ah=wA5Gr*l z$DRNF;roaZYCCheiGN$=`IO&gNm=+a&4M2jQKG`7ssfvToN?Hw1Kv|T!=fJnHopTu z3*ckm!W@e*A#1u?lV|wvJ`FQ~J3j9;;5AN@pTR(J2;DaPw)D%Qs}ffZFz@#yNNUL! zE6lMR&@R*xJmLU8eko|__Z=dzg0zW}N9%c-`&rciT>}fHo*(=#ydhydM5L7A83Ok| zmsjh=?>TlO&ax|o&x+1j4w)7rw5j@V*%mVBBRXKE^~F1eT+DU3BJ0-i&xvAve!VLA z3zfK<=oKmfs1Ys)^P{jh?MjQg^KqP%jNRUXBmrniT#M0`s=G3=Cq(Y?cp3cmOKZQD z;4dV5EUs2eiqG<|;n766I4+L=X;`y^AA$AJg-zKz_Voam#NE!0&rmTm{3>>9xhq>P z;0^xCp<%YEZNiu<)R@ZTo}yt*A!WOsQ%|xM%szIhYq}6wfHGR*zHG~5^5RvJjpuyf z2-7{odQ}zac=3?I+6?-STD@;feE6R0e^j7boGB6);9*izUo$nn^=s;t3fK3+4D&B| zFO<~Ih%#+16~tdeCjo<@MXX07wT6w_2nr&6S;hE6C9B$(e;I)kmDmzW{9vT$=UMV` zBMQFZ81&8F5Xg~_nK?Nx7%S9A88!G?sw=py`q1lbK(*^;nQB=p5hMbp_Tte4zMo1H z#UbXtGyCrc(g}45X<@hD)8sZ%{Pu#u3}i_k1k;rh=^|DXs+=_)!$oit zbcjBZnu%PhtJ$ayO4c#Lp0_OL%Sc}2`O9|~PDbt6Q@lfp;8E7;V<|z zf|FYoklaPUfX5{UOXRI(W$?ia+;yAkz0eNIif{+lJ_nW-OU#f||92q4^=T=jaRbn+ ztp!xtPhi`OY>yMo--_12O)0F^NC;JDY&Jn@6MTOeOMd@Q^XRV4aRv|KoW}K{tPK-q zsg>AxKw=4ATx4pA1>gb9>u~hc_+D@1SaG*PQ^L9sa3tcix^PiB|C#K1uZSE+&ELO4 zAl*`ks`2z*D?mTkV6>jeZ5IIyq36Y4O{7N(`(=B4M~VeQPJ=V(Ig)bUvb_73*0pGxt#EUj#JavB>nr{(zd~ zX5a$QrB(swM<}jB)&yOr6&w?I+-6=YS z23xR^&o954Ro-LP#1~YEN$hQ=Bv@YSO`oy=2VJxytGtI+G&oH`DaU``gp}4_n|V94 zHYr0EsTdRx&_mv%=OHFN@7v0rHJP-yWDC2k80`^~0FQ0%Y5om8UrQ;YCDampP!X^3 z58UTHw~n*9!5D=gh5MOI8FMx!)6`6G-gsPZb1c5Jt|}e5F}_QMB5o4>KgZ3gcFiIg zF%^Wp7FC_(;6)9(&YyA*=tY*^5Dt^+8wU1{Qgni0>1%|s%VP;CLnsF~#T1(3?6WN8 z31hVi@)I8NUjf4Z zMhU_hhxdpykY2Y|&wl#31J2;QT?%zyUt-|)bj#_wqTN(61q-0|N1KD@6MsLhmCYT~ zN;4Re#bGS7`k+%Yr6?ulAS@I+It4*v3abMFgSVJBtkapp}>S%6F&@ z2-@-eeOuMUS{0b>^+0p6mv)$F9k37QHfL-|qH-$#LTIrh`(*oJ7q4X(7Ih%ewzU<* zYgXlSqB6HTBm3vceL_W*YVk);*|V1HF9!M_!5vHUM0DV072nE_H%@`zW4I2*%b?I5 zN)cz`Yr?x%j!1E>h(>Y0Q*7a6_k#{rW^vIf<}jGD9Q}q)n)wx?Q>HY>#o*p6DJ+ zdN!mqRt+?XMpbnz)f6kq7v$O0M>mqeo5e*{UJ}diGGZ=llsJ+*Y_S)0&R~kOl8XWt z4RZ9o2<|Hj>DzWcxXIoQ1pN5Oc+|iT*2L8DeBFakUcy8AC0?C{-XRgkaI)`@1m8}~ z!A0-l9iMJ;OXQ?B5wKhK&q4^qK5+O@!Pz4I=I>>{`Qkz42;Sm9T49vsS2QH=O)pfZ zB0}?$e;hbYFEIYFb_X%*vZF*#8M)!kSn^a;^a(NFLJ~mIAx_BLT31>fOAO(mphk?3 zML$m;0lvvf&wx$Aq{9>WBf*Hn7xUjXUsWZY>@S34;j>iImcAiFE-e_E_q(>i)e0IJ z2d0NI_p0_S-oRsm(r?!8RG+4a{!t164L#T8E_pJj6j1e+HtS6yeY=VCG0h4x)>xy- zwu9yf7|TAtvQ4Sl=f)jkX27WmSM5mBuoc}3D)?q#X#ZPMyGAcK7E`1$&?M%s$j*!? za`Lj!=nXOvy&wtLV)$`!@RN|Gc<4w}<4Cpyd8RU{boZI1sDT zqzDx=*%0k~`4DRzK5F=!;+${_p3wR&dT?+NjeBir?2Xs!@ zJjP;v{p-FQ5+}hbEyXX@b_+u%pxkZ!Y>aT3z>Eqxc@P;h`$=?JYpJ9~Nt;K!hAr)4 zwR&zGsDz=n|B3(*IDi~Q^ZA{hW$%E;;i*~(ZJ?L6O6%jz+Ww|PG6?BQ7Q2efkg)2b z+<_z>pBLYcz#iRO54${$lSiB2@~7_mB}?dd{gR#Q-p3>YLCx+*wmW&m#$kW+@#!r? z$3G0H1UAyE^BA#!oCDzZor@XsF@SdePB1(WhEP}wzx)C01Xuz|x!YZ|NE3r~+8@YA ziGrUQGvos+Wg&RrktLeET>ee>^pg3P*!epNfxJIHdljeaHii+9`C8$YrD9bJ# zTX#oWj#KuyGe|l|p(D5Ha)n~V*R2yZfO9(0qd%9;otYY?0U~a6(s7&N=s|dK3god> z(ds#*&qCbR)7oWKuXLt>$1O{SAEEuRt+Pz$n=}U^Doi1%bIpu^{z!7#x_@KC!Du5T z&v4{r%+$p>ade1A4o8FoakmG?6Z%H5>cej_`)t65p{Hh=J(Z<{E8v501TsG!ix~31 zh#Ww9T*67G$rr;{*)V|w)EU%nyeX5q@4PQze=T}|8(SN%Z^!t1R%vKP6!Y!z11Mn9 zW2^{W8U?hs*%U&N*ZqEu?zSC#_AQ@nB1{RRm?{o?fsV7~>r-vqs9;h|MGLy?aN)Cx zDm503!KNa8kyk2|1kiF9F}FW47Y;UCl+rka3;|v?BmO?ONwJPbWwg7$n(OlT!qQRG z6OgJemGOQk#W~p5ra?OV7qn8yi+UGXnpRW7*A99!UzHth{)vpOqGYcBK}-TD5qBU2 zm1l#xN+K^H9v2yv<7rb#WwC(ffow+YjtVnc?3^KS1Lr)Wq8Q?F>m|uuc1|n5{<^UI zLs{;1gH|2ee5Kn73P8<-t`vI-OlEpOE1^idQrdvM5$_-ym`R~S zR=whggWd`ve^LX=a<|{vylZ~t&Bl<3hqGOVCu!eRr9|fPf_6p*aU3M$zDu{$aOt=t z*b9t{994eYA)kZkpvH0*CEB2XeTl+jy)WeNER$%FF6~6asUA3575LJmNk#{`7sm51 z<83zPktU6L(w^`0 z<_Hcg6iwzSB&)4s6%Zgc$m8-bWtwXfhp#O)WJQ^qc^>{Uj$<}J(T#f5UT4h5ZeG#~ zU00t>Tupw(kGF#g*8yF%e6^Hi@aC1BE@eVA?ea2P7Ri!O0x|_g8fcY_FN-vcm?KP@ z7f}&HH9G9x)yV{tkZ=~2322$MYFl3wMx5`5af;70$Z&#CWv#x%GH>Pg=|@LI$Msfl zKA^A|02{#{;UhXug)wxJ_CPVJB|8!%#C?BD{R-nihMflP0QWlv+i88r|H1h1*HY}) zB7o9e1Mi049j{x^^{pdbvn0@oqtUfKyndR;hub|r1akm?rOk3hzgcnsI4S)tL+{^n z!?!6Mu93cGepfRG>ADn_fCDar&(qE?uiKFl@UNGfh}?Udm+}QC$hGDF!5W(AU|{PE za%v6G+?v7%1GOlGE6oj(IQI-=gVO9p1zm;`J>A~_=o?CJ6|2q>7(Ax!hKq&?;(mb?to{go@ZoqE;pJzr+^f-{4g z)>TU*7V>=Feok%RVg{R?Gi~4GUYX?*^c-IrITy5ISlmnoNN5gn%aZZfP*Qrec2$)w ztm2b_8zGg6qlO{K_>!)13UML$+iroQ^#qbKc^iOskZmv33q=TtUOrI~q)o74G!hz+y zRQ=xLVH5vg@JmkhAB+odAWVo#+A3y}{trd#@Im&bnA=8LDvoh_-4X(6Ka~2dfIU_A z1M|5!9La7(pwEc*GDW@8H8FX*8{bSUfj4Yw+cT}Js_<76TdNCPR^Wyefe#XmGm&nl zhIIiM;$08GSw0w8yV@L?k#N2qo22;{{a-YFyxMFBFXF?c?koY&$|jB2w<83*&y(R5 zPMtb8Qt3tL+Hxc2;H}%ho~*U#yW9-C=Vi+Kou_p{^Z28)9*_+sLs|~R^(}#f2+l-+ z9*NN2%EstLT2QEZLUtV&n9(ra4Vax$B~WAmq+)!*YjX?LbTV}a|UPrN!11zaMpXuG?t zHuo1SRcYZAN2(dDh#W%jN`1^;i8H;LnFN9^X5y$HFNPtj%(K39b4HlSgTAW~te00a zpaBV%0)yJOMqW0`)Z`i{_nTe+Nd#AVbH$hIn|^$xU2lIK23B#or`C1DtFiKM<6`gb z^qIZg1^kla5yZ9^9@k&-nWCG5cBrMLL$n$o@lGSfGV`Au&3>Lw@CQDP88DKKXQko0 znlXMk7~o3PC1HE6j~{I%w~knPYgmf^9WwR@Y-z+_ocw)1bV1i&%d(eTe{V4^HhXu5A>Q5Za50--XPS7E zKZ611k#|+@snZ!;_gD#cOA|S)@BC#)9}^Dei+P=||De^HHhE?La*rA9fN9ApES2bN ziC;?24=vkjAj=ntqBcH8UOc4GLOQJ>%t49Hti4x+Zx|g=NiImj8jK{XmXu^dBgp$J zkxfEt6_*O51Edj`qx1o2oIPW};DOLq?*O*+=_*;vbY22BL9pD58d0UW(HLx<%~$yZ zQi{N-Jv{dAwPf*j^yruE%?|IJB*nl}t=T=L_&;gpTU+zgDK7k+GRX*4 zYB$7*B5BSN;ZXDlZVpqnIj+)ZoIIeJKqE;*i6H5E@gVQc0n9kz)E9+coQZf~(=IT# zQZ#HNl1{Q$fDTfxRGe~%WNN5rITqd4KZJz?pR|r@2grCyY(r=c;?<45@&ysl;z9Y% zXdRIbj(F!f?4{!#19o|vKWrwSvwKp>RLEP08AsIqdyC7G$Sa^5nc9B}p_3XS z7>zO(2JH%wUT#rwAkAjLId-a2EgyG`^lFp;(T+OsS@{!>UD!WV6O+{`$i_ZL^O&Xa z(#(b{PAVfcVKgZa&*}m5E?h+JwfoD(tZfe*Rs@492E88;3sWTn)owin`Km+}=p|%6 zfDf-7YmFM7mq!)#5mhk?1{}ZgE&XM|7;{jGw9()({?^a=N(oqFzN9!w#d#eRJ9aH` zRmof4jY*&OBXq26cib3<4J^;eT(z*W;wdyK}R=4!(3)e>&wZ>mT>_7~Og zmJa@YO{h%Acq{{Qrua+lJFoaTSgb+9Zvk<*V z&@C%OG;B6$QTMrdzF-n^?{@Op z8TiD83NHlGD`GV=qMoBaw3F4Ma~n0-GoldeS<^D^)FSvT@Uce8JwCKvrd}~KBTiP! zVYU1@;3qo#4^y@yZc2Flkh{zt7NqY`)+K8qx90rt1%qr1k$=pyWB!u~Bv4lV(2h;i zL){t^@*UQfbX$dJmmi;Id-2|~S7-+E>1E!fQ)v?`*IfQ1(hbY&VF?RAg5|gTYzrJ| zLC^y7!S=ocg&X806G@DUQ|AkeK7Unq`T=;l$GZ66LIA|Wz#bAUVM4}lt2@GV&8M7WpnscP zHA;pdE`bTClL*6czR*Z#@4 zx6c9O@D(AXI?>NQav~C_YyRZ?C8QGJ6UMtP$IS@B1W@)~taMP3 zkyF;NSxE{}RSecA$!?f{fd%3uVYhBom9JlS@FTVl3-Ek<2>E7J77iPV32+g&_VY&s-pB%X1xOcj%P?)1mLmOeJ~HT zW|tu;9ou3@OB}ec7eKNN^^q!*Dn^)K=xi@0gQjVi-iajzu#QXU^ehosBCT^v zU{zG1Un|HhlQaQu#Exw)P8go`ec<_t6SIBK-wucooumvMymmQaAU<%QDK=K?_&Lnt z3??+OboF}wv@aoQL`8$A{Se6PF^#nMD;a-p&wf41k!SSp28l7<6@#TjzX~4|FiL-m z1v7a)*U$f|lu&+36lqYY>8EGDP!zRg<^0N2;WOeuQB#~a_a`0OZyI5FjN&Qrq>LP* zclJm5wyFX*JSmeu=2ETblvF~n`9CyDICh3R(1;w0W!@CDH~y?8SOEeqyy5K0LjzFS6;106l0L_S zhNFj9;?s#hYWES!Y~AM$Kd~|mEr*q;jM=J49A@nD&!xhs*?$Urz=4T`*zan~*y65J zNXgQ^sb>C3|CGk4=Af4`^$92pvi}pbX-ATgc5Ih<)f8a+XL3DHs=Y8zY;zI~d%rG2 z*73#9LsO{^P}{5*bIk96wx$Iv+En8t3hoxz;+tU2>z`;dy35p9^2Kf|hLA*p?2@e& zZgOFd8J?f61ne(t(1IAw&AvW_tDz%4{Z`qz_q!PA-ZeDMrYqRJC?#bj-9DLp=_Z5^<0{2j)2}U*knqVIz z(%!PX_SPi+C+~NEh88S#y)q-!C5(+#*G=>}dV-*UpH=I%Nb|zqUz*Pl(3)HyWCKtt z`7_fMc<1McYl_5Q#^*G_Lxw#as$I55^&f9*+1HG6gVCFc#S(>GVAwmK{0gjCsW63j zt~Sp+zqA1=Z$li{amp@_R2vXs9c!t$B|ZykX2CI|K$9w(cN1*EUL>t zcQE|<$HLLRkGam;=P6qjyOK0sdmeLSC-Q}IPAT@iGzMqvrr0hu&2VRWSHC%m=cuGLL3%XZ!H0x@l z0IdYmD9N)~#2W2Jk428wjRSzyhtd7q(m}FZgnDta_#`D*eh|IuMcr*GcST6h&F_Q< zp$!L3;sEfjs+m{(P$S)+Le=R)Ra(iAJ;U5AKPS>5A$y0SdNe8jrDT|VE=BY7Z9lnb z5A~w)?43Cg`vikA^nR$CCTRLQ+DvMiZTZY7*}eUv_lJ$(tLX^^nA9+>q|1+FI-$i+ z=3btf3Mb@e()BB+kiJ8ayY)orMDwE8m5^1gy5$ow^8@kXA-i{N8@>!d|F*!4#?l7= zK-WuaA6i*swuUTEpE^(Q3#fJI|5Xi-#mM=IK5RY6V|khkTMcZ+x>Gx9+`L1pi=28l zfGj6pw2MH19W>JtlEk&vZAEf`G#7BiRI`2`Jmqvr+I%iO+;_-R#|6`1zeV;1ejd@OVZdx7T~zWFG@{wp5!ZBKzB0@HekPGJnA* z1D_mV0DpzR?E1uHc{8TUh;KLb!ux5zn1=gY`iURR_LSL(rt`Ilg0`3%7Mn?U)_G-j z$E!@Y#ceV4(bQboW2Nd-(~8{=0o6*F^za=h=s4oJ#cR3*V+(&8pNl<|0p`(DWA4TB*X!;UpsNVno7Da>*l4UH}v&)iYiX;)*5HZ$}HL_*7*|)MLWSK~* zC~KC&*!PSmJ7eFM8Os=B=HCDH`Tl?BIcJV@#>~Cv&hxzAujT!`pM1GbXqMojV5W*C ztM=`NTWSIzdK{t~cdGxP4xlqm%o^EYiKxxMjBjE8Jl$0wMI(LkW2Vf=!vlBPF-ebx zlP_W~#&a-k{LPVJn}Jvk*Pp`8^xnX?mni><;!Vwj`yW$>mBvD3WKe;7D2GV6D+Pn0 z-SMZZ(9Y!Dc4gz6Z`^G6{6a*(=fznetvvXiU#v=KE^)$Nn|ipm_2-=Ymkq#dOe=nG zyRydS;jo3vm0!DW=8^;FvE+&mnD!^*&dnzejk^E^wrp{r{W6+_ zAd4P^vuXu2gSQ}ipjyX zvRTTN>#v$nG+DerXadS6yAsF#K^}GvaTcnfw6V9)sk$I}|1ilp!ZoZ*JUj%TuR=!U z?{t!lERvRim$51ga~-_vknv1yd52Lo<;v9XDm0il6|Hxjly_|K>XmniCWm}gpJuz2 z?pJ^mF<@&$c`lu>^Zvr4DgQkQ6{?(F#~4q=?{0p;y?s8DeaMVc@>brfNr<-byTktg;8oF9e(w60e4f3sJx6)UkB9yy(2X9EmZw>6@+=t_2 zNAjHP%HlGc;g6#47=c+~KGhsC+b%#;luSv3k{Ga6KBbefoC#Z$TNK^Ujs)k*M~)r# zr_TvddrE%xB{bW|6a(XK6<16wn$1o!y^XfeW^8LcFT=euJ;H3k&KoOL$*Sfy`f#Wm z+tAu=wDAgA{FBvWx^`vkys`#BWc z1IY)R>%(fBT#^q9$Q=^8@q+F-R4&B({ie99A(hFP324$cOKQDFi0MadnU87lM)QaO zRM+#j{WY(nE;@!-Lws>sALbG9+cY#;*CHoRDfDWoGBnPt8CsH_xXhiq>BCp(EuoH zG9xb9`Z$dJT>|o8H=kPD_B(%K_H@VZ>NXDLQ@RqniPN{m0ypmd#n_Cdjk^KvQuBzB zCW9e38J9{73#SY0ms4x&v7=`7vxVGL+2-*|-yc-y`R~1kEAV24*i9gnodU4)V)w04 z38wzryN{+zPxfiK=0!@Sl}2(b04#>nO*Ee_yXjh=z_Rxz5?8V8{zEMs=B^N@RV#IR{#%d7X|1l}O zg9LZ)kF5HPeFS!GXh$3H$(c|z-#G63&xC+f!Kdt6cmD$XCi`PE!`U@m`(j_wEU6CP zBZ4Shh45xhtDSGX=NjN+?YTtpm#$Q9*|>aFmTRhzf_6xz7GxZ1>sJ!Q=GK&(9c1De zs7_|KVW>iFg_Y@5xezfm!ZT>lUmGRtaopgI#27rUujPI|wg6J0gz_9B`L#x(-dDFZ zsDu`b(vzsK1FLOL%xltmH|sshZ^*dpyYHrKEiYJgvUm3phY63V)jK)o?}2^>DuUN} zmLB_m$$7C@dmTZ7zC?rW3^FGU!-lIpBTI0$@eRK7i55;980=;)?E%guGcEj>w#44j zZRZkADmDzf=9(IyDMEMkcx#q9Df;>M2u;9ck2EtAvC7}bgOY3MJ<`GcH!`! zHDG~+0b|6nv6HD&)-LnS_C0N)E>U>~aez2L%`nfDIKM=eoiM`S8;^Y{Ltnnc$d_5^ zzn#9BdV%#WmDh^ZxFWUjLr{1tAIJ2_j#go$(yPT@UiFjD`Wp|MI-IYeEu1X9X|rHcNS4RL}GS{?DoJ z?erR#KM(W&f&LgCj*V+ae<0K8Nf-JzzaE-BnFGmC>AS7BceF`PHEDTpff1 z&15`Lv_9PE>f|Qr5Se`%ZO8EKeZ~Q%BU#ke;(M9z!Xwf5FP8&8C7kcMN*CCNqxReR zDpdKqSU^9j;Dw6_p3O#Q6Ghp~P*xR`IdT7%iBH~C+VBrjg~s4R;0I!DCBFT@Ms=tEI7+wXsV+8n>3p~bi_A8_L4$=#IwyRHz9PA>=vKGNR|>Q$JPP}XXWjq1{L2g=G4qE-9ua4uWw>T zrwTx*hk*SPjX-H@jM}2-`185f#TLQJ5!bwodA|1()){2%xJ&HZmfV2XZrLFV#KbM7 z=2g|lI?>O7s;-;9e-JevWlVlI5fyQd0HI9*?rx0h#6rBnW#&VKf3aCYYj5;xMPJ#PH# zU6#4qo{v&#GQ#HJC6g;FICnL77g5h&k`$K+bR0pij`K^Dorsrka~e{Qje}Mc$>`e1BFjdws^PwZ0WOelrd+k9r_l z(5pzQ{%?v^x{F7{?~p)$gB#nsui~{z`BZr;7L;6E6Fo|*-u+g_sb2vTQ*-zlb$14_ znporzd@@+HR7gW?P9R77@eGuA(Kn(-rGiP~Qwt!elruMIWKnlYy{|=S?j)8Hj??|& zc{9&9jKb?TBA_&$T`^-h0vN_vxNR_s6j7_kyx7!cr^8)Yil6YLhGk+##fqJF3SHbQ z|O-#)f|cFDPI=!UYLOFpuy%r>0)MPA#uo}yhb9R~{C0B5x=l4L)s`3d3Q zXTj4#nuNa!zJvv!{Fn83nDHSIqFpPoJ9&t3WPI!s5!c&F`tX|EF=sS#YGh#RtxHtF zvr8>sQR8C@GIcL6uLXT969u1@c<6UdFq1HL>z^#j$ewCsWq;#Z+aCDbW|u6;tAntL z;Ww%OdA>;fnNNj(SN`A8GPBU7a-`*N+kb!2Shg0_#HPnEZ`GCWKL_hA{0e+*h~M-O zkTS`8l-;cMw8iOsX)Etse_6YT%k|HZfyavKYc9@BGX2_OuxvGZEvZupwJtjzAlWTC z+!E7%-h!kIY92GQ$>f|ja@$3}QJ^00KsY18rqe_HF3Dk#E8zYwWM6}Mq?Xh2Db_~* zf#;dbT9#93N)#ltUpTgiJp3|hW1z)G80r@Y`r8^Y*5V+Qe4|e*%3N3`vJU@VbJ~U-DX?W zu48WC^}ljn9hnbqLxXJFzU_^3GZrS*2aD)xxKChH!3S>so+ZYg=f`Ohh|l3X%)jo4 z95XWBm%=e2nf8BBP{n>82IcBqRMSO<>eJlO55uhj_O7T=YH*_toY^i6cC7q+Tjvd? zY<|6HV%b9Y;cWD!L-oFkksl7@?4z3yKSTjq>lCr-6}zj3r5n|(>+uZIVRch^P^FBF z23YE2RCJ!#r}@~SP*uHm)~u&j~7=ho|q3gB`;Jq))wUXh&x5^#;G&;s0m?)Scc3 zc`@Sz_|z`wc$eum(Wy{`khA9=2VR^|IK%x0lOLmZj8AUXU-K3B!Oc%KaHorvjyD64 zW>xj5=3jNiJj<+EV;#tg`3&bjhqvavn|0>{uPQv178(PxsEL(@au*)=0E-rUxu)MO zxDS3EXERaB>rUh;YzDR?=0!eInGya~lV1D5hU$Y$@_!Sjf@*)uNdg-8hoA`W(%>N} zzw6TH*k+im{J!j&pTi_|`DllN{yn@(#|UHHQ2hSX%a4HL^#_*=*Bsn_gwtj__}MZ@ z86{qZb9M@CuN||iGO^LlXp~Er&nb)Q6#iLWMF;fM8~b3WhU-(gh`CHu*W=(4m>kQ3 zKVXEsIrOS)SnprJODaH-WhDj9HfKy zIqd=GLg({5LOude3%h^a1RnVhm9y|otIldvR~Q-(dttJHE0{CFej~owc4rSJ;P#?s zk7L3DV{Y)IAcya6M_xXVpw8WR&0ZQzYkJ`CxGWpEk~S=;A*VlXC$WrECymrJZ}*I8 zG3=F^TEWt7D8vO-Z$Op8MrYGDu*&I=#>hm=0Znk(4*ghuO!Oyzn|&2D{}*UuH^I9F z)abyC7&UUpjyXaABZG{6eW0>6L$>O=5Plk&QMWs~gf{Y}7EwziAkL1Cp)`}nO;L&d zIFQ=w{pUP8=y&Q6%N|r?+h3efD*Jqdt~g2UxqLgaJ+&dMdgB0Xm9aYzy&-qVLnMeI z#<|V*_Pr}ROjmFbB-G#mR_A~oEQw|3yTNSHBaf)|Uv+1HomU=K6I_6J-_4u`Q6>O)$5Zs+IQ1RqA?~Y9|wbo(Clg27bVS8 zK-?MOQd=ka5!12Y6IIUkkZ2^t_5osat*&gpSTvel@%xE(H1oa`15271`Tu$W6zW1a zzb@hRtR5*BG-d04AoaDfTPvNxn5!dY?_&p|JYX>gdjMQAQJDLBhph-Q?LuKsy%~rJCVS(9KTOLDc(Bo7Rp!;n=_KgOjW!=36kXJEC+`Y zppgV<#y+l1d{kUrpP1GHe`MfK_Juumaz_>K-pq2zH|YD=lz7$%3CO5>=gnCLeMcsJ z)@#BHHbXHDYAggq_h2#!>vLsA>{TpD2Gj=?!3&#ozIhrHamX|T03|4CWs}1jz!{)P z)<}mEdqzDte)H)#^Yrt$-PkEiOe$_?j={tKNlTz;3cSTP;TkaW?1Hi3c8rR_N{{R( zzgNHQo(`grccy37Ydlv9Y>4%4zS^{IJbd};`n#JB$jRxzs>x5twpM!S+iO>Lb`(fg zW=sxwR)rlJUx)XVrUmzWiqQ$>3!41q+x@-=Qw}mro6;msQgr9H(xjFVArdAb2W!D> z-=J@tXlF^US>r$E--y-Gd_Sm%=tT-J2aacBdoOYw20&op7>+OKZ%h2egK4OMfM)ae zJrJ(yKXJ!Pcx|dcjmk`~@ z8xfta1!8)_QlDp2H1FQLFg7Px*&(k#qq!{mTRV|DE{$37oqCb|_W7P;VWN^6FD6BA z1MB&AC8jR&?NYljrQE3kZ4QMKFP4DF@r`58#gNk5Do>!v4M(JzGOOytieyBH{TjuV zbDme2IPlU`X3Co_BrS*1AZqZsn6L5ACZweW`(8PE}gU_8to# zwsPIEIpf`pT7<;TKG|=SiOEh#zoc@oA>~_{s0m(bPR@)j7q}K`bdWJd=6uX}u{b_m zf42=-O`pf^T_=kk&V5QANIK2m{8V?@^Z4T8DWNKH-2v`~KdM7cAZ5%y%8jL&SXI;60qF_lz+q5}! z|MJ4_270~)yTCUb4~gmK*Y~DXpGPEummncXk|ID^@D+Fz{nGS4FF@Srar@~0yk}=2 zL#|5DB%2Ln2TdVeDu(sj@pJ>BLm`R~MU)~*LBG&mg-Vq_gJ{_GhkU+(C|D;EJglY- zdNrL!t)@7mPrjFvHMq23p1_7vh|=9FqFp?<&k)3|n@s!m`ELdJ3&QtyuDUIkB(l3m zYaU#XDH^n{w=Q@)WvviFi1GdeEL*9K=3=G>aI%+e|Bgyw)E^F zS3Dz(0mB4h`V=oUkKaP?c=F|gGPqy`;#Co$?%gHJXE`|<7xYgWMLD2u~J4zmBl{x^ySP~Jo%Gr z>w{3RyEdUnA&R$bOS)=&C~LS9_yl#PV#jXx5Gw+f7QJd$@PGbXRoh6BTu&+T=*~Mu z)%Ez*{KB?mCCsR14T_FmUmdSWVT_wJq+&wlr4v4e69xjhSE*YSShownzwljUn^U)(-e0W`nNH}He9$*VH^fiHJxw!R~`&Ra0*)6)i*SC7@> z=NH8P7;(KIO?5C;9`XgK`)81#0S#DKFuX;k&GnC(^uY;z;jM`rk^+B0tPU~tfT0Xa^#)4(i6@Ar_NTz3T4GU_A6ZRRGz<(uLkNf)$c< z-|L_#g@zhM@mLJQ)2chH+R+1d6;2@OfKO#bT1pW}{UW`!yBa6l=z&3O6iA~Rfrf8R+E=Y!vW%RB>+>D9r|<7tU;sVsSl zHb%25B01;s@6=Kky<^)>y8|C#+@00)QY}4nNmYu4mysSae`mB3wES`NV@;55F74p zGr1S@(#&rPis22KT?xS^RZ*ag&GGTvakn(D8+QD2`^XD!Yi|O>S#vY=SqtA?Y8faZGLT(_4nyG znK&XKnjKp$#+&aj+O+|6ZmNw;S+$EHcU}PVViuf5VsgXWfB1Cj^=LY*U7dZqPo*CQ zr-l3gjc}o7)Xl;sonIJcG=`@oxi{UuRdAggZ}Vj#u;eG5mzh%xMre{!WYS>Ma3vaf z^Iaf#ATz$7ai8Mz37V}}wk;u#&|V!xIyG|niW1lQ_J9pdgXw2g2VEY1OC08jnhX2A zYfnlJ2iQJh&tk&Qs3UAo0YTyi=;iEXPAIWGg6e6kv{&)`Oi2dw{|8{+@u&^aDKd&TBiDU7173b6^Il<0|*i zS5yEyH5Ixe6jCb*KrW5VUr#coQ?MA7skw{VJ=qfvMK(qnuqO&ArywQFR}?-1eN3Z> zxKp6%A=2Gra=jbo7B&2r9J;Kcw1gmitRNg$S?E3-<7r0N@P#oSpR$p@ot50tRgO-E zk|B1mlkdub1%?hz@4^AMd=={qob@A-5%4(H${-s$Zp=KxynUS%Z*UIGZX)#I^1%Wvm>n(J{*=GTqJ4o| zRO#VL31(>3ccpP|?5t9TRK2Fi$4YHr&qLaAI9FNrAG?EAvbk{$FO%jFU*O`Y66iN) zuCt^~j|hh{eZoeDY-lvwO?dLc%0c+XK@qCppYbh;jM|>Oj&WqJ|EEbZ+OL^~IOj9$ zOYSqeB=GWJlS6HE*+_E_Uy-QxSE*geT0MyC9v+G>vvbXn@+*TI7dN-u&-*|yhFtnI zM~5B<9Q@6Q2@665tU8Y`^n<-^3C%RQIn`5&W9{BfKlY~(&fJuz*nDaUi5gp_M6^t- z(?}TvRwGT<(+_!PoV`2tn8oHqE(>uj6g6c8$9@y9(dy+yc}9L9ENn@?Y7;4>;YVXU=8u)e^b6%^22@z94*FXZBC~?7&>}`#i*!Y;m(2YvmfS|xLQ+sx;6O8iQgb%&x-bhUfydw- z&F<`9a;E5$EU3(Tn7`0HNS|8r>Pvk^9s%(haE8Bf5~NyCJvy)#fqv3S9vvcksyuja zxF`=LDYUKa#w&WF^2U-P`O|tBNmT!-*(>jl6>KwKPVt&ctSM)cVD9>$eAvRG)qVy-PKr8FVtA@HWUd^V>39nZCVLBu~ zl{aX4Xs=?^`eC|Nm;i@}o_LaBYk<~?AA6{(ty$kg2gkX{`?RMTI=YpGbjK4g8bed< zPu0(MQgF^izk>uBO+#bD9psDYcE7q+;AT!i!;kD9{-X5aRPE~BV?o}Lw<}3(eb?we zEoG^M5L@=vi$5@nFRNXzgjP6h4vSpei5(w^lcT;(^y>fKU>nFk-G1yt0T+ydIUcpT zBfP49tB$XqiZy`dcWB3xxZQOXnag~J9=AnhPa)Izy&R}pKOq~nWk1JPqCghtWU02Z zjJx`+eEys7Sexm{M=>GPgd!c=*V43fWI>o!JG;NMfrZnL89>n8=#T?`NVJ){qqRRx^Ap`^9ZT1$E?8s${9+N*X4xn$B zc^3W(Iq@}|%RVk{T?@QdRTW**$Y$XbkooND%=_RC(=7LhI((8~)kn-*qv_aKs{*Xh zaGnID@D9|~aoNMRJOF+m?Hm6^5|1k@ncSSYB;@{K zck+tq504Vcovh%h(KzzbJ!W1)s9ViOE+HmvQiV>k;WDNYYZRCH&xiOoUS|B;$ctEo zJln1D>6iBz->RsA2lExg&6s^R{FjdLpE&bx_ACR0lYP2q3f8@5jW2NXpR#Li?PBFt z-eYc$((maCM(g~z106@SonciVBH-*Lv13h;fMd4xT5*||U=J~N4py1U$00C@x|Cz1 zgjHTFe?4T`6VfpAV(1%po@&AkbbwpkP6+YptlS>UgqDj-u}Ldsu=V?rRRGMu_95e` za_atsFN50iMBYpmkoMv2fhD_!O7waS`gP;{CB7gv(krk^dbN$Xe+;sXbae7c;v+5T(O(W6e|>>FGCinMf#v4iv#c;<#nJNAXx zYu;E9^YbC@ZkUcg_WsSna*xW4JjLb@<4A{)jen+sw_0IySaGq>Sdj}WL)V(JAMSuZ>XHOHM zeB{OkT<*Y=L^*{hfGTy$fnA^+lj;a`yl$i6Gv&{o22`J^&0**Y)6OtT{*c=I>e!76 zp2g@c>8l^o@X^>qxFNXVD0^_J4kexPKM1k_Sko@wn3U;;g-94M)U+KEm}g{WjApi$ zq1wrUxX(}?XqvT!Tm^;_E`EjXsD(nSfD1);4s{V4Bo(#;2U3xSP1GdgFH-{x@QmpvirnAM;lZ#zntg!r+{T&Q)E&q_Cr4r4+`@V)U}LlBw2l1lY?K~)lyL2>74sBsZyLGL2o`eY z6(expOP`~DEzBx38AiOcvLN&9?g^zOQmdX)OX?O34<~Cmh4P9%@|H1+;9V;o8P4va zTj