From f73e740decc452503fba93f8905fc4ef401a6094 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 25 Mar 2024 11:42:15 +0000 Subject: [PATCH] feat(Storage): Add Azure Blob Storage provider (#128) Closes #127 bagetter/BaGetter@94462ac9e54e79c88322af7861cf059dedaeb068 --- 404.html | 4 +-- assets/js/0458b440.18292e68.js | 1 + assets/js/0458b440.9a8cb821.js | 1 - assets/js/07fefcf6.c1b79619.js | 1 + assets/js/07fefcf6.e7a48c5b.js | 1 - assets/js/1ca79a61.9f42ab10.js | 1 + assets/js/1ca79a61.e65a1c71.js | 1 - assets/js/1d45c4fa.4adea908.js | 1 + assets/js/1d45c4fa.86e67205.js | 1 - assets/js/28e51da9.6dd36e7c.js | 1 + assets/js/28e51da9.ad3d3193.js | 1 - assets/js/2f22ae25.03ea899d.js | 1 + assets/js/2f22ae25.7057e43e.js | 1 - assets/js/38105561.7093f831.js | 1 - assets/js/38105561.7ab42c39.js | 1 + assets/js/3b941570.2aec2038.js | 1 - assets/js/3b941570.3cca96b7.js | 1 + assets/js/41d97e2f.5b98b94b.js | 1 + assets/js/41d97e2f.d4de4735.js | 1 - assets/js/48f00fa9.2ab8d491.js | 1 - assets/js/48f00fa9.db202b51.js | 1 + assets/js/4db0b455.88fcf116.js | 1 + assets/js/4db0b455.af1a721b.js | 1 - assets/js/5c37fac9.6a754593.js | 1 - assets/js/5c37fac9.a669993e.js | 1 + assets/js/6633a546.4a2756ab.js | 1 + assets/js/6633a546.eae2ef23.js | 1 - assets/js/6c57e7b8.2283a575.js | 1 + assets/js/6c57e7b8.b6f2b698.js | 1 - assets/js/9ed00105.3e27619b.js | 1 + assets/js/9ed00105.c59907b4.js | 1 - assets/js/af21e6ba.5060cf0d.js | 1 - assets/js/af21e6ba.ae0a2561.js | 1 + assets/js/b1e7123d.71d6eafb.js | 1 + assets/js/b1e7123d.d47ae0ab.js | 1 - assets/js/b7ad560a.324711dc.js | 1 - assets/js/b7ad560a.f66437cf.js | 1 + assets/js/bf03d4ec.36b9be83.js | 1 - assets/js/bf03d4ec.3a21f460.js | 1 + assets/js/c89f3e57.40f5f1c2.js | 1 + assets/js/c89f3e57.e89e43fd.js | 1 - assets/js/d99a49c2.2ba4ffb7.js | 1 - assets/js/d99a49c2.8df79e12.js | 1 + assets/js/defcddab.8ad8d0e7.js | 1 - assets/js/defcddab.8c77c7a2.js | 1 + assets/js/df3a1ecd.5eea72c1.js | 1 + assets/js/df3a1ecd.954cb44e.js | 1 - assets/js/main.5d730949.js | 2 ++ ...CENSE.txt => main.5d730949.js.LICENSE.txt} | 0 assets/js/main.b739bf82.js | 2 -- assets/js/runtime~main.05b0267d.js | 1 + assets/js/runtime~main.fc167306.js | 1 - docs.html | 8 +++--- docs/Advanced/debugging.html | 6 ++--- docs/Advanced/sdk.html | 6 ++--- docs/Import/local-feeds.html | 6 ++--- docs/Import/nugetorg.html | 6 ++--- docs/Import/nugetserver.html | 6 ++--- docs/Installation/aliyun.html | 6 ++--- docs/Installation/aws.html | 6 ++--- docs/Installation/azure.html | 26 +++++++++---------- docs/Installation/docker.html | 6 ++--- docs/Installation/gcp.html | 6 ++--- docs/Installation/iis-proxy.html | 6 ++--- docs/Installation/local.html | 6 ++--- docs/configuration.html | 6 ++--- docs/vs/artifactory.html | 6 ++--- docs/vs/azure-artifacts.html | 6 ++--- docs/vs/liget.html | 6 ++--- docs/vs/local-feeds.html | 6 ++--- docs/vs/myget.html | 6 ++--- docs/vs/nexus.html | 6 ++--- docs/vs/nugetorg.html | 6 ++--- docs/vs/nugetserver.html | 6 ++--- docs/vs/teamcity.html | 6 ++--- index.html | 4 +-- 76 files changed, 109 insertions(+), 111 deletions(-) create mode 100644 assets/js/0458b440.18292e68.js delete mode 100644 assets/js/0458b440.9a8cb821.js create mode 100644 assets/js/07fefcf6.c1b79619.js delete mode 100644 assets/js/07fefcf6.e7a48c5b.js create mode 100644 assets/js/1ca79a61.9f42ab10.js delete mode 100644 assets/js/1ca79a61.e65a1c71.js create mode 100644 assets/js/1d45c4fa.4adea908.js delete mode 100644 assets/js/1d45c4fa.86e67205.js create mode 100644 assets/js/28e51da9.6dd36e7c.js delete mode 100644 assets/js/28e51da9.ad3d3193.js create mode 100644 assets/js/2f22ae25.03ea899d.js delete mode 100644 assets/js/2f22ae25.7057e43e.js delete mode 100644 assets/js/38105561.7093f831.js create mode 100644 assets/js/38105561.7ab42c39.js delete mode 100644 assets/js/3b941570.2aec2038.js create mode 100644 assets/js/3b941570.3cca96b7.js create mode 100644 assets/js/41d97e2f.5b98b94b.js delete mode 100644 assets/js/41d97e2f.d4de4735.js delete mode 100644 assets/js/48f00fa9.2ab8d491.js create mode 100644 assets/js/48f00fa9.db202b51.js create mode 100644 assets/js/4db0b455.88fcf116.js delete mode 100644 assets/js/4db0b455.af1a721b.js delete mode 100644 assets/js/5c37fac9.6a754593.js create mode 100644 assets/js/5c37fac9.a669993e.js create mode 100644 assets/js/6633a546.4a2756ab.js delete mode 100644 assets/js/6633a546.eae2ef23.js create mode 100644 assets/js/6c57e7b8.2283a575.js delete mode 100644 assets/js/6c57e7b8.b6f2b698.js create mode 100644 assets/js/9ed00105.3e27619b.js delete mode 100644 assets/js/9ed00105.c59907b4.js delete mode 100644 assets/js/af21e6ba.5060cf0d.js create mode 100644 assets/js/af21e6ba.ae0a2561.js create mode 100644 assets/js/b1e7123d.71d6eafb.js delete mode 100644 assets/js/b1e7123d.d47ae0ab.js delete mode 100644 assets/js/b7ad560a.324711dc.js create mode 100644 assets/js/b7ad560a.f66437cf.js delete mode 100644 assets/js/bf03d4ec.36b9be83.js create mode 100644 assets/js/bf03d4ec.3a21f460.js create mode 100644 assets/js/c89f3e57.40f5f1c2.js delete mode 100644 assets/js/c89f3e57.e89e43fd.js delete mode 100644 assets/js/d99a49c2.2ba4ffb7.js create mode 100644 assets/js/d99a49c2.8df79e12.js delete mode 100644 assets/js/defcddab.8ad8d0e7.js create mode 100644 assets/js/defcddab.8c77c7a2.js create mode 100644 assets/js/df3a1ecd.5eea72c1.js delete mode 100644 assets/js/df3a1ecd.954cb44e.js create mode 100644 assets/js/main.5d730949.js rename assets/js/{main.b739bf82.js.LICENSE.txt => main.5d730949.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.b739bf82.js create mode 100644 assets/js/runtime~main.05b0267d.js delete mode 100644 assets/js/runtime~main.fc167306.js diff --git a/404.html b/404.html index d802f4f..fd5088a 100644 --- a/404.html +++ b/404.html @@ -4,8 +4,8 @@ Page Not Found | BaGetter - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/assets/js/0458b440.18292e68.js b/assets/js/0458b440.18292e68.js new file mode 100644 index 0000000..ec04039 --- /dev/null +++ b/assets/js/0458b440.18292e68.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[864],{5249:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>u,toc:()=>l});var r=n(5893),s=n(1151);const i={},o="NuGet.Server",u={id:"vs/nugetserver",title:"NuGet.Server",description:"This page is a work in progress!",source:"@site/docs/vs/nugetserver.md",sourceDirName:"vs",slug:"/vs/nugetserver",permalink:"/docs/vs/nugetserver",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/vs/nugetserver.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"nuget.org",permalink:"/docs/vs/nugetorg"},next:{title:"TeamCity",permalink:"/docs/vs/teamcity"}},a={},l=[{value:"Migration Guide",id:"migration-guide",level:2}];function c(e){const t={a:"a",admonition:"admonition",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"nugetserver",children:"NuGet.Server"}),"\n",(0,r.jsx)(t.admonition,{type:"warning",children:(0,r.jsx)(t.p,{children:"This page is a work in progress!"})}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.a,{href:"https://github.com/NuGet/NuGet.Server",children:"NuGet.Server"})," is a lightweight standalone NuGet server. It is strongly recommended that you upgrade to BaGetter if you use NuGet.Server. Feel free to open ",(0,r.jsx)(t.a,{href:"https://github.com/bagetter/BaGetter/issues",children:"GitHub issues"})," if you need help migrating."]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["NuGet.Server","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Only runs on Windows"}),"\n",(0,r.jsx)(t.li,{children:"Supports NuGet v2 APIs (missing verified packages, signed packages, etc...)"}),"\n",(0,r.jsx)(t.li,{children:"Doesn't support NuGet's v3 APIs"}),"\n",(0,r.jsx)(t.li,{children:"Does not scale well"}),"\n",(0,r.jsx)(t.li,{children:"Not well documented"}),"\n",(0,r.jsx)(t.li,{children:"Not well maintained"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["BaGetter","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Cross-platform"}),"\n",(0,r.jsx)(t.li,{children:"Supports NuGet v3 APIs"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"migration-guide",children:"Migration Guide"}),"\n",(0,r.jsxs)(t.p,{children:["You can use the ",(0,r.jsx)(t.a,{href:"/docs/Import/nugetserver",children:"NuGet.Server migration"})," guide to import your NuGet.Server packages into BaGetter."]})]})}function d(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>u,a:()=>o});var r=n(7294);const s={},i=r.createContext(s);function o(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0458b440.9a8cb821.js b/assets/js/0458b440.9a8cb821.js deleted file mode 100644 index 6043e2e..0000000 --- a/assets/js/0458b440.9a8cb821.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[864],{5249:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>u,toc:()=>l});var r=n(5893),s=n(1151);const i={},o="NuGet.Server",u={id:"vs/nugetserver",title:"NuGet.Server",description:"This page is a work in progress!",source:"@site/docs/vs/nugetserver.md",sourceDirName:"vs",slug:"/vs/nugetserver",permalink:"/docs/vs/nugetserver",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/vs/nugetserver.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"nuget.org",permalink:"/docs/vs/nugetorg"},next:{title:"TeamCity",permalink:"/docs/vs/teamcity"}},a={},l=[{value:"Migration Guide",id:"migration-guide",level:2}];function c(e){const t={a:"a",admonition:"admonition",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,s.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"nugetserver",children:"NuGet.Server"}),"\n",(0,r.jsx)(t.admonition,{type:"warning",children:(0,r.jsx)(t.p,{children:"This page is a work in progress!"})}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.a,{href:"https://github.com/NuGet/NuGet.Server",children:"NuGet.Server"})," is a lightweight standalone NuGet server. It is strongly recommended that you upgrade to BaGetter if you use NuGet.Server. Feel free to open ",(0,r.jsx)(t.a,{href:"https://github.com/bagetter/BaGetter/issues",children:"GitHub issues"})," if you need help migrating."]}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["NuGet.Server","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Only runs on Windows"}),"\n",(0,r.jsx)(t.li,{children:"Supports NuGet v2 APIs (missing verified packages, signed packages, etc...)"}),"\n",(0,r.jsx)(t.li,{children:"Doesn't support NuGet's v3 APIs"}),"\n",(0,r.jsx)(t.li,{children:"Does not scale well"}),"\n",(0,r.jsx)(t.li,{children:"Not well documented"}),"\n",(0,r.jsx)(t.li,{children:"Not well maintained"}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(t.li,{children:["BaGetter","\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsx)(t.li,{children:"Cross-platform"}),"\n",(0,r.jsx)(t.li,{children:"Supports NuGet v3 APIs"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"migration-guide",children:"Migration Guide"}),"\n",(0,r.jsxs)(t.p,{children:["You can use the ",(0,r.jsx)(t.a,{href:"/docs/Import/nugetserver",children:"NuGet.Server migration"})," guide to import your NuGet.Server packages into BaGetter."]})]})}function d(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>u,a:()=>o});var r=n(7294);const s={},i=r.createContext(s);function o(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function u(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/07fefcf6.c1b79619.js b/assets/js/07fefcf6.c1b79619.js new file mode 100644 index 0000000..f5a5f2a --- /dev/null +++ b/assets/js/07fefcf6.c1b79619.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[708],{6661:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var r=n(5893),s=n(1151);const i={},o="TeamCity",a={id:"vs/teamcity",title:"TeamCity",description:"This page is a work in progress!",source:"@site/docs/vs/teamcity.md",sourceDirName:"vs",slug:"/vs/teamcity",permalink:"/docs/vs/teamcity",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/vs/teamcity.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"NuGet.Server",permalink:"/docs/vs/nugetserver"}},c={},d=[];function u(t){const e={admonition:"admonition",h1:"h1",p:"p",...(0,s.a)(),...t.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.h1,{id:"teamcity",children:"TeamCity"}),"\n",(0,r.jsx)(e.admonition,{type:"warning",children:(0,r.jsx)(e.p,{children:"This page is a work in progress!"})})]})}function m(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(u,{...t})}):u(t)}},1151:(t,e,n)=>{n.d(e,{Z:()=>a,a:()=>o});var r=n(7294);const s={},i=r.createContext(s);function o(t){const e=r.useContext(i);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:o(t.components),r.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/07fefcf6.e7a48c5b.js b/assets/js/07fefcf6.e7a48c5b.js deleted file mode 100644 index 7ccddcd..0000000 --- a/assets/js/07fefcf6.e7a48c5b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[708],{6661:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>c,contentTitle:()=>o,default:()=>m,frontMatter:()=>i,metadata:()=>a,toc:()=>u});var r=n(5893),s=n(1151);const i={},o="TeamCity",a={id:"vs/teamcity",title:"TeamCity",description:"This page is a work in progress!",source:"@site/docs/vs/teamcity.md",sourceDirName:"vs",slug:"/vs/teamcity",permalink:"/docs/vs/teamcity",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/vs/teamcity.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"NuGet.Server",permalink:"/docs/vs/nugetserver"}},c={},u=[];function d(t){const e={admonition:"admonition",h1:"h1",p:"p",...(0,s.a)(),...t.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.h1,{id:"teamcity",children:"TeamCity"}),"\n",(0,r.jsx)(e.admonition,{type:"warning",children:(0,r.jsx)(e.p,{children:"This page is a work in progress!"})})]})}function m(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(d,{...t})}):d(t)}},1151:(t,e,n)=>{n.d(e,{Z:()=>a,a:()=>o});var r=n(7294);const s={},i=r.createContext(s);function o(t){const e=r.useContext(i);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function a(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:o(t.components),r.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/1ca79a61.9f42ab10.js b/assets/js/1ca79a61.9f42ab10.js new file mode 100644 index 0000000..ff30615 --- /dev/null +++ b/assets/js/1ca79a61.9f42ab10.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[220],{7234:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var s=n(5893),o=n(1151);const r={},i="MyGet",a={id:"vs/myget",title:"MyGet",description:"This page is a work in progress!",source:"@site/docs/vs/myget.md",sourceDirName:"vs",slug:"/vs/myget",permalink:"/docs/vs/myget",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/vs/myget.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Local Feeds",permalink:"/docs/vs/local-feeds"},next:{title:"Nexus",permalink:"/docs/vs/nexus"}},c={},d=[];function u(e){const t={admonition:"admonition",h1:"h1",p:"p",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"myget",children:"MyGet"}),"\n",(0,s.jsx)(t.admonition,{type:"warning",children:(0,s.jsx)(t.p,{children:"This page is a work in progress!"})})]})}function l(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>i});var s=n(7294);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1ca79a61.e65a1c71.js b/assets/js/1ca79a61.e65a1c71.js deleted file mode 100644 index 61d59ef..0000000 --- a/assets/js/1ca79a61.e65a1c71.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[220],{7234:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>l,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var s=n(5893),r=n(1151);const o={},i="MyGet",a={id:"vs/myget",title:"MyGet",description:"This page is a work in progress!",source:"@site/docs/vs/myget.md",sourceDirName:"vs",slug:"/vs/myget",permalink:"/docs/vs/myget",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/vs/myget.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Local Feeds",permalink:"/docs/vs/local-feeds"},next:{title:"Nexus",permalink:"/docs/vs/nexus"}},c={},d=[];function u(e){const t={admonition:"admonition",h1:"h1",p:"p",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"myget",children:"MyGet"}),"\n",(0,s.jsx)(t.admonition,{type:"warning",children:(0,s.jsx)(t.p,{children:"This page is a work in progress!"})})]})}function l(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>i});var s=n(7294);const r={},o=s.createContext(r);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1d45c4fa.4adea908.js b/assets/js/1d45c4fa.4adea908.js new file mode 100644 index 0000000..8f6a523 --- /dev/null +++ b/assets/js/1d45c4fa.4adea908.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[889],{6214:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var s=n(5893),r=n(1151);const i={},o="nuget.org",a={id:"vs/nugetorg",title:"nuget.org",description:"This page is a work in progress!",source:"@site/docs/vs/nugetorg.md",sourceDirName:"vs",slug:"/vs/nugetorg",permalink:"/docs/vs/nugetorg",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/vs/nugetorg.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Nexus",permalink:"/docs/vs/nexus"},next:{title:"NuGet.Server",permalink:"/docs/vs/nugetserver"}},l={},c=[{value:"BaGetter vs nuget.org",id:"bagetter-vs-nugetorg",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"nugetorg",children:"nuget.org"}),"\n",(0,s.jsx)(t.admonition,{type:"warning",children:(0,s.jsx)(t.p,{children:"This page is a work in progress!"})}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"https://www.nuget.org/",children:"nuget.org"}),', also known as the "Gallery", is the defacto feed to host open\nsource packages. You should publish NuGet packages for your open-source projects here.']}),"\n",(0,s.jsxs)(t.p,{children:["The Gallery is battle-tested and proven to scale well. You can find a guide on how to host\nyour own Gallery instance on ",(0,s.jsx)(t.a,{href:"https://github.com/NuGet/NuGetGallery/wiki/Hosting-nuget.org's-v3-services",children:"the Gallery's wiki"}),".\nYou can find the Gallery's code on GitHub:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"https://github.com/NuGet/NuGetGallery",children:"NuGet/NuGetGallery"})," - the ",(0,s.jsx)(t.a,{href:"https://nuget.org",children:"nuget.org"}),"\nwebsite and v2 APIs"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"https://github.com/NuGet/NuGet.Jobs/",children:"NuGet/NuGet.Jobs"})," - the Gallery's jobs for things like validation and package statistics."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"https://github.com/NuGet/NuGet.Services.Metadata/",children:"NuGet/NuGet.Services.Metadata"})," - NuGet's v3 implementation"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"https://github.com/NuGet/ServerCommon",children:"NuGet/ServerCommon"})," - common libraries used across NuGet's services"]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"As you can tell, nuget.org is a complex beast. Hosting your own instance of the Gallery is not for the faint of heart."}),"\n",(0,s.jsx)(t.h2,{id:"bagetter-vs-nugetorg",children:"BaGetter vs nuget.org"}),"\n",(0,s.jsxs)(t.p,{children:["TODO. See ",(0,s.jsx)(t.a,{href:"https://github.com/loic-sharma/BaGet/issues/71",children:"this issue"})," for a deep-dive."]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["BaGetter only competes with ",(0,s.jsx)(t.a,{href:"https://github.com/NuGet/NuGet.Services.Metadata/",children:"NuGet/NuGet.Services.Metadata"})]}),"\n",(0,s.jsxs)(t.li,{children:["nuget.org's v3 implementation is static","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Runs only on Windows"}),"\n",(0,s.jsx)(t.li,{children:"Highly tied to Azure"}),"\n",(0,s.jsx)(t.li,{children:"Scales reads to near infinity"}),"\n",(0,s.jsx)(t.li,{children:"Doesn't scale well for writes"}),"\n",(0,s.jsx)(t.li,{children:"Static JSON files are hosted on Azure Blob Storage"}),"\n",(0,s.jsx)(t.li,{children:"Served by a Content Delivery Network"}),"\n",(0,s.jsxs)(t.li,{children:["Files are updated by ",(0,s.jsx)(t.code,{children:"feed2catalog"}),", ",(0,s.jsx)(t.code,{children:"catalog2registration"}),", ",(0,s.jsx)(t.code,{children:"catalog2dnx"}),", and ",(0,s.jsx)(t.code,{children:"catalog2lucene"})," jobs"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["BaGetter's v3 implementation is dynamic","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Cross-platform implementation"}),"\n",(0,s.jsx)(t.li,{children:"Requests are served by a service that queries a database"}),"\n",(0,s.jsx)(t.li,{children:"Simpler architecture, which makes it easier to deploy and run small feeds"}),"\n",(0,s.jsx)(t.li,{children:"Easier to scale for writes"}),"\n",(0,s.jsx)(t.li,{children:"Harder to scale for reads"}),"\n",(0,s.jsx)(t.li,{children:"Easier to add new features"}),"\n",(0,s.jsx)(t.li,{children:"Harder to make as reliable"}),"\n"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>o});var s=n(7294);const r={},i=s.createContext(r);function o(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1d45c4fa.86e67205.js b/assets/js/1d45c4fa.86e67205.js deleted file mode 100644 index 279c59a..0000000 --- a/assets/js/1d45c4fa.86e67205.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[889],{6214:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var s=n(5893),r=n(1151);const i={},o="nuget.org",a={id:"vs/nugetorg",title:"nuget.org",description:"This page is a work in progress!",source:"@site/docs/vs/nugetorg.md",sourceDirName:"vs",slug:"/vs/nugetorg",permalink:"/docs/vs/nugetorg",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/vs/nugetorg.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Nexus",permalink:"/docs/vs/nexus"},next:{title:"NuGet.Server",permalink:"/docs/vs/nugetserver"}},l={},c=[{value:"BaGetter vs nuget.org",id:"bagetter-vs-nugetorg",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"nugetorg",children:"nuget.org"}),"\n",(0,s.jsx)(t.admonition,{type:"warning",children:(0,s.jsx)(t.p,{children:"This page is a work in progress!"})}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"https://www.nuget.org/",children:"nuget.org"}),', also known as the "Gallery", is the defacto feed to host open\nsource packages. You should publish NuGet packages for your open-source projects here.']}),"\n",(0,s.jsxs)(t.p,{children:["The Gallery is battle-tested and proven to scale well. You can find a guide on how to host\nyour own Gallery instance on ",(0,s.jsx)(t.a,{href:"https://github.com/NuGet/NuGetGallery/wiki/Hosting-nuget.org's-v3-services",children:"the Gallery's wiki"}),".\nYou can find the Gallery's code on GitHub:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"https://github.com/NuGet/NuGetGallery",children:"NuGet/NuGetGallery"})," - the ",(0,s.jsx)(t.a,{href:"https://nuget.org",children:"nuget.org"}),"\nwebsite and v2 APIs"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"https://github.com/NuGet/NuGet.Jobs/",children:"NuGet/NuGet.Jobs"})," - the Gallery's jobs for things like validation and package statistics."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"https://github.com/NuGet/NuGet.Services.Metadata/",children:"NuGet/NuGet.Services.Metadata"})," - NuGet's v3 implementation"]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.a,{href:"https://github.com/NuGet/ServerCommon",children:"NuGet/ServerCommon"})," - common libraries used across NuGet's services"]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"As you can tell, nuget.org is a complex beast. Hosting your own instance of the Gallery is not for the faint of heart."}),"\n",(0,s.jsx)(t.h2,{id:"bagetter-vs-nugetorg",children:"BaGetter vs nuget.org"}),"\n",(0,s.jsxs)(t.p,{children:["TODO. See ",(0,s.jsx)(t.a,{href:"https://github.com/loic-sharma/BaGet/issues/71",children:"this issue"})," for a deep-dive."]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["BaGetter only competes with ",(0,s.jsx)(t.a,{href:"https://github.com/NuGet/NuGet.Services.Metadata/",children:"NuGet/NuGet.Services.Metadata"})]}),"\n",(0,s.jsxs)(t.li,{children:["nuget.org's v3 implementation is static","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Runs only on Windows"}),"\n",(0,s.jsx)(t.li,{children:"Highly tied to Azure"}),"\n",(0,s.jsx)(t.li,{children:"Scales reads to near infinity"}),"\n",(0,s.jsx)(t.li,{children:"Doesn't scale well for writes"}),"\n",(0,s.jsx)(t.li,{children:"Static JSON files are hosted on Azure Blob Storage"}),"\n",(0,s.jsx)(t.li,{children:"Served by a Content Delivery Network"}),"\n",(0,s.jsxs)(t.li,{children:["Files are updated by ",(0,s.jsx)(t.code,{children:"feed2catalog"}),", ",(0,s.jsx)(t.code,{children:"catalog2registration"}),", ",(0,s.jsx)(t.code,{children:"catalog2dnx"}),", and ",(0,s.jsx)(t.code,{children:"catalog2lucene"})," jobs"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["BaGetter's v3 implementation is dynamic","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Cross-platform implementation"}),"\n",(0,s.jsx)(t.li,{children:"Requests are served by a service that queries a database"}),"\n",(0,s.jsx)(t.li,{children:"Simpler architecture, which makes it easier to deploy and run small feeds"}),"\n",(0,s.jsx)(t.li,{children:"Easier to scale for writes"}),"\n",(0,s.jsx)(t.li,{children:"Harder to scale for reads"}),"\n",(0,s.jsx)(t.li,{children:"Easier to add new features"}),"\n",(0,s.jsx)(t.li,{children:"Harder to make as reliable"}),"\n"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>o});var s=n(7294);const r={},i=s.createContext(r);function o(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/28e51da9.6dd36e7c.js b/assets/js/28e51da9.6dd36e7c.js new file mode 100644 index 0000000..0e12b2d --- /dev/null +++ b/assets/js/28e51da9.6dd36e7c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[41],{4903:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>c,toc:()=>i});var o=n(5893),s=n(1151);const r={},a="Import packages from a local feed",c={id:"Import/local-feeds",title:"Import packages from a local feed",description:"Local feeds let you use a folder as a NuGet package source.",source:"@site/docs/Import/local-feeds.md",sourceDirName:"Import",slug:"/Import/local-feeds",permalink:"/docs/Import/local-feeds",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Import/local-feeds.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"BaGetter SDK",permalink:"/docs/Advanced/sdk"},next:{title:"Import nuget.org packages",permalink:"/docs/Import/nugetorg"}},l={},i=[{value:"Steps",id:"steps",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"import-packages-from-a-local-feed",children:"Import packages from a local feed"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://docs.microsoft.com/en-us/nuget/hosting-packages/local-feeds",children:"Local feeds"})," let you use a folder as a NuGet package source."]}),"\n",(0,o.jsx)(t.admonition,{type:"info",children:(0,o.jsxs)(t.p,{children:["Please refer to the ",(0,o.jsx)(t.a,{href:"/docs/vs/local-feeds",children:"BaGetter vs local feeds"})," page for reasons to upgrade to BaGetter."]})}),"\n",(0,o.jsx)(t.h2,{id:"steps",children:"Steps"}),"\n",(0,o.jsxs)(t.p,{children:["Make sure that you've installed ",(0,o.jsx)(t.a,{href:"https://www.nuget.org/downloads",children:"nuget.exe"}),". In PowerShell, run:"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-powershell",children:'$source = "C:\\path\\to\\local\\feed"\n$destination = "http://localhost:5000/v3/index.json"\n'})}),"\n",(0,o.jsxs)(t.p,{children:["If you've ",(0,o.jsx)(t.a,{href:"https://bagetter.com/docs/configuration/#requiring-an-api-key",children:"configured BaGetter to require an API Key"}),", set it using ",(0,o.jsxs)(t.a,{href:"https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-setapikey",children:["the ",(0,o.jsx)(t.code,{children:"setapikey"})," command"]}),":"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-powershell",children:'& nuget.exe setapikey "MY-API-KEY" -Source $destination\n'})}),"\n",(0,o.jsx)(t.p,{children:"Now run the following PowerShell script:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-powershell",children:'$packages = nuget list -AllVersions -Source $source\n\n$packages | % {\n $id, $version = $_ -Split " "\n $nupkg = $id + "." + $version + ".nupkg"\n $path = [IO.Path]::Combine($source, $id, $version, $nupkg)\n\n Write-Host "nuget.exe push -Source $destination ""$path"""\n & nuget.exe push -Source $destination $path\n}\n'})})]})}function p(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>c,a:()=>a});var o=n(7294);const s={},r=o.createContext(s);function a(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/28e51da9.ad3d3193.js b/assets/js/28e51da9.ad3d3193.js deleted file mode 100644 index 22c1ea2..0000000 --- a/assets/js/28e51da9.ad3d3193.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[41],{4903:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>r,metadata:()=>c,toc:()=>i});var o=n(5893),s=n(1151);const r={},a="Import packages from a local feed",c={id:"Import/local-feeds",title:"Import packages from a local feed",description:"Local feeds let you use a folder as a NuGet package source.",source:"@site/docs/Import/local-feeds.md",sourceDirName:"Import",slug:"/Import/local-feeds",permalink:"/docs/Import/local-feeds",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Import/local-feeds.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"BaGetter SDK",permalink:"/docs/Advanced/sdk"},next:{title:"Import nuget.org packages",permalink:"/docs/Import/nugetorg"}},l={},i=[{value:"Steps",id:"steps",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h1,{id:"import-packages-from-a-local-feed",children:"Import packages from a local feed"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://docs.microsoft.com/en-us/nuget/hosting-packages/local-feeds",children:"Local feeds"})," let you use a folder as a NuGet package source."]}),"\n",(0,o.jsx)(t.admonition,{type:"info",children:(0,o.jsxs)(t.p,{children:["Please refer to the ",(0,o.jsx)(t.a,{href:"/docs/vs/local-feeds",children:"BaGetter vs local feeds"})," page for reasons to upgrade to BaGetter."]})}),"\n",(0,o.jsx)(t.h2,{id:"steps",children:"Steps"}),"\n",(0,o.jsxs)(t.p,{children:["Make sure that you've installed ",(0,o.jsx)(t.a,{href:"https://www.nuget.org/downloads",children:"nuget.exe"}),". In PowerShell, run:"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-powershell",children:'$source = "C:\\path\\to\\local\\feed"\n$destination = "http://localhost:5000/v3/index.json"\n'})}),"\n",(0,o.jsxs)(t.p,{children:["If you've ",(0,o.jsx)(t.a,{href:"https://bagetter.com/docs/configuration/#requiring-an-api-key",children:"configured BaGetter to require an API Key"}),", set it using ",(0,o.jsxs)(t.a,{href:"https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-setapikey",children:["the ",(0,o.jsx)(t.code,{children:"setapikey"})," command"]}),":"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-powershell",children:'& nuget.exe setapikey "MY-API-KEY" -Source $destination\n'})}),"\n",(0,o.jsx)(t.p,{children:"Now run the following PowerShell script:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-powershell",children:'$packages = nuget list -AllVersions -Source $source\n\n$packages | % {\n $id, $version = $_ -Split " "\n $nupkg = $id + "." + $version + ".nupkg"\n $path = [IO.Path]::Combine($source, $id, $version, $nupkg)\n\n Write-Host "nuget.exe push -Source $destination ""$path"""\n & nuget.exe push -Source $destination $path\n}\n'})})]})}function p(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>c,a:()=>a});var o=n(7294);const s={},r=o.createContext(s);function a(e){const t=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),o.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2f22ae25.03ea899d.js b/assets/js/2f22ae25.03ea899d.js new file mode 100644 index 0000000..d98b72f --- /dev/null +++ b/assets/js/2f22ae25.03ea899d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[185],{7791:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var s=t(5893),o=t(1151);const r={},i="Run BaGetter on your Computer",a={id:"Installation/local",title:"Run BaGetter on your Computer",description:"Run BaGetter",source:"@site/docs/Installation/local.md",sourceDirName:"Installation",slug:"/Installation/local",permalink:"/docs/Installation/local",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Installation/local.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Windows IIS Proxy",permalink:"/docs/Installation/iis-proxy"},next:{title:"Configuration",permalink:"/docs/configuration"}},l={},c=[{value:"Run BaGetter",id:"run-bagetter",level:2},{value:"Configure BaGetter",id:"configure-bagetter",level:2},{value:"Publish packages",id:"publish-packages",level:2},{value:"Restore packages",id:"restore-packages",level:2},{value:"Symbol server",id:"symbol-server",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"run-bagetter-on-your-computer",children:"Run BaGetter on your Computer"}),"\n",(0,s.jsx)(n.h2,{id:"run-bagetter",children:"Run BaGetter"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Install the ",(0,s.jsx)(n.a,{href:"https://www.microsoft.com/net/download",children:".NET Core SDK"})]}),"\n",(0,s.jsxs)(n.li,{children:["Download and extract ",(0,s.jsx)(n.a,{href:"https://github.com/bagetter/BaGetter/releases",children:"BaGetter's latest release"})]}),"\n",(0,s.jsxs)(n.li,{children:["Start the service with ",(0,s.jsx)(n.code,{children:"dotnet BaGetter.dll"})]}),"\n",(0,s.jsxs)(n.li,{children:["Browse ",(0,s.jsx)(n.code,{children:"http://localhost:5000/"})," in your browser"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"configure-bagetter",children:"Configure BaGetter"}),"\n",(0,s.jsxs)(n.p,{children:["You can modify BaGetter's configurations by editing the ",(0,s.jsx)(n.code,{children:"appsettings.json"})," file. For the full list of configurations, please refer to ",(0,s.jsx)(n.a,{href:"/docs/configuration",children:"BaGetter's configuration"})," guide."]}),"\n",(0,s.jsx)(n.h2,{id:"publish-packages",children:"Publish packages"}),"\n",(0,s.jsx)(n.p,{children:"Publish your first package with:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json package.1.0.0.nupkg\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Publish your first ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg",children:"symbol package"})," with:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json symbol.package.1.0.0.snupkg\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsxs)(n.p,{children:["You should secure your server by requiring an API Key to publish packages. For more information, please refer to the ",(0,s.jsx)(n.a,{href:"/docs/configuration#require-an-api-key",children:"Require an API Key"})," guide."]})}),"\n",(0,s.jsx)(n.h2,{id:"restore-packages",children:"Restore packages"}),"\n",(0,s.jsx)(n.p,{children:"You can restore packages by using the following package source:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"http://localhost:5000/v3/index.json"})}),"\n",(0,s.jsx)(n.p,{children:"Some helpful guides:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio#package-sources",children:"Visual Studio"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file#package-source-sections",children:"NuGet.config"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"symbol-server",children:"Symbol server"}),"\n",(0,s.jsx)(n.p,{children:"You can load symbols by using the following symbol location:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"http://localhost:5000/api/download/symbols"})}),"\n",(0,s.jsxs)(n.p,{children:["For Visual Studio, please refer to the ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2017#configure-symbol-locations-and-loading-options",children:"Configure Debugging"})," guide."]})]})}function d(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>i});var s=t(7294);const o={},r=s.createContext(o);function i(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2f22ae25.7057e43e.js b/assets/js/2f22ae25.7057e43e.js deleted file mode 100644 index ac8b69f..0000000 --- a/assets/js/2f22ae25.7057e43e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[185],{7791:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var s=t(5893),o=t(1151);const r={},i="Run BaGetter on your Computer",a={id:"Installation/local",title:"Run BaGetter on your Computer",description:"Run BaGetter",source:"@site/docs/Installation/local.md",sourceDirName:"Installation",slug:"/Installation/local",permalink:"/docs/Installation/local",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Installation/local.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Windows IIS Proxy",permalink:"/docs/Installation/iis-proxy"},next:{title:"Configuration",permalink:"/docs/configuration"}},l={},c=[{value:"Run BaGetter",id:"run-bagetter",level:2},{value:"Configure BaGetter",id:"configure-bagetter",level:2},{value:"Publish packages",id:"publish-packages",level:2},{value:"Restore packages",id:"restore-packages",level:2},{value:"Symbol server",id:"symbol-server",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"run-bagetter-on-your-computer",children:"Run BaGetter on your Computer"}),"\n",(0,s.jsx)(n.h2,{id:"run-bagetter",children:"Run BaGetter"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Install the ",(0,s.jsx)(n.a,{href:"https://www.microsoft.com/net/download",children:".NET Core SDK"})]}),"\n",(0,s.jsxs)(n.li,{children:["Download and extract ",(0,s.jsx)(n.a,{href:"https://github.com/bagetter/BaGetter/releases",children:"BaGetter's latest release"})]}),"\n",(0,s.jsxs)(n.li,{children:["Start the service with ",(0,s.jsx)(n.code,{children:"dotnet BaGetter.dll"})]}),"\n",(0,s.jsxs)(n.li,{children:["Browse ",(0,s.jsx)(n.code,{children:"http://localhost:5000/"})," in your browser"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"configure-bagetter",children:"Configure BaGetter"}),"\n",(0,s.jsxs)(n.p,{children:["You can modify BaGetter's configurations by editing the ",(0,s.jsx)(n.code,{children:"appsettings.json"})," file. For the full list of configurations, please refer to ",(0,s.jsx)(n.a,{href:"/docs/configuration",children:"BaGetter's configuration"})," guide."]}),"\n",(0,s.jsx)(n.h2,{id:"publish-packages",children:"Publish packages"}),"\n",(0,s.jsx)(n.p,{children:"Publish your first package with:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json package.1.0.0.nupkg\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Publish your first ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg",children:"symbol package"})," with:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json symbol.package.1.0.0.snupkg\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsxs)(n.p,{children:["You should secure your server by requiring an API Key to publish packages. For more information, please refer to the ",(0,s.jsx)(n.a,{href:"/docs/configuration#require-an-api-key",children:"Require an API Key"})," guide."]})}),"\n",(0,s.jsx)(n.h2,{id:"restore-packages",children:"Restore packages"}),"\n",(0,s.jsx)(n.p,{children:"You can restore packages by using the following package source:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"http://localhost:5000/v3/index.json"})}),"\n",(0,s.jsx)(n.p,{children:"Some helpful guides:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio#package-sources",children:"Visual Studio"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file#package-source-sections",children:"NuGet.config"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"symbol-server",children:"Symbol server"}),"\n",(0,s.jsx)(n.p,{children:"You can load symbols by using the following symbol location:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"http://localhost:5000/api/download/symbols"})}),"\n",(0,s.jsxs)(n.p,{children:["For Visual Studio, please refer to the ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2017#configure-symbol-locations-and-loading-options",children:"Configure Debugging"})," guide."]})]})}function d(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>a,a:()=>i});var s=t(7294);const o={},r=s.createContext(o);function i(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/38105561.7093f831.js b/assets/js/38105561.7093f831.js deleted file mode 100644 index d2895ed..0000000 --- a/assets/js/38105561.7093f831.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[903],{3482:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>u});var n=r(5893),s=r(1151);const a={},i="Azure Artifacts",o={id:"vs/azure-artifacts",title:"Azure Artifacts",description:"This page is a work in progress!",source:"@site/docs/vs/azure-artifacts.md",sourceDirName:"vs",slug:"/vs/azure-artifacts",permalink:"/docs/vs/azure-artifacts",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/vs/azure-artifacts.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Artifactory",permalink:"/docs/vs/artifactory"},next:{title:"LiGet",permalink:"/docs/vs/liget"}},c={},u=[];function d(t){const e={admonition:"admonition",h1:"h1",p:"p",...(0,s.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"azure-artifacts",children:"Azure Artifacts"}),"\n",(0,n.jsx)(e.admonition,{type:"warning",children:(0,n.jsx)(e.p,{children:"This page is a work in progress!"})})]})}function p(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},1151:(t,e,r)=>{r.d(e,{Z:()=>o,a:()=>i});var n=r(7294);const s={},a=n.createContext(s);function i(t){const e=n.useContext(a);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function o(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:i(t.components),n.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/38105561.7ab42c39.js b/assets/js/38105561.7ab42c39.js new file mode 100644 index 0000000..2b260ed --- /dev/null +++ b/assets/js/38105561.7ab42c39.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[903],{3482:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>u});var n=r(5893),s=r(1151);const a={},i="Azure Artifacts",o={id:"vs/azure-artifacts",title:"Azure Artifacts",description:"This page is a work in progress!",source:"@site/docs/vs/azure-artifacts.md",sourceDirName:"vs",slug:"/vs/azure-artifacts",permalink:"/docs/vs/azure-artifacts",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/vs/azure-artifacts.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Artifactory",permalink:"/docs/vs/artifactory"},next:{title:"LiGet",permalink:"/docs/vs/liget"}},c={},u=[];function d(t){const e={admonition:"admonition",h1:"h1",p:"p",...(0,s.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"azure-artifacts",children:"Azure Artifacts"}),"\n",(0,n.jsx)(e.admonition,{type:"warning",children:(0,n.jsx)(e.p,{children:"This page is a work in progress!"})})]})}function p(t={}){const{wrapper:e}={...(0,s.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},1151:(t,e,r)=>{r.d(e,{Z:()=>o,a:()=>i});var n=r(7294);const s={},a=n.createContext(s);function i(t){const e=n.useContext(a);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function o(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(s):t.components||s:i(t.components),n.createElement(a.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/3b941570.2aec2038.js b/assets/js/3b941570.2aec2038.js deleted file mode 100644 index c6523a8..0000000 --- a/assets/js/3b941570.2aec2038.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[796],{928:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>c});var s=t(5893),r=t(1151);const a={},o="Run BaGetter on Docker",i={id:"Installation/docker",title:"Run BaGetter on Docker",description:"Configure BaGetter (optional)",source:"@site/docs/Installation/docker.md",sourceDirName:"Installation",slug:"/Installation/docker",permalink:"/docs/Installation/docker",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Installation/docker.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Run BaGetter on Azure",permalink:"/docs/Installation/azure"},next:{title:"Run BaGetter on Google Cloud Platform",permalink:"/docs/Installation/gcp"}},l={},c=[{value:"Configure BaGetter (optional)",id:"configure-bagetter-optional",level:2},{value:"Run BaGetter",id:"run-bagetter",level:2},{value:"Publish packages",id:"publish-packages",level:2},{value:"Browse packages",id:"browse-packages",level:2},{value:"Restore packages",id:"restore-packages",level:2},{value:"Symbol server",id:"symbol-server",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"run-bagetter-on-docker",children:"Run BaGetter on Docker"}),"\n",(0,s.jsx)(n.h2,{id:"configure-bagetter-optional",children:"Configure BaGetter (optional)"}),"\n",(0,s.jsxs)(n.p,{children:["Create a file named ",(0,s.jsx)(n.code,{children:"bagetter.env"})," to store BaGetter's configurations:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"# The following config is the API Key used to publish packages.\n# You should change this to a secret value to secure your server.\nApiKey=NUGET-SERVER-API-KEY\n\nStorage__Type=FileSystem\nStorage__Path=/data\nDatabase__Type=Sqlite\nDatabase__ConnectionString=Data Source=/data/db/bagetter.db\nSearch__Type=Database\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For a full list of configurations, please refer to ",(0,s.jsx)(n.a,{href:"/docs/configuration",children:"BaGetter's configuration"})," guide."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"bagetter.env"})," file stores ",(0,s.jsx)(n.a,{href:"../configuration",children:"BaGetter's configuration"})," as environment variables.\nTo learn how these configurations work, please refer to ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.1&tabs=basicconfiguration#configuration-by-environment",children:"ASP.NET Core's configuration documentation"}),"."]})}),"\n",(0,s.jsxs)(n.p,{children:["If this step is omitted the default mode (unconfigured) will be Sqlite with the sql blobs stored in the path ",(0,s.jsx)(n.code,{children:"/data/db/bagetter.db"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"run-bagetter",children:"Run BaGetter"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Create a folder named ",(0,s.jsx)(n.code,{children:"bagetter-data"})," in the same directory as the ",(0,s.jsx)(n.code,{children:"bagetter.env"})," file. This will be used by BaGetter to persist its state."]}),"\n",(0,s.jsxs)(n.li,{children:["Pull BaGetter's latest ",(0,s.jsx)(n.a,{href:"hhttps://hub.docker.com/r/bagetter/bagetter",children:"docker image"}),":"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"docker pull bagetter/bagetter\n"})}),"\n",(0,s.jsx)(n.p,{children:"You can now run BaGetter..."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["...with optional ",(0,s.jsx)(n.code,{children:".env"})," file:"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:'docker run --rm --name nuget-server -p 5000:8080 --env-file bagetter.env -v "$(pwd)/bagetter-data:/data" bagetter/bagetter:latest\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"...or without:"}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:'docker run --rm --name nuget-server -p 5000:8080 -v "$(pwd)/bagetter-data:/data" bagetter/bagetter:latest\n'})}),"\n",(0,s.jsx)(n.h2,{id:"publish-packages",children:"Publish packages"}),"\n",(0,s.jsx)(n.p,{children:"Publish your first package with:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json -k NUGET-SERVER-API-KEY package.1.0.0.nupkg\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Publish your first ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg",children:"symbol package"})," with:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json -k NUGET-SERVER-API-KEY symbol.package.1.0.0.snupkg\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsxs)(n.p,{children:["The default API Key to publish packages is ",(0,s.jsx)(n.code,{children:"NUGET-SERVER-API-KEY"}),".\nYou should change this to a secret value to secure your server. See ",(0,s.jsx)(n.a,{href:"#configure-bagetter-optional",children:"Configure BaGetter"}),"."]})}),"\n",(0,s.jsx)(n.h2,{id:"browse-packages",children:"Browse packages"}),"\n",(0,s.jsxs)(n.p,{children:["You can browse packages by opening the URL ",(0,s.jsx)(n.a,{href:"http://localhost:5000/",children:(0,s.jsx)(n.code,{children:"http://localhost:5000/"})})," in your browser."]}),"\n",(0,s.jsx)(n.h2,{id:"restore-packages",children:"Restore packages"}),"\n",(0,s.jsx)(n.p,{children:"You can restore packages by using the following package source:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"http://localhost:5000/v3/index.json"})}),"\n",(0,s.jsx)(n.p,{children:"Some helpful guides:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio#package-sources",children:"Visual Studio"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file#package-source-sections",children:"NuGet.config"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"symbol-server",children:"Symbol server"}),"\n",(0,s.jsx)(n.p,{children:"You can load symbols by using the following symbol location:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"http://localhost:5000/api/download/symbols"})}),"\n",(0,s.jsxs)(n.p,{children:["For Visual Studio, please refer to the ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2017#configure-symbol-locations-and-loading-options",children:"Configure Debugging"})," guide."]})]})}function h(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>i,a:()=>o});var s=t(7294);const r={},a=s.createContext(r);function o(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3b941570.3cca96b7.js b/assets/js/3b941570.3cca96b7.js new file mode 100644 index 0000000..15d9a5e --- /dev/null +++ b/assets/js/3b941570.3cca96b7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[796],{928:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>a,metadata:()=>i,toc:()=>c});var s=t(5893),r=t(1151);const a={},o="Run BaGetter on Docker",i={id:"Installation/docker",title:"Run BaGetter on Docker",description:"Configure BaGetter (optional)",source:"@site/docs/Installation/docker.md",sourceDirName:"Installation",slug:"/Installation/docker",permalink:"/docs/Installation/docker",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Installation/docker.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Run BaGetter on Azure",permalink:"/docs/Installation/azure"},next:{title:"Run BaGetter on Google Cloud Platform",permalink:"/docs/Installation/gcp"}},l={},c=[{value:"Configure BaGetter (optional)",id:"configure-bagetter-optional",level:2},{value:"Run BaGetter",id:"run-bagetter",level:2},{value:"Publish packages",id:"publish-packages",level:2},{value:"Browse packages",id:"browse-packages",level:2},{value:"Restore packages",id:"restore-packages",level:2},{value:"Symbol server",id:"symbol-server",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"run-bagetter-on-docker",children:"Run BaGetter on Docker"}),"\n",(0,s.jsx)(n.h2,{id:"configure-bagetter-optional",children:"Configure BaGetter (optional)"}),"\n",(0,s.jsxs)(n.p,{children:["Create a file named ",(0,s.jsx)(n.code,{children:"bagetter.env"})," to store BaGetter's configurations:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"# The following config is the API Key used to publish packages.\n# You should change this to a secret value to secure your server.\nApiKey=NUGET-SERVER-API-KEY\n\nStorage__Type=FileSystem\nStorage__Path=/data\nDatabase__Type=Sqlite\nDatabase__ConnectionString=Data Source=/data/db/bagetter.db\nSearch__Type=Database\n"})}),"\n",(0,s.jsxs)(n.p,{children:["For a full list of configurations, please refer to ",(0,s.jsx)(n.a,{href:"/docs/configuration",children:"BaGetter's configuration"})," guide."]}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"bagetter.env"})," file stores ",(0,s.jsx)(n.a,{href:"../configuration",children:"BaGetter's configuration"})," as environment variables.\nTo learn how these configurations work, please refer to ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-2.1&tabs=basicconfiguration#configuration-by-environment",children:"ASP.NET Core's configuration documentation"}),"."]})}),"\n",(0,s.jsxs)(n.p,{children:["If this step is omitted the default mode (unconfigured) will be Sqlite with the sql blobs stored in the path ",(0,s.jsx)(n.code,{children:"/data/db/bagetter.db"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"run-bagetter",children:"Run BaGetter"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Create a folder named ",(0,s.jsx)(n.code,{children:"bagetter-data"})," in the same directory as the ",(0,s.jsx)(n.code,{children:"bagetter.env"})," file. This will be used by BaGetter to persist its state."]}),"\n",(0,s.jsxs)(n.li,{children:["Pull BaGetter's latest ",(0,s.jsx)(n.a,{href:"hhttps://hub.docker.com/r/bagetter/bagetter",children:"docker image"}),":"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"docker pull bagetter/bagetter\n"})}),"\n",(0,s.jsx)(n.p,{children:"You can now run BaGetter..."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["...with optional ",(0,s.jsx)(n.code,{children:".env"})," file:"]}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:'docker run --rm --name nuget-server -p 5000:8080 --env-file bagetter.env -v "$(pwd)/bagetter-data:/data" bagetter/bagetter:latest\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"...or without:"}),"\n"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:'docker run --rm --name nuget-server -p 5000:8080 -v "$(pwd)/bagetter-data:/data" bagetter/bagetter:latest\n'})}),"\n",(0,s.jsx)(n.h2,{id:"publish-packages",children:"Publish packages"}),"\n",(0,s.jsx)(n.p,{children:"Publish your first package with:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json -k NUGET-SERVER-API-KEY package.1.0.0.nupkg\n"})}),"\n",(0,s.jsxs)(n.p,{children:["Publish your first ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg",children:"symbol package"})," with:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json -k NUGET-SERVER-API-KEY symbol.package.1.0.0.snupkg\n"})}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsxs)(n.p,{children:["The default API Key to publish packages is ",(0,s.jsx)(n.code,{children:"NUGET-SERVER-API-KEY"}),".\nYou should change this to a secret value to secure your server. See ",(0,s.jsx)(n.a,{href:"#configure-bagetter-optional",children:"Configure BaGetter"}),"."]})}),"\n",(0,s.jsx)(n.h2,{id:"browse-packages",children:"Browse packages"}),"\n",(0,s.jsxs)(n.p,{children:["You can browse packages by opening the URL ",(0,s.jsx)(n.a,{href:"http://localhost:5000/",children:(0,s.jsx)(n.code,{children:"http://localhost:5000/"})})," in your browser."]}),"\n",(0,s.jsx)(n.h2,{id:"restore-packages",children:"Restore packages"}),"\n",(0,s.jsx)(n.p,{children:"You can restore packages by using the following package source:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"http://localhost:5000/v3/index.json"})}),"\n",(0,s.jsx)(n.p,{children:"Some helpful guides:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio#package-sources",children:"Visual Studio"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file#package-source-sections",children:"NuGet.config"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"symbol-server",children:"Symbol server"}),"\n",(0,s.jsx)(n.p,{children:"You can load symbols by using the following symbol location:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.code,{children:"http://localhost:5000/api/download/symbols"})}),"\n",(0,s.jsxs)(n.p,{children:["For Visual Studio, please refer to the ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2017#configure-symbol-locations-and-loading-options",children:"Configure Debugging"})," guide."]})]})}function h(e={}){const{wrapper:n}={...(0,r.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>i,a:()=>o});var s=t(7294);const r={},a=s.createContext(r);function o(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/41d97e2f.5b98b94b.js b/assets/js/41d97e2f.5b98b94b.js new file mode 100644 index 0000000..94fb1c8 --- /dev/null +++ b/assets/js/41d97e2f.5b98b94b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[48],{688:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var n=r(5893),o=r(1151);const i={},a="Artifactory",s={id:"vs/artifactory",title:"Artifactory",description:"This page is a work in progress!",source:"@site/docs/vs/artifactory.md",sourceDirName:"vs",slug:"/vs/artifactory",permalink:"/docs/vs/artifactory",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/vs/artifactory.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/docs/configuration"},next:{title:"Azure Artifacts",permalink:"/docs/vs/azure-artifacts"}},c={},u=[];function d(t){const e={admonition:"admonition",h1:"h1",p:"p",...(0,o.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"artifactory",children:"Artifactory"}),"\n",(0,n.jsx)(e.admonition,{type:"warning",children:(0,n.jsx)(e.p,{children:"This page is a work in progress!"})})]})}function f(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},1151:(t,e,r)=>{r.d(e,{Z:()=>s,a:()=>a});var n=r(7294);const o={},i=n.createContext(o);function a(t){const e=n.useContext(i);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:a(t.components),n.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/41d97e2f.d4de4735.js b/assets/js/41d97e2f.d4de4735.js deleted file mode 100644 index c7eb0db..0000000 --- a/assets/js/41d97e2f.d4de4735.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[48],{688:(t,e,r)=>{r.r(e),r.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>f,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var n=r(5893),o=r(1151);const i={},a="Artifactory",s={id:"vs/artifactory",title:"Artifactory",description:"This page is a work in progress!",source:"@site/docs/vs/artifactory.md",sourceDirName:"vs",slug:"/vs/artifactory",permalink:"/docs/vs/artifactory",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/vs/artifactory.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Configuration",permalink:"/docs/configuration"},next:{title:"Azure Artifacts",permalink:"/docs/vs/azure-artifacts"}},c={},u=[];function d(t){const e={admonition:"admonition",h1:"h1",p:"p",...(0,o.a)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(e.h1,{id:"artifactory",children:"Artifactory"}),"\n",(0,n.jsx)(e.admonition,{type:"warning",children:(0,n.jsx)(e.p,{children:"This page is a work in progress!"})})]})}function f(t={}){const{wrapper:e}={...(0,o.a)(),...t.components};return e?(0,n.jsx)(e,{...t,children:(0,n.jsx)(d,{...t})}):d(t)}},1151:(t,e,r)=>{r.d(e,{Z:()=>s,a:()=>a});var n=r(7294);const o={},i=n.createContext(o);function a(t){const e=n.useContext(i);return n.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function s(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(o):t.components||o:a(t.components),n.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/48f00fa9.2ab8d491.js b/assets/js/48f00fa9.2ab8d491.js deleted file mode 100644 index 2049fd3..0000000 --- a/assets/js/48f00fa9.2ab8d491.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[939],{3906:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>r,toc:()=>c});var a=n(5893),o=n(1151);const s={},i="Use Alibaba Cloud (Aliyun) OSS",r={id:"Installation/aliyun",title:"Use Alibaba Cloud (Aliyun) OSS",description:"You can store packages to Alibaba Cloud (Aliyun) Object Storage Service.",source:"@site/docs/Installation/aliyun.md",sourceDirName:"Installation",slug:"/Installation/aliyun",permalink:"/docs/Installation/aliyun",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Installation/aliyun.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Import NuGet.Server packages",permalink:"/docs/Import/nugetserver"},next:{title:"Run BaGetter on AWS",permalink:"/docs/Installation/aws"}},l={},c=[{value:"Configure BaGetter",id:"configure-bagetter",level:2},{value:"Alibaba Cloud Object Storage Service (OSS)",id:"alibaba-cloud-object-storage-service-oss",level:3}];function u(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h1,{id:"use-alibaba-cloud-aliyun-oss",children:"Use Alibaba Cloud (Aliyun) OSS"}),"\n",(0,a.jsxs)(t.p,{children:["You can store packages to ",(0,a.jsx)(t.a,{href:"https://www.alibabacloud.com/product/object-storage-service",children:"Alibaba Cloud (Aliyun) Object Storage Service"}),"."]}),"\n",(0,a.jsx)(t.h2,{id:"configure-bagetter",children:"Configure BaGetter"}),"\n",(0,a.jsxs)(t.p,{children:["You can modify BaGetter's configurations by editing the ",(0,a.jsx)(t.code,{children:"appsettings.json"})," file. For the full list of configurations, please refer to ",(0,a.jsx)(t.a,{href:"/docs/configuration",children:"BaGetter's configuration"})," guide."]}),"\n",(0,a.jsx)(t.h3,{id:"alibaba-cloud-object-storage-service-oss",children:"Alibaba Cloud Object Storage Service (OSS)"}),"\n",(0,a.jsxs)(t.p,{children:["Update the ",(0,a.jsx)(t.code,{children:"appsettings.json"})," file:"]}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-json",children:'{\n ...\n\n "Storage": {\n "Type": "AliyunOss",\n "Endpoint": "oss-us-west-1.aliyuncs.com",\n "Bucket": "foo",\n "AccessKey": "",\n "AccessKeySecret": "",\n "Prefix": "lib/bagetter" // optional\n },\n\n ...\n}\n'})})]})}function d(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>r,a:()=>i});var a=n(7294);const o={},s=a.createContext(o);function i(e){const t=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),a.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/48f00fa9.db202b51.js b/assets/js/48f00fa9.db202b51.js new file mode 100644 index 0000000..a0c20ef --- /dev/null +++ b/assets/js/48f00fa9.db202b51.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[939],{3906:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>d,frontMatter:()=>s,metadata:()=>r,toc:()=>l});var a=n(5893),o=n(1151);const s={},i="Use Alibaba Cloud (Aliyun) OSS",r={id:"Installation/aliyun",title:"Use Alibaba Cloud (Aliyun) OSS",description:"You can store packages to Alibaba Cloud (Aliyun) Object Storage Service.",source:"@site/docs/Installation/aliyun.md",sourceDirName:"Installation",slug:"/Installation/aliyun",permalink:"/docs/Installation/aliyun",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Installation/aliyun.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Import NuGet.Server packages",permalink:"/docs/Import/nugetserver"},next:{title:"Run BaGetter on AWS",permalink:"/docs/Installation/aws"}},c={},l=[{value:"Configure BaGetter",id:"configure-bagetter",level:2},{value:"Alibaba Cloud Object Storage Service (OSS)",id:"alibaba-cloud-object-storage-service-oss",level:3}];function u(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h1,{id:"use-alibaba-cloud-aliyun-oss",children:"Use Alibaba Cloud (Aliyun) OSS"}),"\n",(0,a.jsxs)(t.p,{children:["You can store packages to ",(0,a.jsx)(t.a,{href:"https://www.alibabacloud.com/product/object-storage-service",children:"Alibaba Cloud (Aliyun) Object Storage Service"}),"."]}),"\n",(0,a.jsx)(t.h2,{id:"configure-bagetter",children:"Configure BaGetter"}),"\n",(0,a.jsxs)(t.p,{children:["You can modify BaGetter's configurations by editing the ",(0,a.jsx)(t.code,{children:"appsettings.json"})," file. For the full list of configurations, please refer to ",(0,a.jsx)(t.a,{href:"/docs/configuration",children:"BaGetter's configuration"})," guide."]}),"\n",(0,a.jsx)(t.h3,{id:"alibaba-cloud-object-storage-service-oss",children:"Alibaba Cloud Object Storage Service (OSS)"}),"\n",(0,a.jsxs)(t.p,{children:["Update the ",(0,a.jsx)(t.code,{children:"appsettings.json"})," file:"]}),"\n",(0,a.jsx)(t.pre,{children:(0,a.jsx)(t.code,{className:"language-json",children:'{\n ...\n\n "Storage": {\n "Type": "AliyunOss",\n "Endpoint": "oss-us-west-1.aliyuncs.com",\n "Bucket": "foo",\n "AccessKey": "",\n "AccessKeySecret": "",\n "Prefix": "lib/bagetter" // optional\n },\n\n ...\n}\n'})})]})}function d(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(u,{...e})}):u(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>r,a:()=>i});var a=n(7294);const o={},s=a.createContext(o);function i(e){const t=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),a.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4db0b455.88fcf116.js b/assets/js/4db0b455.88fcf116.js new file mode 100644 index 0000000..ad0e32f --- /dev/null +++ b/assets/js/4db0b455.88fcf116.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[810],{1e3:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>a,toc:()=>u});var s=n(5893),r=n(1151);const o={},i="Nexus",a={id:"vs/nexus",title:"Nexus",description:"This page is a work in progress!",source:"@site/docs/vs/nexus.md",sourceDirName:"vs",slug:"/vs/nexus",permalink:"/docs/vs/nexus",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/vs/nexus.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"MyGet",permalink:"/docs/vs/myget"},next:{title:"nuget.org",permalink:"/docs/vs/nugetorg"}},c={},u=[];function d(e){const t={admonition:"admonition",h1:"h1",p:"p",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"nexus",children:"Nexus"}),"\n",(0,s.jsx)(t.admonition,{type:"warning",children:(0,s.jsx)(t.p,{children:"This page is a work in progress!"})})]})}function p(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>i});var s=n(7294);const r={},o=s.createContext(r);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4db0b455.af1a721b.js b/assets/js/4db0b455.af1a721b.js deleted file mode 100644 index 0a0e744..0000000 --- a/assets/js/4db0b455.af1a721b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[810],{1e3:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>a,toc:()=>u});var s=n(5893),r=n(1151);const o={},i="Nexus",a={id:"vs/nexus",title:"Nexus",description:"This page is a work in progress!",source:"@site/docs/vs/nexus.md",sourceDirName:"vs",slug:"/vs/nexus",permalink:"/docs/vs/nexus",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/vs/nexus.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"MyGet",permalink:"/docs/vs/myget"},next:{title:"nuget.org",permalink:"/docs/vs/nugetorg"}},c={},u=[];function d(e){const t={admonition:"admonition",h1:"h1",p:"p",...(0,r.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"nexus",children:"Nexus"}),"\n",(0,s.jsx)(t.admonition,{type:"warning",children:(0,s.jsx)(t.p,{children:"This page is a work in progress!"})})]})}function p(e={}){const{wrapper:t}={...(0,r.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>i});var s=n(7294);const r={},o=s.createContext(r);function i(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5c37fac9.6a754593.js b/assets/js/5c37fac9.6a754593.js deleted file mode 100644 index 47ba8b3..0000000 --- a/assets/js/5c37fac9.6a754593.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[950],{395:(e,t,r)=>{r.r(t),r.d(t,{CenterImg:()=>l,assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var n=r(5893),a=r(1151);const s={sidebar_position:2},o="BaGetter",i={id:"Index",title:"Index",description:'BaGetter (pronounced "ba getter") is a lightweight NuGet and symbol server. It is open source, cross-platform, and cloud ready!',source:"@site/docs/Index.md",sourceDirName:".",slug:"/",permalink:"/docs/",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Index.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",next:{title:"Debugging BaGetter",permalink:"/docs/Advanced/debugging"}},c={},d=[{value:"Run BaGetter",id:"run-bagetter",level:2},{value:"BaGetter SDK",id:"bagetter-sdk",level:2}],l=({children:e,color:t})=>{const r={p:"p",...(0,a.a)()};return(0,n.jsx)(r.p,{align:"center",children:e})};function u(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,a.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"bagetter",children:"BaGetter"}),"\n",(0,n.jsxs)(t.p,{children:['BaGetter (pronounced "ba getter") is a lightweight NuGet and symbol server. It is ',(0,n.jsx)(t.a,{href:"https://github.com/bagetter/BaGetter",children:"open source"}),", cross-platform, and cloud ready!"]}),"\n",(0,n.jsx)(l,{children:(0,n.jsx)("img",{width:"100%",src:"https://user-images.githubusercontent.com/737941/50140219-d8409700-0258-11e9-94c9-dad24d2b48bb.png"})}),"\n",(0,n.jsxs)(t.p,{children:["BaGetter supports Filesystem, GCP and AWS S3 buckets for package storage, and MySQL, Sqlite, SqlServer and PostgreSQL as database. The current per-package size limit is ~8GB. It can be hosted on IIS, and is also available in a linux ",(0,n.jsx)(t.a,{href:"https://hub.docker.com/r/bagetter/bagetter",children:"docker image"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"run-bagetter",children:"Run BaGetter"}),"\n",(0,n.jsx)(t.p,{children:"You can run BaGetter on your preferred platform:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/local",children:"On your computer"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/docker",children:"Docker"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/azure",children:"Azure"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/aws",children:"AWS"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/gcp",children:"Google Cloud"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/aliyun",children:"Alibaba Cloud (Aliyun)"})}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"bagetter-sdk",children:"BaGetter SDK"}),"\n",(0,n.jsxs)(t.p,{children:["You can also use the ",(0,n.jsx)(t.a,{href:"https://www.nuget.org/packages/BaGetter.Protocol",children:(0,n.jsx)(t.code,{children:"BaGetter.Protocol"})})," package to interact with a NuGet server. For more information, please refer to the ",(0,n.jsx)(t.a,{href:"/docs/Advanced/sdk",children:"BaGetter SDK"})," guide."]})]})}function h(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},1151:(e,t,r)=>{r.d(t,{Z:()=>i,a:()=>o});var n=r(7294);const a={},s=n.createContext(a);function o(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5c37fac9.a669993e.js b/assets/js/5c37fac9.a669993e.js new file mode 100644 index 0000000..5c19c37 --- /dev/null +++ b/assets/js/5c37fac9.a669993e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[950],{395:(e,t,r)=>{r.r(t),r.d(t,{CenterImg:()=>l,assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>s,metadata:()=>i,toc:()=>d});var n=r(5893),a=r(1151);const s={sidebar_position:2},o="BaGetter",i={id:"Index",title:"Index",description:'BaGetter (pronounced "ba getter") is a lightweight NuGet and symbol server. It is open source, cross-platform, and cloud ready!',source:"@site/docs/Index.md",sourceDirName:".",slug:"/",permalink:"/docs/",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Index.md",tags:[],version:"current",sidebarPosition:2,frontMatter:{sidebar_position:2},sidebar:"tutorialSidebar",next:{title:"Debugging BaGetter",permalink:"/docs/Advanced/debugging"}},c={},d=[{value:"Run BaGetter",id:"run-bagetter",level:2},{value:"BaGetter SDK",id:"bagetter-sdk",level:2}],l=({children:e,color:t})=>{const r={p:"p",...(0,a.a)()};return(0,n.jsx)(r.p,{align:"center",children:e})};function u(e){const t={a:"a",code:"code",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,a.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"bagetter",children:"BaGetter"}),"\n",(0,n.jsxs)(t.p,{children:['BaGetter (pronounced "ba getter") is a lightweight NuGet and symbol server. It is ',(0,n.jsx)(t.a,{href:"https://github.com/bagetter/BaGetter",children:"open source"}),", cross-platform, and cloud ready!"]}),"\n",(0,n.jsx)(l,{children:(0,n.jsx)("img",{width:"100%",src:"https://user-images.githubusercontent.com/737941/50140219-d8409700-0258-11e9-94c9-dad24d2b48bb.png"})}),"\n",(0,n.jsxs)(t.p,{children:["BaGetter supports Filesystem, GCP and AWS S3 buckets, and Azure Blob Storage for package storage, and MySQL, Sqlite, SqlServer and PostgreSQL as database. The current per-package size limit is ~8GB. It can be hosted on IIS, and is also available in a linux ",(0,n.jsx)(t.a,{href:"https://hub.docker.com/r/bagetter/bagetter",children:"docker image"}),"."]}),"\n",(0,n.jsx)(t.h2,{id:"run-bagetter",children:"Run BaGetter"}),"\n",(0,n.jsx)(t.p,{children:"You can run BaGetter on your preferred platform:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/local",children:"On your computer"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/docker",children:"Docker"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/azure",children:"Azure"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/aws",children:"AWS"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/gcp",children:"Google Cloud"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"/docs/Installation/aliyun",children:"Alibaba Cloud (Aliyun)"})}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"bagetter-sdk",children:"BaGetter SDK"}),"\n",(0,n.jsxs)(t.p,{children:["You can also use the ",(0,n.jsx)(t.a,{href:"https://www.nuget.org/packages/BaGetter.Protocol",children:(0,n.jsx)(t.code,{children:"BaGetter.Protocol"})})," package to interact with a NuGet server. For more information, please refer to the ",(0,n.jsx)(t.a,{href:"/docs/Advanced/sdk",children:"BaGetter SDK"})," guide."]})]})}function h(e={}){const{wrapper:t}={...(0,a.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u(e)}},1151:(e,t,r)=>{r.d(t,{Z:()=>i,a:()=>o});var n=r(7294);const a={},s=n.createContext(a);function o(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6633a546.4a2756ab.js b/assets/js/6633a546.4a2756ab.js new file mode 100644 index 0000000..26e635c --- /dev/null +++ b/assets/js/6633a546.4a2756ab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[52],{8250:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>c,toc:()=>i});var n=t(5893),o=t(1151);const a={},r="Local Feeds",c={id:"vs/local-feeds",title:"Local Feeds",description:"This page is a work in progress!",source:"@site/docs/vs/local-feeds.md",sourceDirName:"vs",slug:"/vs/local-feeds",permalink:"/docs/vs/local-feeds",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/vs/local-feeds.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"LiGet",permalink:"/docs/vs/liget"},next:{title:"MyGet",permalink:"/docs/vs/myget"}},l={},i=[{value:"BaGetter vs local feeds",id:"bagetter-vs-local-feeds",level:2}];function d(e){const s={a:"a",admonition:"admonition",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",...(0,o.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.h1,{id:"local-feeds",children:"Local Feeds"}),"\n",(0,n.jsx)(s.admonition,{type:"warning",children:(0,n.jsx)(s.p,{children:"This page is a work in progress!"})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"https://docs.microsoft.com/en-us/nuget/hosting-packages/local-feeds",children:"Local feeds"}),', also known as "folder feeds", let you\nuse a folder as a NuGet package source. You can access these packages using a network share.']}),"\n",(0,n.jsx)(s.h2,{id:"bagetter-vs-local-feeds",children:"BaGetter vs local feeds"}),"\n",(0,n.jsx)(s.p,{children:"Local feeds are very simple and are lack features like:"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"Search functionality"}),"\n",(0,n.jsx)(s.li,{children:"A user interface to browse your packages"}),"\n",(0,n.jsx)(s.li,{children:"Authentication for package uploads"}),"\n",(0,n.jsx)(s.li,{children:"Cloud storage for large feeds"}),"\n"]})]})}function u(e={}){const{wrapper:s}={...(0,o.a)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},1151:(e,s,t)=>{t.d(s,{Z:()=>c,a:()=>r});var n=t(7294);const o={},a=n.createContext(o);function r(e){const s=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(a.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6633a546.eae2ef23.js b/assets/js/6633a546.eae2ef23.js deleted file mode 100644 index e7ff112..0000000 --- a/assets/js/6633a546.eae2ef23.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[52],{8250:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>c,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>i});var n=t(5893),o=t(1151);const a={},r="Local Feeds",l={id:"vs/local-feeds",title:"Local Feeds",description:"This page is a work in progress!",source:"@site/docs/vs/local-feeds.md",sourceDirName:"vs",slug:"/vs/local-feeds",permalink:"/docs/vs/local-feeds",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/vs/local-feeds.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"LiGet",permalink:"/docs/vs/liget"},next:{title:"MyGet",permalink:"/docs/vs/myget"}},c={},i=[{value:"BaGetter vs local feeds",id:"bagetter-vs-local-feeds",level:2}];function d(e){const s={a:"a",admonition:"admonition",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",...(0,o.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(s.h1,{id:"local-feeds",children:"Local Feeds"}),"\n",(0,n.jsx)(s.admonition,{type:"warning",children:(0,n.jsx)(s.p,{children:"This page is a work in progress!"})}),"\n",(0,n.jsxs)(s.p,{children:[(0,n.jsx)(s.a,{href:"https://docs.microsoft.com/en-us/nuget/hosting-packages/local-feeds",children:"Local feeds"}),', also known as "folder feeds", let you\nuse a folder as a NuGet package source. You can access these packages using a network share.']}),"\n",(0,n.jsx)(s.h2,{id:"bagetter-vs-local-feeds",children:"BaGetter vs local feeds"}),"\n",(0,n.jsx)(s.p,{children:"Local feeds are very simple and are lack features like:"}),"\n",(0,n.jsxs)(s.ol,{children:["\n",(0,n.jsx)(s.li,{children:"Search functionality"}),"\n",(0,n.jsx)(s.li,{children:"A user interface to browse your packages"}),"\n",(0,n.jsx)(s.li,{children:"Authentication for package uploads"}),"\n",(0,n.jsx)(s.li,{children:"Cloud storage for large feeds"}),"\n"]})]})}function u(e={}){const{wrapper:s}={...(0,o.a)(),...e.components};return s?(0,n.jsx)(s,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},1151:(e,s,t)=>{t.d(s,{Z:()=>l,a:()=>r});var n=t(7294);const o={},a=n.createContext(o);function r(e){const s=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(a.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6c57e7b8.2283a575.js b/assets/js/6c57e7b8.2283a575.js new file mode 100644 index 0000000..19abfab --- /dev/null +++ b/assets/js/6c57e7b8.2283a575.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[762],{3622:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var o=r(5893),t=r(1151);const a={},i="Import nuget.org packages",s={id:"Import/nugetorg",title:"Import nuget.org packages",description:"This page is a work in progress!",source:"@site/docs/Import/nugetorg.md",sourceDirName:"Import",slug:"/Import/nugetorg",permalink:"/docs/Import/nugetorg",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Import/nugetorg.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Import packages from a local feed",permalink:"/docs/Import/local-feeds"},next:{title:"Import NuGet.Server packages",permalink:"/docs/Import/nugetserver"}},l={},c=[{value:"Mirroring",id:"mirroring",level:2},{value:"Importing package downloads from nuget.org",id:"importing-package-downloads-from-nugetorg",level:2},{value:"Importing all nuget.org packages",id:"importing-all-nugetorg-packages",level:2}];function g(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h1,{id:"import-nugetorg-packages",children:"Import nuget.org packages"}),"\n",(0,o.jsx)(n.admonition,{type:"warning",children:(0,o.jsx)(n.p,{children:"This page is a work in progress!"})}),"\n",(0,o.jsx)(n.h2,{id:"mirroring",children:"Mirroring"}),"\n",(0,o.jsxs)(n.p,{children:["You can configure BaGetter to mirror nuget.org. For example, say you install BaGetter, enable mirroring, and try to install the package\n",(0,o.jsx)(n.a,{href:"https://www.nuget.org/packages/Newtonsoft.Json/",children:(0,o.jsx)(n.code,{children:"Newtonsoft.Json"})}),'. BaGetter doesn\'t have this package yet, so it will\nautomatically index this package from nuget.org. This is also known as "read-through caching".']}),"\n",(0,o.jsxs)(n.p,{children:["For more information, please see ",(0,o.jsx)(n.a,{href:"../configuration#enable-read-through-caching",children:"Enable read-through caching"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"importing-package-downloads-from-nugetorg",children:"Importing package downloads from nuget.org"}),"\n",(0,o.jsx)(n.p,{children:"You can import package downloads from nuget.org:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["Navigate to ",(0,o.jsx)(n.code,{children:".\\BaGetter\\src\\BaGetter"})]}),"\n",(0,o.jsx)(n.li,{children:"Run:"}),"\n"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-shell",children:"dotnet run -- import-downloads\n"})}),"\n",(0,o.jsx)(n.h2,{id:"importing-all-nugetorg-packages",children:"Importing all nuget.org packages"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"TODO Check-in code"}),"\n",(0,o.jsx)(n.li,{children:"Explain scaling"}),"\n",(0,o.jsx)(n.li,{children:"Rebuild indexes at end"}),"\n",(0,o.jsx)(n.li,{children:"Importing downloads from nuget.org"}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(g,{...e})}):g(e)}},1151:(e,n,r)=>{r.d(n,{Z:()=>s,a:()=>i});var o=r(7294);const t={},a=o.createContext(t);function i(e){const n=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:i(e.components),o.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6c57e7b8.b6f2b698.js b/assets/js/6c57e7b8.b6f2b698.js deleted file mode 100644 index 4357b66..0000000 --- a/assets/js/6c57e7b8.b6f2b698.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[762],{3622:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>a,metadata:()=>s,toc:()=>c});var t=r(5893),o=r(1151);const a={},i="Import nuget.org packages",s={id:"Import/nugetorg",title:"Import nuget.org packages",description:"This page is a work in progress!",source:"@site/docs/Import/nugetorg.md",sourceDirName:"Import",slug:"/Import/nugetorg",permalink:"/docs/Import/nugetorg",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Import/nugetorg.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Import packages from a local feed",permalink:"/docs/Import/local-feeds"},next:{title:"Import NuGet.Server packages",permalink:"/docs/Import/nugetserver"}},l={},c=[{value:"Mirroring",id:"mirroring",level:2},{value:"Importing package downloads from nuget.org",id:"importing-package-downloads-from-nugetorg",level:2},{value:"Importing all nuget.org packages",id:"importing-all-nugetorg-packages",level:2}];function g(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,o.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"import-nugetorg-packages",children:"Import nuget.org packages"}),"\n",(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This page is a work in progress!"})}),"\n",(0,t.jsx)(n.h2,{id:"mirroring",children:"Mirroring"}),"\n",(0,t.jsxs)(n.p,{children:["You can configure BaGetter to mirror nuget.org. For example, say you install BaGetter, enable mirroring, and try to install the package\n",(0,t.jsx)(n.a,{href:"https://www.nuget.org/packages/Newtonsoft.Json/",children:(0,t.jsx)(n.code,{children:"Newtonsoft.Json"})}),'. BaGetter doesn\'t have this package yet, so it will\nautomatically index this package from nuget.org. This is also known as "read-through caching".']}),"\n",(0,t.jsxs)(n.p,{children:["For more information, please see ",(0,t.jsx)(n.a,{href:"../configuration#enable-read-through-caching",children:"Enable read-through caching"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"importing-package-downloads-from-nugetorg",children:"Importing package downloads from nuget.org"}),"\n",(0,t.jsx)(n.p,{children:"You can import package downloads from nuget.org:"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["Navigate to ",(0,t.jsx)(n.code,{children:".\\BaGetter\\src\\BaGetter"})]}),"\n",(0,t.jsx)(n.li,{children:"Run:"}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"dotnet run -- import-downloads\n"})}),"\n",(0,t.jsx)(n.h2,{id:"importing-all-nugetorg-packages",children:"Importing all nuget.org packages"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"TODO Check-in code"}),"\n",(0,t.jsx)(n.li,{children:"Explain scaling"}),"\n",(0,t.jsx)(n.li,{children:"Rebuild indexes at end"}),"\n",(0,t.jsx)(n.li,{children:"Importing downloads from nuget.org"}),"\n"]})]})}function d(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(g,{...e})}):g(e)}},1151:(e,n,r)=>{r.d(n,{Z:()=>s,a:()=>i});var t=r(7294);const o={},a=t.createContext(o);function i(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),t.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9ed00105.3e27619b.js b/assets/js/9ed00105.3e27619b.js new file mode 100644 index 0000000..d96b4d2 --- /dev/null +++ b/assets/js/9ed00105.3e27619b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[4],{8373:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var i=s(5893),t=s(1151);const a={},r="Configuration",o={id:"configuration",title:"Configuration",description:"You can modify BaGetter's configurations by editing the appsettings.json file.",source:"@site/docs/configuration.md",sourceDirName:".",slug:"/configuration",permalink:"/docs/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/configuration.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Run BaGetter on your Computer",permalink:"/docs/Installation/local"},next:{title:"Artifactory",permalink:"/docs/vs/artifactory"}},c={},l=[{value:"Require an API key",id:"require-an-api-key",level:2},{value:"Enable read-through caching",id:"enable-read-through-caching",level:2},{value:"Enable package hard deletions",id:"enable-package-hard-deletions",level:2},{value:"Enable package overwrites",id:"enable-package-overwrites",level:2},{value:"Private feeds",id:"private-feeds",level:2},{value:"Database configuration",id:"database-configuration",level:2},{value:"Environment Variables",id:"environment-variables",level:3},{value:"appsettings.json",id:"appsettingsjson",level:3},{value:"IIS server options",id:"iis-server-options",level:2},{value:"Health Endpoint",id:"health-endpoint",level:2},{value:"Maximum package size",id:"maximum-package-size",level:2},{value:"Statistics",id:"statistics",level:2},{value:"Load secrets from files",id:"load-secrets-from-files",level:2},{value:"Docker Compose example",id:"docker-compose-example",level:3}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"configuration",children:"Configuration"}),"\n",(0,i.jsxs)(n.p,{children:["You can modify BaGetter's configurations by editing the ",(0,i.jsx)(n.code,{children:"appsettings.json"})," file."]}),"\n",(0,i.jsx)(n.h2,{id:"require-an-api-key",children:"Require an API key"}),"\n",(0,i.jsxs)(n.p,{children:["You can require that users provide a password, called an API key, to publish packages.\nTo do so, you can insert the desired API key in the ",(0,i.jsx)(n.code,{children:"ApiKey"})," field."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "ApiKey": "NUGET-SERVER-API-KEY",\n ...\n}\n'})}),"\n",(0,i.jsx)(n.p,{children:"Users will now have to provide the API key to push packages:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json -k NUGET-SERVER-API-KEY package.1.0.0.nupkg\n"})}),"\n",(0,i.jsx)(n.h2,{id:"enable-read-through-caching",children:"Enable read-through caching"}),"\n",(0,i.jsx)(n.p,{children:"Read-through caching lets you index packages from an upstream source. You can use read-through\ncaching to:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Speed up your builds if restores from ",(0,i.jsx)(n.a,{href:"https://nuget.org",children:"nuget.org"})," are slow"]}),"\n",(0,i.jsx)(n.li,{children:"Enable package restores in offline scenarios"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["The following ",(0,i.jsx)(n.code,{children:"Mirror"})," setting configures BaGetter to index packages from ",(0,i.jsx)(n.a,{href:"https://nuget.org",children:"nuget.org"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Mirror": {\n "Enabled": true,\n "PackageSource": "https://api.nuget.org/v3/index.json"\n },\n\n ...\n}\n'})}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"PackageSource"})," is the value of the ",(0,i.jsx)(n.a,{href:"https://docs.microsoft.com/nuget/api/service-index",children:"NuGet service index"}),"."]})}),"\n",(0,i.jsx)(n.h2,{id:"enable-package-hard-deletions",children:"Enable package hard deletions"}),"\n",(0,i.jsxs)(n.p,{children:["To prevent the ",(0,i.jsx)(n.a,{href:"https://blog.npmjs.org/post/141577284765/kik-left-pad-and-npm",children:'"left pad" problem'}),",\nBaGetter's default configuration doesn't allow package deletions. Whenever BaGetter receives a package deletion\nrequest, it will instead \"unlist\" the package. An unlisted package is undiscoverable but can still be\ndownloaded if you know the package's id and version. You can override this behavior by setting the\n",(0,i.jsx)(n.code,{children:"PackageDeletionBehavior"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "PackageDeletionBehavior": "HardDelete",\n\n ...\n}\n'})}),"\n",(0,i.jsx)(n.h2,{id:"enable-package-overwrites",children:"Enable package overwrites"}),"\n",(0,i.jsxs)(n.p,{children:["Normally, BaGetter will reject a package upload if the id and version are already taken. This is to maintain the ",(0,i.jsx)(n.a,{href:"https://learn.microsoft.com/azure/devops/artifacts/artifacts-key-concepts?view=azure-devops#immutability",children:"immutability of semantically versioned packages"}),"."]}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"NuGet clients cache packages on multiple levels, so overwriting a package can lead to unexpected behavior.\nA client may have a cached version of the package that is different from the one on the server.\nMake sure that everyone involved is aware of the implications of overwriting packages."})}),"\n",(0,i.jsxs)(n.p,{children:["You can configure BaGetter to overwrite the already existing package by setting ",(0,i.jsx)(n.code,{children:"AllowPackageOverwrites"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "AllowPackageOverwrites": "true",\n\n ...\n}\n'})}),"\n",(0,i.jsxs)(n.p,{children:["To allow pre-release versions to be overwritten but not stable releases, set ",(0,i.jsx)(n.code,{children:"AllowPackageOverwrites"})," to ",(0,i.jsx)(n.code,{children:"PrereleaseOnly"}),"."]}),"\n",(0,i.jsx)(n.p,{children:'Pushing a package with a pre-release version like "3.1.0-SNAPSHOT" will overwrite the existing "3.1.0-SNAPSHOT" package, but pushing a "3.1.0" package will fail if a "3.1.0" package already exists.'}),"\n",(0,i.jsx)(n.h2,{id:"private-feeds",children:"Private feeds"}),"\n",(0,i.jsx)(n.p,{children:"A private feed requires users to authenticate before accessing packages."}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsxs)(n.p,{children:["Private feeds are not supported at this time! See ",(0,i.jsx)(n.a,{href:"https://github.com/loic-sharma/BaGet/pull/69",children:"this pull request"})," for more information."]})}),"\n",(0,i.jsx)(n.h2,{id:"database-configuration",children:"Database configuration"}),"\n",(0,i.jsx)(n.p,{children:"BaGetter supports multiple database engines for storing package information:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["MySQL: ",(0,i.jsx)(n.code,{children:"MySql"})]}),"\n",(0,i.jsxs)(n.li,{children:["SQLite: ",(0,i.jsx)(n.code,{children:"Sqlite"})]}),"\n",(0,i.jsxs)(n.li,{children:["SQL Server: ",(0,i.jsx)(n.code,{children:"SqlServer"})]}),"\n",(0,i.jsxs)(n.li,{children:["PostgreSQL: ",(0,i.jsx)(n.code,{children:"PostgreSql"})]}),"\n",(0,i.jsxs)(n.li,{children:["Azure Table Storage: ",(0,i.jsx)(n.code,{children:"AzureTable"})]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Each database engine requires a connection string to configure the connection. Please refer to ",(0,i.jsx)(n.a,{href:"https://www.connectionstrings.com/",children:"ConnectionStrings.com"})," to learn how to create the proper connection string for each database engine."]}),"\n",(0,i.jsxs)(n.p,{children:["You may configure the chosen database engine either using environment variables or by editing the ",(0,i.jsx)(n.code,{children:"appsettings.json"})," file."]}),"\n",(0,i.jsx)(n.h3,{id:"environment-variables",children:"Environment Variables"}),"\n",(0,i.jsx)(n.p,{children:"There are two environment variables related to database configuration. These are:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Database__Type"}),": The database engine to use, this should be one of the strings from the above list such as ",(0,i.jsx)(n.code,{children:"PostgreSql"})," or ",(0,i.jsx)(n.code,{children:"Sqlite"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Database__ConnectionString"}),": The connection string for your database engine."]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"appsettingsjson",children:(0,i.jsx)(n.code,{children:"appsettings.json"})}),"\n",(0,i.jsxs)(n.p,{children:["The database settings are located under the ",(0,i.jsx)(n.code,{children:"Database"})," key in the ",(0,i.jsx)(n.code,{children:"appsettings.json"})," configuration file:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Database": {\n "Type": "Sqlite",\n "ConnectionString": "Data Source=bagetter.db"\n },\n\n ...\n}\n'})}),"\n",(0,i.jsx)(n.p,{children:"There are two settings related to the database configuration:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Type"}),": The database engine to use, this should be one of the strings from the above list such as ",(0,i.jsx)(n.code,{children:"PostgreSql"})," or ",(0,i.jsx)(n.code,{children:"Sqlite"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"ConnectionString"}),": The connection string for your database engine."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"iis-server-options",children:"IIS server options"}),"\n",(0,i.jsxs)(n.p,{children:["IIS Server options can be configured under the ",(0,i.jsx)(n.code,{children:"IISServerOptions"})," key. The available options are detailed at ",(0,i.jsx)(n.a,{href:"https://docs.microsoft.com/dotnet/api/microsoft.aspnetcore.builder.iisserveroptions",children:"docs.microsoft.com"})]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["If not specified, the ",(0,i.jsx)(n.code,{children:"MaxRequestBodySize"})," in BaGetter defaults to 250MB (262144000 bytes), rather than the ASP.NET Core default of 30MB."]})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "IISServerOptions": {\n "MaxRequestBodySize": 262144000\n },\n\n ...\n}\n'})}),"\n",(0,i.jsx)(n.h2,{id:"health-endpoint",children:"Health Endpoint"}),"\n",(0,i.jsxs)(n.p,{children:["A health endpoint is exposed at ",(0,i.jsx)(n.code,{children:"/health"})," that returns 200 OK or 503 Service Unavailable and always includes a json object listing the current status of the application:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "Status": "Healthy",\n "Sqlite": "Healthy",\n ...\n}\n'})}),"\n",(0,i.jsxs)(n.p,{children:["The services can be omitted by setting the ",(0,i.jsx)(n.code,{children:"Statistics:ListConfiguredServices"})," to false, in which case only the ",(0,i.jsx)(n.code,{children:"Status"})," property is returned in the json object."]}),"\n",(0,i.jsx)(n.p,{children:'This path and the name of the "Status" property are configurable if needed:'}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "HealthCheck": {\n "Path": "/healthz",\n "StatusPropertyName": "Status"\n },\n\n ...\n}\n'})}),"\n",(0,i.jsx)(n.h2,{id:"maximum-package-size",children:"Maximum package size"}),"\n",(0,i.jsxs)(n.p,{children:["The max package size default to 8GiB and can be configured using the ",(0,i.jsx)(n.code,{children:"MaxPackageSizeGiB"})," setting. The NuGet gallery currently has a 250MB limit, which is enough for most packages.\nThis can be useful if you are hosting a private feed and need to host large packages that include chocolatey installers, machine learning models, etc."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "MaxPackageSizeGiB": 8,\n\n ...\n}\n'})}),"\n",(0,i.jsx)(n.h2,{id:"statistics",children:"Statistics"}),"\n",(0,i.jsxs)(n.p,{children:["On the application's statistics page the currently used services are listed.\nYou can hide or show this part by modifying the ",(0,i.jsx)(n.code,{children:"EnableStatisticsPage"})," configuration:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Statistics": {\n "EnableStatisticsPage": false,\n "ListConfiguredServices": false\n },\n\n ...\n}\n'})}),"\n",(0,i.jsxs)(n.p,{children:["If you set ",(0,i.jsx)(n.code,{children:"ListConfiguredServices"})," to ",(0,i.jsx)(n.code,{children:"true"})," the currently used services for database and storage are shown on the stats page."]}),"\n",(0,i.jsx)(n.h2,{id:"load-secrets-from-files",children:"Load secrets from files"}),"\n",(0,i.jsxs)(n.p,{children:["Mostly useful when running containerised (e.g. using Docker, Podman, Kubernetes, etc), the application will look for files named in the same pattern as environment variables under ",(0,i.jsx)(n.code,{children:"/run/secrets"}),"."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-shell",children:"/run/secrets/Database__ConnectionString\n"})}),"\n",(0,i.jsx)(n.p,{children:"This allows for sensitive values to be provided individually to the application, typically by bind-mounting files."}),"\n",(0,i.jsx)(n.h3,{id:"docker-compose-example",children:"Docker Compose example"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-yaml",children:"version: '2'\n\nservices:\n bagetter:\n image: bagetter/bagetter:latest\n volumes:\n # Single file mounted for API key\n - ./secrets/api-key.txt:/run/secrets/ApiKey:ro\n - ./data:/srv/baget\n environment:\n - Database__ConnectionString=Data Source=/srv/baget/bagetter.db\n - Database__Type=Sqlite\n - Mirror__Enabled=false\n - Storage__Type=FileSystem\n - Storage__Path=/srv/baget/packages\n"})}),"\n",(0,i.jsx)(n.p,{children:"Aditional documentation for secrets:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.docker.com/compose/use-secrets",children:"How to use secrets in Docker Compose"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.docker.com/engine/swarm/secrets",children:"Docker Swarm secrets"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://kubernetes.io/docs/concepts/configuration/secret",children:"Kubernetes secrets"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.microsoft.com/aspnet/core/fundamentals/configuration/#key-per-file-configuration-provider",children:"ASP.NET Core Documentation"})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>o,a:()=>r});var i=s(7294);const t={},a=i.createContext(t);function r(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9ed00105.c59907b4.js b/assets/js/9ed00105.c59907b4.js deleted file mode 100644 index 7698cfe..0000000 --- a/assets/js/9ed00105.c59907b4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[4],{8373:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>l});var s=i(5893),t=i(1151);const a={},r="Configuration",o={id:"configuration",title:"Configuration",description:"You can modify BaGetter's configurations by editing the appsettings.json file.",source:"@site/docs/configuration.md",sourceDirName:".",slug:"/configuration",permalink:"/docs/configuration",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/configuration.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Run BaGetter on your Computer",permalink:"/docs/Installation/local"},next:{title:"Artifactory",permalink:"/docs/vs/artifactory"}},c={},l=[{value:"Require an API key",id:"require-an-api-key",level:2},{value:"Enable read-through caching",id:"enable-read-through-caching",level:2},{value:"Enable package hard deletions",id:"enable-package-hard-deletions",level:2},{value:"Enable package overwrites",id:"enable-package-overwrites",level:2},{value:"Private feeds",id:"private-feeds",level:2},{value:"Database configuration",id:"database-configuration",level:2},{value:"Environment Variables",id:"environment-variables",level:3},{value:"appsettings.json",id:"appsettingsjson",level:3},{value:"IIS server options",id:"iis-server-options",level:2},{value:"Health Endpoint",id:"health-endpoint",level:2},{value:"Maximum package size",id:"maximum-package-size",level:2},{value:"Statistics",id:"statistics",level:2},{value:"Load secrets from files",id:"load-secrets-from-files",level:2},{value:"Docker Compose example",id:"docker-compose-example",level:3}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h1,{id:"configuration",children:"Configuration"}),"\n",(0,s.jsxs)(n.p,{children:["You can modify BaGetter's configurations by editing the ",(0,s.jsx)(n.code,{children:"appsettings.json"})," file."]}),"\n",(0,s.jsx)(n.h2,{id:"require-an-api-key",children:"Require an API key"}),"\n",(0,s.jsxs)(n.p,{children:["You can require that users provide a password, called an API key, to publish packages.\nTo do so, you can insert the desired API key in the ",(0,s.jsx)(n.code,{children:"ApiKey"})," field."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "ApiKey": "NUGET-SERVER-API-KEY",\n ...\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:"Users will now have to provide the API key to push packages:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json -k NUGET-SERVER-API-KEY package.1.0.0.nupkg\n"})}),"\n",(0,s.jsx)(n.h2,{id:"enable-read-through-caching",children:"Enable read-through caching"}),"\n",(0,s.jsx)(n.p,{children:"Read-through caching lets you index packages from an upstream source. You can use read-through\ncaching to:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Speed up your builds if restores from ",(0,s.jsx)(n.a,{href:"https://nuget.org",children:"nuget.org"})," are slow"]}),"\n",(0,s.jsx)(n.li,{children:"Enable package restores in offline scenarios"}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["The following ",(0,s.jsx)(n.code,{children:"Mirror"})," setting configures BaGetter to index packages from ",(0,s.jsx)(n.a,{href:"https://nuget.org",children:"nuget.org"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Mirror": {\n "Enabled": true,\n "PackageSource": "https://api.nuget.org/v3/index.json"\n },\n\n ...\n}\n'})}),"\n",(0,s.jsx)(n.admonition,{type:"info",children:(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.code,{children:"PackageSource"})," is the value of the ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/nuget/api/service-index",children:"NuGet service index"}),"."]})}),"\n",(0,s.jsx)(n.h2,{id:"enable-package-hard-deletions",children:"Enable package hard deletions"}),"\n",(0,s.jsxs)(n.p,{children:["To prevent the ",(0,s.jsx)(n.a,{href:"https://blog.npmjs.org/post/141577284765/kik-left-pad-and-npm",children:'"left pad" problem'}),",\nBaGetter's default configuration doesn't allow package deletions. Whenever BaGetter receives a package deletion\nrequest, it will instead \"unlist\" the package. An unlisted package is undiscoverable but can still be\ndownloaded if you know the package's id and version. You can override this behavior by setting the\n",(0,s.jsx)(n.code,{children:"PackageDeletionBehavior"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "PackageDeletionBehavior": "HardDelete",\n\n ...\n}\n'})}),"\n",(0,s.jsx)(n.h2,{id:"enable-package-overwrites",children:"Enable package overwrites"}),"\n",(0,s.jsxs)(n.p,{children:["Normally, BaGetter will reject a package upload if the id and version are already taken. This is to maintain the ",(0,s.jsx)(n.a,{href:"https://learn.microsoft.com/azure/devops/artifacts/artifacts-key-concepts?view=azure-devops#immutability",children:"immutability of semantically versioned packages"}),"."]}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsx)(n.p,{children:"NuGet clients cache packages on multiple levels, so overwriting a package can lead to unexpected behavior.\nA client may have a cached version of the package that is different from the one on the server.\nMake sure that everyone involved is aware of the implications of overwriting packages."})}),"\n",(0,s.jsxs)(n.p,{children:["You can configure BaGetter to overwrite the already existing package by setting ",(0,s.jsx)(n.code,{children:"AllowPackageOverwrites"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "AllowPackageOverwrites": "true",\n\n ...\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:["To allow pre-release versions to be overwritten but not stable releases, set ",(0,s.jsx)(n.code,{children:"AllowPackageOverwrites"})," to ",(0,s.jsx)(n.code,{children:"PrereleaseOnly"}),"."]}),"\n",(0,s.jsx)(n.p,{children:'Pushing a package with a pre-release version like "3.1.0-SNAPSHOT" will overwrite the existing "3.1.0-SNAPSHOT" package, but pushing a "3.1.0" package will fail if a "3.1.0" package already exists.'}),"\n",(0,s.jsx)(n.h2,{id:"private-feeds",children:"Private feeds"}),"\n",(0,s.jsx)(n.p,{children:"A private feed requires users to authenticate before accessing packages."}),"\n",(0,s.jsx)(n.admonition,{type:"warning",children:(0,s.jsxs)(n.p,{children:["Private feeds are not supported at this time! See ",(0,s.jsx)(n.a,{href:"https://github.com/loic-sharma/BaGet/pull/69",children:"this pull request"})," for more information."]})}),"\n",(0,s.jsx)(n.h2,{id:"database-configuration",children:"Database configuration"}),"\n",(0,s.jsx)(n.p,{children:"BaGetter supports multiple database engines for storing package information:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["MySQL: ",(0,s.jsx)(n.code,{children:"MySql"})]}),"\n",(0,s.jsxs)(n.li,{children:["SQLite: ",(0,s.jsx)(n.code,{children:"Sqlite"})]}),"\n",(0,s.jsxs)(n.li,{children:["SQL Server: ",(0,s.jsx)(n.code,{children:"SqlServer"})]}),"\n",(0,s.jsxs)(n.li,{children:["PostgreSQL: ",(0,s.jsx)(n.code,{children:"PostgreSql"})]}),"\n",(0,s.jsxs)(n.li,{children:["Azure Table Storage: ",(0,s.jsx)(n.code,{children:"AzureTable"})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Each database engine requires a connection string to configure the connection. Please refer to ",(0,s.jsx)(n.a,{href:"https://www.connectionstrings.com/",children:"ConnectionStrings.com"})," to learn how to create the proper connection string for each database engine."]}),"\n",(0,s.jsxs)(n.p,{children:["You may configure the chosen database engine either using environment variables or by editing the ",(0,s.jsx)(n.code,{children:"appsettings.json"})," file."]}),"\n",(0,s.jsx)(n.h3,{id:"environment-variables",children:"Environment Variables"}),"\n",(0,s.jsx)(n.p,{children:"There are two environment variables related to database configuration. These are:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Database__Type"}),": The database engine to use, this should be one of the strings from the above list such as ",(0,s.jsx)(n.code,{children:"PostgreSql"})," or ",(0,s.jsx)(n.code,{children:"Sqlite"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Database__ConnectionString"}),": The connection string for your database engine."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"appsettingsjson",children:(0,s.jsx)(n.code,{children:"appsettings.json"})}),"\n",(0,s.jsxs)(n.p,{children:["The database settings are located under the ",(0,s.jsx)(n.code,{children:"Database"})," key in the ",(0,s.jsx)(n.code,{children:"appsettings.json"})," configuration file:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Database": {\n "Type": "Sqlite",\n "ConnectionString": "Data Source=bagetter.db"\n },\n\n ...\n}\n'})}),"\n",(0,s.jsx)(n.p,{children:"There are two settings related to the database configuration:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Type"}),": The database engine to use, this should be one of the strings from the above list such as ",(0,s.jsx)(n.code,{children:"PostgreSql"})," or ",(0,s.jsx)(n.code,{children:"Sqlite"}),"."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"ConnectionString"}),": The connection string for your database engine."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"iis-server-options",children:"IIS server options"}),"\n",(0,s.jsxs)(n.p,{children:["IIS Server options can be configured under the ",(0,s.jsx)(n.code,{children:"IISServerOptions"})," key. The available options are detailed at ",(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/dotnet/api/microsoft.aspnetcore.builder.iisserveroptions",children:"docs.microsoft.com"})]}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsxs)(n.p,{children:["If not specified, the ",(0,s.jsx)(n.code,{children:"MaxRequestBodySize"})," in BaGetter defaults to 250MB (262144000 bytes), rather than the ASP.NET Core default of 30MB."]})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "IISServerOptions": {\n "MaxRequestBodySize": 262144000\n },\n\n ...\n}\n'})}),"\n",(0,s.jsx)(n.h2,{id:"health-endpoint",children:"Health Endpoint"}),"\n",(0,s.jsxs)(n.p,{children:["A health endpoint is exposed at ",(0,s.jsx)(n.code,{children:"/health"})," that returns 200 OK or 503 Service Unavailable and always includes a json object listing the current status of the application:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n "Status": "Healthy",\n "Sqlite": "Healthy",\n ...\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:["The services can be omitted by setting the ",(0,s.jsx)(n.code,{children:"Statistics:ListConfiguredServices"})," to false, in which case only the ",(0,s.jsx)(n.code,{children:"Status"})," property is returned in the json object."]}),"\n",(0,s.jsx)(n.p,{children:'This path and the name of the "Status" property are configurable if needed:'}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "HealthCheck": {\n "Path": "/healthz",\n "StatusPropertyName": "Status"\n },\n\n ...\n}\n'})}),"\n",(0,s.jsx)(n.h2,{id:"maximum-package-size",children:"Maximum package size"}),"\n",(0,s.jsxs)(n.p,{children:["The max package size default to 8GiB and can be configured using the ",(0,s.jsx)(n.code,{children:"MaxPackageSizeGiB"})," setting. The NuGet gallery currently has a 250MB limit, which is enough for most packages.\nThis can be useful if you are hosting a private feed and need to host large packages that include chocolatey installers, machine learning models, etc."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "MaxPackageSizeGiB": 8,\n\n ...\n}\n'})}),"\n",(0,s.jsx)(n.h2,{id:"statistics",children:"Statistics"}),"\n",(0,s.jsxs)(n.p,{children:["On the application's statistics page the currently used services are listed.\nYou can hide or show this part by modifying the ",(0,s.jsx)(n.code,{children:"EnableStatisticsPage"})," configuration:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Statistics": {\n "EnableStatisticsPage": false,\n "ListConfiguredServices": false\n },\n\n ...\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:["If you set ",(0,s.jsx)(n.code,{children:"ListConfiguredServices"})," to ",(0,s.jsx)(n.code,{children:"true"})," the currently used services for database and storage are shown on the stats page."]}),"\n",(0,s.jsx)(n.h2,{id:"load-secrets-from-files",children:"Load secrets from files"}),"\n",(0,s.jsxs)(n.p,{children:["Mostly useful when running containerised (e.g. using Docker, Podman, Kubernetes, etc), the application will look for files named in the same pattern as environment variables under ",(0,s.jsx)(n.code,{children:"/run/secrets"}),"."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"/run/secrets/Database__ConnectionString\n"})}),"\n",(0,s.jsx)(n.p,{children:"This allows for sensitive values to be provided individually to the application, typically by bind-mounting files."}),"\n",(0,s.jsx)(n.h3,{id:"docker-compose-example",children:"Docker Compose example"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:"version: '2'\n\nservices:\n bagetter:\n image: bagetter/bagetter:latest\n volumes:\n # Single file mounted for API key\n - ./secrets/api-key.txt:/run/secrets/ApiKey:ro\n - ./data:/srv/baget\n environment:\n - Database__ConnectionString=Data Source=/srv/baget/bagetter.db\n - Database__Type=Sqlite\n - Mirror__Enabled=false\n - Storage__Type=FileSystem\n - Storage__Path=/srv/baget/packages\n"})}),"\n",(0,s.jsx)(n.p,{children:"Aditional documentation for secrets:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.docker.com/compose/use-secrets",children:"How to use secrets in Docker Compose"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.docker.com/engine/swarm/secrets",children:"Docker Swarm secrets"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://kubernetes.io/docs/concepts/configuration/secret",children:"Kubernetes secrets"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.microsoft.com/aspnet/core/fundamentals/configuration/#key-per-file-configuration-provider",children:"ASP.NET Core Documentation"})}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,n,i)=>{i.d(n,{Z:()=>o,a:()=>r});var s=i(7294);const t={},a=s.createContext(t);function r(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/af21e6ba.5060cf0d.js b/assets/js/af21e6ba.5060cf0d.js deleted file mode 100644 index 2f6d0d1..0000000 --- a/assets/js/af21e6ba.5060cf0d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[974],{8678:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(5893),i=n(1151);const o={},a="Debugging BaGetter",s={id:"Advanced/debugging",title:"Debugging BaGetter",description:"This page is a work in progress!",source:"@site/docs/Advanced/debugging.md",sourceDirName:"Advanced",slug:"/Advanced/debugging",permalink:"/docs/Advanced/debugging",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Advanced/debugging.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Index",permalink:"/docs/"},next:{title:"BaGetter SDK",permalink:"/docs/Advanced/sdk"}},d={},c=[];function g(e){const t={admonition:"admonition",h1:"h1",p:"p",...(0,i.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"debugging-bagetter",children:"Debugging BaGetter"}),"\n",(0,r.jsx)(t.admonition,{type:"warning",children:(0,r.jsx)(t.p,{children:"This page is a work in progress!"})})]})}function u(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(g,{...e})}):g(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>s,a:()=>a});var r=n(7294);const i={},o=r.createContext(i);function a(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/af21e6ba.ae0a2561.js b/assets/js/af21e6ba.ae0a2561.js new file mode 100644 index 0000000..fa3e99f --- /dev/null +++ b/assets/js/af21e6ba.ae0a2561.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[974],{8678:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});var r=n(5893),i=n(1151);const o={},a="Debugging BaGetter",s={id:"Advanced/debugging",title:"Debugging BaGetter",description:"This page is a work in progress!",source:"@site/docs/Advanced/debugging.md",sourceDirName:"Advanced",slug:"/Advanced/debugging",permalink:"/docs/Advanced/debugging",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Advanced/debugging.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Index",permalink:"/docs/"},next:{title:"BaGetter SDK",permalink:"/docs/Advanced/sdk"}},d={},c=[];function g(e){const t={admonition:"admonition",h1:"h1",p:"p",...(0,i.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"debugging-bagetter",children:"Debugging BaGetter"}),"\n",(0,r.jsx)(t.admonition,{type:"warning",children:(0,r.jsx)(t.p,{children:"This page is a work in progress!"})})]})}function u(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(g,{...e})}):g(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>s,a:()=>a});var r=n(7294);const i={},o=r.createContext(i);function a(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b1e7123d.71d6eafb.js b/assets/js/b1e7123d.71d6eafb.js new file mode 100644 index 0000000..f2ff826 --- /dev/null +++ b/assets/js/b1e7123d.71d6eafb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[14],{9651:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>p,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var a=r(5893),t=r(1151),s=r(4866),o=r(5162);const l={},i="Run BaGetter on Azure",c={id:"Installation/azure",title:"Run BaGetter on Azure",description:"This page is a work in progress!",source:"@site/docs/Installation/azure.md",sourceDirName:"Installation",slug:"/Installation/azure",permalink:"/docs/Installation/azure",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Installation/azure.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Run BaGetter on AWS",permalink:"/docs/Installation/aws"},next:{title:"Run BaGetter on Docker",permalink:"/docs/Installation/docker"}},u={},d=[{value:"TODO",id:"todo",level:2},{value:"Configure BaGetter",id:"configure-bagetter",level:2},{value:"Azure SQL database",id:"azure-sql-database",level:3},{value:"Azure Blob Storage",id:"azure-blob-storage",level:3},{value:"Azure Search",id:"azure-search",level:3},{value:"Publish packages",id:"publish-packages",level:2},{value:"Restore packages",id:"restore-packages",level:2},{value:"Symbol server",id:"symbol-server",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,t.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h1,{id:"run-bagetter-on-azure",children:"Run BaGetter on Azure"}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"This page is a work in progress!"})}),"\n",(0,a.jsxs)(n.p,{children:["Use Azure to scale BaGetter. You can store metadata on ",(0,a.jsx)(n.a,{href:"https://azure.microsoft.com/products/azure-sql/database/",children:"Azure SQL Database"}),", upload packages to ",(0,a.jsx)(n.a,{href:"https://azure.microsoft.com/products/storage/blobs/",children:"Azure Blob Storage"}),", and soon provide powerful search using ",(0,a.jsx)(n.a,{href:"https://azure.microsoft.com/en-us/services/search/",children:"Azure Search"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"todo",children:"TODO"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"App Service"}),"\n",(0,a.jsx)(n.li,{children:"Table Storage"}),"\n",(0,a.jsx)(n.li,{children:"High availability setup"}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"configure-bagetter",children:"Configure BaGetter"}),"\n",(0,a.jsxs)(n.p,{children:["You can modify BaGetter's configurations by editing the ",(0,a.jsx)(n.code,{children:"appsettings.json"})," file or through ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-8.0#non-prefixed-environment-variables",children:"environment variables"}),". For the full list of configurations, please refer to ",(0,a.jsx)(n.a,{href:"/docs/configuration",children:"BaGetter's configuration"})," guide."]}),"\n",(0,a.jsx)(n.h3,{id:"azure-sql-database",children:"Azure SQL database"}),"\n",(0,a.jsxs)(n.p,{children:["Set the database type to ",(0,a.jsx)(n.code,{children:"SqlServer"})," and provide a ",(0,a.jsx)(n.a,{href:"https://learn.microsoft.com/ef/core/miscellaneous/connection-strings",children:"connection string"}),":"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Database": {\n "Type": "SqlServer",\n "ConnectionString": "..."\n },\n\n ...\n}\n'})}),"\n",(0,a.jsx)(n.h3,{id:"azure-blob-storage",children:"Azure Blob Storage"}),"\n",(0,a.jsxs)(n.p,{children:["Set the storage type to ",(0,a.jsx)(n.code,{children:"AzureBlobStorage"})," and provide a container name to use and credentials:"]}),"\n",(0,a.jsxs)(s.Z,{groupId:"blob-storage",children:[(0,a.jsxs)(o.Z,{value:"accessKey",label:"Access Key",default:!0,children:[(0,a.jsx)(n.p,{children:"To use account name and access key, add them like this:"}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Storage": {\n "Type": "AzureBlobStorage",\n "Container": "my-container",\n "AccountName": "my-account",\n "AccessKey": "abcd1234"\n },\n\n ...\n}\n'})})]}),(0,a.jsxs)(o.Z,{value:"connectionString",label:"Connection string",children:[(0,a.jsx)(n.p,{children:"To use a connection string, add it like this:"}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Storage": {\n "Type": "AzureBlobStorage",\n "Container": "my-container",\n "ConnectionString": "AccountName=my-account;AccountKey=abcd1234;..."\n },\n\n ...\n}\n'})})]})]}),"\n",(0,a.jsx)(n.h3,{id:"azure-search",children:"Azure Search"}),"\n",(0,a.jsxs)(n.p,{children:["Azure Search is currently not available due to significant API changes BaGetter has to make. Once it's available, you can set the search type to ",(0,a.jsx)(n.code,{children:"AzureSearch"})," and provide an account name and API key:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Search": {\n "Type": "AzureSearch",\n "AccountName": "my-account",\n "ApiKey": "ABCD1234"\n },\n\n ...\n}\n'})}),"\n",(0,a.jsx)(n.h2,{id:"publish-packages",children:"Publish packages"}),"\n",(0,a.jsx)(n.p,{children:"Publish your first package with:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json package.1.0.0.nupkg\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Publish your first ",(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg",children:"symbol package"})," with:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json symbol.package.1.0.0.snupkg\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["You should secure your server by requiring an API Key to publish packages. For more information, please refer to the ",(0,a.jsx)(n.a,{href:"/docs/configuration#require-an-api-key",children:"Require an API Key"})," guide."]})}),"\n",(0,a.jsx)(n.h2,{id:"restore-packages",children:"Restore packages"}),"\n",(0,a.jsx)(n.p,{children:"You can restore packages by using the following package source:"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"http://localhost:5000/v3/index.json"})}),"\n",(0,a.jsx)(n.p,{children:"Some helpful guides:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/nuget/consume-packages/install-use-packages-visual-studio#package-sources",children:"Visual Studio"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/nuget/reference/nuget-config-file#package-source-sections",children:"NuGet.config"})}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"symbol-server",children:"Symbol server"}),"\n",(0,a.jsx)(n.p,{children:"You can load symbols by using the following symbol location:"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"http://localhost:5000/api/download/symbols"})}),"\n",(0,a.jsxs)(n.p,{children:["For Visual Studio, please refer to the ",(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2017#configure-symbol-locations-and-loading-options",children:"Configure Debugging"})," guide."]})]})}function p(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},5162:(e,n,r)=>{r.d(n,{Z:()=>o});r(7294);var a=r(512);const t={tabItem:"tabItem_Ymn6"};var s=r(5893);function o(e){let{children:n,hidden:r,className:o}=e;return(0,s.jsx)("div",{role:"tabpanel",className:(0,a.Z)(t.tabItem,o),hidden:r,children:n})}},4866:(e,n,r)=>{r.d(n,{Z:()=>k});var a=r(7294),t=r(512),s=r(2466),o=r(6550),l=r(469),i=r(1980),c=r(7392),u=r(12);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:r}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:r,attributes:a,default:t}}=e;return{value:n,label:r,attributes:a,default:t}}))}(r);return function(e){const n=(0,c.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,r])}function p(e){let{value:n,tabValues:r}=e;return r.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:r}=e;const t=(0,o.k6)(),s=function(e){let{queryString:n=!1,groupId:r}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!r)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return r??null}({queryString:n,groupId:r});return[(0,i._X)(s),(0,a.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(t.location.search);n.set(s,e),t.replace({...t.location,search:n.toString()})}),[s,t])]}function b(e){const{defaultValue:n,queryString:r=!1,groupId:t}=e,s=h(e),[o,i]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:r}=e;if(0===r.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:r}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${r.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=r.find((e=>e.default))??r[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:s}))),[c,d]=g({queryString:r,groupId:t}),[b,f]=function(e){let{groupId:n}=e;const r=function(e){return e?`docusaurus.tab.${e}`:null}(n),[t,s]=(0,u.Nk)(r);return[t,(0,a.useCallback)((e=>{r&&s.set(e)}),[r,s])]}({groupId:t}),m=(()=>{const e=c??b;return p({value:e,tabValues:s})?e:null})();(0,l.Z)((()=>{m&&i(m)}),[m]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,s]),tabValues:s}}var f=r(2389);const m={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=r(5893);function x(e){let{className:n,block:r,selectedValue:a,selectValue:o,tabValues:l}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,s.o5)(),u=e=>{const n=e.currentTarget,r=i.indexOf(n),t=l[r].value;t!==a&&(c(n),o(t))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const r=i.indexOf(e.currentTarget)+1;n=i[r]??i[0];break}case"ArrowLeft":{const r=i.indexOf(e.currentTarget)-1;n=i[r]??i[i.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,t.Z)("tabs",{"tabs--block":r},n),children:l.map((e=>{let{value:n,label:r,attributes:s}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...s,className:(0,t.Z)("tabs__item",m.tabItem,s?.className,{"tabs__item--active":a===n}),children:r??n},n)}))})}function j(e){let{lazy:n,children:r,selectedValue:t}=e;const s=(Array.isArray(r)?r:[r]).filter(Boolean);if(n){const e=s.find((e=>e.props.value===t));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:s.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==t})))})}function y(e){const n=b(e);return(0,v.jsxs)("div",{className:(0,t.Z)("tabs-container",m.tabList),children:[(0,v.jsx)(x,{...e,...n}),(0,v.jsx)(j,{...e,...n})]})}function k(e){const n=(0,f.Z)();return(0,v.jsx)(y,{...e,children:d(e.children)},String(n))}},1151:(e,n,r)=>{r.d(n,{Z:()=>l,a:()=>o});var a=r(7294);const t={},s=a.createContext(t);function o(e){const n=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),a.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b1e7123d.d47ae0ab.js b/assets/js/b1e7123d.d47ae0ab.js deleted file mode 100644 index 5dca3cd..0000000 --- a/assets/js/b1e7123d.d47ae0ab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[14],{9651:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>d,frontMatter:()=>t,metadata:()=>i,toc:()=>l});var r=s(5893),a=s(1151);const t={},o="Run BaGetter on Azure",i={id:"Installation/azure",title:"Run BaGetter on Azure",description:"This page is a work in progress!",source:"@site/docs/Installation/azure.md",sourceDirName:"Installation",slug:"/Installation/azure",permalink:"/docs/Installation/azure",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Installation/azure.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Run BaGetter on AWS",permalink:"/docs/Installation/aws"},next:{title:"Run BaGetter on Docker",permalink:"/docs/Installation/docker"}},c={},l=[{value:"TODO",id:"todo",level:2},{value:"Configure BaGetter",id:"configure-bagetter",level:2},{value:"Azure SQL database",id:"azure-sql-database",level:3},{value:"Azure Blob Storage",id:"azure-blob-storage",level:3},{value:"Azure Search",id:"azure-search",level:3},{value:"Publish packages",id:"publish-packages",level:2},{value:"Restore packages",id:"restore-packages",level:2},{value:"Symbol server",id:"symbol-server",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,a.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h1,{id:"run-bagetter-on-azure",children:"Run BaGetter on Azure"}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsx)(n.p,{children:"This page is a work in progress!"})}),"\n",(0,r.jsxs)(n.p,{children:["Use Azure to scale BaGetter. You can store metadata on ",(0,r.jsx)(n.a,{href:"https://azure.microsoft.com/en-us/services/sql-database/",children:"Azure SQL Database"}),", upload packages to ",(0,r.jsx)(n.a,{href:"https://azure.microsoft.com/en-us/services/storage/blobs/",children:"Azure Blob Storage"}),", and provide powerful search using ",(0,r.jsx)(n.a,{href:"https://azure.microsoft.com/en-us/services/search/",children:"Azure Search"}),"."]}),"\n",(0,r.jsx)(n.h2,{id:"todo",children:"TODO"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"App Service"}),"\n",(0,r.jsx)(n.li,{children:"Table Storage"}),"\n",(0,r.jsx)(n.li,{children:"High availability setup"}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"configure-bagetter",children:"Configure BaGetter"}),"\n",(0,r.jsxs)(n.p,{children:["You can modify BaGetter's configurations by editing the ",(0,r.jsx)(n.code,{children:"appsettings.json"})," file. For the full list of configurations, please refer to ",(0,r.jsx)(n.a,{href:"/docs/configuration",children:"BaGetter's configuration"})," guide."]}),"\n",(0,r.jsx)(n.h3,{id:"azure-sql-database",children:"Azure SQL database"}),"\n",(0,r.jsxs)(n.p,{children:["Update the ",(0,r.jsx)(n.code,{children:"appsettings.json"})," file:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Database": {\n "Type": "SqlServer",\n "ConnectionString": "..."\n },\n\n ...\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"azure-blob-storage",children:"Azure Blob Storage"}),"\n",(0,r.jsxs)(n.p,{children:["Update the ",(0,r.jsx)(n.code,{children:"appsettings.json"})," file:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Storage": {\n "Type": "AzureBlobStorage",\n "AccountName": "my-account",\n "AccessKey": "abcd1234",\n "Container": "my-container"\n },\n\n ...\n}\n'})}),"\n",(0,r.jsx)(n.p,{children:"Alternatively, you can use a full Azure Storage connection string:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Storage": {\n "Type": "AzureBlobStorage",\n "ConnectionString": "AccountName=my-account;AccountKey=abcd1234;...",\n "Container": "my-container"\n },\n\n ...\n}\n'})}),"\n",(0,r.jsx)(n.h3,{id:"azure-search",children:"Azure Search"}),"\n",(0,r.jsxs)(n.p,{children:["Update the ",(0,r.jsx)(n.code,{children:"appsettings.json"})," file:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Search": {\n "Type": "Azure",\n "AccountName": "my-account",\n "ApiKey": "ABCD1234"\n },\n\n ...\n}\n'})}),"\n",(0,r.jsx)(n.h2,{id:"publish-packages",children:"Publish packages"}),"\n",(0,r.jsx)(n.p,{children:"Publish your first package with:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json package.1.0.0.nupkg\n"})}),"\n",(0,r.jsxs)(n.p,{children:["Publish your first ",(0,r.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg",children:"symbol package"})," with:"]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json symbol.package.1.0.0.snupkg\n"})}),"\n",(0,r.jsx)(n.admonition,{type:"warning",children:(0,r.jsxs)(n.p,{children:["You should secure your server by requiring an API Key to publish packages. For more information, please refer to the ",(0,r.jsx)(n.a,{href:"/docs/configuration#require-an-api-key",children:"Require an API Key"})," guide."]})}),"\n",(0,r.jsx)(n.h2,{id:"restore-packages",children:"Restore packages"}),"\n",(0,r.jsx)(n.p,{children:"You can restore packages by using the following package source:"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.code,{children:"http://localhost:5000/v3/index.json"})}),"\n",(0,r.jsx)(n.p,{children:"Some helpful guides:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio#package-sources",children:"Visual Studio"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file#package-source-sections",children:"NuGet.config"})}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"symbol-server",children:"Symbol server"}),"\n",(0,r.jsx)(n.p,{children:"You can load symbols by using the following symbol location:"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.code,{children:"http://localhost:5000/api/download/symbols"})}),"\n",(0,r.jsxs)(n.p,{children:["For Visual Studio, please refer to the ",(0,r.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2017#configure-symbol-locations-and-loading-options",children:"Configure Debugging"})," guide."]})]})}function d(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(u,{...e})}):u(e)}},1151:(e,n,s)=>{s.d(n,{Z:()=>i,a:()=>o});var r=s(7294);const a={},t=r.createContext(a);function o(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b7ad560a.324711dc.js b/assets/js/b7ad560a.324711dc.js deleted file mode 100644 index 19ae171..0000000 --- a/assets/js/b7ad560a.324711dc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[506],{6968:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var t=o(5893),s=o(1151);const i={},r="Run BaGetter on Google Cloud Platform",l={id:"Installation/gcp",title:"Run BaGetter on Google Cloud Platform",description:"This page is a work in progress!",source:"@site/docs/Installation/gcp.md",sourceDirName:"Installation",slug:"/Installation/gcp",permalink:"/docs/Installation/gcp",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Installation/gcp.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Run BaGetter on Docker",permalink:"/docs/Installation/docker"},next:{title:"Windows IIS Proxy",permalink:"/docs/Installation/iis-proxy"}},a={},c=[{value:"Google Cloud Storage",id:"google-cloud-storage",level:2},{value:"Setup",id:"setup",level:3},{value:"Configuration",id:"configuration",level:3},{value:"Google Cloud SQL",id:"google-cloud-sql",level:2},{value:"Google AppEngine",id:"google-appengine",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"run-bagetter-on-google-cloud-platform",children:"Run BaGetter on Google Cloud Platform"}),"\n",(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This page is a work in progress!"})}),"\n",(0,t.jsxs)(n.p,{children:["We're open source and accept contributions!\n",(0,t.jsx)(n.a,{href:"https://github.com/bagetter/BaGetter",children:"Fork us on GitHub"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Before you begin, you should decide which ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/appengine/docs/locations",children:"AppEngine region"}),"\nyou will use. For best performance, Cloud Storage and Cloud SQL should be located\nin the same region as your AppEngine deployment."]}),"\n",(0,t.jsx)(n.h2,{id:"google-cloud-storage",children:"Google Cloud Storage"}),"\n",(0,t.jsxs)(n.p,{children:["Packages can be stored in ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/storage/",children:"Google Cloud Storage"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"setup",children:"Setup"}),"\n",(0,t.jsxs)(n.p,{children:["Follow the instructions in ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/appengine/docs/flexible/dotnet/using-cloud-storage",children:"Using Cloud Storage"})," to create a bucket."]}),"\n",(0,t.jsx)(n.h3,{id:"configuration",children:"Configuration"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"NOTE:"})," If you plan to use AppEngine, skip this part and follow the AppEngine instructions below."]}),"\n",(0,t.jsxs)(n.p,{children:["Set up a service account, create and download a key as JSON file. Set the ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/docs/authentication/provide-credentials-adc#wlif-key",children:(0,t.jsx)(n.code,{children:"GOOGLE_APPLICATION_CREDENTIALS"})}),"\nenvironment variable to the path to the JSON file you downloaded. The file should contain something like this:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "type": "service_account",\n "project_id": "your_project",\n "private_key_id": "6950mvh3690mg3h90jg3986vgm",\n "private_key": "-----BEGIN PRIVATE KEY-----\\hriv eohgrup4nhg8594nhvpog59p4w5...",\n "client_email": "your-service-account@your_project.iam.gserviceaccount.com",\n "client_id": "49826518658461496",\n "auth_uri": "https://accounts.google.com/o/oauth2/auth",\n "token_uri": "https://oauth2.googleapis.com/token",\n "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",\n "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service-account%40your_project.iam.gserviceaccount.com",\n "universe_domain": "googleapis.com"\n}\n\n'})}),"\n",(0,t.jsxs)(n.p,{children:["Configure BaGetter to use Google Cloud Storage by updating the ",(0,t.jsx)(n.code,{children:"appsettings.json"})," file:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Storage": {\n "Type": "GoogleCloud",\n "BucketName": "your-gcs-bucket"\n },\n\n ...\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:["Or set the ",(0,t.jsx)(n.code,{children:"Storage__Type"})," and ",(0,t.jsx)(n.code,{children:"Storage__BucketName"})," environment variables in your deployment (i.e. AppEngine project) accordingly."]}),"\n",(0,t.jsx)(n.h2,{id:"google-cloud-sql",children:"Google Cloud SQL"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Follow the instructions in ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/appengine/docs/flexible/dotnet/using-cloud-sql",children:"Using Cloud SQL"})," to create a (for example) 2nd Gen MySQL 5.7 Google Cloud SQL instance. The default options should work well."]}),"\n",(0,t.jsxs)(n.li,{children:["Create a database named ",(0,t.jsx)(n.code,{children:"bagetter"}),". This can be done through the Google Cloud Console. Use ",(0,t.jsx)(n.code,{children:"utf8mb4"})," as the Character set."]}),"\n",(0,t.jsxs)(n.li,{children:["Follow ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/sql/docs/mysql/configure-ssl-instance#new-client",children:"Configuring SSL/TLS"})," to create a client certificate. Download the three files it creates."]}),"\n",(0,t.jsxs)(n.li,{children:["Convert the PEM to a PFX by running ",(0,t.jsx)(n.code,{children:"openssl pkcs12 -inkey client-key.pem -in client-cert.pem -export -out client.pfx"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["One way to obtain OpenSSL on Windows is to install ",(0,t.jsx)(n.a,{href:"https://gitforwindows.org/",children:"Git Bash"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["Configure BaGetter to use Google Cloud SQL by updating the ",(0,t.jsx)(n.a,{href:"https://github.com/bagetter/BaGetter/blob/master/src/BaGetter/appsettings.json",children:(0,t.jsx)(n.code,{children:"appsettings.json"})})," file:"]}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n ...\n "Database": {\n "Type": "MySql",\n "ConnectionString": "Server=YOURIP;User Id=root;Password=***;Database=bagetter;CertificateFile=C:\\\\Path\\\\To\\\\client.pfx;CACertificateFile=C:\\\\Path\\\\To\\\\server-ca.pem;SSL Mode=VerifyCA"\n },\n ...\n}\n'})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Create the tables by running ",(0,t.jsx)(n.code,{children:"dotnet ef database update --context MySqlContext --project src\\BaGetter"})]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"google-appengine",children:"Google AppEngine"}),"\n",(0,t.jsxs)(n.p,{children:["BaGetter can be hosted in Google AppEngine. See ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/appengine/docs/flexible/dotnet/quickstart",children:"here"}),"\nfor a tutorial on how to create a new AppEngine project."]}),"\n",(0,t.jsxs)(n.p,{children:["Create a ",(0,t.jsx)(n.code,{children:"app.yaml"})," file to publish the Docker container built by the Dockerfile in this repo. In the template\nbelow, make the following replacements:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"PROJECT"})," - your GCP project, as returned by ",(0,t.jsx)(n.code,{children:"gcloud config get-value project"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"REGION"})," -- the GCP region your Google Cloud SQL database is in, e.g., ",(0,t.jsx)(n.code,{children:"us-central1"})," or ",(0,t.jsx)(n.code,{children:"us-west2"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"DBINSTANCE"})," -- the name of your Google Cloud SQL database instance"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"DBNAME"})," -- the name of the BaGetter database on that instance (e.g., ",(0,t.jsx)(n.code,{children:"bagetter"})," in the instructions above)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"PASSWORD"})," -- the password for the database root user"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"BUCKETNAME"})," -- the name of the Google Cloud Storage Bucket configured above"]}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:'runtime: custom\nenv: flex\n\n# The settings below are to reduce costs during testing and are not necessarily\n# appropriate for production use. For more information, see:\n# https://cloud.google.com/appengine/docs/flexible/dotnet/configuring-your-app-with-app-yaml\nresources:\n cpu: 1\n memory_gb: 0.5\n disk_size_gb: 10\n\nbeta_settings:\n cloud_sql_instances: "PROJECT:REGION:DBINSTANCE"\n\nenv_variables:\n Database__Type: "MySql"\n Database__ConnectionString: "Server=/cloudsql/PROJECT:REGION:DBINSTANCE;User Id=root;Password=PASSWORD;Database=DBNAME;SslMode=None"\n Storage__Type: "GoogleCloud"\n Storage__BucketName: "BUCKETNAME"\n Search__Type: "Database"\n ASPNETCORE_URLS: "http://0.0.0.0:8080"\n'})}),"\n",(0,t.jsxs)(n.p,{children:["To publish the application, run ",(0,t.jsx)(n.code,{children:"gcloud app deploy"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,o)=>{o.d(n,{Z:()=>l,a:()=>r});var t=o(7294);const s={},i=t.createContext(s);function r(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b7ad560a.f66437cf.js b/assets/js/b7ad560a.f66437cf.js new file mode 100644 index 0000000..959a9f4 --- /dev/null +++ b/assets/js/b7ad560a.f66437cf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[506],{6968:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>c});var t=o(5893),s=o(1151);const i={},r="Run BaGetter on Google Cloud Platform",l={id:"Installation/gcp",title:"Run BaGetter on Google Cloud Platform",description:"This page is a work in progress!",source:"@site/docs/Installation/gcp.md",sourceDirName:"Installation",slug:"/Installation/gcp",permalink:"/docs/Installation/gcp",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Installation/gcp.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Run BaGetter on Docker",permalink:"/docs/Installation/docker"},next:{title:"Windows IIS Proxy",permalink:"/docs/Installation/iis-proxy"}},a={},c=[{value:"Google Cloud Storage",id:"google-cloud-storage",level:2},{value:"Setup",id:"setup",level:3},{value:"Configuration",id:"configuration",level:3},{value:"Google Cloud SQL",id:"google-cloud-sql",level:2},{value:"Google AppEngine",id:"google-appengine",level:2}];function d(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"run-bagetter-on-google-cloud-platform",children:"Run BaGetter on Google Cloud Platform"}),"\n",(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsx)(n.p,{children:"This page is a work in progress!"})}),"\n",(0,t.jsxs)(n.p,{children:["We're open source and accept contributions!\n",(0,t.jsx)(n.a,{href:"https://github.com/bagetter/BaGetter",children:"Fork us on GitHub"}),"."]}),"\n",(0,t.jsxs)(n.p,{children:["Before you begin, you should decide which ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/appengine/docs/locations",children:"AppEngine region"}),"\nyou will use. For best performance, Cloud Storage and Cloud SQL should be located\nin the same region as your AppEngine deployment."]}),"\n",(0,t.jsx)(n.h2,{id:"google-cloud-storage",children:"Google Cloud Storage"}),"\n",(0,t.jsxs)(n.p,{children:["Packages can be stored in ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/storage/",children:"Google Cloud Storage"}),"."]}),"\n",(0,t.jsx)(n.h3,{id:"setup",children:"Setup"}),"\n",(0,t.jsxs)(n.p,{children:["Follow the instructions in ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/appengine/docs/flexible/dotnet/using-cloud-storage",children:"Using Cloud Storage"})," to create a bucket."]}),"\n",(0,t.jsx)(n.h3,{id:"configuration",children:"Configuration"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"NOTE:"})," If you plan to use AppEngine, skip this part and follow the AppEngine instructions below."]}),"\n",(0,t.jsxs)(n.p,{children:["Set up a service account, create and download a key as JSON file. Set the ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/docs/authentication/provide-credentials-adc#wlif-key",children:(0,t.jsx)(n.code,{children:"GOOGLE_APPLICATION_CREDENTIALS"})}),"\nenvironment variable to the path to the JSON file you downloaded. The file should contain something like this:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "type": "service_account",\n "project_id": "your_project",\n "private_key_id": "6950mvh3690mg3h90jg3986vgm",\n "private_key": "-----BEGIN PRIVATE KEY-----\\hriv eohgrup4nhg8594nhvpog59p4w5...",\n "client_email": "your-service-account@your_project.iam.gserviceaccount.com",\n "client_id": "49826518658461496",\n "auth_uri": "https://accounts.google.com/o/oauth2/auth",\n "token_uri": "https://oauth2.googleapis.com/token",\n "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",\n "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/your-service-account%40your_project.iam.gserviceaccount.com",\n "universe_domain": "googleapis.com"\n}\n\n'})}),"\n",(0,t.jsxs)(n.p,{children:["Configure BaGetter to use Google Cloud Storage by updating the ",(0,t.jsx)(n.code,{children:"appsettings.json"})," file:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Storage": {\n "Type": "GoogleCloud",\n "BucketName": "your-gcs-bucket"\n },\n\n ...\n}\n'})}),"\n",(0,t.jsxs)(n.p,{children:["Or set the ",(0,t.jsx)(n.code,{children:"Storage__Type"})," and ",(0,t.jsx)(n.code,{children:"Storage__BucketName"})," environment variables in your deployment (i.e. AppEngine project) accordingly."]}),"\n",(0,t.jsx)(n.h2,{id:"google-cloud-sql",children:"Google Cloud SQL"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Follow the instructions in ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/appengine/docs/flexible/dotnet/using-cloud-sql",children:"Using Cloud SQL"})," to create a (for example) 2nd Gen MySQL 5.7 Google Cloud SQL instance. The default options should work well."]}),"\n",(0,t.jsxs)(n.li,{children:["Create a database named ",(0,t.jsx)(n.code,{children:"bagetter"}),". This can be done through the Google Cloud Console. Use ",(0,t.jsx)(n.code,{children:"utf8mb4"})," as the Character set."]}),"\n",(0,t.jsxs)(n.li,{children:["Follow ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/sql/docs/mysql/configure-ssl-instance#new-client",children:"Configuring SSL/TLS"})," to create a client certificate. Download the three files it creates."]}),"\n",(0,t.jsxs)(n.li,{children:["Convert the PEM to a PFX by running ",(0,t.jsx)(n.code,{children:"openssl pkcs12 -inkey client-key.pem -in client-cert.pem -export -out client.pfx"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["One way to obtain OpenSSL on Windows is to install ",(0,t.jsx)(n.a,{href:"https://gitforwindows.org/",children:"Git Bash"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["Configure BaGetter to use Google Cloud SQL by updating the ",(0,t.jsx)(n.a,{href:"https://github.com/bagetter/BaGetter/blob/master/src/BaGetter/appsettings.json",children:(0,t.jsx)(n.code,{children:"appsettings.json"})})," file:"]}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n ...\n "Database": {\n "Type": "MySql",\n "ConnectionString": "Server=YOURIP;User Id=root;Password=***;Database=bagetter;CertificateFile=C:\\\\Path\\\\To\\\\client.pfx;CACertificateFile=C:\\\\Path\\\\To\\\\server-ca.pem;SSL Mode=VerifyCA"\n },\n ...\n}\n'})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Create the tables by running ",(0,t.jsx)(n.code,{children:"dotnet ef database update --context MySqlContext --project src\\BaGetter"})]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"google-appengine",children:"Google AppEngine"}),"\n",(0,t.jsxs)(n.p,{children:["BaGetter can be hosted in Google AppEngine. See ",(0,t.jsx)(n.a,{href:"https://cloud.google.com/appengine/docs/flexible/dotnet/quickstart",children:"here"}),"\nfor a tutorial on how to create a new AppEngine project."]}),"\n",(0,t.jsxs)(n.p,{children:["Create a ",(0,t.jsx)(n.code,{children:"app.yaml"})," file to publish the Docker container built by the Dockerfile in this repo. In the template\nbelow, make the following replacements:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"PROJECT"})," - your GCP project, as returned by ",(0,t.jsx)(n.code,{children:"gcloud config get-value project"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"REGION"})," -- the GCP region your Google Cloud SQL database is in, e.g., ",(0,t.jsx)(n.code,{children:"us-central1"})," or ",(0,t.jsx)(n.code,{children:"us-west2"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"DBINSTANCE"})," -- the name of your Google Cloud SQL database instance"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"DBNAME"})," -- the name of the BaGetter database on that instance (e.g., ",(0,t.jsx)(n.code,{children:"bagetter"})," in the instructions above)"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"PASSWORD"})," -- the password for the database root user"]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"BUCKETNAME"})," -- the name of the Google Cloud Storage Bucket configured above"]}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-yaml",children:'runtime: custom\nenv: flex\n\n# The settings below are to reduce costs during testing and are not necessarily\n# appropriate for production use. For more information, see:\n# https://cloud.google.com/appengine/docs/flexible/dotnet/configuring-your-app-with-app-yaml\nresources:\n cpu: 1\n memory_gb: 0.5\n disk_size_gb: 10\n\nbeta_settings:\n cloud_sql_instances: "PROJECT:REGION:DBINSTANCE"\n\nenv_variables:\n Database__Type: "MySql"\n Database__ConnectionString: "Server=/cloudsql/PROJECT:REGION:DBINSTANCE;User Id=root;Password=PASSWORD;Database=DBNAME;SslMode=None"\n Storage__Type: "GoogleCloud"\n Storage__BucketName: "BUCKETNAME"\n Search__Type: "Database"\n ASPNETCORE_URLS: "http://0.0.0.0:8080"\n'})}),"\n",(0,t.jsxs)(n.p,{children:["To publish the application, run ",(0,t.jsx)(n.code,{children:"gcloud app deploy"}),"."]})]})}function h(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,o)=>{o.d(n,{Z:()=>l,a:()=>r});var t=o(7294);const s={},i=t.createContext(s);function r(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bf03d4ec.36b9be83.js b/assets/js/bf03d4ec.36b9be83.js deleted file mode 100644 index 607a019..0000000 --- a/assets/js/bf03d4ec.36b9be83.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[328],{8853:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>z,contentTitle:()=>q,default:()=>N,frontMatter:()=>A,metadata:()=>T,toc:()=>V});var a=t(5893),s=t(1151),r=t(7294),o=t(512),l=t(2466),i=t(6550),c=t(469),u=t(1980),d=t(7392),h=t(12);function p(e){return r.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,r.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function g(e){const{values:n,children:t}=e;return(0,r.useMemo)((()=>{const e=n??function(e){return p(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,d.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function f(e){let{queryString:n=!1,groupId:t}=e;const a=(0,i.k6)(),s=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,u._X)(s),(0,r.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(a.location.search);n.set(s,e),a.replace({...a.location,search:n.toString()})}),[s,a])]}function b(e){const{defaultValue:n,queryString:t=!1,groupId:a}=e,s=g(e),[o,l]=(0,r.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:s}))),[i,u]=f({queryString:t,groupId:a}),[d,p]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[a,s]=(0,h.Nk)(t);return[a,(0,r.useCallback)((e=>{t&&s.set(e)}),[t,s])]}({groupId:a}),b=(()=>{const e=i??d;return m({value:e,tabValues:s})?e:null})();(0,c.Z)((()=>{b&&l(b)}),[b]);return{selectedValue:o,selectValue:(0,r.useCallback)((e=>{if(!m({value:e,tabValues:s}))throw new Error(`Can't select invalid tab value=${e}`);l(e),u(e),p(e)}),[u,p,s]),tabValues:s}}var j=t(2389);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function v(e){let{className:n,block:t,selectedValue:s,selectValue:r,tabValues:i}=e;const c=[],{blockElementScrollPositionUntilNextRender:u}=(0,l.o5)(),d=e=>{const n=e.currentTarget,t=c.indexOf(n),a=i[t].value;a!==s&&(u(n),r(a))},h=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=c.indexOf(e.currentTarget)+1;n=c[t]??c[0];break}case"ArrowLeft":{const t=c.indexOf(e.currentTarget)-1;n=c[t]??c[c.length-1];break}}n?.focus()};return(0,a.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":t},n),children:i.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,a.jsx)("li",{role:"tab",tabIndex:s===n?0:-1,"aria-selected":s===n,ref:e=>c.push(e),onKeyDown:h,onClick:d,...r,className:(0,o.Z)("tabs__item",x.tabItem,r?.className,{"tabs__item--active":s===n}),children:t??n},n)}))})}function y(e){let{lazy:n,children:t,selectedValue:s}=e;const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===s));return e?(0,r.cloneElement)(e,{className:"margin-top--md"}):null}return(0,a.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,r.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function k(e){const n=b(e);return(0,a.jsxs)("div",{className:(0,o.Z)("tabs-container",x.tabList),children:[(0,a.jsx)(v,{...e,...n}),(0,a.jsx)(y,{...e,...n})]})}function S(e){const n=(0,j.Z)();return(0,a.jsx)(k,{...e,children:p(e.children)},String(n))}const w={tabItem:"tabItem_Ymn6"};function I(e){let{children:n,hidden:t,className:s}=e;return(0,a.jsx)("div",{role:"tabpanel",className:(0,o.Z)(w.tabItem,s),hidden:t,children:n})}const A={},q="Run BaGetter on AWS",T={id:"Installation/aws",title:"Run BaGetter on AWS",description:"This page is a work in progress!",source:"@site/docs/Installation/aws.md",sourceDirName:"Installation",slug:"/Installation/aws",permalink:"/docs/Installation/aws",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Installation/aws.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Use Alibaba Cloud (Aliyun) OSS",permalink:"/docs/Installation/aliyun"},next:{title:"Run BaGetter on Azure",permalink:"/docs/Installation/azure"}},z={},V=[{value:"Configure BaGetter",id:"configure-bagetter",level:2},{value:"Amazon S3",id:"amazon-s3",level:3},{value:"Amazon RDS",id:"amazon-rds",level:3},{value:"Publish packages",id:"publish-packages",level:2},{value:"Restore packages",id:"restore-packages",level:2},{value:"Symbol server",id:"symbol-server",level:2}];function C(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h1,{id:"run-bagetter-on-aws",children:"Run BaGetter on AWS"}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"This page is a work in progress!"})}),"\n",(0,a.jsxs)(n.p,{children:["Use Amazon Web Services to scale BaGetter. You can store metadata on ",(0,a.jsx)(n.a,{href:"https://aws.amazon.com/rds",children:"Amazon Relational Database Service (RDS)"})," and upload packages to ",(0,a.jsx)(n.a,{href:"https://aws.amazon.com/s3/",children:"Amazon S3"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"configure-bagetter",children:"Configure BaGetter"}),"\n",(0,a.jsxs)(n.p,{children:["You can modify BaGetter's configurations by editing the ",(0,a.jsx)(n.code,{children:"appsettings.json"})," file. For the full list of configurations, please refer to ",(0,a.jsx)(n.a,{href:"/docs/configuration",children:"BaGetter's configuration"})," guide."]}),"\n",(0,a.jsx)(n.h3,{id:"amazon-s3",children:"Amazon S3"}),"\n",(0,a.jsxs)(n.p,{children:["Create a bucket, a service account with access to the bucket, and an access key for the service account.",(0,a.jsx)(n.br,{}),"\n","Update the ",(0,a.jsx)(n.code,{children:"appsettings.json"})," file with those:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Storage": {\n "Type": "AwsS3",\n "Region": "us-west-1",\n "Bucket": "foo",\n "AccessKey": "",\n "SecretKey": ""\n },\n\n ...\n}\n'})}),"\n",(0,a.jsx)(n.h3,{id:"amazon-rds",children:"Amazon RDS"}),"\n",(0,a.jsxs)(S,{groupId:"database-types",children:[(0,a.jsxs)(I,{value:"postgresql",label:"Amazon RDS for PostgreSQL",children:[(0,a.jsxs)(n.p,{children:["To use ",(0,a.jsx)(n.a,{href:"https://aws.amazon.com/rds/postgresql",children:"PostgreSQL"}),", update the ",(0,a.jsx)(n.code,{children:"appsettings.json"})," file:"]}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Database": {\n "Type": "PostgreSql",\n "ConnectionString": "..."\n },\n\n ...\n}\n'})})]}),(0,a.jsxs)(I,{value:"mysql",label:"Amazon RDS for MySQL",children:[(0,a.jsxs)(n.p,{children:["To use ",(0,a.jsx)(n.a,{href:"https://aws.amazon.com/rds/mysql",children:"MySQL"}),", update the ",(0,a.jsx)(n.code,{children:"appsettings.json"})," file:"]}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Database": {\n "Type": "MySql",\n "ConnectionString": "..."\n },\n\n ...\n}\n'})})]}),(0,a.jsxs)(I,{value:"sqlserver",label:"Amazon RDS for SQL Server",children:[(0,a.jsxs)(n.p,{children:["To use ",(0,a.jsx)(n.a,{href:"https://aws.amazon.com/rds/sqlserver",children:"SQL Server"}),", update the ",(0,a.jsx)(n.code,{children:"appsettings.json"})," file:"]}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Database": {\n "Type": "SqlServer",\n "ConnectionString": "..."\n },\n\n ...\n}\n'})})]})]}),"\n",(0,a.jsx)(n.h2,{id:"publish-packages",children:"Publish packages"}),"\n",(0,a.jsx)(n.p,{children:"Publish your first package with:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json package.1.0.0.nupkg\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Publish your first ",(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg",children:"symbol package"})," with:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json symbol.package.1.0.0.snupkg\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["You should secure your server by requiring an API Key to publish packages. For more information, please refer to the ",(0,a.jsx)(n.a,{href:"/docs/configuration#require-an-api-key",children:"Require an API Key"})," guide."]})}),"\n",(0,a.jsx)(n.h2,{id:"restore-packages",children:"Restore packages"}),"\n",(0,a.jsx)(n.p,{children:"You can restore packages by using the following package source:"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"http://localhost:5000/v3/index.json"})}),"\n",(0,a.jsx)(n.p,{children:"Some helpful guides:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio#package-sources",children:"Visual Studio"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file#package-source-sections",children:"NuGet.config"})}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"symbol-server",children:"Symbol server"}),"\n",(0,a.jsx)(n.p,{children:"You can load symbols by using the following symbol location:"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"http://localhost:5000/api/download/symbols"})}),"\n",(0,a.jsxs)(n.p,{children:["For Visual Studio, please refer to the ",(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2017#configure-symbol-locations-and-loading-options",children:"Configure Debugging"})," guide."]})]})}function N(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(C,{...e})}):C(e)}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>o});var a=t(7294);const s={},r=a.createContext(s);function o(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bf03d4ec.3a21f460.js b/assets/js/bf03d4ec.3a21f460.js new file mode 100644 index 0000000..f3427ea --- /dev/null +++ b/assets/js/bf03d4ec.3a21f460.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[328],{843:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>i,default:()=>p,frontMatter:()=>l,metadata:()=>c,toc:()=>d});var a=t(5893),s=t(1151),r=t(4866),o=t(5162);const l={},i="Run BaGetter on AWS",c={id:"Installation/aws",title:"Run BaGetter on AWS",description:"This page is a work in progress!",source:"@site/docs/Installation/aws.md",sourceDirName:"Installation",slug:"/Installation/aws",permalink:"/docs/Installation/aws",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Installation/aws.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Use Alibaba Cloud (Aliyun) OSS",permalink:"/docs/Installation/aliyun"},next:{title:"Run BaGetter on Azure",permalink:"/docs/Installation/azure"}},u={},d=[{value:"Configure BaGetter",id:"configure-bagetter",level:2},{value:"Amazon S3",id:"amazon-s3",level:3},{value:"Amazon RDS",id:"amazon-rds",level:3},{value:"Publish packages",id:"publish-packages",level:2},{value:"Restore packages",id:"restore-packages",level:2},{value:"Symbol server",id:"symbol-server",level:2}];function h(e){const n={a:"a",admonition:"admonition",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h1,{id:"run-bagetter-on-aws",children:"Run BaGetter on AWS"}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsx)(n.p,{children:"This page is a work in progress!"})}),"\n",(0,a.jsxs)(n.p,{children:["Use Amazon Web Services to scale BaGetter. You can store metadata on ",(0,a.jsx)(n.a,{href:"https://aws.amazon.com/rds",children:"Amazon Relational Database Service (RDS)"})," and upload packages to ",(0,a.jsx)(n.a,{href:"https://aws.amazon.com/s3/",children:"Amazon S3"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"configure-bagetter",children:"Configure BaGetter"}),"\n",(0,a.jsxs)(n.p,{children:["You can modify BaGetter's configurations by editing the ",(0,a.jsx)(n.code,{children:"appsettings.json"})," file. For the full list of configurations, please refer to ",(0,a.jsx)(n.a,{href:"/docs/configuration",children:"BaGetter's configuration"})," guide."]}),"\n",(0,a.jsx)(n.h3,{id:"amazon-s3",children:"Amazon S3"}),"\n",(0,a.jsxs)(n.p,{children:["Create a bucket, a service account with access to the bucket, and an access key for the service account.",(0,a.jsx)(n.br,{}),"\n","Update the ",(0,a.jsx)(n.code,{children:"appsettings.json"})," file with those:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Storage": {\n "Type": "AwsS3",\n "Region": "us-west-1",\n "Bucket": "foo",\n "AccessKey": "",\n "SecretKey": ""\n },\n\n ...\n}\n'})}),"\n",(0,a.jsx)(n.h3,{id:"amazon-rds",children:"Amazon RDS"}),"\n",(0,a.jsxs)(r.Z,{groupId:"database-types",children:[(0,a.jsxs)(o.Z,{value:"postgresql",label:"Amazon RDS for PostgreSQL",children:[(0,a.jsxs)(n.p,{children:["To use ",(0,a.jsx)(n.a,{href:"https://aws.amazon.com/rds/postgresql",children:"PostgreSQL"}),", update the ",(0,a.jsx)(n.code,{children:"appsettings.json"})," file:"]}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Database": {\n "Type": "PostgreSql",\n "ConnectionString": "..."\n },\n\n ...\n}\n'})})]}),(0,a.jsxs)(o.Z,{value:"mysql",label:"Amazon RDS for MySQL",children:[(0,a.jsxs)(n.p,{children:["To use ",(0,a.jsx)(n.a,{href:"https://aws.amazon.com/rds/mysql",children:"MySQL"}),", update the ",(0,a.jsx)(n.code,{children:"appsettings.json"})," file:"]}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Database": {\n "Type": "MySql",\n "ConnectionString": "..."\n },\n\n ...\n}\n'})})]}),(0,a.jsxs)(o.Z,{value:"sqlserver",label:"Amazon RDS for SQL Server",children:[(0,a.jsxs)(n.p,{children:["To use ",(0,a.jsx)(n.a,{href:"https://aws.amazon.com/rds/sqlserver",children:"SQL Server"}),", update the ",(0,a.jsx)(n.code,{children:"appsettings.json"})," file:"]}),(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-json",children:'{\n ...\n\n "Database": {\n "Type": "SqlServer",\n "ConnectionString": "..."\n },\n\n ...\n}\n'})})]})]}),"\n",(0,a.jsx)(n.h2,{id:"publish-packages",children:"Publish packages"}),"\n",(0,a.jsx)(n.p,{children:"Publish your first package with:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json package.1.0.0.nupkg\n"})}),"\n",(0,a.jsxs)(n.p,{children:["Publish your first ",(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg",children:"symbol package"})," with:"]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-shell",children:"dotnet nuget push -s http://localhost:5000/v3/index.json symbol.package.1.0.0.snupkg\n"})}),"\n",(0,a.jsx)(n.admonition,{type:"warning",children:(0,a.jsxs)(n.p,{children:["You should secure your server by requiring an API Key to publish packages. For more information, please refer to the ",(0,a.jsx)(n.a,{href:"/docs/configuration#require-an-api-key",children:"Require an API Key"})," guide."]})}),"\n",(0,a.jsx)(n.h2,{id:"restore-packages",children:"Restore packages"}),"\n",(0,a.jsx)(n.p,{children:"You can restore packages by using the following package source:"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"http://localhost:5000/v3/index.json"})}),"\n",(0,a.jsx)(n.p,{children:"Some helpful guides:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio#package-sources",children:"Visual Studio"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/nuget/reference/nuget-config-file#package-source-sections",children:"NuGet.config"})}),"\n"]}),"\n",(0,a.jsx)(n.h2,{id:"symbol-server",children:"Symbol server"}),"\n",(0,a.jsx)(n.p,{children:"You can load symbols by using the following symbol location:"}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.code,{children:"http://localhost:5000/api/download/symbols"})}),"\n",(0,a.jsxs)(n.p,{children:["For Visual Studio, please refer to the ",(0,a.jsx)(n.a,{href:"https://docs.microsoft.com/en-us/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2017#configure-symbol-locations-and-loading-options",children:"Configure Debugging"})," guide."]})]})}function p(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(h,{...e})}):h(e)}},5162:(e,n,t)=>{t.d(n,{Z:()=>o});t(7294);var a=t(512);const s={tabItem:"tabItem_Ymn6"};var r=t(5893);function o(e){let{children:n,hidden:t,className:o}=e;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.Z)(s.tabItem,o),hidden:t,children:n})}},4866:(e,n,t)=>{t.d(n,{Z:()=>k});var a=t(7294),s=t(512),r=t(2466),o=t(6550),l=t(469),i=t(1980),c=t(7392),u=t(12);function d(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:t,attributes:a,default:s}}=e;return{value:n,label:t,attributes:a,default:s}}))}(t);return function(e){const n=(0,c.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function p(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function g(e){let{queryString:n=!1,groupId:t}=e;const s=(0,o.k6)(),r=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,i._X)(r),(0,a.useCallback)((e=>{if(!r)return;const n=new URLSearchParams(s.location.search);n.set(r,e),s.replace({...s.location,search:n.toString()})}),[r,s])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,r=h(e),[o,i]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!p({value:n,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const a=t.find((e=>e.default))??t[0];if(!a)throw new Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:n,tabValues:r}))),[c,d]=g({queryString:t,groupId:s}),[m,f]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[s,r]=(0,u.Nk)(t);return[s,(0,a.useCallback)((e=>{t&&r.set(e)}),[t,r])]}({groupId:s}),b=(()=>{const e=c??m;return p({value:e,tabValues:r})?e:null})();(0,l.Z)((()=>{b&&i(b)}),[b]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!p({value:e,tabValues:r}))throw new Error(`Can't select invalid tab value=${e}`);i(e),d(e),f(e)}),[d,f,r]),tabValues:r}}var f=t(2389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(5893);function x(e){let{className:n,block:t,selectedValue:a,selectValue:o,tabValues:l}=e;const i=[],{blockElementScrollPositionUntilNextRender:c}=(0,r.o5)(),u=e=>{const n=e.currentTarget,t=i.indexOf(n),s=l[t].value;s!==a&&(c(n),o(s))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const t=i.indexOf(e.currentTarget)+1;n=i[t]??i[0];break}case"ArrowLeft":{const t=i.indexOf(e.currentTarget)-1;n=i[t]??i[i.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":t},n),children:l.map((e=>{let{value:n,label:t,attributes:r}=e;return(0,j.jsx)("li",{role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:e=>i.push(e),onKeyDown:d,onClick:u,...r,className:(0,s.Z)("tabs__item",b.tabItem,r?.className,{"tabs__item--active":a===n}),children:t??n},n)}))})}function v(e){let{lazy:n,children:t,selectedValue:s}=e;const r=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=r.find((e=>e.props.value===s));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:r.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function y(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,s.Z)("tabs-container",b.tabList),children:[(0,j.jsx)(x,{...e,...n}),(0,j.jsx)(v,{...e,...n})]})}function k(e){const n=(0,f.Z)();return(0,j.jsx)(y,{...e,children:d(e.children)},String(n))}},1151:(e,n,t)=>{t.d(n,{Z:()=>l,a:()=>o});var a=t(7294);const s={},r=a.createContext(s);function o(e){const n=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),a.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c89f3e57.40f5f1c2.js b/assets/js/c89f3e57.40f5f1c2.js new file mode 100644 index 0000000..ceeb76f --- /dev/null +++ b/assets/js/c89f3e57.40f5f1c2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[859],{8655:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var s=n(5893),i=n(1151);const r={},a="LiGet",l={id:"vs/liget",title:"LiGet",description:"This page is a work in progress!",source:"@site/docs/vs/liget.md",sourceDirName:"vs",slug:"/vs/liget",permalink:"/docs/vs/liget",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/vs/liget.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Azure Artifacts",permalink:"/docs/vs/azure-artifacts"},next:{title:"Local Feeds",permalink:"/docs/vs/local-feeds"}},o={},c=[];function d(e){const t={a:"a",admonition:"admonition",h1:"h1",li:"li",p:"p",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"liget",children:"LiGet"}),"\n",(0,s.jsx)(t.admonition,{type:"warning",children:(0,s.jsx)(t.p,{children:"This page is a work in progress!"})}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"https://github.com/ai-traders/liget",children:"LiGet"})," is a NuGet server created with a linux-first approach."]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["LiGet","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Strong support for Paket"}),"\n",(0,s.jsx)(t.li,{children:"Only supports NuGet's v2 APIs (missing verified packages, signed packages, etc...)"}),"\n",(0,s.jsx)(t.li,{children:"Stores all packages' metadata using a single JSON file"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["BaGetter","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Supports NuGet's v3 APIs"}),"\n",(0,s.jsx)(t.li,{children:"Stores packages' metadata in a database"}),"\n",(0,s.jsx)(t.li,{children:"Capable of ingesting all packages on nuget.org"}),"\n",(0,s.jsx)(t.li,{children:"Can run on Azure"}),"\n"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>l,a:()=>a});var s=n(7294);const i={},r=s.createContext(i);function a(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c89f3e57.e89e43fd.js b/assets/js/c89f3e57.e89e43fd.js deleted file mode 100644 index 51fcd8b..0000000 --- a/assets/js/c89f3e57.e89e43fd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[859],{8655:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>a,default:()=>u,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var s=n(5893),i=n(1151);const r={},a="LiGet",l={id:"vs/liget",title:"LiGet",description:"This page is a work in progress!",source:"@site/docs/vs/liget.md",sourceDirName:"vs",slug:"/vs/liget",permalink:"/docs/vs/liget",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/vs/liget.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Azure Artifacts",permalink:"/docs/vs/azure-artifacts"},next:{title:"Local Feeds",permalink:"/docs/vs/local-feeds"}},o={},c=[];function d(e){const t={a:"a",admonition:"admonition",h1:"h1",li:"li",p:"p",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"liget",children:"LiGet"}),"\n",(0,s.jsx)(t.admonition,{type:"warning",children:(0,s.jsx)(t.p,{children:"This page is a work in progress!"})}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.a,{href:"https://github.com/ai-traders/liget",children:"LiGet"})," is a NuGet server created with a linux-first approach."]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["LiGet","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Strong support for Paket"}),"\n",(0,s.jsx)(t.li,{children:"Only supports NuGet's v2 APIs (missing verified packages, signed packages, etc...)"}),"\n",(0,s.jsx)(t.li,{children:"Stores all packages' metadata using a single JSON file"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["BaGetter","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Supports NuGet's v3 APIs"}),"\n",(0,s.jsx)(t.li,{children:"Stores packages' metadata in a database"}),"\n",(0,s.jsx)(t.li,{children:"Capable of ingesting all packages on nuget.org"}),"\n",(0,s.jsx)(t.li,{children:"Can run on Azure"}),"\n"]}),"\n"]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>l,a:()=>a});var s=n(7294);const i={},r=s.createContext(i);function a(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d99a49c2.2ba4ffb7.js b/assets/js/d99a49c2.2ba4ffb7.js deleted file mode 100644 index 459e05f..0000000 --- a/assets/js/d99a49c2.2ba4ffb7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[621],{1659:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>a,toc:()=>u});var n=r(5893),s=r(1151);const o={},i="Import NuGet.Server packages",a={id:"Import/nugetserver",title:"Import NuGet.Server packages",description:"NuGet.Server is a lightweight standalone NuGet server. It is strongly recommended that you upgrade to BaGetter if you use NuGet.Server. Feel free to open a GitHub issue if you need help migrating.",source:"@site/docs/Import/nugetserver.md",sourceDirName:"Import",slug:"/Import/nugetserver",permalink:"/docs/Import/nugetserver",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Import/nugetserver.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Import nuget.org packages",permalink:"/docs/Import/nugetorg"},next:{title:"Use Alibaba Cloud (Aliyun) OSS",permalink:"/docs/Installation/aliyun"}},c={},u=[{value:"Steps",id:"steps",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"import-nugetserver-packages",children:"Import NuGet.Server packages"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/NuGet/NuGet.Server",children:"NuGet.Server"})," is a lightweight standalone NuGet server. It is strongly recommended that you upgrade to BaGetter if you use NuGet.Server. Feel free to open a ",(0,n.jsx)(t.a,{href:"https://github.com/bagetter/BaGetter/issues",children:"GitHub issue"})," if you need help migrating."]}),"\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsxs)(t.p,{children:["Please refer to the ",(0,n.jsx)(t.a,{href:"/docs/vs/nugetserver",children:"BaGetter vs NuGet.Server"})," page for reasons to upgrade to BaGetter."]})}),"\n",(0,n.jsx)(t.h2,{id:"steps",children:"Steps"}),"\n",(0,n.jsxs)(t.p,{children:["Make sure that you've installed ",(0,n.jsx)(t.a,{href:"https://www.nuget.org/downloads",children:"nuget.exe"}),". In PowerShell, run:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-powershell",children:'$source = ""\n$destination = ""\n'})}),"\n",(0,n.jsxs)(t.p,{children:["If you've ",(0,n.jsx)(t.a,{href:"https://bagetter.com/docs/configuration/#requiring-an-api-key",children:"configured BaGetter to require an API Key"}),", set it using ",(0,n.jsxs)(t.a,{href:"https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-setapikey",children:["the ",(0,n.jsx)(t.code,{children:"setapikey"})," command"]}),":"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-powershell",children:'& nuget.exe setapikey "MY-API-KEY" -Source $destination\n'})}),"\n",(0,n.jsx)(t.p,{children:"Now run the following PowerShell script:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-powershell",children:'if (!(Test-Path "Web.config")) {\n throw "Please run this script in the same directory as NuGet.Server\'s Web.config file"\n}\n\n(& nuget.exe list -AllVersions -Source $source).Split([Environment]::NewLine) | % {\n $id = $_.Split(" ")[0].Trim()\n $version = $_.Split(" ")[1].Trim()\n\n $path = [IO.Path]::Combine("Packages", $id, $version, "${id}.${version}.nupkg")\n\n Write-Host "nuget.exe push -Source $destination ""$path"""\n & nuget.exe push -Source $destination $path\n}\n'})})]})}function p(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1151:(e,t,r)=>{r.d(t,{Z:()=>a,a:()=>i});var n=r(7294);const s={},o=n.createContext(s);function i(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d99a49c2.8df79e12.js b/assets/js/d99a49c2.8df79e12.js new file mode 100644 index 0000000..3fa96cd --- /dev/null +++ b/assets/js/d99a49c2.8df79e12.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[621],{1659:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>o,metadata:()=>a,toc:()=>u});var n=r(5893),s=r(1151);const o={},i="Import NuGet.Server packages",a={id:"Import/nugetserver",title:"Import NuGet.Server packages",description:"NuGet.Server is a lightweight standalone NuGet server. It is strongly recommended that you upgrade to BaGetter if you use NuGet.Server. Feel free to open a GitHub issue if you need help migrating.",source:"@site/docs/Import/nugetserver.md",sourceDirName:"Import",slug:"/Import/nugetserver",permalink:"/docs/Import/nugetserver",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Import/nugetserver.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Import nuget.org packages",permalink:"/docs/Import/nugetorg"},next:{title:"Use Alibaba Cloud (Aliyun) OSS",permalink:"/docs/Installation/aliyun"}},c={},u=[{value:"Steps",id:"steps",level:2}];function l(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"import-nugetserver-packages",children:"Import NuGet.Server packages"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/NuGet/NuGet.Server",children:"NuGet.Server"})," is a lightweight standalone NuGet server. It is strongly recommended that you upgrade to BaGetter if you use NuGet.Server. Feel free to open a ",(0,n.jsx)(t.a,{href:"https://github.com/bagetter/BaGetter/issues",children:"GitHub issue"})," if you need help migrating."]}),"\n",(0,n.jsx)(t.admonition,{type:"info",children:(0,n.jsxs)(t.p,{children:["Please refer to the ",(0,n.jsx)(t.a,{href:"/docs/vs/nugetserver",children:"BaGetter vs NuGet.Server"})," page for reasons to upgrade to BaGetter."]})}),"\n",(0,n.jsx)(t.h2,{id:"steps",children:"Steps"}),"\n",(0,n.jsxs)(t.p,{children:["Make sure that you've installed ",(0,n.jsx)(t.a,{href:"https://www.nuget.org/downloads",children:"nuget.exe"}),". In PowerShell, run:"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-powershell",children:'$source = ""\n$destination = ""\n'})}),"\n",(0,n.jsxs)(t.p,{children:["If you've ",(0,n.jsx)(t.a,{href:"https://bagetter.com/docs/configuration/#requiring-an-api-key",children:"configured BaGetter to require an API Key"}),", set it using ",(0,n.jsxs)(t.a,{href:"https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-setapikey",children:["the ",(0,n.jsx)(t.code,{children:"setapikey"})," command"]}),":"]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-powershell",children:'& nuget.exe setapikey "MY-API-KEY" -Source $destination\n'})}),"\n",(0,n.jsx)(t.p,{children:"Now run the following PowerShell script:"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-powershell",children:'if (!(Test-Path "Web.config")) {\n throw "Please run this script in the same directory as NuGet.Server\'s Web.config file"\n}\n\n(& nuget.exe list -AllVersions -Source $source).Split([Environment]::NewLine) | % {\n $id = $_.Split(" ")[0].Trim()\n $version = $_.Split(" ")[1].Trim()\n\n $path = [IO.Path]::Combine("Packages", $id, $version, "${id}.${version}.nupkg")\n\n Write-Host "nuget.exe push -Source $destination ""$path"""\n & nuget.exe push -Source $destination $path\n}\n'})})]})}function p(e={}){const{wrapper:t}={...(0,s.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(l,{...e})}):l(e)}},1151:(e,t,r)=>{r.d(t,{Z:()=>a,a:()=>i});var n=r(7294);const s={},o=n.createContext(s);function i(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/defcddab.8ad8d0e7.js b/assets/js/defcddab.8ad8d0e7.js deleted file mode 100644 index 78e4adb..0000000 --- a/assets/js/defcddab.8ad8d0e7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[381],{2487:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>c});var s=n(5893),i=n(1151);const o={},r="Windows IIS Proxy",a={id:"Installation/iis-proxy",title:"Windows IIS Proxy",description:"With a few extra steps you can run BaGetter behind a Windows IIS proxy. This has many benefits, including automatic restarts on reboots.",source:"@site/docs/Installation/iis-proxy.md",sourceDirName:"Installation",slug:"/Installation/iis-proxy",permalink:"/docs/Installation/iis-proxy",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Installation/iis-proxy.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Run BaGetter on Google Cloud Platform",permalink:"/docs/Installation/gcp"},next:{title:"Run BaGetter on your Computer",permalink:"/docs/Installation/local"}},l={},c=[{value:"IIS setup",id:"iis-setup",level:2},{value:"BaGetter folder permissions",id:"bagetter-folder-permissions",level:2},{value:"Alternative storage path",id:"alternative-storage-path",level:2},{value:"IIS server options",id:"iis-server-options",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"windows-iis-proxy",children:"Windows IIS Proxy"}),"\n",(0,s.jsx)(t.p,{children:"With a few extra steps you can run BaGetter behind a Windows IIS proxy. This has many benefits, including automatic restarts on reboots."}),"\n",(0,s.jsx)(t.h2,{id:"iis-setup",children:"IIS setup"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["Install the ",(0,s.jsx)(t.a,{href:"https://dotnet.microsoft.com/download",children:".NET Core Runtime"})," on the web server."]}),"\n",(0,s.jsxs)(t.li,{children:["Copy the BaGetter directory over to your hosting area such as ",(0,s.jsx)(t.code,{children:"C:\\Inetpub\\wwwroot\\BaGetter"})]}),"\n",(0,s.jsxs)(t.li,{children:["Using IIS Manager, create a new Application Pool:","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Name = ",(0,s.jsx)(t.code,{children:"BaGetterAppPool"})," (can be whatever you want)"]}),"\n",(0,s.jsx)(t.li,{children:".NET CLR version = No Managed Code"}),"\n",(0,s.jsx)(t.li,{children:"Managed Pipeline Mode = Integrated"}),"\n",(0,s.jsx)(t.li,{children:"Start application pool immediately = checked"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["Using IIS Manager, create a new web site:","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Choose your site name and physical path"}),"\n",(0,s.jsxs)(t.li,{children:["Choose ",(0,s.jsx)(t.code,{children:"BaGetterAppPool"})," as the application pool"]}),"\n",(0,s.jsx)(t.li,{children:"In the Binding area, enter the default BaGetter port of 5000"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"bagetter-folder-permissions",children:"BaGetter folder permissions"}),"\n",(0,s.jsxs)(t.p,{children:["You ",(0,s.jsx)(t.strong,{children:"may"})," need to give special permissions to the top-level BaGetter folder so that the app can persist its state. This is necessary as the Application Pools' identity is a virtual account that isn't recognized by the Windows User Management Console. For more information, please refer to ASP.NET Core's documentation:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#application-pools",children:"Application Pools"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#application-pool-identity",children:"Application Pool Identity"})}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"alternative-storage-path",children:"Alternative storage path"}),"\n",(0,s.jsx)(t.admonition,{type:"info",children:(0,s.jsxs)(t.p,{children:["Virtual Directories do not work with IIS and Kestrel.\nFor more information, please refer to ",(0,s.jsx)(t.a,{href:"https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#virtual-directories",children:"ASP.NET Core's documentation"}),"."]})}),"\n",(0,s.jsxs)(t.p,{children:["Ensure that the configuration's storage ",(0,s.jsx)(t.code,{children:"Path"})," has the appropriate forward slashes:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-javascript",children:'...\n "Storage": {\n "Type": "FileSystem",\n "Path": "C://AnotherFolder/Packages"\n },\n...\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Note that you will need to adjust folder permissions if the ",(0,s.jsx)(t.code,{children:"Path"})," is created outside of the BaGetter top-level directory. See the ",(0,s.jsx)(t.a,{href:"#bagetter-folder-permissions",children:"BaGettert Folder Permissions"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"iis-server-options",children:"IIS server options"}),"\n",(0,s.jsxs)(t.p,{children:["Settings such as the maximum package size can be configured for IIS in the appsettings.json file - see ",(0,s.jsx)(t.a,{href:"/docs/configuration#iis-server-options",children:"IIS Server Options"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>r});var s=n(7294);const i={},o=s.createContext(i);function r(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/defcddab.8c77c7a2.js b/assets/js/defcddab.8c77c7a2.js new file mode 100644 index 0000000..065e4f8 --- /dev/null +++ b/assets/js/defcddab.8c77c7a2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[381],{2487:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>o,metadata:()=>a,toc:()=>c});var s=n(5893),i=n(1151);const o={},r="Windows IIS Proxy",a={id:"Installation/iis-proxy",title:"Windows IIS Proxy",description:"With a few extra steps you can run BaGetter behind a Windows IIS proxy. This has many benefits, including automatic restarts on reboots.",source:"@site/docs/Installation/iis-proxy.md",sourceDirName:"Installation",slug:"/Installation/iis-proxy",permalink:"/docs/Installation/iis-proxy",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Installation/iis-proxy.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Run BaGetter on Google Cloud Platform",permalink:"/docs/Installation/gcp"},next:{title:"Run BaGetter on your Computer",permalink:"/docs/Installation/local"}},l={},c=[{value:"IIS setup",id:"iis-setup",level:2},{value:"BaGetter folder permissions",id:"bagetter-folder-permissions",level:2},{value:"Alternative storage path",id:"alternative-storage-path",level:2},{value:"IIS server options",id:"iis-server-options",level:2}];function d(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"windows-iis-proxy",children:"Windows IIS Proxy"}),"\n",(0,s.jsx)(t.p,{children:"With a few extra steps you can run BaGetter behind a Windows IIS proxy. This has many benefits, including automatic restarts on reboots."}),"\n",(0,s.jsx)(t.h2,{id:"iis-setup",children:"IIS setup"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["Install the ",(0,s.jsx)(t.a,{href:"https://dotnet.microsoft.com/download",children:".NET Core Runtime"})," on the web server."]}),"\n",(0,s.jsxs)(t.li,{children:["Copy the BaGetter directory over to your hosting area such as ",(0,s.jsx)(t.code,{children:"C:\\Inetpub\\wwwroot\\BaGetter"})]}),"\n",(0,s.jsxs)(t.li,{children:["Using IIS Manager, create a new Application Pool:","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Name = ",(0,s.jsx)(t.code,{children:"BaGetterAppPool"})," (can be whatever you want)"]}),"\n",(0,s.jsx)(t.li,{children:".NET CLR version = No Managed Code"}),"\n",(0,s.jsx)(t.li,{children:"Managed Pipeline Mode = Integrated"}),"\n",(0,s.jsx)(t.li,{children:"Start application pool immediately = checked"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["Using IIS Manager, create a new web site:","\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Choose your site name and physical path"}),"\n",(0,s.jsxs)(t.li,{children:["Choose ",(0,s.jsx)(t.code,{children:"BaGetterAppPool"})," as the application pool"]}),"\n",(0,s.jsx)(t.li,{children:"In the Binding area, enter the default BaGetter port of 5000"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"bagetter-folder-permissions",children:"BaGetter folder permissions"}),"\n",(0,s.jsxs)(t.p,{children:["You ",(0,s.jsx)(t.strong,{children:"may"})," need to give special permissions to the top-level BaGetter folder so that the app can persist its state. This is necessary as the Application Pools' identity is a virtual account that isn't recognized by the Windows User Management Console. For more information, please refer to ASP.NET Core's documentation:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#application-pools",children:"Application Pools"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#application-pool-identity",children:"Application Pool Identity"})}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"alternative-storage-path",children:"Alternative storage path"}),"\n",(0,s.jsx)(t.admonition,{type:"info",children:(0,s.jsxs)(t.p,{children:["Virtual Directories do not work with IIS and Kestrel.\nFor more information, please refer to ",(0,s.jsx)(t.a,{href:"https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#virtual-directories",children:"ASP.NET Core's documentation"}),"."]})}),"\n",(0,s.jsxs)(t.p,{children:["Ensure that the configuration's storage ",(0,s.jsx)(t.code,{children:"Path"})," has the appropriate forward slashes:"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-javascript",children:'...\n "Storage": {\n "Type": "FileSystem",\n "Path": "C://AnotherFolder/Packages"\n },\n...\n'})}),"\n",(0,s.jsxs)(t.p,{children:["Note that you will need to adjust folder permissions if the ",(0,s.jsx)(t.code,{children:"Path"})," is created outside of the BaGetter top-level directory. See the ",(0,s.jsx)(t.a,{href:"#bagetter-folder-permissions",children:"BaGettert Folder Permissions"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"iis-server-options",children:"IIS server options"}),"\n",(0,s.jsxs)(t.p,{children:["Settings such as the maximum package size can be configured for IIS in the appsettings.json file - see ",(0,s.jsx)(t.a,{href:"/docs/configuration#iis-server-options",children:"IIS Server Options"}),"."]})]})}function h(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>r});var s=n(7294);const i={},o=s.createContext(i);function r(e){const t=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/df3a1ecd.5eea72c1.js b/assets/js/df3a1ecd.5eea72c1.js new file mode 100644 index 0000000..b3af77c --- /dev/null +++ b/assets/js/df3a1ecd.5eea72c1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[711],{451:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>g,frontMatter:()=>r,metadata:()=>o,toc:()=>d});var t=a(5893),s=a(1151);const r={},i="BaGetter SDK",o={id:"Advanced/sdk",title:"BaGetter SDK",description:"You can use BaGetter's BaGetter.Protocol package to interact with a NuGet server.",source:"@site/docs/Advanced/sdk.md",sourceDirName:"Advanced",slug:"/Advanced/sdk",permalink:"/docs/Advanced/sdk",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/docs/Advanced/sdk.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Debugging BaGetter",permalink:"/docs/Advanced/debugging"},next:{title:"Import packages from a local feed",permalink:"/docs/Import/local-feeds"}},c={},d=[{value:"Getting Started",id:"getting-started",level:2},{value:"List Package Versions",id:"list-package-versions",level:2},{value:"Download a package",id:"download-a-package",level:2},{value:"Find Package Metadata",id:"find-package-metadata",level:2},{value:"Search for packages",id:"search-for-packages",level:2}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"bagetter-sdk",children:"BaGetter SDK"}),"\n",(0,t.jsxs)(n.p,{children:["You can use BaGetter's ",(0,t.jsx)(n.a,{href:"https://www.nuget.org/packages/BaGetter.Protocol",children:(0,t.jsx)(n.code,{children:"BaGetter.Protocol"})})," package to interact with a NuGet server."]}),"\n",(0,t.jsx)(n.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,t.jsxs)(n.p,{children:["Install the ",(0,t.jsx)(n.a,{href:"https://www.nuget.org/packages/BaGetter.Protocol",children:(0,t.jsx)(n.code,{children:"BaGetter.Protocol"})})," package:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"dotnet add package BaGetter.Protocol\n"})}),"\n",(0,t.jsx)(n.h2,{id:"list-package-versions",children:"List Package Versions"}),"\n",(0,t.jsxs)(n.p,{children:["Find all versions of the ",(0,t.jsx)(n.code,{children:"Newtonsoft.Json"})," package:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");\n\nIReadOnlyList> versions = await client.ListPackageVersionsAsync("Newtonsoft.Json");\n\nforeach (NuGetVersion version in versions)\n{\n Console.WriteLine($"Found version: {version}");\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"download-a-package",children:"Download a package"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");\n\nstring packageId = "Newtonsoft.Json";\nNuGetVersion packageVersion = new NuGetVersion("12.0.1");\n\nusing (Stream packageStream = await client.DownloadPackageAsync(packageId, packageVersion))\n{\n Console.WriteLine($"Downloaded package {packageId} {packageVersion}");\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"find-package-metadata",children:"Find Package Metadata"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");\n\n// Find the metadata for all versions of a package.\nIReadOnlyList items = await client.GetPackageMetadataAsync("Newtonsoft.Json");\nif (!items.Any())\n{\n Console.WriteLine($"Package \'Newtonsoft.Json\' does not exist");\n return;\n}\n\nforeach (var metadata in items)\n{\n Console.WriteLine($"Version: {metadata.Version}");\n Console.WriteLine($"Listed: {metadata.Listed}");\n Console.WriteLine($"Tags: {metadata.Tags}");\n Console.WriteLine($"Description: {metadata.Description}");\n}\n\n// Or, find the metadata for a single version of a package.\nstring packageId = "Newtonsoft.Json"\nNuGetVersion packageVersion = new NuGetVersion("12.0.1");\n\nPackageMetadata metadata = await client.GetPackageMetadataAsync(packageId, packageVersion);\n\nConsole.WriteLine($"Listed: {metadata.Listed}");\nConsole.WriteLine($"Tags: {metadata.Tags}");\nConsole.WriteLine($"Description: {metadata.Description}");\n'})}),"\n",(0,t.jsx)(n.h2,{id:"search-for-packages",children:"Search for packages"}),"\n",(0,t.jsx)(n.p,{children:'Search for "json" packages:'}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");\nIReadOnlyList results = await client.SearchAsync("json");\n\nforeach (SearchResult result in results)\n{\n Console.WriteLine($"Found package {result.PackageId} {searchResult.Version}");\n}\n'})})]})}function g(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},1151:(e,n,a)=>{a.d(n,{Z:()=>o,a:()=>i});var t=a(7294);const s={},r=t.createContext(s);function i(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/df3a1ecd.954cb44e.js b/assets/js/df3a1ecd.954cb44e.js deleted file mode 100644 index 3078b3f..0000000 --- a/assets/js/df3a1ecd.954cb44e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[711],{451:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>g,frontMatter:()=>r,metadata:()=>o,toc:()=>d});var t=a(5893),s=a(1151);const r={},i="BaGetter SDK",o={id:"Advanced/sdk",title:"BaGetter SDK",description:"You can use BaGetter's BaGetter.Protocol package to interact with a NuGet server.",source:"@site/docs/Advanced/sdk.md",sourceDirName:"Advanced",slug:"/Advanced/sdk",permalink:"/docs/Advanced/sdk",draft:!1,unlisted:!1,editUrl:"https://github.com/bagetter/BaGetter/tree/main/docs/Advanced/sdk.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Debugging BaGetter",permalink:"/docs/Advanced/debugging"},next:{title:"Import packages from a local feed",permalink:"/docs/Import/local-feeds"}},c={},d=[{value:"Getting Started",id:"getting-started",level:2},{value:"List Package Versions",id:"list-package-versions",level:2},{value:"Download a package",id:"download-a-package",level:2},{value:"Find Package Metadata",id:"find-package-metadata",level:2},{value:"Search for packages",id:"search-for-packages",level:2}];function l(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",p:"p",pre:"pre",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"bagetter-sdk",children:"BaGetter SDK"}),"\n",(0,t.jsxs)(n.p,{children:["You can use BaGetter's ",(0,t.jsx)(n.a,{href:"https://www.nuget.org/packages/BaGetter.Protocol",children:(0,t.jsx)(n.code,{children:"BaGetter.Protocol"})})," package to interact with a NuGet server."]}),"\n",(0,t.jsx)(n.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,t.jsxs)(n.p,{children:["Install the ",(0,t.jsx)(n.a,{href:"https://www.nuget.org/packages/BaGetter.Protocol",children:(0,t.jsx)(n.code,{children:"BaGetter.Protocol"})})," package:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-shell",children:"dotnet add package BaGetter.Protocol\n"})}),"\n",(0,t.jsx)(n.h2,{id:"list-package-versions",children:"List Package Versions"}),"\n",(0,t.jsxs)(n.p,{children:["Find all versions of the ",(0,t.jsx)(n.code,{children:"Newtonsoft.Json"})," package:"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");\n\nIReadOnlyList> versions = await client.ListPackageVersionsAsync("Newtonsoft.Json");\n\nforeach (NuGetVersion version in versions)\n{\n Console.WriteLine($"Found version: {version}");\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"download-a-package",children:"Download a package"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");\n\nstring packageId = "Newtonsoft.Json";\nNuGetVersion packageVersion = new NuGetVersion("12.0.1");\n\nusing (Stream packageStream = await client.DownloadPackageAsync(packageId, packageVersion))\n{\n Console.WriteLine($"Downloaded package {packageId} {packageVersion}");\n}\n'})}),"\n",(0,t.jsx)(n.h2,{id:"find-package-metadata",children:"Find Package Metadata"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");\n\n// Find the metadata for all versions of a package.\nIReadOnlyList items = await client.GetPackageMetadataAsync("Newtonsoft.Json");\nif (!items.Any())\n{\n Console.WriteLine($"Package \'Newtonsoft.Json\' does not exist");\n return;\n}\n\nforeach (var metadata in items)\n{\n Console.WriteLine($"Version: {metadata.Version}");\n Console.WriteLine($"Listed: {metadata.Listed}");\n Console.WriteLine($"Tags: {metadata.Tags}");\n Console.WriteLine($"Description: {metadata.Description}");\n}\n\n// Or, find the metadata for a single version of a package.\nstring packageId = "Newtonsoft.Json"\nNuGetVersion packageVersion = new NuGetVersion("12.0.1");\n\nPackageMetadata metadata = await client.GetPackageMetadataAsync(packageId, packageVersion);\n\nConsole.WriteLine($"Listed: {metadata.Listed}");\nConsole.WriteLine($"Tags: {metadata.Tags}");\nConsole.WriteLine($"Description: {metadata.Description}");\n'})}),"\n",(0,t.jsx)(n.h2,{id:"search-for-packages",children:"Search for packages"}),"\n",(0,t.jsx)(n.p,{children:'Search for "json" packages:'}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-csharp",children:'NuGetClient client = new NuGetClient("https://api.nuget.org/v3/index.json");\nIReadOnlyList results = await client.SearchAsync("json");\n\nforeach (SearchResult result in results)\n{\n Console.WriteLine($"Found package {result.PackageId} {searchResult.Version}");\n}\n'})})]})}function g(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},1151:(e,n,a)=>{a.d(n,{Z:()=>o,a:()=>i});var t=a(7294);const s={},r=t.createContext(s);function i(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.5d730949.js b/assets/js/main.5d730949.js new file mode 100644 index 0000000..e6ed3a8 --- /dev/null +++ b/assets/js/main.5d730949.js @@ -0,0 +1,2 @@ +/*! For license information please see main.5d730949.js.LICENSE.txt */ +(self.webpackChunkba_getter=self.webpackChunkba_getter||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});n(7294);var r=n(8356),a=n.n(r),o=n(6887);const i={"0458b440":[()=>n.e(864).then(n.bind(n,5249)),"@site/docs/vs/nugetserver.md",5249],"07fefcf6":[()=>n.e(708).then(n.bind(n,6661)),"@site/docs/vs/teamcity.md",6661],17896441:[()=>Promise.all([n.e(532),n.e(918)]).then(n.bind(n,7212)),"@theme/DocItem",7212],"1ca79a61":[()=>n.e(220).then(n.bind(n,7234)),"@site/docs/vs/myget.md",7234],"1d45c4fa":[()=>n.e(889).then(n.bind(n,6214)),"@site/docs/vs/nugetorg.md",6214],"1df93b7f":[()=>Promise.all([n.e(532),n.e(237)]).then(n.bind(n,8391)),"@site/src/pages/index.tsx",8391],"28e51da9":[()=>n.e(41).then(n.bind(n,4903)),"@site/docs/Import/local-feeds.md",4903],"2f22ae25":[()=>n.e(185).then(n.bind(n,7791)),"@site/docs/Installation/local.md",7791],38105561:[()=>n.e(903).then(n.bind(n,3482)),"@site/docs/vs/azure-artifacts.md",3482],"3b941570":[()=>n.e(796).then(n.bind(n,928)),"@site/docs/Installation/docker.md",928],"41d97e2f":[()=>n.e(48).then(n.bind(n,688)),"@site/docs/vs/artifactory.md",688],"48f00fa9":[()=>n.e(939).then(n.bind(n,3906)),"@site/docs/Installation/aliyun.md",3906],"4db0b455":[()=>n.e(810).then(n.bind(n,1e3)),"@site/docs/vs/nexus.md",1e3],"5c37fac9":[()=>n.e(950).then(n.bind(n,395)),"@site/docs/Index.md",395],"5e95c892":[()=>n.e(661).then(n.bind(n,1892)),"@theme/DocsRoot",1892],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"6633a546":[()=>n.e(52).then(n.bind(n,8250)),"@site/docs/vs/local-feeds.md",8250],"6c57e7b8":[()=>n.e(762).then(n.bind(n,3622)),"@site/docs/Import/nugetorg.md",3622],"7d952fa5":[()=>n.e(681).then(n.t.bind(n,3769,19)),"/home/runner/work/BaGetter/BaGetter/docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9ed00105":[()=>n.e(4).then(n.bind(n,8373)),"@site/docs/configuration.md",8373],a7bd4aaa:[()=>n.e(518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a94703ab:[()=>Promise.all([n.e(532),n.e(368)]).then(n.bind(n,2674)),"@theme/DocRoot",2674],af21e6ba:[()=>n.e(974).then(n.bind(n,8678)),"@site/docs/Advanced/debugging.md",8678],b1e7123d:[()=>Promise.all([n.e(532),n.e(14)]).then(n.bind(n,9651)),"@site/docs/Installation/azure.md",9651],b7ad560a:[()=>n.e(506).then(n.bind(n,6968)),"@site/docs/Installation/gcp.md",6968],bf03d4ec:[()=>Promise.all([n.e(532),n.e(328)]).then(n.bind(n,843)),"@site/docs/Installation/aws.md",843],c89f3e57:[()=>n.e(859).then(n.bind(n,8655)),"@site/docs/vs/liget.md",8655],d99a49c2:[()=>n.e(621).then(n.bind(n,1659)),"@site/docs/Import/nugetserver.md",1659],defcddab:[()=>n.e(381).then(n.bind(n,2487)),"@site/docs/Installation/iis-proxy.md",2487],df3a1ecd:[()=>n.e(711).then(n.bind(n,451)),"@site/docs/Advanced/sdk.md",451],f38735a0:[()=>n.e(313).then(n.t.bind(n,5745,19)),"/home/runner/work/BaGetter/BaGetter/docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745]};var l=n(5893);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var u=n(9670),c=n(226);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(772).then(n.bind(n,1772)),modules:["@theme/NotFound"],webpack:()=>[1772],render(e,t){const n=e.default;return(0,l.jsx)(c.z,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},f=[],p=[],g=(0,u.Z)(r);return Object.entries(g).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],f.push(r[1]),p.push(r[2]))})),a().Map({loading:s,loader:d,modules:f,webpack:()=>p,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;return delete a.__context,(0,l.jsx)(c.z,{value:i,children:(0,l.jsx)(o,{...a,...n})})}})}const f=[{path:"/docs",component:d("/docs","467"),routes:[{path:"/docs",component:d("/docs","5ea"),routes:[{path:"/docs",component:d("/docs","28e"),routes:[{path:"/docs",component:d("/docs","1ae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Advanced/debugging",component:d("/docs/Advanced/debugging","7b8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Advanced/sdk",component:d("/docs/Advanced/sdk","326"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/configuration",component:d("/docs/configuration","725"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Import/local-feeds",component:d("/docs/Import/local-feeds","c8d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Import/nugetorg",component:d("/docs/Import/nugetorg","9f0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Import/nugetserver",component:d("/docs/Import/nugetserver","11b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/aliyun",component:d("/docs/Installation/aliyun","5c9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/aws",component:d("/docs/Installation/aws","b5d"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/azure",component:d("/docs/Installation/azure","6ff"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/docker",component:d("/docs/Installation/docker","7aa"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/gcp",component:d("/docs/Installation/gcp","1e0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/iis-proxy",component:d("/docs/Installation/iis-proxy","381"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/Installation/local",component:d("/docs/Installation/local","4eb"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/vs/artifactory",component:d("/docs/vs/artifactory","567"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/vs/azure-artifacts",component:d("/docs/vs/azure-artifacts","4ab"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/vs/liget",component:d("/docs/vs/liget","8b3"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/vs/local-feeds",component:d("/docs/vs/local-feeds","718"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/vs/myget",component:d("/docs/vs/myget","7ff"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/vs/nexus",component:d("/docs/vs/nexus","aa9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/vs/nugetorg",component:d("/docs/vs/nugetorg","144"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/vs/nugetserver",component:d("/docs/vs/nugetserver","840"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/vs/teamcity",component:d("/docs/vs/teamcity","7bb"),exact:!0,sidebar:"tutorialSidebar"}]}]}]},{path:"/",component:d("/","66c"),exact:!0},{path:"*",component:d("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>i});var r=n(7294),a=n(5893);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},7221:(e,t,n)=>{"use strict";var r=n(7294),a=n(745),o=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790),f=n(5893);function p(e){let{children:t}=e;return(0,f.jsx)(f.Fragment,{children:t})}var g=n(5742),m=n(2263),h=n(4996),y=n(6668),b=n(1944),v=n(4711),w=n(9727),k=n(3320),x=n(8780),S=n(197);function E(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,m.Z)(),r=(0,v.l)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,f.jsxs)(g.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,f.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function _(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,m.Z)(),{pathname:r}=(0,c.TH)();return e+(0,x.applyTrailingSlash)((0,h.Z)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,f.jsxs)(g.Z,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function C(){const{i18n:{currentLocale:e}}=(0,m.Z)(),{metadata:t,image:n}=(0,y.L)();return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(g.Z,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:w.h})]}),n&&(0,f.jsx)(b.d,{image:n}),(0,f.jsx)(_,{}),(0,f.jsx)(E,{}),(0,f.jsx)(S.Z,{tag:k.HX,locale:e}),(0,f.jsx)(g.Z,{children:t.map(((e,t)=>(0,f.jsx)("meta",{...e},t)))})]})}const T=new Map;function A(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(u.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var N=n(8934),L=n(8940),I=n(469);function P(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>a.forEach((e=>e?.()))}const O=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,I.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),P("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function j(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class R extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?P("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=P("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),j(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,f.jsx)(O,{previousLocation:this.previousLocation,location:t,children:(0,f.jsx)(c.AW,{location:t,render:()=>e})})}}const F=R,D="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function $(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${D}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var K=n(9670);const X=new Set,Q=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!Q.has(e)&&!X.has(e))(e))return!1;X.add(e);const t=(0,d.f)(u.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(q).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?Y(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!Q.has(e))(e)&&(Q.add(e),j(e))},te=Object.freeze(ee),ne=Boolean(!0);if(l.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,f.jsx)(i.B6,{children:(0,f.jsx)(o.VK,{children:(0,f.jsx)(G,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},l=()=>{if(ne)r.startTransition((()=>{a.hydrateRoot(e,t,{onRecoverableError:n})}));else{const o=a.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{o.render(t)}))}};j(window.location.pathname).then(l)}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>f});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"Index","docs":[{"id":"Advanced/debugging","path":"/docs/Advanced/debugging","sidebar":"tutorialSidebar"},{"id":"Advanced/sdk","path":"/docs/Advanced/sdk","sidebar":"tutorialSidebar"},{"id":"configuration","path":"/docs/configuration","sidebar":"tutorialSidebar"},{"id":"Import/local-feeds","path":"/docs/Import/local-feeds","sidebar":"tutorialSidebar"},{"id":"Import/nugetorg","path":"/docs/Import/nugetorg","sidebar":"tutorialSidebar"},{"id":"Import/nugetserver","path":"/docs/Import/nugetserver","sidebar":"tutorialSidebar"},{"id":"Index","path":"/docs/","sidebar":"tutorialSidebar"},{"id":"Installation/aliyun","path":"/docs/Installation/aliyun","sidebar":"tutorialSidebar"},{"id":"Installation/aws","path":"/docs/Installation/aws","sidebar":"tutorialSidebar"},{"id":"Installation/azure","path":"/docs/Installation/azure","sidebar":"tutorialSidebar"},{"id":"Installation/docker","path":"/docs/Installation/docker","sidebar":"tutorialSidebar"},{"id":"Installation/gcp","path":"/docs/Installation/gcp","sidebar":"tutorialSidebar"},{"id":"Installation/iis-proxy","path":"/docs/Installation/iis-proxy","sidebar":"tutorialSidebar"},{"id":"Installation/local","path":"/docs/Installation/local","sidebar":"tutorialSidebar"},{"id":"vs/artifactory","path":"/docs/vs/artifactory","sidebar":"tutorialSidebar"},{"id":"vs/azure-artifacts","path":"/docs/vs/azure-artifacts","sidebar":"tutorialSidebar"},{"id":"vs/liget","path":"/docs/vs/liget","sidebar":"tutorialSidebar"},{"id":"vs/local-feeds","path":"/docs/vs/local-feeds","sidebar":"tutorialSidebar"},{"id":"vs/myget","path":"/docs/vs/myget","sidebar":"tutorialSidebar"},{"id":"vs/nexus","path":"/docs/vs/nexus","sidebar":"tutorialSidebar"},{"id":"vs/nugetorg","path":"/docs/vs/nugetorg","sidebar":"tutorialSidebar"},{"id":"vs/nugetserver","path":"/docs/vs/nugetserver","sidebar":"tutorialSidebar"},{"id":"vs/teamcity","path":"/docs/vs/teamcity","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/","label":"Index"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var l=n(7529);const s=JSON.parse('{"docusaurusVersion":"3.1.1","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.1.1"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.1.1"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.1.1"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.1.1"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.1.1"}}}');var u=n(5893);const c={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},d=r.createContext(c);function f(e){let{children:t}=e;return(0,u.jsx)(d.Provider,{value:c,children:t})}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(6040),s=n(5893);function u(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,s.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,s.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,s.jsx)(c,{error:t})]})}function c(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,s.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,s.jsxs)(p,{fallback:()=>(0,s.jsx)(u,{error:t,tryAgain:n}),children:[(0,s.jsx)(o.Z,{children:(0,s.jsx)("title",{children:"Page Error"})}),(0,s.jsx)(l.Z,{children:(0,s.jsx)(u,{error:t,tryAgain:n})})]})}const f=e=>(0,s.jsx)(d,{...e});class p extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??f)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);var r=n(405),a=n(5893);function o(e){return(0,a.jsx)(r.ql,{...e})}},3692:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(3727),o=n(8780),i=n(2263),l=n(3919),s=n(412),u=n(8138),c=n(4996),d=n(5893);function f(e,t){let{isNavLink:n,to:f,href:p,activeClassName:g,isActive:m,"data-noBrokenLinkCheck":h,autoAddBaseUrl:y=!0,...b}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:k}=(0,c.C)(),x=(0,u.Z)(),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const E=f||p;const _=(0,l.Z)(E),C=E?.replace("pathname://","");let T=void 0!==C?(A=C,y&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&_&&(T=(0,o.applyTrailingSlash)(T,{trailingSlash:v,baseUrl:w}));const N=(0,r.useRef)(!1),L=n?a.OL:a.rU,I=s.Z.canUseIntersectionObserver,P=(0,r.useRef)(),O=()=>{N.current||null==T||(window.docusaurus.preload(T),N.current=!0)};(0,r.useEffect)((()=>(!I&&_&&null!=T&&window.docusaurus.prefetch(T),()=>{I&&P.current&&P.current.disconnect()})),[P,T,I,_]);const j=T?.startsWith("#")??!1,R=!b.target||"_self"===b.target,F=!T||!_||!R||j;return h||!j&&F||x.collectLink(T),b.id&&x.collectAnchor(b.id),F?(0,d.jsx)("a",{ref:S,href:T,...E&&!_&&{target:"_blank",rel:"noopener noreferrer"},...b}):(0,d.jsx)(L,{...b,onMouseEnter:O,onTouchStart:O,innerRef:e=>{S.current=e,I&&e&&_&&(P.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(P.current.unobserve(e),P.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),P.current.observe(e))},to:T,...n&&{isActive:m,activeClassName:g}})}const p=r.forwardRef(f)},1875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u,I:()=>s});var r=n(7294),a=n(5893);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(7529);function l(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function s(e,t){let{message:n,id:r}=e;return o(l({message:n,id:r}),t)}function u(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=l({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},8138:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var r=n(7294);n(5893);const a=r.createContext({collectAnchor:()=>{},collectLink:()=>{}}),o=()=>(0,r.useContext)(a);function i(){return o()}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>i});var r=n(7294),a=n(5893);const o=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(o),l=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,a.jsx)(o.Provider,{value:l,children:t})}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>m,gA:()=>f,_r:()=>c,Jo:()=>h,zh:()=>d,yW:()=>g,gB:()=>p});var r=n(6550),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function p(e){return d(e).versions}function g(e){const t=d(e);return l(t)}function m(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(2573),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(6854),n(1127)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},2503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var r=n(512),a=n(5999),o=n(6668),i=n(3692),l=n(8138);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var u=n(5893);function c(e){let{as:t,id:n,...c}=e;const d=(0,l.Z)(),{navbar:{hideOnScroll:f}}=(0,o.L)();if("h1"===t||!n)return(0,u.jsx)(t,{...c,id:void 0});d.collectAnchor(n);const p=(0,a.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,u.jsxs)(t,{...c,className:(0,r.Z)("anchor",f?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,u.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":p,title:p,children:"\u200b"})]})}},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(5893);function o(e){let{width:t=13.5,height:n=13.5}=e;return(0,a.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},6040:(e,t,n)=>{"use strict";n.d(t,{Z:()=>pt});var r=n(7294),a=n(512),o=n(4763),i=n(1944),l=n(6550),s=n(5999),u=n(5936),c=n(5893);const d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,l.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,onClick:n}}const g=(0,s.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function m(e){const t=e.children??g,{containerRef:n,onClick:r}=p();return(0,c.jsx)("div",{ref:n,role:"region","aria-label":g,children:(0,c.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var h=n(5281),y=n(9727);const b={skipToContent:"skipToContent_fXgn"};function v(){return(0,c.jsx)(m,{className:b.skipToContent})}var w=n(6668),k=n(9689);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:a=1.2,className:o,...i}=e;return(0,c.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,c.jsx)("g",{stroke:r,strokeWidth:a,children:(0,c.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function E(e){return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,a.Z)("clean-btn close",S.closeButton,e.className),children:(0,c.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const _={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,c.jsx)("div",{...e,className:(0,a.Z)(_.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:a,isCloseable:o}=e;return(0,c.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:a},role:"banner",children:[o&&(0,c.jsx)("div",{className:T.announcementBarPlaceholder}),(0,c.jsx)(C,{className:T.announcementBarContent}),o&&(0,c.jsx)(E,{onClick:n,className:T.announcementBarClose})]})}var N=n(3163),L=n(2466);var I=n(902),P=n(3102);const O=r.createContext(null);function j(e){let{children:t}=e;const n=function(){const e=(0,N.e)(),t=(0,P.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,I.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return(0,c.jsx)(O.Provider,{value:n,children:t})}function R(e){if(e.component){const t=e.component;return(0,c.jsx)(t,{...e.props})}}function F(){const e=(0,r.useContext)(O);if(!e)throw new I.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,P.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:R(o)})),[a,o,t])}function D(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:o}=F();return(0,c.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,c.jsxs)("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,c.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var M=n(2949),z=n(2389);function $(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function B(e){return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,c.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function Z(e){let{className:t,buttonClassName:n,value:r,onChange:o}=e;const i=(0,z.Z)(),l=(0,s.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,s.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,s.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,c.jsx)("div",{className:(0,a.Z)(U.toggle,t),children:(0,c.jsxs)("button",{className:(0,a.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>o("dark"===r?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite",children:[(0,c.jsx)($,{className:(0,a.Z)(U.toggleIcon,U.lightToggleIcon)}),(0,c.jsx)(B,{className:(0,a.Z)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(Z),V={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function W(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,M.I)();return r?null:(0,c.jsx)(H,{className:t,buttonClassName:"dark"===n?V.darkNavbarColorModeToggle:void 0,value:a,onChange:o})}var G=n(1327);function q(){return(0,c.jsx)(G.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,N.e)();return(0,c.jsx)("button",{type:"button","aria-label":(0,s.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,c.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function K(){return(0,c.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,c.jsx)(q,{}),(0,c.jsx)(W,{className:"margin-right--md"}),(0,c.jsx)(Y,{})]})}var X=n(3692),Q=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:a,label:o,html:i,isDropdownLink:l,prependBaseUrlToHref:s,...u}=e;const d=(0,Q.Z)(r),f=(0,Q.Z)(t),p=(0,Q.Z)(a,{forcePrependBaseUrl:!0}),g=o&&a&&!(0,J.Z)(a),m=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,c.jsxs)(c.Fragment,{children:[o,g&&(0,c.jsx)(te.Z,{...l&&{width:12,height:12}})]})};return a?(0,c.jsx)(X.Z,{href:s?p:a,...u,...m}):(0,c.jsx)(X.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(f)},...u,...m})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const o=(0,c.jsx)(ne,{className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,c.jsx)("li",{children:o}):o}function ae(e){let{className:t,isDropdownItem:n,...r}=e;return(0,c.jsx)("li",{className:"menu__list-item",children:(0,c.jsx)(ne,{className:(0,a.Z)("menu__link",t),...r})})}function oe(e){let{mobile:t=!1,position:n,...r}=e;const a=t?ae:re;return(0,c.jsx)(a,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(6043),le=n(8596),se=n(2263);const ue={dropdownNavbarItemMobile:"dropdownNavbarItemMobile_S0Fm"};function ce(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function de(e){let{items:t,position:n,className:o,onClick:i,...l}=e;const s=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{s.current&&!s.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[s]),(0,c.jsxs)("div",{ref:s,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u}),children:[(0,c.jsx)(ne,{"aria-haspopup":"true","aria-expanded":u,role:"button",href:l.to?void 0:"#",className:(0,a.Z)("navbar__link",o),...l,onClick:l.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))},children:l.children??l.label}),(0,c.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(_e,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function fe(e){let{items:t,className:n,position:o,onClick:i,...s}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,l.TH)();return t.replace(e,"/")}(),d=ce(t,u),{collapsed:f,toggleCollapsed:p,setCollapsed:g}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&g(!d)}),[u,d,g]),(0,c.jsxs)("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f}),children:[(0,c.jsx)(ne,{role:"button",className:(0,a.Z)(ue.dropdownNavbarItemMobile,"menu__link menu__link--sublist menu__link--sublist-caret",n),...s,onClick:e=>{e.preventDefault(),p()},children:s.children??s.label}),(0,c.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f,children:t.map(((e,t)=>(0,r.createElement)(_e,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function pe(e){let{mobile:t=!1,...n}=e;const r=t?fe:de;return(0,c.jsx)(r,{...n})}var ge=n(4711);function me(e){let{width:t=20,height:n=20,...r}=e;return(0,c.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,c.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const he="iconLanguage_nlXk";var ye=n(1875);const be={navbarSearchContainer:"navbarSearchContainer_Bca1"};function ve(e){let{children:t,className:n}=e;return(0,c.jsx)("div",{className:(0,a.Z)(n,be.navbarSearchContainer),children:t})}var we=n(143),ke=n(3438);var xe=n(373);const Se=e=>e.docs.find((t=>t.id===e.mainDocId));const Ee={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:a="",...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,se.Z)(),f=(0,ge.l)(),{search:p,hash:g}=(0,l.TH)(),m=[...n,...u.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${g}${a}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],h=t?(0,s.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,c.jsx)(pe,{...o,mobile:t,label:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(me,{className:he}),h]}),items:m})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,c.jsx)(ve,{className:n,children:(0,c.jsx)(ye.Z,{})})},dropdown:pe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:o=!1}=e;const i=o?"li":"div";return(0,c.jsx)(i,{className:(0,a.Z)({navbar__item:!r&&!o,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.Iw)(r),i=(0,ke.vY)(t,r),l=o?.path===i?.path;return null===i||i.unlisted&&!l?null:(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>l||!!o?.sidebar&&o.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...a}=e;const{activeDoc:o}=(0,we.Iw)(r),i=(0,ke.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,c.jsx)(oe,{exact:!0,...a,isActive:()=>o?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...a}=e;const o=(0,ke.lO)(r)[0],i=t??o.label,l=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(o).path;return(0,c.jsx)(oe,{...a,label:i,to:l})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:a,dropdownItemsAfter:o,...i}=e;const{search:u,hash:d}=(0,l.TH)(),f=(0,we.Iw)(n),p=(0,we.gB)(n),{savePreferredVersionName:g}=(0,xe.J)(n),m=[...a,...p.map((e=>{const t=f.alternateDocVersions[e.name]??Se(e);return{label:e.label,to:`${t.path}${u}${d}`,isActive:()=>e===f.activeVersion,onClick:()=>g(e.name)}})),...o],h=(0,ke.lO)(n)[0],y=t&&m.length>1?(0,s.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):h.label,b=t&&m.length>1?void 0:Se(h).path;return m.length<=1?(0,c.jsx)(oe,{...i,mobile:t,label:y,to:b,isActive:r?()=>!1:void 0}):(0,c.jsx)(pe,{...i,mobile:t,label:y,to:b,items:m,isActive:r?()=>!1:void 0})}};function _e(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Ee[r];if(!a)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,c.jsx)(a,{...n})}function Ce(){const e=(0,N.e)(),t=(0,w.L)().navbar.items;return(0,c.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(_e,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function Te(e){return(0,c.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,c.jsx)(s.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ae(){const e=0===(0,w.L)().navbar.items.length,t=F();return(0,c.jsxs)(c.Fragment,{children:[!e&&(0,c.jsx)(Te,{onClick:()=>t.hide()}),t.content]})}function Ne(){const e=(0,N.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,c.jsx)(D,{header:(0,c.jsx)(K,{}),primaryMenu:(0,c.jsx)(Ce,{}),secondaryMenu:(0,c.jsx)(Ae,{})}):null}const Le={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Ie(e){return(0,c.jsx)("div",{role:"presentation",...e,className:(0,a.Z)("navbar-sidebar__backdrop",e.className)})}function Pe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,N.e)(),{navbarRef:l,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,L.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,c.jsxs)("nav",{ref:l,"aria-label":(0,s.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Le.navbarHideable,!d&&Le.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown}),children:[t,(0,c.jsx)(Ie,{onClick:i.toggle}),(0,c.jsx)(Ne,{})]})}var Oe=n(8780);const je={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function Re(e){return(0,c.jsx)("button",{type:"button",...e,children:(0,c.jsx)(s.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function Fe(e){let{error:t}=e;const n=(0,Oe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,c.jsx)("p",{className:je.errorBoundaryError,children:n})}class De extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const Me="right";function ze(e){let{width:t=30,height:n=30,className:r,...a}=e;return(0,c.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...a,children:(0,c.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function $e(){const{toggle:e,shown:t}=(0,N.e)();return(0,c.jsx)("button",{onClick:e,"aria-label":(0,s.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,c.jsx)(ze,{})})}const Be={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return(0,c.jsx)(c.Fragment,{children:t.map(((e,t)=>(0,c.jsx)(De,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,c.jsx)(_e,{...e})},t)))})}function Ze(e){let{left:t,right:n}=e;return(0,c.jsxs)("div",{className:"navbar__inner",children:[(0,c.jsx)("div",{className:"navbar__items",children:t}),(0,c.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function He(){const e=(0,N.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??Me)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),a=t.find((e=>"search"===e.type));return(0,c.jsx)(Ze,{left:(0,c.jsxs)(c.Fragment,{children:[!e.disabled&&(0,c.jsx)($e,{}),(0,c.jsx)(q,{}),(0,c.jsx)(Ue,{items:n})]}),right:(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Ue,{items:r}),(0,c.jsx)(W,{className:Be.colorModeToggle}),!a&&(0,c.jsx)(ve,{children:(0,c.jsx)(ye.Z,{})})]})})}function Ve(){return(0,c.jsx)(Pe,{children:(0,c.jsx)(He,{})})}function We(e){let{item:t}=e;const{to:n,href:r,label:a,prependBaseUrlToHref:o,...i}=t,l=(0,Q.Z)(n),s=(0,Q.Z)(r,{forcePrependBaseUrl:!0});return(0,c.jsxs)(X.Z,{className:"footer__link-item",...r?{href:o?s:r}:{to:l},...i,children:[a,r&&!(0,J.Z)(r)&&(0,c.jsx)(te.Z,{})]})}function Ge(e){let{item:t}=e;return t.html?(0,c.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)("li",{className:"footer__item",children:(0,c.jsx)(We,{item:t})},t.href??t.to)}function qe(e){let{column:t}=e;return(0,c.jsxs)("div",{className:"col footer__col",children:[(0,c.jsx)("div",{className:"footer__title",children:t.title}),(0,c.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,c.jsx)(Ge,{item:e},t)))})]})}function Ye(e){let{columns:t}=e;return(0,c.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,c.jsx)(qe,{column:e},t)))})}function Ke(){return(0,c.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function Xe(e){let{item:t}=e;return t.html?(0,c.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,c.jsx)(We,{item:t})}function Qe(e){let{links:t}=e;return(0,c.jsx)("div",{className:"footer__links text--center",children:(0,c.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,c.jsxs)(r.Fragment,{children:[(0,c.jsx)(Xe,{item:e}),t.length!==n+1&&(0,c.jsx)(Ke,{})]},n)))})})}function Je(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,c.jsx)(Ye,{columns:t}):(0,c.jsx)(Qe,{links:t})}var et=n(9965);const tt={footerLogoLink:"footerLogoLink_BH7S"};function nt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,Q.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,c.jsx)(et.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function rt(e){let{logo:t}=e;return t.href?(0,c.jsx)(X.Z,{href:t.href,className:tt.footerLogoLink,target:t.target,children:(0,c.jsx)(nt,{logo:t})}):(0,c.jsx)(nt,{logo:t})}function at(e){let{copyright:t}=e;return(0,c.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function ot(e){let{style:t,links:n,logo:r,copyright:o}=e;return(0,c.jsx)("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t}),children:(0,c.jsxs)("div",{className:"container container-fluid",children:[n,(r||o)&&(0,c.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,c.jsx)("div",{className:"margin-bottom--sm",children:r}),o]})]})})}function it(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:a}=e;return(0,c.jsx)(ot,{style:a,links:n&&n.length>0&&(0,c.jsx)(Je,{links:n}),logo:r&&(0,c.jsx)(rt,{logo:r}),copyright:t&&(0,c.jsx)(at,{copyright:t})})}const lt=r.memo(it),st=(0,I.Qc)([M.S,k.pl,L.OC,xe.L5,i.VC,function(e){let{children:t}=e;return(0,c.jsx)(P.n2,{children:(0,c.jsx)(N.M,{children:(0,c.jsx)(j,{children:t})})})}]);function ut(e){let{children:t}=e;return(0,c.jsx)(st,{children:t})}var ct=n(2503);function dt(e){let{error:t,tryAgain:n}=e;return(0,c.jsx)("main",{className:"container margin-vert--xl",children:(0,c.jsx)("div",{className:"row",children:(0,c.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,c.jsx)(ct.Z,{as:"h1",className:"hero__title",children:(0,c.jsx)(s.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,c.jsx)("div",{className:"margin-vert--lg",children:(0,c.jsx)(Re,{onClick:n,className:"button button--primary shadow--lw"})}),(0,c.jsx)("hr",{}),(0,c.jsx)("div",{className:"margin-vert--md",children:(0,c.jsx)(Fe,{error:t})})]})})})}const ft={mainWrapper:"mainWrapper_z2l0"};function pt(e){const{children:t,noFooter:n,wrapperClassName:r,title:l,description:s}=e;return(0,y.t)(),(0,c.jsxs)(ut,{children:[(0,c.jsx)(i.d,{title:l,description:s}),(0,c.jsx)(v,{}),(0,c.jsx)(A,{}),(0,c.jsx)(Ve,{}),(0,c.jsx)("div",{id:d,className:(0,a.Z)(h.k.wrapper.main,ft.mainWrapper,r),children:(0,c.jsx)(o.Z,{fallback:e=>(0,c.jsx)(dt,{...e}),children:t})}),!n&&(0,c.jsx)(lt,{})]})}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var r=n(3692),a=n(4996),o=n(2263),i=n(6668),l=n(9965),s=n(5893);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,a.Z)(t.src),dark:(0,a.Z)(t.srcDark||t.src)},i=(0,s.jsx)(l.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,s.jsx)("div",{className:r,children:i}):i}function c(e){const{siteConfig:{title:t}}=(0,o.Z)(),{navbar:{title:n,logo:l}}=(0,i.L)(),{imageClassName:c,titleClassName:d,...f}=e,p=(0,a.Z)(l?.href||"/"),g=n?"":t,m=l?.alt??g;return(0,s.jsxs)(r.Z,{to:p,...f,...l?.target&&{target:l.target},children:[l&&(0,s.jsx)(u,{logo:l,alt:m,imageClassName:c}),null!=n&&(0,s.jsx)("b",{className:d,children:n})]})}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});n(7294);var r=n(5742),a=n(5893);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return(0,a.jsxs)(r.Z,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},9965:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});var r=n(7294),a=n(512),o=n(2389),i=n(2949);const l={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var s=n(5893);function u(e){let{className:t,children:n}=e;const u=(0,o.Z)(),{colorMode:c}=(0,i.I)();return(0,s.jsx)(s.Fragment,{children:(u?"dark"===c?["dark"]:["light"]:["light","dark"]).map((e=>{const o=n({theme:e,className:(0,a.Z)(t,l.themedComponent,l[`themedComponent--${e}`])});return(0,s.jsx)(r.Fragment,{children:o},e)}))})}function c(e){const{sources:t,className:n,alt:r,...a}=e;return(0,s.jsx)(u,{className:n,children:e=>{let{theme:n,className:o}=e;return(0,s.jsx)("img",{src:t[n],alt:r,className:o,...a})}})}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>u,z:()=>y});var r=n(7294),a=n(412),o=n(469),i=n(1442),l=n(5893);const s="ease-in-out";function u(e){let{initialState:t}=e;const[n,a]=(0,r.useState)(t??!1),o=(0,r.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:o}}const c={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function f(e,t){const n=t?c:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const o=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??s}`,height:`${t}px`}}function l(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return f(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(l(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{l()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function g(e){if(!a.Z.canUseDOM)return e?c:d}function m(e){let{as:t="div",collapsed:n,children:a,animation:o,onCollapseTransitionEnd:i,className:s,disableSSRStyle:u}=e;const c=(0,r.useRef)(null);return p({collapsibleRef:c,collapsed:n,animation:o}),(0,l.jsx)(t,{ref:c,style:u?void 0:g(n),onTransitionEnd:e=>{"height"===e.propertyName&&(f(c.current,n),i?.(n))},className:s,children:a})}function h(e){let{collapsed:t,...n}=e;const[a,i]=(0,r.useState)(!t),[s,u]=(0,r.useState)(t);return(0,o.Z)((()=>{t||i(!0)}),[t]),(0,o.Z)((()=>{a&&u(t)}),[a,t]),a?(0,l.jsx)(m,{...n,collapsed:s}):null}function y(e){let{lazy:t,...n}=e;const r=t?h:m;return(0,l.jsx)(r,{...n})}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>g});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668),s=n(5893);const u=(0,o.WA)("docusaurus.announcement.dismiss"),c=(0,o.WA)("docusaurus.announcement.id"),d=()=>"true"===u.get(),f=e=>u.set(String(e)),p=r.createContext(null);function g(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{o(d())}),[]);const i=(0,r.useCallback)((()=>{f(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&f(!1),!r&&d()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,s.jsx)(p.Provider,{value:n,children:t})}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>y,S:()=>h});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668),s=n(5893);const u=r.createContext(void 0),c="theme",d=(0,i.WA)(c),f={light:"light",dark:"dark"},p=e=>e===f.dark?f.dark:f.light,g=e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{d.set(p(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(g(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?f.dark:f.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=d.get();null!==t&&i(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===f.dark},setLightTheme(){i(f.light)},setDarkTheme(){i(f.dark)}})),[a,i])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function y(){const e=(0,r.useContext)(u);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>y});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(3438),s=n(902),u=n(12),c=n(5893);const d=e=>`docs-preferred-version-${e}`,f={save:(e,t,n)=>{(0,u.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(d(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const g=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=f.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(f.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){f.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return(0,c.jsx)(g.Provider,{value:n,children:t})}function y(e){let{children:t}=e;return l.cE?(0,c.jsx)(h,{children:t}):(0,c.jsx)(c.Fragment,{children:t})}function b(){const e=(0,r.useContext)(g);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>u,b:()=>s});var r=n(7294),a=n(902),o=n(5893);const i=Symbol("EmptyContext"),l=r.createContext(i);function s(e){let{children:t,name:n,items:a}=e;const i=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return(0,o.jsx)(l.Provider,{value:i,children:t})}function u(){const e=(0,r.useContext)(l);if(e===i)throw new a.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>s,q:()=>l});var r=n(7294),a=n(902),o=n(5893);const i=r.createContext(null);function l(e){let{children:t,version:n}=e;return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(null===e)throw new a.i6("DocsVersionProvider");return e}},3163:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(7294),a=n(3102),o=n(7524),i=n(1980),l=n(6668),s=n(902),u=n(5893);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,l.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[s,u]=(0,r.useState)(!1);(0,i.Rb)((()=>{if(s)return u(!1),!1}));const c=(0,r.useCallback)((()=>{u((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&u(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:s})),[e,n,c,s])}function f(e){let{children:t}=e;const n=d();return(0,u.jsx)(c.Provider,{value:n,children:t})}function p(){const e=r.useContext(c);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>s,Zo:()=>u,n2:()=>l});var r=n(7294),a=n(902),o=n(5893);const i=r.createContext(null);function l(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function s(){const e=(0,r.useContext)(i);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function u(e){let{component:t,props:n}=e;const o=(0,r.useContext)(i);if(!o)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=o,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(e){let{desktopBreakpoint:t=i}=void 0===e?{}:e;const[n,l]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){l(function(e){if(!a.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(t))}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[t]),n}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},3438:(e,t,n)=>{"use strict";n.d(t,{LM:()=>p,SN:()=>E,_F:()=>h,cE:()=>f,f:()=>b,lO:()=>k,oz:()=>x,s1:()=>w,vY:()=>S});var r=n(7294),a=n(6550),o=n(8790),i=n(143),l=n(373),s=n(4477),u=n(1116),c=n(7392),d=n(8596);const f=!!i._r;function p(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=p(t);if(e)return e}}(e):void 0:e.href}const g=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),m=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?g(e.href,t):"category"===e.type&&(g(e.href,t)||m(e.items,t))}function y(e,t){switch(e.type){case"category":return h(e,t)||e.items.some((e=>y(e,t)));case"link":return!e.unlisted||h(e,t);default:return!0}}function b(e,t){return(0,r.useMemo)((()=>e.filter((e=>y(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function w(){const e=(0,u.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,c.j)([t,n,a].filter(Boolean))),[t,n,a])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,c.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function E(e){let{route:t}=e;const n=(0,a.TH)(),r=(0,s.E)(),i=t.routes,l=i.find((e=>(0,a.LX)(n.pathname,e)));if(!l)return null;const u=l.sidebar,c=u?r.docsSidebars[u]:void 0;return{docElement:(0,o.H)(i),sidebarName:u,sidebarItems:c}}},1980:(e,t,n)=>{"use strict";n.d(t,{Rb:()=>i,_X:()=>l});var r=n(7294),a=n(6550),o=n(902);function i(e){!function(e){const t=(0,a.k6)(),n=(0,o.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function l(e){return function(e){const t=(0,a.k6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}},7392:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:()=>a,l:()=>r})},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>d,VC:()=>g});var r=n(7294),a=n(512),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);var c=n(5893);function d(e){let{title:t,description:n,keywords:r,image:a,children:i}=e;const l=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),f=a?d(a,{absolute:!0}):void 0;return(0,c.jsxs)(o.Z,{children:[t&&(0,c.jsx)("title",{children:l}),t&&(0,c.jsx)("meta",{property:"og:title",content:l}),n&&(0,c.jsx)("meta",{name:"description",content:n}),n&&(0,c.jsx)("meta",{property:"og:description",content:n}),r&&(0,c.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),f&&(0,c.jsx)("meta",{property:"og:image",content:f}),f&&(0,c.jsx)("meta",{name:"twitter:image",content:f}),i]})}const f=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(f),l=(0,a.Z)(i,t);return(0,c.jsxs)(f.Provider,{value:l,children:[(0,c.jsx)(o.Z,{children:(0,c.jsx)("html",{className:l})}),n]})}function g(e){let{children:t}=e;const n=l(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const o=`plugin-id-${n.plugin.id}`;return(0,c.jsx)(p,{className:(0,a.Z)(r,o),children:t})}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>l,Qc:()=>c,Ql:()=>u,i6:()=>s,zX:()=>i});var r=n(7294),a=n(469),o=n(5893);function i(e){const t=(0,r.useRef)(e);return(0,a.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function l(e){const t=(0,r.useRef)();return(0,a.Z)((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function u(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return(0,o.jsx)(o.Fragment,{children:e.reduceRight(((e,t)=>(0,o.jsx)(t,{children:e})),n)})}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>m,OC:()=>c,RF:()=>p,o5:()=>g});var r=n(7294),a=n(412),o=n(2389),i=n(469),l=n(902),s=n(5893);const u=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(u.Provider,{value:n,children:t})}function d(){const e=(0,r.useContext)(u);if(null==e)throw new l.i6("ScrollControllerProvider");return e}const f=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=d(),a=(0,r.useRef)(f()),o=(0,l.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=f();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function g(){const e=d(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,i.Z)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:a}}function m(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>c,WA:()=>u});var r=n(7294);const a="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function i(e){if(void 0===e&&(e=a),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,l||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),l=!0),null}var t}let l=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function u(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=i(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}function c(e,t){const n=(0,r.useRef)((()=>null===e?s:u(e,t))).current(),a=(0,r.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,r.useSyncExternalStore)(a,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),a=n(6550),o=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>a});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>p,PP:()=>A,Ep:()=>f});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var g=i.join("/");return n&&"/"!==g.substr(-1)&&(g+="/"),g};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function g(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,m(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,g=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(g){var a=p(n);a&&a!==g&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),m=s(n),h=0;h{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7874:()=>{!function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},parameter:{pattern:/(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","parameter","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i{!function(e){function t(e,t){return e.replace(/<<(\d+)>>/g,(function(e,n){return"(?:"+t[+n]+")"}))}function n(e,n,r){return RegExp(t(e,n),r||"")}function r(e,t){for(var n=0;n>/g,(function(){return"(?:"+e+")"}));return e.replace(/<>/g,"[^\\s\\S]")}var a="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",o="class enum interface record struct",i="add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)",l="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function s(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var u=s(o),c=RegExp(s(a+" "+o+" "+i+" "+l)),d=s(o+" "+i+" "+l),f=s(a+" "+o+" "+l),p=r(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source,2),g=r(/\((?:[^()]|<>)*\)/.source,2),m=/@?\b[A-Za-z_]\w*\b/.source,h=t(/<<0>>(?:\s*<<1>>)?/.source,[m,p]),y=t(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[d,h]),b=/\[\s*(?:,\s*)*\]/.source,v=t(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[y,b]),w=t(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[p,g,b]),k=t(/\(<<0>>+(?:,<<0>>+)+\)/.source,[w]),x=t(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[k,y,b]),S={keyword:c,punctuation:/[<>()?,.:[\]]/},E=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,_=/"(?:\\.|[^\\"\r\n])*"/.source,C=/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;e.languages.csharp=e.languages.extend("clike",{string:[{pattern:n(/(^|[^$\\])<<0>>/.source,[C]),lookbehind:!0,greedy:!0},{pattern:n(/(^|[^@$\\])<<0>>/.source,[_]),lookbehind:!0,greedy:!0}],"class-name":[{pattern:n(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[y]),lookbehind:!0,inside:S},{pattern:n(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[m,x]),lookbehind:!0,inside:S},{pattern:n(/(\busing\s+)<<0>>(?=\s*=)/.source,[m]),lookbehind:!0},{pattern:n(/(\b<<0>>\s+)<<1>>/.source,[u,h]),lookbehind:!0,inside:S},{pattern:n(/(\bcatch\s*\(\s*)<<0>>/.source,[y]),lookbehind:!0,inside:S},{pattern:n(/(\bwhere\s+)<<0>>/.source,[m]),lookbehind:!0},{pattern:n(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[v]),lookbehind:!0,inside:S},{pattern:n(/\b<<0>>(?=\s+(?!<<1>>|with\s*\{)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[x,f,m]),inside:S}],keyword:c,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:n(/([(,]\s*)<<0>>(?=\s*:)/.source,[m]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:n(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[m]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:n(/(\b(?:default|sizeof|typeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source,[g]),lookbehind:!0,alias:"class-name",inside:S},"return-type":{pattern:n(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[x,y]),inside:S,alias:"class-name"},"constructor-invocation":{pattern:n(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[x]),lookbehind:!0,inside:S,alias:"class-name"},"generic-method":{pattern:n(/<<0>>\s*<<1>>(?=\s*\()/.source,[m,p]),inside:{function:n(/^<<0>>/.source,[m]),generic:{pattern:RegExp(p),alias:"class-name",inside:S}}},"type-list":{pattern:n(/\b((?:<<0>>\s+<<1>>|record\s+<<1>>\s*<<5>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>|<<1>>\s*<<5>>|<<6>>)(?:\s*,\s*(?:<<3>>|<<4>>|<<6>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[u,h,m,x,c.source,g,/\bnew\s*\(\s*\)/.source]),lookbehind:!0,inside:{"record-arguments":{pattern:n(/(^(?!new\s*\()<<0>>\s*)<<1>>/.source,[h,g]),lookbehind:!0,greedy:!0,inside:e.languages.csharp},keyword:c,"class-name":{pattern:RegExp(x),greedy:!0,inside:S},punctuation:/[,()]/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var T=_+"|"+E,A=t(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[T]),N=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[A]),2),L=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,I=t(/<<0>>(?:\s*\(<<1>>*\))?/.source,[y,N]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:n(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[L,I]),lookbehind:!0,greedy:!0,inside:{target:{pattern:n(/^<<0>>(?=\s*:)/.source,[L]),alias:"keyword"},"attribute-arguments":{pattern:n(/\(<<0>>*\)/.source,[N]),inside:e.languages.csharp},"class-name":{pattern:RegExp(y),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var P=/:[^}\r\n]+/.source,O=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[A]),2),j=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[O,P]),R=r(t(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<>*\)/.source,[T]),2),F=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[R,P]);function D(t,r){return{interpolation:{pattern:n(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[t]),lookbehind:!0,inside:{"format-string":{pattern:n(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[r,P]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:n(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[j]),lookbehind:!0,greedy:!0,inside:D(j,O)},{pattern:n(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[F]),lookbehind:!0,greedy:!0,inside:D(F,R)}],char:{pattern:RegExp(E),greedy:!0}}),e.languages.dotnet=e.languages.cs=e.languages.csharp}(Prism)},9980:()=>{Prism.languages.javascript=Prism.languages.extend("clike",{"class-name":[Prism.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),Prism.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:Prism.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:Prism.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:Prism.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),Prism.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:Prism.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),Prism.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),Prism.languages.markup&&(Prism.languages.markup.tag.addInlined("script","javascript"),Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),Prism.languages.js=Prism.languages.javascript},4277:()=>{Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json},6854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),g=f.indexOf(p);if(g>-1){++a;var m=f.substring(0,g),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),y=f.substring(g+p.length),b=[];m&&b.push.apply(b,i([m])),b.push(h),y&&b.push.apply(b,i([y])),"string"==typeof u?l.splice.apply(l,[s,1].concat(b)):u.content=b}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(Prism)},6862:()=>{!function(e){var t=e.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:null},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:false|true)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(^|\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/};t.string[0].inside={function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:t},boolean:t.boolean,variable:t.variable}}(Prism)},1127:(e,t,n)=>{var r={"./prism-bash":7874,"./prism-csharp":9016,"./prism-javascript":9980,"./prism-json":4277,"./prism-powershell":6862};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=1127},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),a=n(3840);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n