Commit 4ea9355

Anton Medvedev <anton@medv.io>
2023-09-04 18:34:21
First commit
.vitepress/config.mts
@@ -0,0 +1,48 @@
+import {defineConfig} from 'vitepress'
+
+// https://vitepress.dev/reference/site-config
+export default defineConfig({
+  base: '/zx/',
+  outDir: 'docs',
+  cleanUrls: true,
+  title: 'google/zx',
+  titleTemplate: ':title | google/zx',
+  description: 'A tool for writing better scripts',
+  themeConfig: {
+    // https://vitepress.dev/reference/default-theme-config
+    nav: [
+      {text: 'Home', link: '/'},
+      {text: 'Docs', link: '/getting-started'},
+      {
+        text: '7.x',
+        items: [
+          {text: 'Releases', link: 'https://github.com/google/zx/releases'},
+        ],
+      },
+    ],
+
+    sidebar: [
+      {
+        text: 'Docs',
+        items: [
+          {text: 'Getting Started', link: '/getting-started'},
+          {text: 'Process Promise', link: '/process-promise'},
+          {text: 'Quotes', link: '/quotes'},
+          {text: 'Markdown Scripts', link: '/markdown-scripts'},
+        ],
+      },
+    ],
+
+    socialLinks: [
+      {icon: 'github', link: 'https://github.com/google/zx'},
+    ],
+
+    footer: {
+      message: 'Disclaimer: This is not an officially supported Google product.',
+    },
+
+    search: {
+      provider: 'local',
+    },
+  },
+})
docs/assets/chunks/@localSearchIndexroot.afe41412.js
@@ -0,0 +1,1 @@
+const t='{"documentCount":70,"nextId":70,"documentIds":{"0":"/zx/getting-started#getting-started","1":"/zx/getting-started#install","2":"/zx/getting-started#documentation","3":"/zx/getting-started#command","4":"/zx/getting-started#processpromise","5":"/zx/getting-started#processoutput","6":"/zx/getting-started#functions","7":"/zx/getting-started#cd","8":"/zx/getting-started#fetch","9":"/zx/getting-started#question","10":"/zx/getting-started#sleep","11":"/zx/getting-started#echo","12":"/zx/getting-started#stdin","13":"/zx/getting-started#within","14":"/zx/getting-started#retry","15":"/zx/getting-started#spinner","16":"/zx/getting-started#packages","17":"/zx/getting-started#chalk-package","18":"/zx/getting-started#fs-package","19":"/zx/getting-started#os-package","20":"/zx/getting-started#path-package","21":"/zx/getting-started#globby-package","22":"/zx/getting-started#yaml-package","23":"/zx/getting-started#minimist-package","24":"/zx/getting-started#which-package","25":"/zx/getting-started#configuration","26":"/zx/getting-started#shell","27":"/zx/getting-started#spawn","28":"/zx/getting-started#prefix","29":"/zx/getting-started#quote","30":"/zx/getting-started#verbose","31":"/zx/getting-started#env","32":"/zx/getting-started#cwd","33":"/zx/getting-started#log","34":"/zx/getting-started#polyfills","35":"/zx/getting-started#filename-dirname","36":"/zx/getting-started#require","37":"/zx/getting-started#faq","38":"/zx/getting-started#passing-env-variables","39":"/zx/getting-started#passing-array-of-values","40":"/zx/getting-started#importing-into-other-scripts","41":"/zx/getting-started#scripts-without-extensions","42":"/zx/getting-started#markdown-scripts","43":"/zx/getting-started#typescript-scripts","44":"/zx/getting-started#executing-remote-scripts","45":"/zx/getting-started#executing-scripts-from-stdin","46":"/zx/getting-started#executing-scripts-via-eval","47":"/zx/getting-started#installing-dependencies-via-install","48":"/zx/getting-started#executing-commands-on-remote-hosts","49":"/zx/getting-started#attaching-a-profile","50":"/zx/getting-started#using-github-actions","51":"/zx/getting-started#canary-beta-rc-builds","52":"/zx/getting-started#license","53":"/zx/known-issues#known-issues","54":"/zx/known-issues#output-gets-truncated","55":"/zx/known-issues#colors-in-subprocess","56":"/zx/markdown-scripts#markdown-scripts","57":"/zx/process-promise#processpromise","58":"/zx/process-promise#stdin","59":"/zx/process-promise#stdout-stderr","60":"/zx/process-promise#exitcode","61":"/zx/process-promise#pipe","62":"/zx/process-promise#kill","63":"/zx/process-promise#stdio","64":"/zx/process-promise#nothrow","65":"/zx/process-promise#quiet","66":"/zx/process-promise#timeout","67":"/zx/quotes#quotes","68":"/zx/quotes#array-of-arguments","69":"/zx/quotes#globbing-and"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[1,2,13],"2":[1,2,77],"3":[1,3,80],"4":[1,3,27],"5":[1,3,53],"6":[1,2,1],"7":[2,3,35],"8":[2,3,17],"9":[2,3,19],"10":[2,3,11],"11":[2,3,25],"12":[2,3,14],"13":[2,3,45],"14":[2,3,44],"15":[2,3,19],"16":[1,2,10],"17":[2,3,11],"18":[2,3,13],"19":[2,3,12],"20":[2,3,13],"21":[2,3,12],"22":[2,3,12],"23":[2,3,32],"24":[2,3,10],"25":[1,2,1],"26":[2,3,21],"27":[2,3,10],"28":[2,3,24],"29":[2,3,11],"30":[2,3,29],"31":[2,3,10],"32":[2,3,31],"33":[2,3,33],"34":[1,2,1],"35":[4,3,31],"36":[2,3,33],"37":[1,2,1],"38":[3,3,11],"39":[4,3,30],"40":[4,3,26],"41":[3,3,22],"42":[2,3,13],"43":[2,3,25],"44":[3,3,24],"45":[4,3,15],"46":[4,3,25],"47":[4,3,38],"48":[5,3,23],"49":[3,3,44],"50":[3,3,37],"51":[4,3,40],"52":[1,2,13],"53":[2,1,1],"54":[3,2,67],"55":[3,2,47],"56":[2,1,74],"57":[1,1,13],"58":[1,1,47],"59":[2,1,19],"60":[1,1,22],"61":[2,1,77],"62":[2,1,33],"63":[2,1,17],"64":[2,1,54],"65":[2,1,22],"66":[2,1,19],"67":[1,1,68],"68":[3,2,63],"69":[3,2,48]},"averageFieldLength":[2.157142857142858,2.4285714285714284,27.414285714285715],"storedFields":{"0":{"title":"Getting Started","titles":[]},"1":{"title":"Install","titles":["Getting Started"]},"2":{"title":"Documentation","titles":["Getting Started"]},"3":{"title":"$`command`","titles":["Getting Started","Documentation"]},"4":{"title":"ProcessPromise","titles":["Getting Started","Documentation"]},"5":{"title":"ProcessOutput","titles":["Getting Started","Documentation"]},"6":{"title":"Functions","titles":["Getting Started"]},"7":{"title":"cd()","titles":["Getting Started","Functions"]},"8":{"title":"fetch()","titles":["Getting Started","Functions"]},"9":{"title":"question()","titles":["Getting Started","Functions"]},"10":{"title":"sleep()","titles":["Getting Started","Functions"]},"11":{"title":"echo()","titles":["Getting Started","Functions"]},"12":{"title":"stdin()","titles":["Getting Started","Functions"]},"13":{"title":"within()","titles":["Getting Started","Functions"]},"14":{"title":"retry()","titles":["Getting Started","Functions"]},"15":{"title":"spinner()","titles":["Getting Started","Functions"]},"16":{"title":"Packages","titles":["Getting Started"]},"17":{"title":"chalk package","titles":["Getting Started","Packages"]},"18":{"title":"fs package","titles":["Getting Started","Packages"]},"19":{"title":"os package","titles":["Getting Started","Packages"]},"20":{"title":"path package","titles":["Getting Started","Packages"]},"21":{"title":"globby package","titles":["Getting Started","Packages"]},"22":{"title":"yaml package","titles":["Getting Started","Packages"]},"23":{"title":"minimist package","titles":["Getting Started","Packages"]},"24":{"title":"which package","titles":["Getting Started","Packages"]},"25":{"title":"Configuration","titles":["Getting Started"]},"26":{"title":"$.shell","titles":["Getting Started","Configuration"]},"27":{"title":"$.spawn","titles":["Getting Started","Configuration"]},"28":{"title":"$.prefix","titles":["Getting Started","Configuration"]},"29":{"title":"$.quote","titles":["Getting Started","Configuration"]},"30":{"title":"$.verbose","titles":["Getting Started","Configuration"]},"31":{"title":"$.env","titles":["Getting Started","Configuration"]},"32":{"title":"$.cwd","titles":["Getting Started","Configuration"]},"33":{"title":"$.log","titles":["Getting Started","Configuration"]},"34":{"title":"Polyfills","titles":["Getting Started"]},"35":{"title":"__filename &amp; __dirname","titles":["Getting Started","Polyfills"]},"36":{"title":"require()","titles":["Getting Started","Polyfills"]},"37":{"title":"FAQ","titles":["Getting Started"]},"38":{"title":"Passing env variables","titles":["Getting Started","FAQ"]},"39":{"title":"Passing array of values","titles":["Getting Started","FAQ"]},"40":{"title":"Importing into other scripts","titles":["Getting Started","FAQ"]},"41":{"title":"Scripts without extensions","titles":["Getting Started","FAQ"]},"42":{"title":"Markdown scripts","titles":["Getting Started","FAQ"]},"43":{"title":"TypeScript scripts","titles":["Getting Started","FAQ"]},"44":{"title":"Executing remote scripts","titles":["Getting Started","FAQ"]},"45":{"title":"Executing scripts from stdin","titles":["Getting Started","FAQ"]},"46":{"title":"Executing scripts via --eval","titles":["Getting Started","FAQ"]},"47":{"title":"Installing dependencies via --install","titles":["Getting Started","FAQ"]},"48":{"title":"Executing commands on remote hosts","titles":["Getting Started","FAQ"]},"49":{"title":"Attaching a profile","titles":["Getting Started","FAQ"]},"50":{"title":"Using GitHub Actions","titles":["Getting Started","FAQ"]},"51":{"title":"Canary / Beta / RC builds","titles":["Getting Started","FAQ"]},"52":{"title":"License","titles":["Getting Started"]},"53":{"title":"Known Issues","titles":[]},"54":{"title":"Output gets truncated","titles":["Known Issues"]},"55":{"title":"Colors in subprocess","titles":["Known Issues"]},"56":{"title":"Markdown Scripts","titles":[]},"57":{"title":"ProcessPromise","titles":[]},"58":{"title":"stdin","titles":["ProcessPromise"]},"59":{"title":"stdout/stderr","titles":["ProcessPromise"]},"60":{"title":"exitCode","titles":["ProcessPromise"]},"61":{"title":"pipe()","titles":["ProcessPromise"]},"62":{"title":"kill()","titles":["ProcessPromise"]},"63":{"title":"stdio()","titles":["ProcessPromise"]},"64":{"title":"nothrow()","titles":["ProcessPromise"]},"65":{"title":"quiet()","titles":["ProcessPromise"]},"66":{"title":"timeout()","titles":["ProcessPromise"]},"67":{"title":"Quotes","titles":[]},"68":{"title":"Array of arguments","titles":["Quotes",null]},"69":{"title":"globbing and ~","titles":["Quotes",null]}},"dirtCount":0,"index":[["~",{"0":{"69":1},"2":{"69":3}}],["5s",{"2":{"66":4}}],["999`",{"2":{"62":2,"66":4}}],["99`",{"2":{"15":2}}],["6379",{"2":{"54":1}}],["42px",{"2":{"56":2}}],["4",{"2":{"51":2}}],["โš ๏ธ๏ธ",{"2":{"51":1}}],["known",{"0":{"53":1},"1":{"54":1,"55":1},"2":{"54":1}}],["keep",{"2":{"51":1}}],["kind",{"2":{"9":2,"33":2}}],["kills",{"2":{"62":1,"66":1}}],["kill",{"0":{"62":1},"2":{"4":2,"62":2}}],["ubuntu",{"2":{"50":2}}],["usually",{"2":{"5":1,"55":1}}],["using",{"0":{"50":1},"2":{"3":1,"35":1,"36":1,"56":1}}],["usr",{"2":{"2":2,"26":2,"40":2}}],["user",{"2":{"48":2}}],["uses",{"2":{"48":1,"50":2,"67":1}}],["used",{"2":{"5":1,"26":1,"36":1,"61":1}}],["use",{"2":{"2":1,"5":1,"13":2,"26":1,"28":1,"30":1,"32":1,"35":1,"40":1,"54":2,"56":1,"61":1,"64":1,"69":2}}],["^1",{"2":{"47":1}}],["^1import",{"2":{"47":1}}],["|",{"2":{"46":2,"50":2,"56":2,"61":1}}],["yellowbright",{"2":{"56":2}}],["yes",{"2":{"23":2}}],["yamljobs",{"2":{"50":1}}],["yaml",{"0":{"22":1},"2":{"22":3}}],["you",{"2":{"2":2,"3":1,"47":1,"49":1,"55":2,"56":1,"62":1,"64":1,"67":2,"68":1,"69":1}}],["your",{"2":{"2":4,"68":1}}],["just",{"2":{"49":1}}],["join",{"2":{"20":2,"68":1}}],["jszx",{"2":{"44":1,"45":1}}],["jsprocess",{"2":{"38":1,"55":1}}],["js$",{"2":{"26":1,"49":1}}],["jsif",{"2":{"23":1,"60":1,"64":1}}],["jsimport",{"2":{"2":1,"47":1,"48":1}}],["jsconst",{"2":{"59":1}}],["jsconsole",{"2":{"17":1,"22":1,"56":1}}],["jscd",{"2":{"7":2}}],["json",{"2":{"12":2,"18":2,"21":4,"36":2,"43":2,"46":4}}],["jsawait",{"2":{"10":1,"13":2,"15":1,"19":1,"20":1,"56":2,"61":3,"64":1,"66":1,"67":2,"68":1}}],["jstry",{"2":{"3":1}}],["jslet",{"2":{"3":2,"5":1,"8":1,"9":1,"11":1,"12":1,"14":1,"18":1,"21":1,"23":1,"24":1,"36":1,"39":1,"54":1,"57":1,"58":1,"61":1,"62":1,"63":1,"67":1,"68":1,"69":2}}],["js",{"2":{"2":1,"35":1,"40":1,"44":1,"47":1,"65":1}}],["3",{"2":{"50":2,"61":2}}],["30",{"2":{"14":2}}],["39",{"2":{"2":4,"3":16,"7":4,"8":4,"9":4,"11":4,"13":8,"14":4,"15":4,"17":4,"18":4,"20":4,"21":8,"22":4,"23":4,"24":4,"26":4,"33":8,"36":4,"38":4,"40":4,"43":8,"45":4,"46":4,"47":12,"48":8,"49":4,"50":4,"51":4,"55":4,"56":4,"58":4,"61":24,"62":4,"63":4,"66":12,"67":20,"68":20,"69":8}}],["+",{"2":{"61":2,"67":2,"69":2}}],["+=",{"2":{"13":2,"49":2}}],["+x",{"2":{"2":2}}],["20",{"2":{"13":2,"14":2}}],["2",{"2":{"13":2,"23":2,"52":1,"61":2}}],["hero",{"2":{"56":2}}],["here",{"2":{"56":1}}],["help",{"2":{"23":2}}],["hello",{"2":{"17":2,"47":2,"48":2,"58":2,"61":4}}],["host",{"2":{"48":2}}],["hosts",{"0":{"48":1},"2":{"48":1}}],["hooks",{"2":{"41":1}}],["homedir",{"2":{"19":2,"69":2}}],["home",{"2":{"13":4}}],["hand",{"2":{"49":1}}],["handy",{"2":{"35":1}}],["have",{"2":{"41":1,"68":1}}],["https",{"2":{"8":2,"14":6,"44":3}}],["quot",{"2":{"23":8,"43":8,"51":4,"56":4,"61":12,"67":2}}],["quote",{"0":{"29":1}}],["quotes",{"0":{"67":1},"1":{"68":1,"69":1},"2":{"3":2,"67":4}}],["quoted",{"2":{"3":1,"68":1}}],["question",{"0":{"9":1},"2":{"9":2}}],["quiet",{"0":{"65":1},"2":{"4":2,"30":1,"51":2,"65":2}}],["1",{"2":{"54":1,"55":2,"61":6}}],["15",{"2":{"51":2}}],["17",{"2":{"51":2}}],["1s",{"2":{"14":2}}],["100",{"2":{"62":2}}],["1000",{"2":{"10":2,"13":2}}],["10",{"2":{"14":2}}],["1`",{"2":{"3":2}}],["16",{"2":{"1":1,"13":2}}],["z",{"2":{"61":4}}],["zero",{"2":{"3":1,"64":1}}],["zx",{"2":{"1":1,"2":6,"5":1,"30":1,"33":2,"35":2,"36":2,"40":2,"41":1,"42":1,"43":4,"44":1,"45":1,"46":2,"47":1,"48":3,"50":2,"51":5,"56":2,"67":1,"68":1,"69":1}}],["zxnpm",{"2":{"1":1}}],["d",{"2":{"60":2,"64":4}}],["distinguish",{"2":{"68":1}}],["displayed",{"2":{"65":2}}],["disable",{"2":{"65":1}}],["disclaimer",{"2":{"52":1}}],["different",{"2":{"54":1}}],["directly",{"2":{"64":1}}],["directives",{"2":{"49":1}}],["directory",{"2":{"7":1,"32":1}}],["dirname",{"0":{"35":1},"2":{"35":1,"56":2}}],["dir",{"2":{"13":2,"49":2,"67":4}}],["dir=$home",{"2":{"13":2,"49":2}}],["done`",{"2":{"58":2}}],["don",{"2":{"55":1}}],["do",{"2":{"49":1,"58":3,"68":1}}],["downloaded",{"2":{"44":1}}],["docs",{"2":{"42":2,"56":2}}],["documentation",{"0":{"2":1},"1":{"3":1,"4":1,"5":1}}],["does",{"2":{"35":1,"41":1,"49":1,"55":1}}],["data",{"2":{"33":2}}],["date",{"2":{"5":6,"56":2}}],["during",{"2":{"29":1}}],["d`",{"2":{"7":2}}],["dev",{"2":{"51":4,"69":4}}],["dependencies",{"0":{"47":1},"2":{"47":1}}],["defined",{"2":{"36":1}}],["defaults",{"2":{"27":1,"31":1}}],["default",{"2":{"26":1,"28":1,"30":1,"32":1,"33":2,"49":1,"50":1,"58":1,"62":1,"63":1}}],["delay",{"2":{"14":2}}],["dest",{"2":{"4":2}}],["decorate",{"2":{"3":2,"68":4}}],["mind",{"2":{"51":1}}],["minimist",{"0":{"23":1},"2":{"23":4}}],["missing",{"2":{"47":1,"61":2}}],["md",{"2":{"42":1,"56":2,"69":4}}],["mdzx",{"2":{"42":1,"56":1}}],["margin",{"2":{"56":2}}],["markdown",{"0":{"42":1,"56":1},"2":{"42":3,"56":5}}],["may",{"2":{"55":1}}],["make",{"2":{"40":1}}],["masker",{"2":{"33":4}}],["map",{"2":{"31":1}}],["module",{"2":{"41":1,"43":2}}],["modules",{"2":{"35":1,"36":1}}],["mode",{"2":{"30":1,"58":1}}],["more",{"2":{"3":1,"4":1}}],["mycustomargv",{"2":{"23":2}}],["mkdir",{"2":{"19":2,"67":1}}],["method",{"2":{"61":1}}],["message",{"2":{"15":2}}],["medv",{"2":{"8":2,"14":6,"44":2}}],["mjszx",{"2":{"2":1,"47":1}}],["mjschmod",{"2":{"2":1}}],["mjs",{"2":{"2":5,"35":1,"36":1,"47":3}}],["`import",{"2":{"48":1}}],["`await",{"2":{"20":1,"56":1,"67":2,"68":1}}],["`echo",{"2":{"48":2}}],["`error",{"2":{"3":2}}],["`exit",{"2":{"3":2}}],["`",{"2":{"3":6,"5":1,"11":2,"20":1,"39":1,"48":1,"50":2,"54":1,"56":1,"60":2,"61":12,"64":4,"67":3,"68":2,"69":2}}],["`let",{"2":{"3":2,"5":1,"39":1,"54":1,"67":1,"68":1,"69":2}}],["npm",{"2":{"51":1}}],["npx",{"2":{"50":3,"51":2}}],["nvm",{"2":{"13":8,"49":6}}],["n",{"2":{"5":1,"58":2}}],["next",{"2":{"67":1}}],["necessary",{"2":{"49":1}}],["newlines",{"2":{"7":1}}],["new",{"2":{"5":2,"13":1}}],["needed",{"2":{"3":1,"47":1,"64":1,"67":1}}],["need",{"2":{"3":1,"67":2}}],["number",{"2":{"4":2,"5":2}}],["name",{"2":{"3":4,"50":2,"67":9}}],["not",{"2":{"35":1,"36":1,"41":1,"49":1,"52":1,"55":1,"58":1,"64":1,"65":2,"68":1}}],["nothrow",{"0":{"64":1},"2":{"4":2,"61":3,"64":6}}],["non",{"2":{"3":1,"64":1}}],["no",{"2":{"3":1,"32":1,"67":1}}],["now",{"2":{"2":1}}],["nodejs",{"2":{"54":1}}],["node",{"2":{"1":1,"8":1,"24":4,"35":1,"40":2,"54":1}}],["putting",{"2":{"67":1}}],["plet",{"2":{"57":1,"62":1}}],["pointed",{"2":{"56":1}}],["possible",{"2":{"40":1,"56":1}}],["polyfills",{"0":{"34":1},"1":{"35":1,"36":1}}],["part",{"2":{"61":2}}],["parsed",{"2":{"23":2}}],["parse",{"2":{"12":2,"22":2,"46":2,"68":1}}],["pathawait",{"2":{"13":1}}],["path",{"0":{"20":1},"2":{"13":3,"20":3,"60":2,"64":4,"67":4}}],["packages",{"0":{"16":1},"1":{"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1},"2":{"16":1,"21":4}}],["package",{"0":{"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1},"2":{"8":1,"9":1,"17":1,"18":3,"19":1,"20":1,"21":5,"22":1,"23":1,"24":1,"36":2,"43":1,"46":2,"54":1,"69":2}}],["passing",{"0":{"38":1,"39":1},"2":{"39":1,"67":1}}],["pass",{"2":{"3":1}}],["passed",{"2":{"3":1,"69":1}}],["pipes",{"2":{"61":1}}],["pipefail",{"2":{"28":1}}],["pipe",{"0":{"61":1},"2":{"4":2,"58":1,"61":14,"63":4,"64":6}}],["p",{"2":{"3":6,"14":6,"57":3,"58":6,"59":4,"62":5,"63":2}}],["prevent",{"2":{"54":1}}],["pre",{"2":{"41":1}}],["prefix=",{"2":{"28":1}}],["prefixed",{"2":{"28":1}}],["prefix",{"0":{"28":1},"2":{"13":2,"49":3}}],["prefer",{"2":{"2":1}}],["print0`",{"2":{"61":2,"64":2}}],["printf",{"2":{"61":2}}],["printing",{"2":{"33":2}}],["prints",{"2":{"30":1}}],["print",{"2":{"5":1}}],["properly",{"2":{"67":1}}],["produce",{"2":{"67":1}}],["product",{"2":{"52":1}}],["profile",{"0":{"49":1}}],["provides",{"2":{"35":1,"36":1,"69":1}}],["provide",{"2":{"35":1}}],["promise",{"2":{"4":6,"60":1}}],["processes",{"2":{"32":2,"61":1}}],["process",{"2":{"5":2,"23":3,"27":1,"31":1,"32":2,"33":2,"49":1,"54":5,"58":2,"59":1,"60":1,"61":4,"62":1,"63":1,"66":1}}],["processoutput",{"0":{"5":1},"2":{"3":1,"4":2,"5":3,"7":1,"11":1}}],["processpromise",{"0":{"4":1,"57":1},"1":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"3":1,"4":5,"57":1}}],["programs",{"2":{"5":1}}],["program",{"2":{"3":1}}],["cssbody",{"2":{"56":1}}],["c",{"2":{"56":1}}],["cvar=$",{"2":{"56":1}}],["cz",{"2":{"39":2}}],["curly",{"2":{"67":1}}],["current`",{"2":{"11":2}}],["current",{"2":{"5":2,"7":1,"11":2,"32":1}}],["custom",{"2":{"33":2}}],["cmd",{"2":{"33":6}}],["createwritestream",{"2":{"61":2}}],["created",{"2":{"32":1,"58":1}}],["creates",{"2":{"13":1,"54":2}}],["cwd",{"0":{"32":1},"2":{"32":3}}],["chunk",{"2":{"59":4}}],["checkout",{"2":{"50":2}}],["children",{"2":{"62":1}}],["child",{"2":{"27":1,"49":1}}],["characters",{"2":{"29":1}}],["chalk",{"0":{"17":1},"2":{"17":3,"56":4}}],["changes",{"2":{"7":1,"32":1,"64":1,"65":1}}],["cli",{"2":{"15":1,"26":1,"28":1,"30":1}}],["class",{"2":{"4":1,"5":1}}],["calls",{"2":{"54":1}}],["callback",{"2":{"14":1}}],["caused",{"2":{"54":1}}],["cat",{"2":{"46":1,"54":2}}],["catch",{"2":{"3":2}}],["case",{"2":{"33":2}}],["captured",{"2":{"5":1}}],["canary",{"0":{"51":1}}],["can",{"2":{"3":1,"11":1,"36":1,"42":1,"47":1,"51":1,"56":2,"61":2,"62":1,"64":1,"68":1,"69":1}}],["correctly",{"2":{"68":1}}],["core",{"2":{"33":2}}],["count",{"2":{"14":1}}],["consider",{"2":{"67":1}}],["const",{"2":{"59":3}}],["console",{"2":{"3":4,"11":1,"17":1,"22":1,"51":2,"54":2,"56":1}}],["concatenated",{"2":{"39":1,"68":1}}],["configuration",{"0":{"25":1},"1":{"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1}}],["config",{"2":{"23":1}}],["context",{"2":{"13":1}}],["content",{"2":{"12":2}}],["combinations",{"2":{"61":1}}],["combine",{"2":{"61":1}}],["combined",{"2":{"5":2}}],["compared",{"2":{"55":1}}],["comes",{"2":{"50":1}}],["comment",{"2":{"47":1}}],["commit",{"2":{"41":1}}],["common",{"2":{"7":1}}],["commands",{"0":{"48":1},"2":{"28":1,"30":1,"48":1,"67":1}}],["command`",{"2":{"15":2}}],["command",{"2":{"3":1,"28":1,"29":1,"47":1,"65":2,"67":1}}],["color=",{"2":{"55":2}}],["colors",{"0":{"55":1},"2":{"55":3}}],["color",{"2":{"3":2,"50":2,"68":4}}],["codes",{"2":{"64":1}}],["code",{"2":{"2":1,"3":3,"56":3,"60":1}}],["cd",{"0":{"7":1},"2":{"2":1,"7":2,"13":2,"32":1}}],["$1",{"2":{"61":2}}],["$reply",{"2":{"58":2}}],["$var",{"2":{"56":2}}],["$foo`",{"2":{"38":1}}],["$foo`process",{"2":{"38":1}}],["$nvm",{"2":{"13":2,"49":2}}],["$`grep",{"2":{"64":2,"65":2}}],["$`git",{"2":{"3":2,"11":2,"68":4}}],["$`read`",{"2":{"63":2}}],["$`wc",{"2":{"61":2,"64":2}}],["$`while",{"2":{"58":2}}],["$`whoami`",{"2":{"56":2}}],["$`xargs",{"2":{"61":2,"64":2}}],["$`find",{"2":{"61":2,"64":2}}],["$`tr",{"2":{"61":2}}],["$`tar",{"2":{"39":2}}],["$`awk",{"2":{"61":2}}],["$`printf",{"2":{"61":2}}],["$`pwd`",{"2":{"7":2,"13":6,"45":2}}],["$`",{"2":{"50":2,"60":2,"64":4}}],["$`npm",{"2":{"59":2}}],["$`nvm",{"2":{"49":2}}],["$`node",{"2":{"13":4}}],["$`ls",{"2":{"43":2,"69":4}}],["$`long",{"2":{"15":2}}],["$`sleep",{"2":{"15":2,"62":2,"66":4}}],["$`cat",{"2":{"61":2}}],["$`cmd`",{"2":{"55":1}}],["$`cmd`process",{"2":{"55":1}}],["$`cmd",{"2":{"54":2}}],["$`cd",{"2":{"19":2}}],["$`curl",{"2":{"14":6}}],["$`command`",{"0":{"3":1},"2":{"57":2}}],["$`mktemp`",{"2":{"54":2}}],["$`mktemp",{"2":{"7":2}}],["$`mkdir",{"2":{"3":2,"20":2,"67":6}}],["$`echo",{"2":{"5":2,"38":2,"56":2,"61":4}}],["$`exit",{"2":{"3":2}}],["$`date`",{"2":{"5":2,"40":2}}],["$",{"0":{"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1},"2":{"2":1,"3":9,"5":3,"11":2,"13":2,"19":2,"20":2,"26":1,"30":1,"32":3,"33":2,"39":3,"40":3,"43":2,"49":1,"54":4,"55":1,"56":2,"57":1,"61":3,"64":1,"65":1,"67":14,"68":5,"69":5}}],["rc",{"0":{"51":1}}],["redirects",{"2":{"61":1}}],["resolves",{"2":{"60":1}}],["responsibility",{"2":{"68":1}}],["resp",{"2":{"8":2}}],["remote",{"0":{"44":1,"48":1},"2":{"48":1}}],["real",{"2":{"61":1}}],["really",{"2":{"35":1}}],["readjson",{"2":{"18":2}}],["readline",{"2":{"9":1}}],["readonly",{"2":{"5":8}}],["readable",{"2":{"4":4,"59":1}}],["read",{"2":{"3":1,"4":1,"58":2}}],["require",{"0":{"36":1},"2":{"27":1,"36":4}}],["requirement",{"2":{"1":1}}],["retries",{"2":{"14":1}}],["retry",{"0":{"14":1},"2":{"14":6}}],["return",{"2":{"13":2,"14":1}}],["returns",{"2":{"3":2,"12":1,"57":1,"58":1,"59":1,"60":1}}],["runs",{"2":{"50":2}}],["runner",{"2":{"50":1}}],["running",{"2":{"15":2}}],["run",{"2":{"2":1,"28":1,"50":2,"56":1}}],["equivalent",{"2":{"64":2}}],["each",{"2":{"58":1}}],["early",{"2":{"51":1}}],["every",{"2":{"51":1}}],["everything",{"2":{"3":1,"69":1}}],["evaluate",{"2":{"46":1}}],["eval",{"0":{"46":1},"2":{"46":2}}],["eofjobs",{"2":{"50":1}}],["eofzx",{"2":{"45":1}}],["eof",{"2":{"45":3,"50":3}}],["esnext",{"2":{"43":1}}],["esm",{"2":{"35":1,"36":1,"41":1}}],["escaping",{"2":{"29":1}}],["escaped",{"2":{"3":1,"39":1,"69":1}}],["e",{"2":{"28":1}}],["euo",{"2":{"28":1}}],["echo`current",{"2":{"11":2}}],["echo",{"0":{"11":1},"2":{"7":1,"11":2,"13":2,"23":2,"46":2,"56":2,"58":2,"59":2,"61":6}}],["entry",{"2":{"33":8}}],["enabling",{"2":{"7":1}}],["end",{"2":{"5":1,"58":3}}],["environment",{"2":{"31":1}}],["env",{"0":{"31":1,"38":1},"2":{"2":2,"31":1,"38":2,"40":2,"50":2,"55":2}}],["etc",{"2":{"2":1}}],["exception",{"2":{"64":1}}],["examples",{"2":{"61":2,"64":2}}],["example",{"2":{"33":2,"39":1,"68":1}}],["example`",{"2":{"19":1}}],["example`await",{"2":{"19":1}}],["experimental",{"2":{"51":1}}],["explicit",{"2":{"40":1}}],["explicitly",{"2":{"2":1}}],["expbackoff",{"2":{"14":2}}],["exponential",{"2":{"14":2}}],["export",{"2":{"13":2,"49":2}}],["exitcode",{"0":{"60":1},"2":{"3":2,"4":2,"5":2,"54":1,"60":2,"64":6}}],["exit",{"2":{"3":1,"54":3,"60":1,"64":1}}],["extends",{"2":{"4":2}}],["extensions",{"0":{"41":1}}],["extension",{"2":{"2":2,"41":1}}],["extra",{"2":{"3":1,"18":1,"67":1}}],["execution",{"2":{"58":1}}],["executing",{"0":{"44":1,"45":1,"46":1,"48":1},"2":{"45":1}}],["execute",{"2":{"42":1,"48":1}}],["executed",{"2":{"3":1,"30":1,"44":1,"56":2}}],["executes",{"2":{"3":1}}],["executable",{"2":{"2":1,"35":1,"36":1,"44":1}}],["on",{"0":{"48":1},"2":{"48":1,"50":2,"64":1}}],["only",{"2":{"32":1,"56":1,"64":1}}],["oneline",{"2":{"3":2,"68":4}}],["os",{"0":{"19":1},"2":{"19":3,"69":3}}],["other",{"0":{"40":1},"2":{"5":1,"40":1,"56":1}}],["outputs",{"2":{"30":1}}],["output",{"0":{"54":1},"2":{"5":1,"20":2,"54":1,"61":5,"65":3}}],["or",{"2":{"2":2,"11":2,"14":1,"26":1,"28":1,"30":1,"43":2,"54":1,"56":1,"66":2,"68":1,"69":1}}],["order",{"2":{"2":1,"69":1}}],["off",{"2":{"55":1}}],["officially",{"2":{"52":1}}],["of",{"0":{"39":1,"68":1},"2":{"2":1,"3":1,"5":1,"9":2,"23":1,"32":1,"39":2,"40":1,"44":2,"54":1,"58":2,"59":3,"60":1,"61":3,"64":3,"65":1,"68":1,"69":1}}],["body",{"2":{"56":1}}],["boolean",{"2":{"23":2}}],["blocks",{"2":{"56":2}}],["blue",{"2":{"17":2}}],["buffered",{"2":{"54":1}}],["builds",{"0":{"51":1},"2":{"51":1}}],["build",{"2":{"50":4}}],["but",{"2":{"49":1,"51":1}}],["brackets",{"2":{"67":1}}],["branch",{"2":{"11":12}}],["break",{"2":{"33":2}}],["by",{"2":{"32":1,"47":1,"49":2,"54":1,"56":1,"58":1,"62":1}}],["basedir",{"2":{"20":2}}],["bashmkdir",{"2":{"67":1}}],["bashvar=$",{"2":{"56":1}}],["bashcat",{"2":{"46":1}}],["bashchmod",{"2":{"2":1}}],["bashzx",{"2":{"2":1,"42":1,"44":1,"47":1}}],["bash",{"2":{"2":1,"26":4,"49":1,"56":2,"61":1,"67":2}}],["bashnpm",{"2":{"1":1,"51":1}}],["backoff",{"2":{"14":2}}],["bar",{"2":{"3":2,"22":2,"38":2,"67":4}}],["because",{"2":{"55":1}}],["behaviour",{"2":{"54":1}}],["behavior",{"2":{"32":1,"64":1,"65":1}}],["beta",{"0":{"51":1},"2":{"51":1}}],["between",{"2":{"14":2}}],["better",{"2":{"2":1}}],["best",{"2":{"9":2}}],["bear",{"2":{"9":4}}],["be",{"2":{"2":1,"3":2,"28":1,"36":1,"39":1,"44":1,"54":1,"56":3,"61":1,"65":2,"67":1,"68":1,"69":1}}],["beginning",{"2":{"2":1}}],["bin",{"2":{"2":2,"26":3,"40":2}}],["f",{"2":{"61":2,"64":2}}],["flag",{"2":{"47":1}}],["flags",{"2":{"3":4,"68":4}}],["faq",{"0":{"37":1},"1":{"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1}}],["false",{"2":{"30":1}}],["fs",{"0":{"18":1},"2":{"18":3,"61":2}}],["first",{"2":{"14":1}}],["file`",{"2":{"64":2,"65":2}}],["files",{"2":{"35":1,"36":1,"39":4,"69":8}}],["filename",{"0":{"35":1},"2":{"35":1,"56":3}}],["file",{"2":{"2":1,"41":1,"44":1,"54":4,"56":1}}],["few",{"2":{"14":1}}],["fetch",{"0":{"8":1},"2":{"2":1,"8":3}}],["from",{"0":{"45":1},"2":{"7":1,"33":2,"40":2,"43":2,"45":1,"47":4,"48":2,"51":2,"64":2,"65":2}}],["func",{"2":{"3":1,"32":1}}],["functions",{"0":{"6":1},"1":{"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"2":{"2":1,"40":1,"49":1}}],["function",{"2":{"2":1,"10":1,"29":1,"33":1,"36":2,"43":2,"69":1}}],["foo",{"2":{"3":2,"22":4,"38":2,"67":4}}],["forget",{"2":{"58":1}}],["force",{"2":{"23":2,"50":2,"55":3}}],["for",{"2":{"2":1,"14":1,"29":1,"33":4,"35":1,"54":1,"59":2,"63":1,"67":1,"68":1,"69":2}}],["following",{"2":{"2":1,"16":1,"46":1}}],["v3",{"2":{"50":2}}],["v`",{"2":{"49":1}}],["v`$",{"2":{"49":1}}],["v",{"2":{"46":4}}],["valid",{"2":{"67":1}}],["values",{"0":{"39":1},"2":{"39":1}}],["variables",{"0":{"38":1},"2":{"31":1}}],["verbosity",{"2":{"30":1}}],["verbose",{"0":{"30":1},"2":{"30":2,"65":1}}],["versions",{"2":{"51":1}}],["version`",{"2":{"13":4}}],["version",{"2":{"1":1,"13":4,"18":2,"23":1,"36":2,"46":2,"47":1,"51":2}}],["v16",{"2":{"13":2}}],["v20",{"2":{"13":2}}],["vs",{"2":{"2":1,"54":1}}],["via",{"0":{"46":1,"47":1},"2":{"2":1,"39":1,"40":1,"62":1,"68":1}}],["void",{"2":{"2":1,"4":2,"43":2}}],["ls",{"2":{"67":2}}],["l`",{"2":{"61":2,"64":2}}],["lodash",{"2":{"51":2}}],["logentry",{"2":{"33":4}}],["logging",{"2":{"33":1}}],["log",{"0":{"33":1},"2":{"3":6,"11":1,"17":2,"22":2,"33":6,"51":2,"54":2,"56":2,"68":4}}],["la",{"2":{"67":2}}],["language",{"2":{"56":1}}],["latest",{"2":{"50":2}}],["la`",{"2":{"43":2}}],["let",{"2":{"8":1,"9":1,"11":1,"12":1,"13":2,"14":5,"18":1,"21":1,"23":1,"24":1,"36":1,"46":2,"54":2,"58":1,"61":1,"63":1}}],["level",{"2":{"2":1}}],["license",{"0":{"52":1}}],["life",{"2":{"44":2}}],["line",{"2":{"5":2}}],["like",{"2":{"2":2,"7":2,"41":1,"54":1,"68":1}}],["lt",{"2":{"4":6,"45":4,"50":4,"51":6}}],["txt`",{"2":{"61":1}}],["txt`await",{"2":{"61":1}}],["txt",{"2":{"61":2}}],["tags",{"2":{"56":1}}],["take",{"2":{"11":1,"68":1}}],["turns",{"2":{"55":1}}],["tty",{"2":{"55":1}}],["t",{"2":{"55":1,"69":1}}],["temp",{"2":{"54":3}}],["terminal",{"2":{"54":1,"55":1}}],["timeout",{"0":{"66":1},"2":{"66":5}}],["time",{"2":{"61":1}}],["times",{"2":{"14":1}}],["tinysh",{"2":{"47":4}}],["type",{"2":{"43":1,"61":2,"64":2}}],["typescript",{"0":{"43":1}}],["tsconfig",{"2":{"43":1}}],["tsclass",{"2":{"4":1,"5":1}}],["tsimport",{"2":{"33":1,"43":1}}],["tmpcd",{"2":{"7":1}}],["tmp",{"2":{"7":3,"13":4,"54":6,"61":4}}],["trigger",{"2":{"58":1}}],["trims",{"2":{"7":1}}],["trim",{"2":{"5":1}}],["truncated",{"0":{"54":1},"2":{"54":1}}],["true",{"2":{"30":1}}],["trailing",{"2":{"7":1}}],["try",{"2":{"3":1,"51":1}}],["think",{"2":{"55":1}}],["this",{"2":{"4":4,"52":1,"54":2,"55":1,"56":1,"58":1,"67":1,"68":1,"69":2}}],["that",{"2":{"28":1,"41":1}}],["throw",{"2":{"14":1,"64":1}}],["thrown",{"2":{"3":1}}],["through",{"2":{"3":1,"69":1}}],["these",{"2":{"35":1,"51":1}}],["their",{"2":{"30":1}}],["there",{"2":{"3":1,"55":1,"67":1}}],["the",{"2":{"2":5,"3":2,"4":1,"5":4,"7":1,"8":1,"9":1,"10":1,"12":1,"14":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":2,"24":1,"28":1,"30":1,"32":2,"35":1,"36":2,"39":1,"42":1,"44":3,"45":1,"46":1,"47":2,"48":1,"49":1,"50":1,"51":1,"54":3,"55":3,"56":1,"57":1,"58":2,"60":2,"61":4,"62":1,"63":1,"64":1,"66":1,"68":3,"69":1}}],["tools",{"2":{"55":1}}],["tostring",{"2":{"5":2}}],["top",{"2":{"2":1}}],["to",{"2":{"2":3,"3":1,"5":1,"7":1,"27":1,"28":1,"30":1,"31":1,"39":1,"40":1,"44":1,"47":2,"48":1,"49":2,"54":6,"55":2,"56":2,"58":1,"60":1,"61":1,"64":1,"65":1,"67":7,"68":1,"69":1}}],["wc",{"2":{"56":2}}],["well",{"2":{"56":1}}],["we",{"2":{"56":1}}],["webpod",{"2":{"48":1}}],["way",{"2":{"55":1}}],["wait",{"2":{"54":1}}],["work",{"2":{"67":1,"69":1}}],["workaround",{"2":{"54":1}}],["working",{"2":{"7":1,"15":2,"32":1}}],["world",{"2":{"17":2,"47":2,"48":2,"58":2,"61":2}}],["when",{"2":{"35":1,"36":1,"39":1,"67":1}}],["which",{"0":{"24":1},"2":{"11":1,"24":3,"26":1,"60":1}}],["what",{"2":{"9":2,"26":1,"55":2}}],["will",{"2":{"2":1,"3":2,"5":1,"14":2,"28":1,"39":1,"44":1,"54":1,"56":3,"58":1,"65":2,"67":3,"68":1,"69":1}}],["within",{"0":{"13":1},"2":{"13":4}}],["without",{"0":{"41":1},"2":{"2":1,"16":1,"23":1}}],["with",{"2":{"2":1,"14":4,"15":2,"30":1,"32":1,"36":1,"44":1,"47":1,"50":1,"54":1,"55":1,"56":1,"58":2,"66":2,"68":1}}],["wrong",{"2":{"67":1,"69":2}}],["writing",{"2":{"54":1}}],["written",{"2":{"42":1}}],["writable",{"2":{"4":2,"58":1}}],["write",{"2":{"2":1,"33":2,"54":1,"56":1,"58":2}}],["wrapper",{"2":{"8":1,"9":1,"10":1}}],["wrap",{"2":{"2":1}}],["adopters",{"2":{"51":1}}],["added",{"2":{"67":1}}],["adding",{"2":{"47":1}}],["addition",{"2":{"7":1}}],["add",{"2":{"2":1,"3":1,"47":1,"55":1,"67":3,"68":1}}],["accessing",{"2":{"58":1}}],["accepts",{"2":{"7":1}}],["action",{"2":{"50":1}}],["actions",{"0":{"50":1},"2":{"50":2}}],["apache",{"2":{"52":1}}],["apply",{"2":{"33":2}}],["api",{"2":{"27":1}}],["after",{"2":{"14":2,"47":1,"66":1}}],["already",{"2":{"68":1}}],["aliases",{"2":{"49":1}}],["also",{"2":{"47":1,"56":1,"67":1,"68":1}}],["alongside",{"2":{"30":1}}],["alternative",{"2":{"11":1}}],["all",{"2":{"2":1,"28":1,"30":1,"32":2,"62":1}}],["assumes",{"2":{"41":1}}],["as",{"2":{"5":2,"12":1,"23":1,"32":1,"35":1,"39":1,"42":1,"46":1,"56":1,"61":1,"69":1}}],["async",{"2":{"2":1,"13":7,"43":2}}],["args",{"2":{"23":1}}],["argv",{"2":{"23":5}}],["argument",{"2":{"5":1,"26":1,"28":1,"30":1,"39":1,"44":1,"46":1,"62":1}}],["arguments",{"0":{"68":1},"2":{"3":1,"7":1,"67":1,"68":2}}],["around",{"2":{"8":1,"9":1,"10":1}}],["arrays",{"2":{"68":1}}],["array",{"0":{"39":1,"68":1},"2":{"3":1,"39":2,"68":2}}],["are",{"2":{"2":1,"16":1,"35":1,"49":1,"51":1,"56":1,"67":1}}],["about",{"2":{"3":1,"4":1}}],["able",{"2":{"2":1,"49":1}}],["amp",{"0":{"35":1},"2":{"3":2,"5":2,"19":4,"67":4}}],["automatically",{"2":{"3":1,"47":1,"67":1}}],["autocomplete",{"2":{"2":1}}],["away",{"2":{"2":1}}],["await",{"2":{"2":1,"3":6,"5":4,"7":4,"8":2,"9":2,"10":1,"11":2,"12":2,"13":6,"14":6,"15":3,"18":2,"21":2,"24":2,"38":2,"39":2,"40":2,"43":2,"45":2,"46":2,"48":2,"49":2,"50":2,"54":4,"55":3,"56":3,"57":2,"59":2,"60":2,"61":6,"62":2,"64":7,"65":2,"66":3,"67":2,"68":2,"69":6}}],["available",{"2":{"2":1,"16":1}}],["attach",{"2":{"49":1}}],["attaching",{"0":{"49":1}}],["attempts",{"2":{"14":3}}],["attempt",{"2":{"14":1}}],["at",{"2":{"2":1,"5":1}}],["and",{"0":{"69":1},"2":{"3":2,"5":1,"7":1,"32":1,"35":1,"39":1,"40":1,"43":1,"44":1,"49":1,"54":1,"55":1,"61":1,"62":1,"65":2,"68":2,"69":1}}],["any",{"2":{"2":1,"23":1}}],["an",{"2":{"2":1,"3":1,"5":1,"14":2,"31":1,"39":2,"41":1,"52":1,"62":1,"64":1,"68":1}}],["a",{"0":{"49":1},"2":{"2":1,"3":2,"5":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":4,"15":3,"23":1,"26":1,"27":1,"28":1,"29":1,"32":1,"33":1,"41":1,"46":1,"54":6,"55":3,"56":1,"57":1,"58":2,"59":1,"60":1,"61":5,"62":1,"63":1,"64":2,"66":3,"67":1,"68":3}}],["syntax",{"2":{"67":1,"69":1}}],["s",{"2":{"54":1,"55":1,"56":1,"68":1}}],["separate",{"2":{"68":1}}],["separately",{"2":{"68":1}}],["sent",{"2":{"62":1}}],["sense",{"2":{"51":1}}],["see",{"2":{"54":1,"55":2}}],["set",{"2":{"28":2,"30":1,"43":1}}],["settimeout",{"2":{"10":1,"13":2,"62":2}}],["ssh",{"2":{"48":4}}],["say",{"2":{"47":2}}],["same",{"2":{"32":1,"61":1}}],["switch",{"2":{"33":2}}],["subprocess",{"0":{"55":1},"2":{"55":3,"58":1}}],["substitution",{"2":{"29":1}}],["supported",{"2":{"52":1}}],["supports",{"2":{"45":1}}],["such",{"2":{"35":1}}],["successful",{"2":{"14":1}}],["slice",{"2":{"23":2}}],["sleep",{"0":{"10":1},"2":{"10":2,"61":4}}],["sigkill",{"2":{"66":2}}],["sigint",{"2":{"62":2}}],["sigterm",{"2":{"62":1}}],["signal",{"2":{"5":2,"62":2,"66":2}}],["simple",{"2":{"15":1}}],["split",{"2":{"68":2}}],["space",{"2":{"39":1,"68":1}}],["spawn",{"0":{"27":1},"2":{"3":1,"27":2,"32":1}}],["specific",{"2":{"66":2}}],["specified",{"2":{"14":2,"32":1,"66":1}}],["specifies",{"2":{"14":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"63":1}}],["specify",{"2":{"47":1,"62":1}}],["special",{"2":{"29":1,"67":1}}],["spinner",{"0":{"15":1},"2":{"15":5}}],["should",{"2":{"54":1}}],["show",{"2":{"11":2,"55":1,"61":1}}],["shell=",{"2":{"26":1}}],["shell",{"0":{"26":1},"2":{"26":3}}],["shebang",{"2":{"2":1}}],["sh",{"2":{"13":2,"47":6,"49":2,"56":1}}],["steps",{"2":{"50":2}}],["still",{"2":{"49":1}}],["starts",{"2":{"15":1,"44":1}}],["started",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["streams",{"2":{"59":1}}],["stream",{"2":{"58":2}}],["string",{"2":{"5":8,"7":1,"12":1,"68":1}}],["straight",{"2":{"2":1}}],["stdio",{"0":{"63":1},"2":{"58":1,"63":4}}],["stdin",{"0":{"12":1,"45":1,"58":1},"2":{"4":2,"12":3,"45":1,"46":2,"58":6}}],["stdout",{"0":{"59":1},"2":{"4":2,"5":5,"54":2,"59":3,"61":5}}],["stderr",{"0":{"59":1},"2":{"3":2,"4":2,"5":4,"33":2,"59":1}}],["source",{"2":{"13":2,"49":2}}],["someflag",{"2":{"23":2}}],["some",{"2":{"5":1}}],["something`",{"2":{"64":2}}],["something",{"2":{"2":1,"54":1,"64":2,"65":2,"67":1}}],["so",{"2":{"2":1,"36":1}}],["script",{"2":{"2":7,"41":1,"46":1,"47":4}}],["scripts",{"0":{"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"56":1},"2":{"2":3,"16":1,"35":1,"42":1,"45":1,"56":1}}],["0await",{"2":{"13":1}}],["0",{"2":{"1":2,"13":3,"52":1,"60":2,"61":2,"64":6}}],["==",{"2":{"60":2,"64":4}}],["=",{"2":{"1":1,"3":4,"5":2,"7":2,"8":2,"9":2,"11":2,"12":2,"13":18,"14":12,"15":4,"18":2,"21":2,"23":2,"24":2,"26":2,"30":1,"33":4,"36":2,"38":2,"39":2,"46":2,"54":5,"57":2,"58":2,"59":2,"61":2,"62":4,"63":2,"67":2,"68":2,"69":4}}],["grep",{"2":{"61":2,"64":2}}],["greeting",{"2":{"61":4}}],["getter",{"2":{"58":1}}],["getting",{"0":{"0":1},"1":{"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1}}],["gets",{"0":{"54":1}}],["google",{"2":{"52":1}}],["game",{"2":{"44":2}}],["github",{"0":{"50":1},"2":{"50":1}}],["git",{"2":{"41":1}}],["given",{"2":{"3":1}}],["globbing",{"0":{"69":1}}],["globby",{"0":{"21":1},"2":{"21":1,"69":1}}],["glob",{"2":{"21":2,"69":4}}],["globals",{"2":{"2":3,"35":2,"43":2}}],["gt",{"2":{"1":1,"4":6,"7":2,"13":16,"14":6,"15":4,"33":2,"54":2,"62":2}}],["g",{"2":{"1":2}}],["ignored",{"2":{"56":1}}],["impatient",{"2":{"51":1}}],["importing",{"0":{"40":1},"2":{"16":1}}],["import",{"2":{"2":2,"33":1,"40":2,"43":3,"47":3,"51":2,"56":2}}],["imports",{"2":{"2":1,"36":1,"40":1,"56":1}}],["io`",{"2":{"14":6}}],["io",{"2":{"8":2,"44":2}}],["idioms",{"2":{"7":1}}],["itself",{"2":{"54":1}}],["items",{"2":{"39":1,"68":1}}],["it",{"2":{"3":1,"36":1,"40":1,"41":1,"49":1,"54":1,"55":1,"56":1,"67":2,"68":2}}],["issue",{"2":{"54":1}}],["issues",{"0":{"53":1},"1":{"54":1,"55":1}}],["is",{"2":{"3":1,"5":5,"9":2,"11":4,"26":2,"28":1,"30":1,"36":1,"40":1,"41":1,"52":1,"54":2,"55":2,"58":1,"62":1,"63":1,"64":1,"67":1}}],["if",{"2":{"2":1,"3":2,"5":1,"23":1,"32":1,"41":1,"44":1,"54":1,"60":1,"64":4,"67":3,"68":1}}],["init`",{"2":{"59":2}}],["inherit",{"2":{"58":1,"63":1}}],["invoked",{"2":{"55":1}}],["include",{"2":{"49":1}}],["into",{"0":{"40":1}}],["individually",{"2":{"39":1}}],["instead",{"2":{"69":1}}],["instance",{"2":{"57":1}}],["installed",{"2":{"50":1}}],["installing",{"0":{"47":1}}],["install",{"0":{"1":1,"47":1},"2":{"47":4,"51":2}}],["inside",{"2":{"16":1,"64":2,"67":1}}],["in",{"0":{"55":1},"2":{"2":4,"3":1,"7":1,"30":1,"35":3,"36":2,"43":2,"51":2,"55":1,"58":1,"61":1,"68":1,"69":1}}],["i",{"2":{"1":2,"51":2}}]],"serializationVersion":2}';export{t as default};
docs/assets/chunks/framework.54ce79f7.js
@@ -0,0 +1,2 @@
+function ur(e,t){const n=Object.create(null),r=e.split(",");for(let s=0;s<r.length;s++)n[r[s]]=!0;return t?s=>!!n[s.toLowerCase()]:s=>!!n[s]}const te={},pt=[],Pe=()=>{},ii=()=>!1,li=/^on[^a-z]/,Vt=e=>li.test(e),fr=e=>e.startsWith("onUpdate:"),ie=Object.assign,dr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},ci=Object.prototype.hasOwnProperty,Y=(e,t)=>ci.call(e,t),U=Array.isArray,gt=e=>Cn(e)==="[object Map]",Bs=e=>Cn(e)==="[object Set]",K=e=>typeof e=="function",re=e=>typeof e=="string",hr=e=>typeof e=="symbol",ee=e=>e!==null&&typeof e=="object",Us=e=>ee(e)&&K(e.then)&&K(e.catch),ks=Object.prototype.toString,Cn=e=>ks.call(e),ai=e=>Cn(e).slice(8,-1),Ks=e=>Cn(e)==="[object Object]",pr=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Mt=ur(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),En=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},ui=/-(\w)/g,Ne=En(e=>e.replace(ui,(t,n)=>n?n.toUpperCase():"")),fi=/\B([A-Z])/g,at=En(e=>e.replace(fi,"-$1").toLowerCase()),xn=En(e=>e.charAt(0).toUpperCase()+e.slice(1)),an=En(e=>e?`on${xn(e)}`:""),jt=(e,t)=>!Object.is(e,t),un=(e,t)=>{for(let n=0;n<e.length;n++)e[n](t)},hn=(e,t,n)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},Jn=e=>{const t=parseFloat(e);return isNaN(t)?e:t},di=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let Kr;const Xn=()=>Kr||(Kr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function gr(e){if(U(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],s=re(r)?mi(r):gr(r);if(s)for(const o in s)t[o]=s[o]}return t}else{if(re(e))return e;if(ee(e))return e}}const hi=/;(?![^(]*\))/g,pi=/:([^]+)/,gi=/\/\*[^]*?\*\//g;function mi(e){const t={};return e.replace(gi,"").split(hi).forEach(n=>{if(n){const r=n.split(pi);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function mr(e){let t="";if(re(e))t=e;else if(U(e))for(let n=0;n<e.length;n++){const r=mr(e[n]);r&&(t+=r+" ")}else if(ee(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}const _i="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",yi=ur(_i);function Ws(e){return!!e||e===""}const Ia=e=>re(e)?e:e==null?"":U(e)||ee(e)&&(e.toString===ks||!K(e.toString))?JSON.stringify(e,Vs,2):String(e),Vs=(e,t)=>t&&t.__v_isRef?Vs(e,t.value):gt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s])=>(n[`${r} =>`]=s,n),{})}:Bs(t)?{[`Set(${t.size})`]:[...t.values()]}:ee(t)&&!U(t)&&!Ks(t)?String(t):t;let be;class bi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=be;try{return be=this,t()}finally{be=n}}}on(){be=this}off(){be=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n<r;n++)this.effects[n].stop();for(n=0,r=this.cleanups.length;n<r;n++)this.cleanups[n]();if(this.scopes)for(n=0,r=this.scopes.length;n<r;n++)this.scopes[n].stop(!0);if(!this.detached&&this.parent&&!t){const s=this.parent.scopes.pop();s&&s!==this&&(this.parent.scopes[this.index]=s,s.index=this.index)}this.parent=void 0,this._active=!1}}}function vi(e,t=be){t&&t.active&&t.effects.push(e)}function qs(){return be}function wi(e){be&&be.cleanups.push(e)}const _r=e=>{const t=new Set(e);return t.w=0,t.n=0,t},zs=e=>(e.w&Je)>0,Ys=e=>(e.n&Je)>0,Ci=({deps:e})=>{if(e.length)for(let t=0;t<e.length;t++)e[t].w|=Je},Ei=e=>{const{deps:t}=e;if(t.length){let n=0;for(let r=0;r<t.length;r++){const s=t[r];zs(s)&&!Ys(s)?s.delete(e):t[n++]=s,s.w&=~Je,s.n&=~Je}t.length=n}},pn=new WeakMap;let Pt=0,Je=1;const Qn=30;let Se;const lt=Symbol(""),Zn=Symbol("");class yr{constructor(t,n=null,r){this.fn=t,this.scheduler=n,this.active=!0,this.deps=[],this.parent=void 0,vi(this,r)}run(){if(!this.active)return this.fn();let t=Se,n=qe;for(;t;){if(t===this)return;t=t.parent}try{return this.parent=Se,Se=this,qe=!0,Je=1<<++Pt,Pt<=Qn?Ci(this):Wr(this),this.fn()}finally{Pt<=Qn&&Ei(this),Je=1<<--Pt,Se=this.parent,qe=n,this.parent=void 0,this.deferStop&&this.stop()}}stop(){Se===this?this.deferStop=!0:this.active&&(Wr(this),this.onStop&&this.onStop(),this.active=!1)}}function Wr(e){const{deps:t}=e;if(t.length){for(let n=0;n<t.length;n++)t[n].delete(e);t.length=0}}let qe=!0;const Js=[];function xt(){Js.push(qe),qe=!1}function Tt(){const e=Js.pop();qe=e===void 0?!0:e}function me(e,t,n){if(qe&&Se){let r=pn.get(e);r||pn.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=_r()),Xs(s)}}function Xs(e,t){let n=!1;Pt<=Qn?Ys(e)||(e.n|=Je,n=!zs(e)):n=!e.has(Se),n&&(e.add(Se),Se.deps.push(e))}function je(e,t,n,r,s,o){const i=pn.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&U(e)){const c=Number(r);i.forEach((a,f)=>{(f==="length"||f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":U(e)?pr(n)&&l.push(i.get("length")):(l.push(i.get(lt)),gt(e)&&l.push(i.get(Zn)));break;case"delete":U(e)||(l.push(i.get(lt)),gt(e)&&l.push(i.get(Zn)));break;case"set":gt(e)&&l.push(i.get(lt));break}if(l.length===1)l[0]&&Gn(l[0]);else{const c=[];for(const a of l)a&&c.push(...a);Gn(_r(c))}}function Gn(e,t){const n=U(e)?e:[...e];for(const r of n)r.computed&&Vr(r);for(const r of n)r.computed||Vr(r)}function Vr(e,t){(e!==Se||e.allowRecurse)&&(e.scheduler?e.scheduler():e.run())}function xi(e,t){var n;return(n=pn.get(e))==null?void 0:n.get(t)}const Ti=ur("__proto__,__v_isRef,__isVue"),Qs=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(hr)),Ai=br(),Si=br(!1,!0),Oi=br(!0),qr=Pi();function Pi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o<i;o++)me(r,"get",o+"");const s=r[t](...n);return s===-1||s===!1?r[t](...n.map(J)):s}}),["push","pop","shift","unshift","splice"].forEach(t=>{e[t]=function(...n){xt();const r=J(this)[t].apply(this,n);return Tt(),r}}),e}function Ri(e){const t=J(this);return me(t,"has",e),t.hasOwnProperty(e)}function br(e=!1,t=!1){return function(r,s,o){if(s==="__v_isReactive")return!e;if(s==="__v_isReadonly")return e;if(s==="__v_isShallow")return t;if(s==="__v_raw"&&o===(e?t?qi:no:t?to:eo).get(r))return r;const i=U(r);if(!e){if(i&&Y(qr,s))return Reflect.get(qr,s,o);if(s==="hasOwnProperty")return Ri}const l=Reflect.get(r,s,o);return(hr(s)?Qs.has(s):Ti(s))||(e||me(r,"get",s),t)?l:ce(l)?i&&pr(s)?l:l.value:ee(l)?e?Sn(l):An(l):l}}const Mi=Zs(),Fi=Zs(!0);function Zs(e=!1){return function(n,r,s,o){let i=n[r];if(vt(i)&&ce(i)&&!ce(s))return!1;if(!e&&(!gn(s)&&!vt(s)&&(i=J(i),s=J(s)),!U(n)&&ce(i)&&!ce(s)))return i.value=s,!0;const l=U(n)&&pr(r)?Number(r)<n.length:Y(n,r),c=Reflect.set(n,r,s,o);return n===J(o)&&(l?jt(s,i)&&je(n,"set",r,s):je(n,"add",r,s)),c}}function Ii(e,t){const n=Y(e,t);e[t];const r=Reflect.deleteProperty(e,t);return r&&n&&je(e,"delete",t,void 0),r}function Li(e,t){const n=Reflect.has(e,t);return(!hr(t)||!Qs.has(t))&&me(e,"has",t),n}function Ni(e){return me(e,"iterate",U(e)?"length":lt),Reflect.ownKeys(e)}const Gs={get:Ai,set:Mi,deleteProperty:Ii,has:Li,ownKeys:Ni},Hi={get:Oi,set(e,t){return!0},deleteProperty(e,t){return!0}},$i=ie({},Gs,{get:Si,set:Fi}),vr=e=>e,Tn=e=>Reflect.getPrototypeOf(e);function Xt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(t!==o&&me(s,"get",t),me(s,"get",o));const{has:i}=Tn(s),l=r?vr:n?Er:Dt;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(e!==s&&me(r,"has",e),me(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Zt(e,t=!1){return e=e.__v_raw,!t&&me(J(e),"iterate",lt),Reflect.get(e,"size",e)}function zr(e){e=J(e);const t=J(this);return Tn(t).has.call(t,e)||(t.add(e),je(t,"add",e,e)),this}function Yr(e,t){t=J(t);const n=J(this),{has:r,get:s}=Tn(n);let o=r.call(n,e);o||(e=J(e),o=r.call(n,e));const i=s.call(n,e);return n.set(e,t),o?jt(t,i)&&je(n,"set",e,t):je(n,"add",e,t),this}function Jr(e){const t=J(this),{has:n,get:r}=Tn(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&je(t,"delete",e,void 0),o}function Xr(){const e=J(this),t=e.size!==0,n=e.clear();return t&&je(e,"clear",void 0,void 0),n}function Gt(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?vr:e?Er:Dt;return!e&&me(l,"iterate",lt),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function en(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=gt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?vr:t?Er:Dt;return!t&&me(o,"iterate",c?Zn:lt),{next(){const{value:h,done:g}=a.next();return g?{value:h,done:g}:{value:l?[f(h[0]),f(h[1])]:f(h),done:g}},[Symbol.iterator](){return this}}}}function Ue(e){return function(...t){return e==="delete"?!1:this}}function ji(){const e={get(o){return Xt(this,o)},get size(){return Zt(this)},has:Qt,add:zr,set:Yr,delete:Jr,clear:Xr,forEach:Gt(!1,!1)},t={get(o){return Xt(this,o,!1,!0)},get size(){return Zt(this)},has:Qt,add:zr,set:Yr,delete:Jr,clear:Xr,forEach:Gt(!1,!0)},n={get(o){return Xt(this,o,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:Gt(!0,!1)},r={get(o){return Xt(this,o,!0,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Ue("add"),set:Ue("set"),delete:Ue("delete"),clear:Ue("clear"),forEach:Gt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=en(o,!1,!1),n[o]=en(o,!0,!1),t[o]=en(o,!1,!0),r[o]=en(o,!0,!0)}),[e,n,t,r]}const[Di,Bi,Ui,ki]=ji();function wr(e,t){const n=t?e?ki:Ui:e?Bi:Di;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(Y(n,s)&&s in r?n:r,s,o)}const Ki={get:wr(!1,!1)},Wi={get:wr(!1,!0)},Vi={get:wr(!0,!1)},eo=new WeakMap,to=new WeakMap,no=new WeakMap,qi=new WeakMap;function zi(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Yi(e){return e.__v_skip||!Object.isExtensible(e)?0:zi(ai(e))}function An(e){return vt(e)?e:Cr(e,!1,Gs,Ki,eo)}function Ji(e){return Cr(e,!1,$i,Wi,to)}function Sn(e){return Cr(e,!0,Hi,Vi,no)}function Cr(e,t,n,r,s){if(!ee(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=Yi(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function mt(e){return vt(e)?mt(e.__v_raw):!!(e&&e.__v_isReactive)}function vt(e){return!!(e&&e.__v_isReadonly)}function gn(e){return!!(e&&e.__v_isShallow)}function ro(e){return mt(e)||vt(e)}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Ft(e){return hn(e,"__v_skip",!0),e}const Dt=e=>ee(e)?An(e):e,Er=e=>ee(e)?Sn(e):e;function xr(e){qe&&Se&&(e=J(e),Xs(e.dep||(e.dep=_r())))}function Tr(e,t){e=J(e);const n=e.dep;n&&Gn(n)}function ce(e){return!!(e&&e.__v_isRef===!0)}function ue(e){return so(e,!1)}function Ar(e){return so(e,!0)}function so(e,t){return ce(e)?e:new Xi(e,t)}class Xi{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Dt(t)}get value(){return xr(this),this._value}set value(t){const n=this.__v_isShallow||gn(t)||vt(t);t=n?t:J(t),jt(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Dt(t),Tr(this))}}function oo(e){return ce(e)?e.value:e}const Qi={get:(e,t,n)=>oo(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return ce(s)&&!ce(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function io(e){return mt(e)?e:new Proxy(e,Qi)}class Zi{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>xr(this),()=>Tr(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function Gi(e){return new Zi(e)}class el{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return xi(J(this._object),this._key)}}class tl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function nl(e,t,n){return ce(e)?e:K(e)?new tl(e):ee(e)&&arguments.length>1?rl(e,t,n):ue(e)}function rl(e,t,n){const r=e[t];return ce(r)?r:new el(e,t,n)}class sl{constructor(t,n,r,s){this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this._dirty=!0,this.effect=new yr(t,()=>{this._dirty||(this._dirty=!0,Tr(this))}),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return xr(t),(t._dirty||!t._cacheable)&&(t._dirty=!1,t._value=t.effect.run()),t._value}set value(t){this._setter(t)}}function ol(e,t,n=!1){let r,s;const o=K(e);return o?(r=e,s=Pe):(r=e.get,s=e.set),new sl(r,s,o||!s,n)}function ze(e,t,n,r){let s;try{s=r?e(...r):e()}catch(o){qt(o,t,n)}return s}function xe(e,t,n,r){if(K(e)){const o=ze(e,t,n,r);return o&&Us(o)&&o.catch(i=>{qt(i,t,n)}),o}const s=[];for(let o=0;o<e.length;o++)s.push(xe(e[o],t,n,r));return s}function qt(e,t,n,r=!0){const s=t?t.vnode:null;if(t){let o=t.parent;const i=t.proxy,l=n;for(;o;){const a=o.ec;if(a){for(let f=0;f<a.length;f++)if(a[f](e,i,l)===!1)return}o=o.parent}const c=t.appContext.config.errorHandler;if(c){ze(c,null,10,[e,i,l]);return}}il(e,n,s,r)}function il(e,t,n,r=!0){console.error(e)}let Bt=!1,er=!1;const de=[];let Ie=0;const _t=[];let $e=null,nt=0;const lo=Promise.resolve();let Sr=null;function On(e){const t=Sr||lo;return e?t.then(this?e.bind(this):e):t}function ll(e){let t=Ie+1,n=de.length;for(;t<n;){const r=t+n>>>1;Ut(de[r])<e?t=r+1:n=r}return t}function Pn(e){(!de.length||!de.includes(e,Bt&&e.allowRecurse?Ie+1:Ie))&&(e.id==null?de.push(e):de.splice(ll(e.id),0,e),co())}function co(){!Bt&&!er&&(er=!0,Sr=lo.then(ao))}function cl(e){const t=de.indexOf(e);t>Ie&&de.splice(t,1)}function al(e){U(e)?_t.push(...e):(!$e||!$e.includes(e,e.allowRecurse?nt+1:nt))&&_t.push(e),co()}function Qr(e,t=Bt?Ie+1:0){for(;t<de.length;t++){const n=de[t];n&&n.pre&&(de.splice(t,1),t--,n())}}function mn(e){if(_t.length){const t=[...new Set(_t)];if(_t.length=0,$e){$e.push(...t);return}for($e=t,$e.sort((n,r)=>Ut(n)-Ut(r)),nt=0;nt<$e.length;nt++)$e[nt]();$e=null,nt=0}}const Ut=e=>e.id==null?1/0:e.id,ul=(e,t)=>{const n=Ut(e)-Ut(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function ao(e){er=!1,Bt=!0,de.sort(ul);const t=Pe;try{for(Ie=0;Ie<de.length;Ie++){const n=de[Ie];n&&n.active!==!1&&ze(n,null,14)}}finally{Ie=0,de.length=0,mn(),Bt=!1,Sr=null,(de.length||_t.length)&&ao()}}function fl(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||te;let s=n;const o=t.startsWith("update:"),i=o&&t.slice(7);if(i&&i in r){const f=`${i==="modelValue"?"model":i}Modifiers`,{number:h,trim:g}=r[f]||te;g&&(s=n.map(w=>re(w)?w.trim():w)),h&&(s=n.map(Jn))}let l,c=r[l=an(t)]||r[l=an(Ne(t))];!c&&o&&(c=r[l=an(at(t))]),c&&xe(c,e,6,s);const a=r[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,xe(a,e,6,s)}}function uo(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!K(e)){const c=a=>{const f=uo(a,t,!0);f&&(l=!0,ie(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(ee(e)&&r.set(e,null),null):(U(o)?o.forEach(c=>i[c]=null):ie(i,o),ee(e)&&r.set(e,i),i)}function Rn(e,t){return!e||!Vt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,at(t))||Y(e,t))}let fe=null,Mn=null;function _n(e){const t=fe;return fe=e,Mn=e&&e.type.__scopeId||null,t}function La(e){Mn=e}function Na(){Mn=null}function dl(e,t=fe,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&us(-1);const o=_n(t);let i;try{i=e(...s)}finally{_n(o),r._d&&us(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Bn(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:o,propsOptions:[i],slots:l,attrs:c,emit:a,render:f,renderCache:h,data:g,setupState:w,ctx:E,inheritAttrs:S}=e;let H,m;const y=_n(e);try{if(n.shapeFlag&4){const A=s||r;H=Ae(f.call(A,A,h,o,w,g,E)),m=c}else{const A=t;H=Ae(A.length>1?A(o,{attrs:c,slots:l,emit:a}):A(o,null)),m=t.props?c:hl(c)}}catch(A){Ht.length=0,qt(A,e,1),H=se(ve)}let N=H;if(m&&S!==!1){const A=Object.keys(m),{shapeFlag:B}=N;A.length&&B&7&&(i&&A.some(fr)&&(m=pl(m,i)),N=Xe(N,m))}return n.dirs&&(N=Xe(N),N.dirs=N.dirs?N.dirs.concat(n.dirs):n.dirs),n.transition&&(N.transition=n.transition),H=N,_n(y),H}const hl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Vt(n))&&((t||(t={}))[n]=e[n]);return t},pl=(e,t)=>{const n={};for(const r in e)(!fr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function gl(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?Zr(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;h<f.length;h++){const g=f[h];if(i[g]!==r[g]&&!Rn(a,g))return!0}}}else return(s||l)&&(!l||!l.$stable)?!0:r===i?!1:r?i?Zr(r,i,a):!0:!!i;return!1}function Zr(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let s=0;s<r.length;s++){const o=r[s];if(t[o]!==e[o]&&!Rn(n,o))return!0}return!1}function ml({vnode:e,parent:t},n){for(;t&&t.subTree===e;)(e=t.vnode).el=n,t=t.parent}const _l=e=>e.__isSuspense;function fo(e,t){t&&t.pendingBranch?U(e)?t.effects.push(...e):t.effects.push(e):al(e)}function Or(e,t){return Fn(e,null,t)}function Ha(e,t){return Fn(e,null,{flush:"post"})}const tn={};function Ye(e,t,n){return Fn(e,t,n)}function Fn(e,t,{immediate:n,deep:r,flush:s,onTrack:o,onTrigger:i}=te){var l;const c=qs()===((l=le)==null?void 0:l.scope)?le:null;let a,f=!1,h=!1;if(ce(e)?(a=()=>e.value,f=gn(e)):mt(e)?(a=()=>e,r=!0):U(e)?(h=!0,f=e.some(A=>mt(A)||gn(A)),a=()=>e.map(A=>{if(ce(A))return A.value;if(mt(A))return ot(A);if(K(A))return ze(A,c,2)})):K(e)?t?a=()=>ze(e,c,2):a=()=>{if(!(c&&c.isUnmounted))return g&&g(),xe(e,c,3,[w])}:a=Pe,t&&r){const A=a;a=()=>ot(A())}let g,w=A=>{g=y.onStop=()=>{ze(A,c,4)}},E;if(Et)if(w=Pe,t?n&&xe(t,c,3,[a(),h?[]:void 0,w]):a(),s==="sync"){const A=hc();E=A.__watcherHandles||(A.__watcherHandles=[])}else return Pe;let S=h?new Array(e.length).fill(tn):tn;const H=()=>{if(y.active)if(t){const A=y.run();(r||f||(h?A.some((B,W)=>jt(B,S[W])):jt(A,S)))&&(g&&g(),xe(t,c,3,[A,S===tn?void 0:h&&S[0]===tn?[]:S,w]),S=A)}else y.run()};H.allowRecurse=!!t;let m;s==="sync"?m=H:s==="post"?m=()=>pe(H,c&&c.suspense):(H.pre=!0,c&&(H.id=c.uid),m=()=>Pn(H));const y=new yr(a,m);t?n?H():S=y.run():s==="post"?pe(y.run.bind(y),c&&c.suspense):y.run();const N=()=>{y.stop(),c&&c.scope&&dr(c.scope.effects,y)};return E&&E.push(N),N}function yl(e,t,n){const r=this.proxy,s=re(e)?e.includes(".")?ho(r,e):()=>r[e]:e.bind(r,r);let o;K(t)?o=t:(o=t.handler,n=t);const i=le;Ct(this);const l=Fn(s,o.bind(r),n);return i?Ct(i):ct(),l}function ho(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s<n.length&&r;s++)r=r[n[s]];return r}}function ot(e,t){if(!ee(e)||e.__v_skip||(t=t||new Set,t.has(e)))return e;if(t.add(e),ce(e))ot(e.value,t);else if(U(e))for(let n=0;n<e.length;n++)ot(e[n],t);else if(Bs(e)||gt(e))e.forEach(n=>{ot(n,t)});else if(Ks(e))for(const n in e)ot(e[n],t);return e}function $a(e,t){const n=fe;if(n===null)return e;const r=$n(n)||n.proxy,s=e.dirs||(e.dirs=[]);for(let o=0;o<t.length;o++){let[i,l,c,a=te]=t[o];i&&(K(i)&&(i={mounted:i,updated:i}),i.deep&&ot(l),s.push({dir:i,instance:r,value:l,oldValue:void 0,arg:c,modifiers:a}))}return e}function Fe(e,t,n,r){const s=e.dirs,o=t&&t.dirs;for(let i=0;i<s.length;i++){const l=s[i];o&&(l.oldValue=o[i].value);let c=l.dir[r];c&&(xt(),xe(c,n,8,[e.el,l,e,t]),Tt())}}function bl(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return At(()=>{e.isMounted=!0}),yo(()=>{e.isUnmounting=!0}),e}const we=[Function,Array],po={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:we,onEnter:we,onAfterEnter:we,onEnterCancelled:we,onBeforeLeave:we,onLeave:we,onAfterLeave:we,onLeaveCancelled:we,onBeforeAppear:we,onAppear:we,onAfterAppear:we,onAppearCancelled:we},vl={name:"BaseTransition",props:po,setup(e,{slots:t}){const n=Hn(),r=bl();let s;return()=>{const o=t.default&&mo(t.default(),!0);if(!o||!o.length)return;let i=o[0];if(o.length>1){for(const S of o)if(S.type!==ve){i=S;break}}const l=J(e),{mode:c}=l;if(r.isLeaving)return Un(i);const a=Gr(i);if(!a)return Un(i);const f=tr(a,l,r,n);nr(a,f);const h=n.subTree,g=h&&Gr(h);let w=!1;const{getTransitionKey:E}=a.type;if(E){const S=E();s===void 0?s=S:S!==s&&(s=S,w=!0)}if(g&&g.type!==ve&&(!rt(a,g)||w)){const S=tr(g,l,r,n);if(nr(g,S),c==="out-in")return r.isLeaving=!0,S.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&n.update()},Un(i);c==="in-out"&&a.type!==ve&&(S.delayLeave=(H,m,y)=>{const N=go(r,g);N[String(g.key)]=g,H._leaveCb=()=>{m(),H._leaveCb=void 0,delete f.delayedLeave},f.delayedLeave=y})}return i}}},wl=vl;function go(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function tr(e,t,n,r){const{appear:s,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:f,onBeforeLeave:h,onLeave:g,onAfterLeave:w,onLeaveCancelled:E,onBeforeAppear:S,onAppear:H,onAfterAppear:m,onAppearCancelled:y}=t,N=String(e.key),A=go(n,e),B=(_,R)=>{_&&xe(_,r,9,R)},W=(_,R)=>{const I=R[1];B(_,R),U(_)?_.every(V=>V.length<=1)&&I():_.length<=1&&I()},D={mode:o,persisted:i,beforeEnter(_){let R=l;if(!n.isMounted)if(s)R=S||l;else return;_._leaveCb&&_._leaveCb(!0);const I=A[N];I&&rt(e,I)&&I.el._leaveCb&&I.el._leaveCb(),B(R,[_])},enter(_){let R=c,I=a,V=f;if(!n.isMounted)if(s)R=H||c,I=m||a,V=y||f;else return;let M=!1;const q=_._enterCb=L=>{M||(M=!0,L?B(V,[_]):B(I,[_]),D.delayedLeave&&D.delayedLeave(),_._enterCb=void 0)};R?W(R,[_,q]):q()},leave(_,R){const I=String(e.key);if(_._enterCb&&_._enterCb(!0),n.isUnmounting)return R();B(h,[_]);let V=!1;const M=_._leaveCb=q=>{V||(V=!0,R(),q?B(E,[_]):B(w,[_]),_._leaveCb=void 0,A[I]===e&&delete A[I])};A[I]=e,g?W(g,[_,M]):M()},clone(_){return tr(_,t,n,r)}};return D}function Un(e){if(zt(e))return e=Xe(e),e.children=null,e}function Gr(e){return zt(e)?e.children?e.children[0]:void 0:e}function nr(e,t){e.shapeFlag&6&&e.component?nr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function mo(e,t=!1,n){let r=[],s=0;for(let o=0;o<e.length;o++){let i=e[o];const l=n==null?i.key:String(n)+String(i.key!=null?i.key:o);i.type===ge?(i.patchFlag&128&&s++,r=r.concat(mo(i.children,t,l))):(t||i.type!==ve)&&r.push(l!=null?Xe(i,{key:l}):i)}if(s>1)for(let o=0;o<r.length;o++)r[o].patchFlag=-2;return r}function Pr(e,t){return K(e)?(()=>ie({name:e.name},t,{setup:e}))():e}const yt=e=>!!e.type.__asyncLoader;function ja(e){K(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,f=0;const h=()=>(f++,c=null,g()),g=()=>{let w;return c||(w=c=t().catch(E=>{if(E=E instanceof Error?E:new Error(String(E)),l)return new Promise((S,H)=>{l(E,()=>S(h()),()=>H(E),f+1)});throw E}).then(E=>w!==c&&c?c:(E&&(E.__esModule||E[Symbol.toStringTag]==="Module")&&(E=E.default),a=E,E)))};return Pr({name:"AsyncComponentWrapper",__asyncLoader:g,get __asyncResolved(){return a},setup(){const w=le;if(a)return()=>kn(a,w);const E=y=>{c=null,qt(y,w,13,!r)};if(i&&w.suspense||Et)return g().then(y=>()=>kn(y,w)).catch(y=>(E(y),()=>r?se(r,{error:y}):null));const S=ue(!1),H=ue(),m=ue(!!s);return s&&setTimeout(()=>{m.value=!1},s),o!=null&&setTimeout(()=>{if(!S.value&&!H.value){const y=new Error(`Async component timed out after ${o}ms.`);E(y),H.value=y}},o),g().then(()=>{S.value=!0,w.parent&&zt(w.parent.vnode)&&Pn(w.parent.update)}).catch(y=>{E(y),H.value=y}),()=>{if(S.value&&a)return kn(a,w);if(H.value&&r)return se(r,{error:H.value});if(n&&!m.value)return se(n)}}})}function kn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=se(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const zt=e=>e.type.__isKeepAlive;function Cl(e,t){_o(e,"a",t)}function El(e,t){_o(e,"da",t)}function _o(e,t,n=le){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(In(t,r,n),n){let s=n.parent;for(;s&&s.parent;)zt(s.parent.vnode)&&xl(r,t,n,s),s=s.parent}}function xl(e,t,n,r){const s=In(t,e,r,!0);Ln(()=>{dr(r[t],s)},n)}function In(e,t,n=le,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;xt(),Ct(n);const l=xe(t,n,e,i);return ct(),Tt(),l});return r?s.unshift(o):s.push(o),o}}const Be=e=>(t,n=le)=>(!Et||e==="sp")&&In(e,(...r)=>t(...r),n),Tl=Be("bm"),At=Be("m"),Al=Be("bu"),Sl=Be("u"),yo=Be("bum"),Ln=Be("um"),Ol=Be("sp"),Pl=Be("rtg"),Rl=Be("rtc");function Ml(e,t=le){In("ec",e,t)}const Rr="components";function Da(e,t){return vo(Rr,e,!0,t)||e}const bo=Symbol.for("v-ndc");function Ba(e){return re(e)?vo(Rr,e,!1)||e:e||bo}function vo(e,t,n=!0,r=!1){const s=fe||le;if(s){const o=s.type;if(e===Rr){const l=uc(o,!1);if(l&&(l===t||l===Ne(t)||l===xn(Ne(t))))return o}const i=es(s[e]||o[e],t)||es(s.appContext[e],t);return!i&&r?o:i}}function es(e,t){return e&&(e[t]||e[Ne(t)]||e[xn(Ne(t))])}function Ua(e,t,n,r){let s;const o=n&&n[r];if(U(e)||re(e)){s=new Array(e.length);for(let i=0,l=e.length;i<l;i++)s[i]=t(e[i],i,void 0,o&&o[i])}else if(typeof e=="number"){s=new Array(e);for(let i=0;i<e;i++)s[i]=t(i+1,i,void 0,o&&o[i])}else if(ee(e))if(e[Symbol.iterator])s=Array.from(e,(i,l)=>t(i,l,void 0,o&&o[l]));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;l<c;l++){const a=i[l];s[l]=t(e[a],a,l,o&&o[l])}}else s=[];return n&&(n[r]=s),s}function ka(e,t,n={},r,s){if(fe.isCE||fe.parent&&yt(fe.parent)&&fe.parent.isCE)return t!=="default"&&(n.name=t),se("slot",n,r&&r());let o=e[t];o&&o._c&&(o._d=!1),Mo();const i=o&&wo(o(n)),l=Io(ge,{key:n.key||i&&i.key||`_${t}`},i||(r?r():[]),i&&e._===1?64:-2);return!s&&l.scopeId&&(l.slotScopeIds=[l.scopeId+"-s"]),o&&o._c&&(o._d=!0),l}function wo(e){return e.some(t=>wn(t)?!(t.type===ve||t.type===ge&&!wo(t.children)):!0)?e:null}function Ka(e,t){const n={};for(const r in e)n[t&&/[A-Z]/.test(r)?`on:${r}`:an(r)]=e[r];return n}const rr=e=>e?$o(e)?$n(e)||e.proxy:rr(e.parent):null,It=ie(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>rr(e.parent),$root:e=>rr(e.root),$emit:e=>e.emit,$options:e=>Mr(e),$forceUpdate:e=>e.f||(e.f=()=>Pn(e.update)),$nextTick:e=>e.n||(e.n=On.bind(e.proxy)),$watch:e=>yl.bind(e)}),Kn=(e,t)=>e!==te&&!e.__isScriptSetup&&Y(e,t),Fl={get({_:e},t){const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const w=i[t];if(w!==void 0)switch(w){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(Kn(r,t))return i[t]=1,r[t];if(s!==te&&Y(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&Y(a,t))return i[t]=3,o[t];if(n!==te&&Y(n,t))return i[t]=4,n[t];sr&&(i[t]=0)}}const f=It[t];let h,g;if(f)return t==="$attrs"&&me(e,"get",t),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==te&&Y(n,t))return i[t]=4,n[t];if(g=c.config.globalProperties,Y(g,t))return g[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return Kn(s,t)?(s[t]=n,!0):r!==te&&Y(r,t)?(r[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==te&&Y(e,i)||Kn(t,i)||(l=o[0])&&Y(l,i)||Y(r,i)||Y(It,i)||Y(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Wa(){return Il().slots}function Il(){const e=Hn();return e.setupContext||(e.setupContext=Do(e))}function ts(e){return U(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let sr=!0;function Ll(e){const t=Mr(e),n=e.proxy,r=e.ctx;sr=!1,t.beforeCreate&&ns(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:g,beforeUpdate:w,updated:E,activated:S,deactivated:H,beforeDestroy:m,beforeUnmount:y,destroyed:N,unmounted:A,render:B,renderTracked:W,renderTriggered:D,errorCaptured:_,serverPrefetch:R,expose:I,inheritAttrs:V,components:M,directives:q,filters:L}=t;if(a&&Nl(a,r,null),i)for(const ne in i){const Z=i[ne];K(Z)&&(r[ne]=Z.bind(n))}if(s){const ne=s.call(n,n);ee(ne)&&(e.data=An(ne))}if(sr=!0,o)for(const ne in o){const Z=o[ne],Qe=K(Z)?Z.bind(n,n):K(Z.get)?Z.get.bind(n,n):Pe,Yt=!K(Z)&&K(Z.set)?Z.set.bind(n):Pe,Ze=ae({get:Qe,set:Yt});Object.defineProperty(r,ne,{enumerable:!0,configurable:!0,get:()=>Ze.value,set:Re=>Ze.value=Re})}if(l)for(const ne in l)Co(l[ne],r,n,ne);if(c){const ne=K(c)?c.call(n):c;Reflect.ownKeys(ne).forEach(Z=>{Ul(Z,ne[Z])})}f&&ns(f,e,"c");function X(ne,Z){U(Z)?Z.forEach(Qe=>ne(Qe.bind(n))):Z&&ne(Z.bind(n))}if(X(Tl,h),X(At,g),X(Al,w),X(Sl,E),X(Cl,S),X(El,H),X(Ml,_),X(Rl,W),X(Pl,D),X(yo,y),X(Ln,A),X(Ol,R),U(I))if(I.length){const ne=e.exposed||(e.exposed={});I.forEach(Z=>{Object.defineProperty(ne,Z,{get:()=>n[Z],set:Qe=>n[Z]=Qe})})}else e.exposed||(e.exposed={});B&&e.render===Pe&&(e.render=B),V!=null&&(e.inheritAttrs=V),M&&(e.components=M),q&&(e.directives=q)}function Nl(e,t,n=Pe){U(e)&&(e=or(e));for(const r in e){const s=e[r];let o;ee(s)?"default"in s?o=bt(s.from||r,s.default,!0):o=bt(s.from||r):o=bt(s),ce(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ns(e,t,n){xe(U(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Co(e,t,n,r){const s=r.includes(".")?ho(n,r):()=>n[r];if(re(e)){const o=t[e];K(o)&&Ye(s,o)}else if(K(e))Ye(s,e.bind(n));else if(ee(e))if(U(e))e.forEach(o=>Co(o,t,n,r));else{const o=K(e.handler)?e.handler.bind(n):t[e.handler];K(o)&&Ye(s,o,e)}}function Mr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(a=>yn(c,a,i,!0)),yn(c,t,i)),ee(t)&&o.set(t,c),c}function yn(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&yn(e,o,n,!0),s&&s.forEach(i=>yn(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Hl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Hl={data:rs,props:ss,emits:ss,methods:Rt,computed:Rt,beforeCreate:he,created:he,beforeMount:he,mounted:he,beforeUpdate:he,updated:he,beforeDestroy:he,beforeUnmount:he,destroyed:he,unmounted:he,activated:he,deactivated:he,errorCaptured:he,serverPrefetch:he,components:Rt,directives:Rt,watch:jl,provide:rs,inject:$l};function rs(e,t){return t?e?function(){return ie(K(e)?e.call(this,this):e,K(t)?t.call(this,this):t)}:t:e}function $l(e,t){return Rt(or(e),or(t))}function or(e){if(U(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function he(e,t){return e?[...new Set([].concat(e,t))]:t}function Rt(e,t){return e?ie(Object.create(null),e,t):t}function ss(e,t){return e?U(e)&&U(t)?[...new Set([...e,...t])]:ie(Object.create(null),ts(e),ts(t??{})):t}function jl(e,t){if(!e)return t;if(!t)return e;const n=ie(Object.create(null),e);for(const r in t)n[r]=he(e[r],t[r]);return n}function Eo(){return{app:null,config:{isNativeTag:ii,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Dl=0;function Bl(e,t){return function(r,s=null){K(r)||(r=ie({},r)),s!=null&&!ee(s)&&(s=null);const o=Eo(),i=new Set;let l=!1;const c=o.app={_uid:Dl++,_component:r,_props:s,_container:null,_context:o,_instance:null,version:pc,get config(){return o.config},set config(a){},use(a,...f){return i.has(a)||(a&&K(a.install)?(i.add(a),a.install(c,...f)):K(a)&&(i.add(a),a(c,...f))),c},mixin(a){return o.mixins.includes(a)||o.mixins.push(a),c},component(a,f){return f?(o.components[a]=f,c):o.components[a]},directive(a,f){return f?(o.directives[a]=f,c):o.directives[a]},mount(a,f,h){if(!l){const g=se(r,s);return g.appContext=o,f&&t?t(g,a):e(g,a,h),l=!0,c._container=a,a.__vue_app__=c,$n(g.component)||g.component.proxy}},unmount(){l&&(e(null,c._container),delete c._container.__vue_app__)},provide(a,f){return o.provides[a]=f,c},runWithContext(a){bn=c;try{return a()}finally{bn=null}}};return c}}let bn=null;function Ul(e,t){if(le){let n=le.provides;const r=le.parent&&le.parent.provides;r===n&&(n=le.provides=Object.create(r)),n[e]=t}}function bt(e,t,n=!1){const r=le||fe;if(r||bn){const s=r?r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides:bn._context.provides;if(s&&e in s)return s[e];if(arguments.length>1)return n&&K(t)?t.call(r&&r.proxy):t}}function kl(e,t,n,r=!1){const s={},o={};hn(o,Nn,1),e.propsDefaults=Object.create(null),xo(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:Ji(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function Kl(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let a=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h<f.length;h++){let g=f[h];if(Rn(e.emitsOptions,g))continue;const w=t[g];if(c)if(Y(o,g))w!==o[g]&&(o[g]=w,a=!0);else{const E=Ne(g);s[E]=ir(c,l,E,w,e,!1)}else w!==o[g]&&(o[g]=w,a=!0)}}}else{xo(e,t,s,o)&&(a=!0);let f;for(const h in l)(!t||!Y(t,h)&&((f=at(h))===h||!Y(t,f)))&&(c?n&&(n[h]!==void 0||n[f]!==void 0)&&(s[h]=ir(c,l,h,void 0,e,!0)):delete s[h]);if(o!==l)for(const h in o)(!t||!Y(t,h))&&(delete o[h],a=!0)}a&&je(e,"set","$attrs")}function xo(e,t,n,r){const[s,o]=e.propsOptions;let i=!1,l;if(t)for(let c in t){if(Mt(c))continue;const a=t[c];let f;s&&Y(s,f=Ne(c))?!o||!o.includes(f)?n[f]=a:(l||(l={}))[f]=a:Rn(e.emitsOptions,c)||(!(c in r)||a!==r[c])&&(r[c]=a,i=!0)}if(o){const c=J(n),a=l||te;for(let f=0;f<o.length;f++){const h=o[f];n[h]=ir(s,c,h,a[h],e,!Y(a,h))}}return i}function ir(e,t,n,r,s,o){const i=e[n];if(i!=null){const l=Y(i,"default");if(l&&r===void 0){const c=i.default;if(i.type!==Function&&!i.skipFactory&&K(c)){const{propsDefaults:a}=s;n in a?r=a[n]:(Ct(s),r=a[n]=c.call(null,t),ct())}else r=c}i[0]&&(o&&!l?r=!1:i[1]&&(r===""||r===at(n))&&(r=!0))}return r}function To(e,t,n=!1){const r=t.propsCache,s=r.get(e);if(s)return s;const o=e.props,i={},l=[];let c=!1;if(!K(e)){const f=h=>{c=!0;const[g,w]=To(h,t,!0);ie(i,g),w&&l.push(...w)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return ee(e)&&r.set(e,pt),pt;if(U(o))for(let f=0;f<o.length;f++){const h=Ne(o[f]);os(h)&&(i[h]=te)}else if(o)for(const f in o){const h=Ne(f);if(os(h)){const g=o[f],w=i[h]=U(g)||K(g)?{type:g}:ie({},g);if(w){const E=cs(Boolean,w.type),S=cs(String,w.type);w[0]=E>-1,w[1]=S<0||E<S,(E>-1||Y(w,"default"))&&l.push(h)}}}const a=[i,l];return ee(e)&&r.set(e,a),a}function os(e){return e[0]!=="$"}function is(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function ls(e,t){return is(e)===is(t)}function cs(e,t){return U(t)?t.findIndex(n=>ls(n,e)):K(t)&&ls(t,e)?0:-1}const Ao=e=>e[0]==="_"||e==="$stable",Fr=e=>U(e)?e.map(Ae):[Ae(e)],Wl=(e,t,n)=>{if(t._n)return t;const r=dl((...s)=>Fr(t(...s)),n);return r._c=!1,r},So=(e,t,n)=>{const r=e._ctx;for(const s in e){if(Ao(s))continue;const o=e[s];if(K(o))t[s]=Wl(s,o,r);else if(o!=null){const i=Fr(o);t[s]=()=>i}}},Oo=(e,t)=>{const n=Fr(t);e.slots.default=()=>n},Vl=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),hn(t,"_",n)):So(t,e.slots={})}else e.slots={},t&&Oo(e,t);hn(e.slots,Nn,1)},ql=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=te;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ie(s,t),!n&&l===1&&delete s._):(o=!t.$stable,So(t,s)),i=t}else t&&(Oo(e,t),i={default:1});if(o)for(const l in s)!Ao(l)&&!(l in i)&&delete s[l]};function vn(e,t,n,r,s=!1){if(U(e)){e.forEach((g,w)=>vn(g,t&&(U(t)?t[w]:t),n,r,s));return}if(yt(r)&&!s)return;const o=r.shapeFlag&4?$n(r.component)||r.component.proxy:r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===te?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(re(a)?(f[a]=null,Y(h,a)&&(h[a]=null)):ce(a)&&(a.value=null)),K(c))ze(c,l,12,[i,f]);else{const g=re(c),w=ce(c);if(g||w){const E=()=>{if(e.f){const S=g?Y(h,c)?h[c]:f[c]:c.value;s?U(S)&&dr(S,o):U(S)?S.includes(o)||S.push(o):g?(f[c]=[o],Y(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else g?(f[c]=i,Y(h,c)&&(h[c]=i)):w&&(c.value=i,e.k&&(f[e.k]=i))};i?(E.id=-1,pe(E,n)):E()}}}let ke=!1;const nn=e=>/svg/.test(e.namespaceURI)&&e.tagName!=="foreignObject",rn=e=>e.nodeType===8;function zl(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(m,y)=>{if(!y.hasChildNodes()){n(null,m,y),mn(),y._vnode=m;return}ke=!1,h(y.firstChild,m,null,null,null),mn(),y._vnode=m,ke&&console.error("Hydration completed but contains mismatches.")},h=(m,y,N,A,B,W=!1)=>{const D=rn(m)&&m.data==="[",_=()=>S(m,y,N,A,B,D),{type:R,ref:I,shapeFlag:V,patchFlag:M}=y;let q=m.nodeType;y.el=m,M===-2&&(W=!1,y.dynamicChildren=null);let L=null;switch(R){case wt:q!==3?y.children===""?(c(y.el=s(""),i(m),m),L=m):L=_():(m.data!==y.children&&(ke=!0,m.data=y.children),L=o(m));break;case ve:q!==8||D?L=_():L=o(m);break;case Nt:if(D&&(m=o(m),q=m.nodeType),q===1||q===3){L=m;const _e=!y.children.length;for(let X=0;X<y.staticCount;X++)_e&&(y.children+=L.nodeType===1?L.outerHTML:L.data),X===y.staticCount-1&&(y.anchor=L),L=o(L);return D?o(L):L}else _();break;case ge:D?L=E(m,y,N,A,B,W):L=_();break;default:if(V&1)q!==1||y.type.toLowerCase()!==m.tagName.toLowerCase()?L=_():L=g(m,y,N,A,B,W);else if(V&6){y.slotScopeIds=B;const _e=i(m);if(t(y,_e,null,N,A,nn(_e),W),L=D?H(m):o(m),L&&rn(L)&&L.data==="teleport end"&&(L=o(L)),yt(y)){let X;D?(X=se(ge),X.anchor=L?L.previousSibling:_e.lastChild):X=m.nodeType===3?Ho(""):se("div"),X.el=m,y.component.subTree=X}}else V&64?q!==8?L=_():L=y.type.hydrate(m,y,N,A,B,W,e,w):V&128&&(L=y.type.hydrate(m,y,N,A,nn(i(m)),B,W,e,h))}return I!=null&&vn(I,null,A,y),L},g=(m,y,N,A,B,W)=>{W=W||!!y.dynamicChildren;const{type:D,props:_,patchFlag:R,shapeFlag:I,dirs:V}=y,M=D==="input"&&V||D==="option";if(M||R!==-1){if(V&&Fe(y,null,N,"created"),_)if(M||!W||R&48)for(const L in _)(M&&L.endsWith("value")||Vt(L)&&!Mt(L))&&r(m,L,null,_[L],!1,void 0,N);else _.onClick&&r(m,"onClick",null,_.onClick,!1,void 0,N);let q;if((q=_&&_.onVnodeBeforeMount)&&Ce(q,N,y),V&&Fe(y,null,N,"beforeMount"),((q=_&&_.onVnodeMounted)||V)&&fo(()=>{q&&Ce(q,N,y),V&&Fe(y,null,N,"mounted")},A),I&16&&!(_&&(_.innerHTML||_.textContent))){let L=w(m.firstChild,y,m,N,A,B,W);for(;L;){ke=!0;const _e=L;L=L.nextSibling,l(_e)}}else I&8&&m.textContent!==y.children&&(ke=!0,m.textContent=y.children)}return m.nextSibling},w=(m,y,N,A,B,W,D)=>{D=D||!!y.dynamicChildren;const _=y.children,R=_.length;for(let I=0;I<R;I++){const V=D?_[I]:_[I]=Ae(_[I]);if(m)m=h(m,V,A,B,W,D);else{if(V.type===wt&&!V.children)continue;ke=!0,n(null,V,N,null,A,B,nn(N),W)}}return m},E=(m,y,N,A,B,W)=>{const{slotScopeIds:D}=y;D&&(B=B?B.concat(D):D);const _=i(m),R=w(o(m),y,_,N,A,B,W);return R&&rn(R)&&R.data==="]"?o(y.anchor=R):(ke=!0,c(y.anchor=a("]"),_,R),R)},S=(m,y,N,A,B,W)=>{if(ke=!0,y.el=null,W){const R=H(m);for(;;){const I=o(m);if(I&&I!==R)l(I);else break}}const D=o(m),_=i(m);return l(m),n(null,y,_,D,N,A,nn(_),B),D},H=m=>{let y=0;for(;m;)if(m=o(m),m&&rn(m)&&(m.data==="["&&y++,m.data==="]")){if(y===0)return o(m);y--}return m};return[f,h]}const pe=fo;function Yl(e){return Po(e)}function Jl(e){return Po(e,zl)}function Po(e,t){const n=Xn();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:g,setScopeId:w=Pe,insertStaticContent:E}=e,S=(u,d,p,v=null,b=null,T=null,P=!1,x=null,O=!!d.dynamicChildren)=>{if(u===d)return;u&&!rt(u,d)&&(v=Jt(u),Re(u,b,T,!0),u=null),d.patchFlag===-2&&(O=!1,d.dynamicChildren=null);const{type:C,ref:$,shapeFlag:F}=d;switch(C){case wt:H(u,d,p,v);break;case ve:m(u,d,p,v);break;case Nt:u==null&&y(d,p,v,P);break;case ge:M(u,d,p,v,b,T,P,x,O);break;default:F&1?B(u,d,p,v,b,T,P,x,O):F&6?q(u,d,p,v,b,T,P,x,O):(F&64||F&128)&&C.process(u,d,p,v,b,T,P,x,O,ut)}$!=null&&b&&vn($,u&&u.ref,T,d||u,!d)},H=(u,d,p,v)=>{if(u==null)r(d.el=l(d.children),p,v);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},m=(u,d,p,v)=>{u==null?r(d.el=c(d.children||""),p,v):d.el=u.el},y=(u,d,p,v)=>{[u.el,u.anchor]=E(u.children,d,p,v,u.el,u.anchor)},N=({el:u,anchor:d},p,v)=>{let b;for(;u&&u!==d;)b=g(u),r(u,p,v),u=b;r(d,p,v)},A=({el:u,anchor:d})=>{let p;for(;u&&u!==d;)p=g(u),s(u),u=p;s(d)},B=(u,d,p,v,b,T,P,x,O)=>{P=P||d.type==="svg",u==null?W(d,p,v,b,T,P,x,O):R(u,d,b,T,P,x,O)},W=(u,d,p,v,b,T,P,x)=>{let O,C;const{type:$,props:F,shapeFlag:j,transition:k,dirs:z}=u;if(O=u.el=i(u.type,T,F&&F.is,F),j&8?f(O,u.children):j&16&&_(u.children,O,null,v,b,T&&$!=="foreignObject",P,x),z&&Fe(u,null,v,"created"),D(O,u,u.scopeId,P,v),F){for(const Q in F)Q!=="value"&&!Mt(Q)&&o(O,Q,null,F[Q],T,u.children,v,b,He);"value"in F&&o(O,"value",null,F.value),(C=F.onVnodeBeforeMount)&&Ce(C,v,u)}z&&Fe(u,null,v,"beforeMount");const G=(!b||b&&!b.pendingBranch)&&k&&!k.persisted;G&&k.beforeEnter(O),r(O,d,p),((C=F&&F.onVnodeMounted)||G||z)&&pe(()=>{C&&Ce(C,v,u),G&&k.enter(O),z&&Fe(u,null,v,"mounted")},b)},D=(u,d,p,v,b)=>{if(p&&w(u,p),v)for(let T=0;T<v.length;T++)w(u,v[T]);if(b){let T=b.subTree;if(d===T){const P=b.vnode;D(u,P,P.scopeId,P.slotScopeIds,b.parent)}}},_=(u,d,p,v,b,T,P,x,O=0)=>{for(let C=O;C<u.length;C++){const $=u[C]=x?Ve(u[C]):Ae(u[C]);S(null,$,d,p,v,b,T,P,x)}},R=(u,d,p,v,b,T,P)=>{const x=d.el=u.el;let{patchFlag:O,dynamicChildren:C,dirs:$}=d;O|=u.patchFlag&16;const F=u.props||te,j=d.props||te;let k;p&&Ge(p,!1),(k=j.onVnodeBeforeUpdate)&&Ce(k,p,d,u),$&&Fe(d,u,p,"beforeUpdate"),p&&Ge(p,!0);const z=b&&d.type!=="foreignObject";if(C?I(u.dynamicChildren,C,x,p,v,z,T):P||Z(u,d,x,null,p,v,z,T,!1),O>0){if(O&16)V(x,d,F,j,p,v,b);else if(O&2&&F.class!==j.class&&o(x,"class",null,j.class,b),O&4&&o(x,"style",F.style,j.style,b),O&8){const G=d.dynamicProps;for(let Q=0;Q<G.length;Q++){const oe=G[Q],Te=F[oe],ft=j[oe];(ft!==Te||oe==="value")&&o(x,oe,Te,ft,b,u.children,p,v,He)}}O&1&&u.children!==d.children&&f(x,d.children)}else!P&&C==null&&V(x,d,F,j,p,v,b);((k=j.onVnodeUpdated)||$)&&pe(()=>{k&&Ce(k,p,d,u),$&&Fe(d,u,p,"updated")},v)},I=(u,d,p,v,b,T,P)=>{for(let x=0;x<d.length;x++){const O=u[x],C=d[x],$=O.el&&(O.type===ge||!rt(O,C)||O.shapeFlag&70)?h(O.el):p;S(O,C,$,null,v,b,T,P,!0)}},V=(u,d,p,v,b,T,P)=>{if(p!==v){if(p!==te)for(const x in p)!Mt(x)&&!(x in v)&&o(u,x,p[x],null,P,d.children,b,T,He);for(const x in v){if(Mt(x))continue;const O=v[x],C=p[x];O!==C&&x!=="value"&&o(u,x,C,O,P,d.children,b,T,He)}"value"in v&&o(u,"value",p.value,v.value)}},M=(u,d,p,v,b,T,P,x,O)=>{const C=d.el=u?u.el:l(""),$=d.anchor=u?u.anchor:l("");let{patchFlag:F,dynamicChildren:j,slotScopeIds:k}=d;k&&(x=x?x.concat(k):k),u==null?(r(C,p,v),r($,p,v),_(d.children,p,$,b,T,P,x,O)):F>0&&F&64&&j&&u.dynamicChildren?(I(u.dynamicChildren,j,p,b,T,P,x),(d.key!=null||b&&d===b.subTree)&&Ir(u,d,!0)):Z(u,d,p,$,b,T,P,x,O)},q=(u,d,p,v,b,T,P,x,O)=>{d.slotScopeIds=x,u==null?d.shapeFlag&512?b.ctx.activate(d,p,v,P,O):L(d,p,v,b,T,P,O):_e(u,d,O)},L=(u,d,p,v,b,T,P)=>{const x=u.component=ic(u,v,b);if(zt(u)&&(x.ctx.renderer=ut),lc(x),x.asyncDep){if(b&&b.registerDep(x,X),!u.el){const O=x.subTree=se(ve);m(null,O,d,p)}return}X(x,u,d,p,b,T,P)},_e=(u,d,p)=>{const v=d.component=u.component;if(gl(u,d,p))if(v.asyncDep&&!v.asyncResolved){ne(v,d,p);return}else v.next=d,cl(v.update),v.update();else d.el=u.el,v.vnode=d},X=(u,d,p,v,b,T,P)=>{const x=()=>{if(u.isMounted){let{next:$,bu:F,u:j,parent:k,vnode:z}=u,G=$,Q;Ge(u,!1),$?($.el=z.el,ne(u,$,P)):$=z,F&&un(F),(Q=$.props&&$.props.onVnodeBeforeUpdate)&&Ce(Q,k,$,z),Ge(u,!0);const oe=Bn(u),Te=u.subTree;u.subTree=oe,S(Te,oe,h(Te.el),Jt(Te),u,b,T),$.el=oe.el,G===null&&ml(u,oe.el),j&&pe(j,b),(Q=$.props&&$.props.onVnodeUpdated)&&pe(()=>Ce(Q,k,$,z),b)}else{let $;const{el:F,props:j}=d,{bm:k,m:z,parent:G}=u,Q=yt(d);if(Ge(u,!1),k&&un(k),!Q&&($=j&&j.onVnodeBeforeMount)&&Ce($,G,d),Ge(u,!0),F&&Dn){const oe=()=>{u.subTree=Bn(u),Dn(F,u.subTree,u,b,null)};Q?d.type.__asyncLoader().then(()=>!u.isUnmounted&&oe()):oe()}else{const oe=u.subTree=Bn(u);S(null,oe,p,v,u,b,T),d.el=oe.el}if(z&&pe(z,b),!Q&&($=j&&j.onVnodeMounted)){const oe=d;pe(()=>Ce($,G,oe),b)}(d.shapeFlag&256||G&&yt(G.vnode)&&G.vnode.shapeFlag&256)&&u.a&&pe(u.a,b),u.isMounted=!0,d=p=v=null}},O=u.effect=new yr(x,()=>Pn(C),u.scope),C=u.update=()=>O.run();C.id=u.uid,Ge(u,!0),C()},ne=(u,d,p)=>{d.component=u;const v=u.vnode.props;u.vnode=d,u.next=null,Kl(u,d.props,v,p),ql(u,d.children,p),xt(),Qr(),Tt()},Z=(u,d,p,v,b,T,P,x,O=!1)=>{const C=u&&u.children,$=u?u.shapeFlag:0,F=d.children,{patchFlag:j,shapeFlag:k}=d;if(j>0){if(j&128){Yt(C,F,p,v,b,T,P,x,O);return}else if(j&256){Qe(C,F,p,v,b,T,P,x,O);return}}k&8?($&16&&He(C,b,T),F!==C&&f(p,F)):$&16?k&16?Yt(C,F,p,v,b,T,P,x,O):He(C,b,T,!0):($&8&&f(p,""),k&16&&_(F,p,v,b,T,P,x,O))},Qe=(u,d,p,v,b,T,P,x,O)=>{u=u||pt,d=d||pt;const C=u.length,$=d.length,F=Math.min(C,$);let j;for(j=0;j<F;j++){const k=d[j]=O?Ve(d[j]):Ae(d[j]);S(u[j],k,p,null,b,T,P,x,O)}C>$?He(u,b,T,!0,!1,F):_(d,p,v,b,T,P,x,O,F)},Yt=(u,d,p,v,b,T,P,x,O)=>{let C=0;const $=d.length;let F=u.length-1,j=$-1;for(;C<=F&&C<=j;){const k=u[C],z=d[C]=O?Ve(d[C]):Ae(d[C]);if(rt(k,z))S(k,z,p,null,b,T,P,x,O);else break;C++}for(;C<=F&&C<=j;){const k=u[F],z=d[j]=O?Ve(d[j]):Ae(d[j]);if(rt(k,z))S(k,z,p,null,b,T,P,x,O);else break;F--,j--}if(C>F){if(C<=j){const k=j+1,z=k<$?d[k].el:v;for(;C<=j;)S(null,d[C]=O?Ve(d[C]):Ae(d[C]),p,z,b,T,P,x,O),C++}}else if(C>j)for(;C<=F;)Re(u[C],b,T,!0),C++;else{const k=C,z=C,G=new Map;for(C=z;C<=j;C++){const ye=d[C]=O?Ve(d[C]):Ae(d[C]);ye.key!=null&&G.set(ye.key,C)}let Q,oe=0;const Te=j-z+1;let ft=!1,Br=0;const St=new Array(Te);for(C=0;C<Te;C++)St[C]=0;for(C=k;C<=F;C++){const ye=u[C];if(oe>=Te){Re(ye,b,T,!0);continue}let Me;if(ye.key!=null)Me=G.get(ye.key);else for(Q=z;Q<=j;Q++)if(St[Q-z]===0&&rt(ye,d[Q])){Me=Q;break}Me===void 0?Re(ye,b,T,!0):(St[Me-z]=C+1,Me>=Br?Br=Me:ft=!0,S(ye,d[Me],p,null,b,T,P,x,O),oe++)}const Ur=ft?Xl(St):pt;for(Q=Ur.length-1,C=Te-1;C>=0;C--){const ye=z+C,Me=d[ye],kr=ye+1<$?d[ye+1].el:v;St[C]===0?S(null,Me,p,kr,b,T,P,x,O):ft&&(Q<0||C!==Ur[Q]?Ze(Me,p,kr,2):Q--)}}},Ze=(u,d,p,v,b=null)=>{const{el:T,type:P,transition:x,children:O,shapeFlag:C}=u;if(C&6){Ze(u.component.subTree,d,p,v);return}if(C&128){u.suspense.move(d,p,v);return}if(C&64){P.move(u,d,p,ut);return}if(P===ge){r(T,d,p);for(let F=0;F<O.length;F++)Ze(O[F],d,p,v);r(u.anchor,d,p);return}if(P===Nt){N(u,d,p);return}if(v!==2&&C&1&&x)if(v===0)x.beforeEnter(T),r(T,d,p),pe(()=>x.enter(T),b);else{const{leave:F,delayLeave:j,afterLeave:k}=x,z=()=>r(T,d,p),G=()=>{F(T,()=>{z(),k&&k()})};j?j(T,z,G):G()}else r(T,d,p)},Re=(u,d,p,v=!1,b=!1)=>{const{type:T,props:P,ref:x,children:O,dynamicChildren:C,shapeFlag:$,patchFlag:F,dirs:j}=u;if(x!=null&&vn(x,null,p,u,!0),$&256){d.ctx.deactivate(u);return}const k=$&1&&j,z=!yt(u);let G;if(z&&(G=P&&P.onVnodeBeforeUnmount)&&Ce(G,d,u),$&6)oi(u.component,p,v);else{if($&128){u.suspense.unmount(p,v);return}k&&Fe(u,null,d,"beforeUnmount"),$&64?u.type.remove(u,d,p,b,ut,v):C&&(T!==ge||F>0&&F&64)?He(C,d,p,!1,!0):(T===ge&&F&384||!b&&$&16)&&He(O,d,p),v&&jr(u)}(z&&(G=P&&P.onVnodeUnmounted)||k)&&pe(()=>{G&&Ce(G,d,u),k&&Fe(u,null,d,"unmounted")},p)},jr=u=>{const{type:d,el:p,anchor:v,transition:b}=u;if(d===ge){si(p,v);return}if(d===Nt){A(u);return}const T=()=>{s(p),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:P,delayLeave:x}=b,O=()=>P(p,T);x?x(u.el,T,O):O()}else T()},si=(u,d)=>{let p;for(;u!==d;)p=g(u),s(u),u=p;s(d)},oi=(u,d,p)=>{const{bum:v,scope:b,update:T,subTree:P,um:x}=u;v&&un(v),b.stop(),T&&(T.active=!1,Re(P,u,d,p)),x&&pe(x,d),pe(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},He=(u,d,p,v=!1,b=!1,T=0)=>{for(let P=T;P<u.length;P++)Re(u[P],d,p,v,b)},Jt=u=>u.shapeFlag&6?Jt(u.component.subTree):u.shapeFlag&128?u.suspense.next():g(u.anchor||u.el),Dr=(u,d,p)=>{u==null?d._vnode&&Re(d._vnode,null,null,!0):S(d._vnode||null,u,d,null,null,null,p),Qr(),mn(),d._vnode=u},ut={p:S,um:Re,m:Ze,r:jr,mt:L,mc:_,pc:Z,pbc:I,n:Jt,o:e};let jn,Dn;return t&&([jn,Dn]=t(ut)),{render:Dr,hydrate:jn,createApp:Bl(Dr,jn)}}function Ge({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Ir(e,t,n=!1){const r=e.children,s=t.children;if(U(r)&&U(s))for(let o=0;o<r.length;o++){const i=r[o];let l=s[o];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=s[o]=Ve(s[o]),l.el=i.el),n||Ir(i,l)),l.type===wt&&(l.el=i.el)}}function Xl(e){const t=e.slice(),n=[0];let r,s,o,i,l;const c=e.length;for(r=0;r<c;r++){const a=e[r];if(a!==0){if(s=n[n.length-1],e[s]<a){t[r]=s,n.push(r);continue}for(o=0,i=n.length-1;o<i;)l=o+i>>1,e[n[l]]<a?o=l+1:i=l;a<e[n[o]]&&(o>0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}const Ql=e=>e.__isTeleport,Lt=e=>e&&(e.disabled||e.disabled===""),as=e=>typeof SVGElement<"u"&&e instanceof SVGElement,lr=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},Zl={__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:g,o:{insert:w,querySelector:E,createText:S,createComment:H}}=a,m=Lt(t.props);let{shapeFlag:y,children:N,dynamicChildren:A}=t;if(e==null){const B=t.el=S(""),W=t.anchor=S("");w(B,n,r),w(W,n,r);const D=t.target=lr(t.props,E),_=t.targetAnchor=S("");D&&(w(_,D),i=i||as(D));const R=(I,V)=>{y&16&&f(N,I,V,s,o,i,l,c)};m?R(n,W):D&&R(D,_)}else{t.el=e.el;const B=t.anchor=e.anchor,W=t.target=e.target,D=t.targetAnchor=e.targetAnchor,_=Lt(e.props),R=_?n:W,I=_?B:D;if(i=i||as(W),A?(g(e.dynamicChildren,A,R,s,o,i,l),Ir(e,t,!0)):c||h(e,t,R,I,s,o,i,l,!1),m)_||sn(t,n,B,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const V=t.target=lr(t.props,E);V&&sn(t,V,null,a,0)}else _&&sn(t,W,D,a,1)}Ro(t)},remove(e,t,n,r,{um:s,o:{remove:o}},i){const{shapeFlag:l,children:c,anchor:a,targetAnchor:f,target:h,props:g}=e;if(h&&o(f),(i||!Lt(g))&&(o(a),l&16))for(let w=0;w<c.length;w++){const E=c[w];s(E,t,n,!0,!!E.dynamicChildren)}},move:sn,hydrate:Gl};function sn(e,t,n,{o:{insert:r},m:s},o=2){o===0&&r(e.targetAnchor,t,n);const{el:i,anchor:l,shapeFlag:c,children:a,props:f}=e,h=o===2;if(h&&r(i,t,n),(!h||Lt(f))&&c&16)for(let g=0;g<a.length;g++)s(a[g],t,n,2);h&&r(l,t,n)}function Gl(e,t,n,r,s,o,{o:{nextSibling:i,parentNode:l,querySelector:c}},a){const f=t.target=lr(t.props,c);if(f){const h=f._lpa||f.firstChild;if(t.shapeFlag&16)if(Lt(t.props))t.anchor=a(i(e),t,l(e),n,r,s,o),t.targetAnchor=h;else{t.anchor=i(e);let g=h;for(;g;)if(g=i(g),g&&g.nodeType===8&&g.data==="teleport anchor"){t.targetAnchor=g,f._lpa=t.targetAnchor&&i(t.targetAnchor);break}a(h,t,f,n,r,s,o)}Ro(t)}return t.anchor&&i(t.anchor)}const Va=Zl;function Ro(e){const t=e.ctx;if(t&&t.ut){let n=e.children[0].el;for(;n!==e.targetAnchor;)n.nodeType===1&&n.setAttribute("data-v-owner",t.uid),n=n.nextSibling;t.ut()}}const ge=Symbol.for("v-fgt"),wt=Symbol.for("v-txt"),ve=Symbol.for("v-cmt"),Nt=Symbol.for("v-stc"),Ht=[];let Oe=null;function Mo(e=!1){Ht.push(Oe=e?null:[])}function ec(){Ht.pop(),Oe=Ht[Ht.length-1]||null}let kt=1;function us(e){kt+=e}function Fo(e){return e.dynamicChildren=kt>0?Oe||pt:null,ec(),kt>0&&Oe&&Oe.push(e),e}function qa(e,t,n,r,s,o){return Fo(No(e,t,n,r,s,o,!0))}function Io(e,t,n,r,s){return Fo(se(e,t,n,r,s,!0))}function wn(e){return e?e.__v_isVNode===!0:!1}function rt(e,t){return e.type===t.type&&e.key===t.key}const Nn="__vInternal",Lo=({key:e})=>e??null,fn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||ce(e)||K(e)?{i:fe,r:e,k:t,f:!!n}:e:null);function No(e,t=null,n=null,r=0,s=null,o=e===ge?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Lo(t),ref:t&&fn(t),scopeId:Mn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:fe};return l?(Lr(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),kt>0&&!i&&Oe&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Oe.push(c),c}const se=tc;function tc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===bo)&&(e=ve),wn(e)){const l=Xe(e,t,!0);return n&&Lr(l,n),kt>0&&!o&&Oe&&(l.shapeFlag&6?Oe[Oe.indexOf(e)]=l:Oe.push(l)),l.patchFlag|=-2,l}if(fc(e)&&(e=e.__vccOpts),t){t=nc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=mr(l)),ee(c)&&(ro(c)&&!U(c)&&(c=ie({},c)),t.style=gr(c))}const i=re(e)?1:_l(e)?128:Ql(e)?64:ee(e)?4:K(e)?2:0;return No(e,t,n,r,s,i,o,!0)}function nc(e){return e?ro(e)||Nn in e?ie({},e):e:null}function Xe(e,t,n=!1){const{props:r,ref:s,patchFlag:o,children:i}=e,l=t?rc(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Lo(l),ref:t&&t.ref?n&&s?U(s)?s.concat(fn(t)):[s,fn(t)]:fn(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ge?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Xe(e.ssContent),ssFallback:e.ssFallback&&Xe(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function Ho(e=" ",t=0){return se(wt,null,e,t)}function za(e,t){const n=se(Nt,null,e);return n.staticCount=t,n}function Ya(e="",t=!1){return t?(Mo(),Io(ve,null,e)):se(ve,null,e)}function Ae(e){return e==null||typeof e=="boolean"?se(ve):U(e)?se(ge,null,e.slice()):typeof e=="object"?Ve(e):se(wt,null,String(e))}function Ve(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Xe(e)}function Lr(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(U(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Lr(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!(Nn in t)?t._ctx=fe:s===3&&fe&&(fe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else K(t)?(t={default:t,_ctx:fe},n=32):(t=String(t),r&64?(n=16,t=[Ho(t)]):n=8);e.children=t,e.shapeFlag|=n}function rc(...e){const t={};for(let n=0;n<e.length;n++){const r=e[n];for(const s in r)if(s==="class")t.class!==r.class&&(t.class=mr([t.class,r.class]));else if(s==="style")t.style=gr([t.style,r.style]);else if(Vt(s)){const o=t[s],i=r[s];i&&o!==i&&!(U(o)&&o.includes(i))&&(t[s]=o?[].concat(o,i):i)}else s!==""&&(t[s]=r[s])}return t}function Ce(e,t,n,r=null){xe(e,t,7,[n,r])}const sc=Eo();let oc=0;function ic(e,t,n){const r=e.type,s=(t?t.appContext:e.appContext)||sc,o={uid:oc++,vnode:e,type:r,parent:t,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,scope:new bi(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(s.provides),accessCache:null,renderCache:[],components:null,directives:null,propsOptions:To(r,s),emitsOptions:uo(r,s),emit:null,emitted:null,propsDefaults:te,inheritAttrs:r.inheritAttrs,ctx:te,data:te,props:te,attrs:te,slots:te,refs:te,setupState:te,setupContext:null,attrsProxy:null,slotsProxy:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=t?t.root:o,o.emit=fl.bind(null,o),e.ce&&e.ce(o),o}let le=null;const Hn=()=>le||fe;let Nr,dt,fs="__VUE_INSTANCE_SETTERS__";(dt=Xn()[fs])||(dt=Xn()[fs]=[]),dt.push(e=>le=e),Nr=e=>{dt.length>1?dt.forEach(t=>t(e)):dt[0](e)};const Ct=e=>{Nr(e),e.scope.on()},ct=()=>{le&&le.scope.off(),Nr(null)};function $o(e){return e.vnode.shapeFlag&4}let Et=!1;function lc(e,t=!1){Et=t;const{props:n,children:r}=e.vnode,s=$o(e);kl(e,n,s,t),Vl(e,r);const o=s?cc(e,t):void 0;return Et=!1,o}function cc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=Ft(new Proxy(e.ctx,Fl));const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?Do(e):null;Ct(e),xt();const o=ze(r,e,0,[e.props,s]);if(Tt(),ct(),Us(o)){if(o.then(ct,ct),t)return o.then(i=>{ds(e,i,t)}).catch(i=>{qt(i,e,0)});e.asyncDep=o}else ds(e,o,t)}else jo(e,t)}function ds(e,t,n){K(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ee(t)&&(e.setupState=io(t)),jo(e,n)}let hs;function jo(e,t,n){const r=e.type;if(!e.render){if(!t&&hs&&!r.render){const s=r.template||Mr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=ie(ie({isCustomElement:o,delimiters:l},i),c);r.render=hs(s,a)}}e.render=r.render||Pe}Ct(e),xt(),Ll(e),Tt(),ct()}function ac(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,n){return me(e,"get","$attrs"),t[n]}}))}function Do(e){const t=n=>{e.exposed=n||{}};return{get attrs(){return ac(e)},slots:e.slots,emit:e.emit,expose:t}}function $n(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(io(Ft(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in It)return It[n](e)},has(t,n){return n in t||n in It}}))}function uc(e,t=!0){return K(e)?e.displayName||e.name:e.name||t&&e.__name}function fc(e){return K(e)&&"__vccOpts"in e}const ae=(e,t)=>ol(e,t,Et);function cr(e,t,n){const r=arguments.length;return r===2?ee(t)&&!U(t)?wn(t)?se(e,null,[t]):se(e,t):se(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&wn(n)&&(n=[n]),se(e,t,n))}const dc=Symbol.for("v-scx"),hc=()=>bt(dc),pc="3.3.4",gc="http://www.w3.org/2000/svg",st=typeof document<"u"?document:null,ps=st&&st.createElement("template"),mc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t?st.createElementNS(gc,e):st.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{ps.innerHTML=r?`<svg>${e}</svg>`:e;const l=ps.content;if(r){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}};function _c(e,t,n){const r=e._vtc;r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}function yc(e,t,n){const r=e.style,s=re(n);if(n&&!s){if(t&&!re(t))for(const o in t)n[o]==null&&ar(r,o,"");for(const o in n)ar(r,o,n[o])}else{const o=r.display;s?t!==n&&(r.cssText=n):t&&e.removeAttribute("style"),"_vod"in e&&(r.display=o)}}const gs=/\s*!important$/;function ar(e,t,n){if(U(n))n.forEach(r=>ar(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=bc(e,t);gs.test(n)?e.setProperty(at(r),n.replace(gs,""),"important"):e[r]=n}}const ms=["Webkit","Moz","ms"],Wn={};function bc(e,t){const n=Wn[t];if(n)return n;let r=Ne(t);if(r!=="filter"&&r in e)return Wn[t]=r;r=xn(r);for(let s=0;s<ms.length;s++){const o=ms[s]+r;if(o in e)return Wn[t]=o}return t}const _s="http://www.w3.org/1999/xlink";function vc(e,t,n,r,s){if(r&&t.startsWith("xlink:"))n==null?e.removeAttributeNS(_s,t.slice(6,t.length)):e.setAttributeNS(_s,t,n);else{const o=yi(t);n==null||o&&!Ws(n)?e.removeAttribute(t):e.setAttribute(t,o?"":n)}}function wc(e,t,n,r,s,o,i){if(t==="innerHTML"||t==="textContent"){r&&i(r,s,o),e[t]=n??"";return}const l=e.tagName;if(t==="value"&&l!=="PROGRESS"&&!l.includes("-")){e._value=n;const a=l==="OPTION"?e.getAttribute("value"):e.value,f=n??"";a!==f&&(e.value=f),n==null&&e.removeAttribute(t);return}let c=!1;if(n===""||n==null){const a=typeof e[t];a==="boolean"?n=Ws(n):n==null&&a==="string"?(n="",c=!0):a==="number"&&(n=0,c=!0)}try{e[t]=n}catch{}c&&e.removeAttribute(t)}function ht(e,t,n,r){e.addEventListener(t,n,r)}function Cc(e,t,n,r){e.removeEventListener(t,n,r)}function Ec(e,t,n,r,s=null){const o=e._vei||(e._vei={}),i=o[t];if(r&&i)i.value=r;else{const[l,c]=xc(t);if(r){const a=o[t]=Sc(r,s);ht(e,l,a,c)}else i&&(Cc(e,l,i,c),o[t]=void 0)}}const ys=/(?:Once|Passive|Capture)$/;function xc(e){let t;if(ys.test(e)){t={};let r;for(;r=e.match(ys);)e=e.slice(0,e.length-r[0].length),t[r[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):at(e.slice(2)),t]}let Vn=0;const Tc=Promise.resolve(),Ac=()=>Vn||(Tc.then(()=>Vn=0),Vn=Date.now());function Sc(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;xe(Oc(r,n.value),t,5,[r])};return n.value=e,n.attached=Ac(),n}function Oc(e,t){if(U(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const bs=/^on[a-z]/,Pc=(e,t,n,r,s=!1,o,i,l,c)=>{t==="class"?_c(e,r,s):t==="style"?yc(e,n,r):Vt(t)?fr(t)||Ec(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Rc(e,t,r,s))?wc(e,t,r,o,i,l,c):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),vc(e,t,r,s))};function Rc(e,t,n,r){return r?!!(t==="innerHTML"||t==="textContent"||t in e&&bs.test(t)&&K(n)):t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA"||bs.test(t)&&re(n)?!1:t in e}const Ke="transition",Ot="animation",Bo=(e,{slots:t})=>cr(wl,Mc(e),t);Bo.displayName="Transition";const Uo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Bo.props=ie({},po,Uo);const et=(e,t=[])=>{U(e)?e.forEach(n=>n(...t)):e&&e(...t)},vs=e=>e?U(e)?e.some(t=>t.length>1):e.length>1:!1;function Mc(e){const t={};for(const M in e)M in Uo||(t[M]=e[M]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:g=`${n}-leave-active`,leaveToClass:w=`${n}-leave-to`}=e,E=Fc(s),S=E&&E[0],H=E&&E[1],{onBeforeEnter:m,onEnter:y,onEnterCancelled:N,onLeave:A,onLeaveCancelled:B,onBeforeAppear:W=m,onAppear:D=y,onAppearCancelled:_=N}=t,R=(M,q,L)=>{tt(M,q?f:l),tt(M,q?a:i),L&&L()},I=(M,q)=>{M._isLeaving=!1,tt(M,h),tt(M,w),tt(M,g),q&&q()},V=M=>(q,L)=>{const _e=M?D:y,X=()=>R(q,M,L);et(_e,[q,X]),ws(()=>{tt(q,M?c:o),We(q,M?f:l),vs(_e)||Cs(q,r,S,X)})};return ie(t,{onBeforeEnter(M){et(m,[M]),We(M,o),We(M,i)},onBeforeAppear(M){et(W,[M]),We(M,c),We(M,a)},onEnter:V(!1),onAppear:V(!0),onLeave(M,q){M._isLeaving=!0;const L=()=>I(M,q);We(M,h),Nc(),We(M,g),ws(()=>{M._isLeaving&&(tt(M,h),We(M,w),vs(A)||Cs(M,r,H,L))}),et(A,[M,L])},onEnterCancelled(M){R(M,!1),et(N,[M])},onAppearCancelled(M){R(M,!0),et(_,[M])},onLeaveCancelled(M){I(M),et(B,[M])}})}function Fc(e){if(e==null)return null;if(ee(e))return[qn(e.enter),qn(e.leave)];{const t=qn(e);return[t,t]}}function qn(e){return di(e)}function We(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e._vtc||(e._vtc=new Set)).add(t)}function tt(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const{_vtc:n}=e;n&&(n.delete(t),n.size||(e._vtc=void 0))}function ws(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Ic=0;function Cs(e,t,n,r){const s=e._endId=++Ic,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Lc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,g),o()},g=w=>{w.target===e&&++f>=c&&h()};setTimeout(()=>{f<c&&h()},l+1),e.addEventListener(a,g)}function Lc(e,t){const n=window.getComputedStyle(e),r=E=>(n[E]||"").split(", "),s=r(`${Ke}Delay`),o=r(`${Ke}Duration`),i=Es(s,o),l=r(`${Ot}Delay`),c=r(`${Ot}Duration`),a=Es(l,c);let f=null,h=0,g=0;t===Ke?i>0&&(f=Ke,h=i,g=o.length):t===Ot?a>0&&(f=Ot,h=a,g=c.length):(h=Math.max(i,a),f=h>0?i>a?Ke:Ot:null,g=f?f===Ke?o.length:c.length:0);const w=f===Ke&&/\b(transform|all)(,|$)/.test(r(`${Ke}Property`).toString());return{type:f,timeout:h,propCount:g,hasTransform:w}}function Es(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,r)=>xs(n)+xs(e[r])))}function xs(e){return Number(e.slice(0,-1).replace(",","."))*1e3}function Nc(){return document.body.offsetHeight}const Ts=e=>{const t=e.props["onUpdate:modelValue"]||!1;return U(t)?n=>un(t,n):t};function Hc(e){e.target.composing=!0}function As(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Ja={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e._assign=Ts(s);const o=r||s.props&&s.props.type==="number";ht(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=Jn(l)),e._assign(l)}),n&&ht(e,"change",()=>{e.value=e.value.trim()}),t||(ht(e,"compositionstart",Hc),ht(e,"compositionend",As),ht(e,"change",As))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:s}},o){if(e._assign=Ts(o),e.composing||document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===t||(s||e.type==="number")&&Jn(e.value)===t))return;const i=t??"";e.value!==i&&(e.value=i)}},$c=["ctrl","shift","alt","meta"],jc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>$c.some(n=>e[`${n}Key`]&&!t.includes(n))},Xa=(e,t)=>(n,...r)=>{for(let s=0;s<t.length;s++){const o=jc[t[s]];if(o&&o(n,t))return}return e(n,...r)},Dc={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Qa=(e,t)=>n=>{if(!("key"in n))return;const r=at(n.key);if(t.some(s=>s===r||Dc[s]===r))return e(n)},ko=ie({patchProp:Pc},mc);let $t,Ss=!1;function Bc(){return $t||($t=Yl(ko))}function Uc(){return $t=Ss?$t:Jl(ko),Ss=!0,$t}const Za=(...e)=>{const t=Bc().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Ko(r);if(!s)return;const o=t._component;!K(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,s instanceof SVGElement);return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},Ga=(...e)=>{const t=Uc().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=Ko(r);if(s)return n(s,!0,s instanceof SVGElement)},t};function Ko(e){return re(e)?document.querySelector(e):e}const eu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},kc="modulepreload",Kc=function(e){return"/zx/"+e},Os={},tu=function(t,n,r){if(!n||n.length===0)return t();const s=document.getElementsByTagName("link");return Promise.all(n.map(o=>{if(o=Kc(o),o in Os)return;Os[o]=!0;const i=o.endsWith(".css"),l=i?'[rel="stylesheet"]':"";if(!!r)for(let f=s.length-1;f>=0;f--){const h=s[f];if(h.href===o&&(!i||h.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${o}"]${l}`))return;const a=document.createElement("link");if(a.rel=i?"stylesheet":kc,i||(a.as="script",a.crossOrigin=""),a.href=o,document.head.appendChild(a),i)return new Promise((f,h)=>{a.addEventListener("load",f),a.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${o}`)))})})).then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},Wc=window.__VP_SITE_DATA__;function Hr(e){return qs()?(wi(e),!0):!1}function Le(e){return typeof e=="function"?e():oo(e)}const Wo=typeof window<"u"&&typeof document<"u",Vc=Object.prototype.toString,qc=e=>Vc.call(e)==="[object Object]",Kt=()=>{},Ps=zc();function zc(){var e;return Wo&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent)}function Yc(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const Vo=e=>e();function Jc(e,t={}){let n,r,s=Kt;const o=l=>{clearTimeout(l),s(),s=Kt};return l=>{const c=Le(e),a=Le(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,a&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},a)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function Xc(e=Vo){const t=ue(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:Sn(t),pause:n,resume:r,eventFilter:s}}function qo(...e){if(e.length!==1)return nl(...e);const t=e[0];return typeof t=="function"?Sn(Gi(()=>({get:t,set:Kt}))):ue(t)}function zo(e,t,n={}){const{eventFilter:r=Vo,...s}=n;return Ye(e,Yc(r,t),s)}function Qc(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=Xc(r);return{stop:zo(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Zc(e,t=!0){Hn()?At(e):t?e():On(e)}function nu(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return zo(e,t,{...o,eventFilter:Jc(r,{maxWait:s})})}function ru(e,t,n){let r;ce(n)?r={evaluating:n}:r=n||{};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Kt}=r,c=ue(!s),a=i?Ar(t):ue(t);let f=0;return Or(async h=>{if(!c.value)return;f++;const g=f;let w=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const E=await e(S=>{h(()=>{o&&(o.value=!1),w||S()})});g===f&&(a.value=E)}catch(E){l(E)}finally{o&&g===f&&(o.value=!1),w=!0}}),s?ae(()=>(c.value=!0,a.value)):a}function Yo(e){var t;const n=Le(e);return(t=n==null?void 0:n.$el)!=null?t:n}const De=Wo?window:void 0;function Wt(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=De):[t,n,r,s]=e,!t)return Kt;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,g,w)=>(f.addEventListener(h,g,w),()=>f.removeEventListener(h,g,w)),c=Ye(()=>[Yo(t),Le(s)],([f,h])=>{if(i(),!f)return;const g=qc(h)?{...h}:h;o.push(...n.flatMap(w=>r.map(E=>l(f,w,E,g))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return Hr(a),a}function Gc(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function su(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=De,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=Gc(t);return Wt(s,o,f=>{f.repeat&&Le(l)||c(f)&&n(f)},i)}function ea(){const e=ue(!1);return Hn()&&At(()=>{e.value=!0}),e}function ta(e){const t=ea();return ae(()=>(t.value,!!e()))}function na(e,t={}){const{window:n=De}=t,r=ta(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=ue(!1),i=a=>{o.value=a.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Or(()=>{r.value&&(l(),s=n.matchMedia(Le(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return Hr(()=>{c(),l(),s=void 0}),o}const on=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},ln="__vueuse_ssr_handlers__",ra=sa();function sa(){return ln in on||(on[ln]=on[ln]||{}),on[ln]}function Jo(e,t){return ra[e]||t}function oa(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const ia={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Rs="vueuse-storage";function $r(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:f,window:h=De,eventFilter:g,onError:w=_=>{console.error(_)}}=r,E=(f?Ar:ue)(t);if(!n)try{n=Jo("getDefaultStorage",()=>{var _;return(_=De)==null?void 0:_.localStorage})()}catch(_){w(_)}if(!n)return E;const S=Le(t),H=oa(S),m=(s=r.serializer)!=null?s:ia[H],{pause:y,resume:N}=Qc(E,()=>A(E.value),{flush:o,deep:i,eventFilter:g});return h&&l&&(Wt(h,"storage",D),Wt(h,Rs,W)),D(),E;function A(_){try{if(_==null)n.removeItem(e);else{const R=m.write(_),I=n.getItem(e);I!==R&&(n.setItem(e,R),h&&h.dispatchEvent(new CustomEvent(Rs,{detail:{key:e,oldValue:I,newValue:R,storageArea:n}})))}}catch(R){w(R)}}function B(_){const R=_?_.newValue:n.getItem(e);if(R==null)return c&&S!==null&&n.setItem(e,m.write(S)),S;if(!_&&a){const I=m.read(R);return typeof a=="function"?a(I,S):H==="object"&&!Array.isArray(I)?{...S,...I}:I}else return typeof R!="string"?R:m.read(R)}function W(_){D(_.detail)}function D(_){if(!(_&&_.storageArea!==n)){if(_&&_.key==null){E.value=S;return}if(!(_&&_.key!==e)){y();try{(_==null?void 0:_.newValue)!==m.write(E.value)&&(E.value=B(_))}catch(R){w(R)}finally{_?On(N):N()}}}}}function la(e){return na("(prefers-color-scheme: dark)",e)}function ca(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=De,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},g=la({window:s}),w=ae(()=>g.value?"dark":"light"),E=c||(i==null?qo(r):$r(i,r,o,{window:s,listenToStorageChanges:l})),S=ae(()=>E.value==="auto"?w.value:E.value),H=Jo("updateHTMLAttrs",(A,B,W)=>{const D=typeof A=="string"?s==null?void 0:s.document.querySelector(A):Yo(A);if(!D)return;let _;if(f){_=s.document.createElement("style");const R="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";_.appendChild(document.createTextNode(R)),s.document.head.appendChild(_)}if(B==="class"){const R=W.split(/\s/g);Object.values(h).flatMap(I=>(I||"").split(/\s/g)).filter(Boolean).forEach(I=>{R.includes(I)?D.classList.add(I):D.classList.remove(I)})}else D.setAttribute(B,W);f&&(s.getComputedStyle(_).opacity,document.head.removeChild(_))});function m(A){var B;H(t,n,(B=h[A])!=null?B:A)}function y(A){e.onChanged?e.onChanged(A,m):m(A)}Ye(S,y,{flush:"post",immediate:!0}),Zc(()=>y(S.value));const N=ae({get(){return a?E.value:S.value},set(A){E.value=A}});try{return Object.assign(N,{store:E,system:w,state:S})}catch{return N}}function aa(e={}){const{valueDark:t="dark",valueLight:n=""}=e,r=ca({...e,onChanged:(o,i)=>{var l;e.onChanged?(l=e.onChanged)==null||l.call(e,o==="dark",i,o):i(o)},modes:{dark:t,light:n}});return ae({get(){return r.value==="dark"},set(o){const i=o?"dark":"light";r.system.value===i?r.value="auto":r.value=i}})}function zn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function ou(e,t,n={}){const{window:r=De}=n;return $r(e,t,r==null?void 0:r.localStorage,n)}function Xo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth<e.scrollWidth||t.overflowY==="auto"&&e.clientHeight<e.scrollHeight)return!0;{const n=e.parentNode;return!n||n.tagName==="BODY"?!1:Xo(n)}}function ua(e){const t=e||window.event,n=t.target;return Xo(n)?!1:t.touches.length>1?!0:(t.preventDefault&&t.preventDefault(),!1)}function iu(e,t=!1){const n=ue(t);let r=null,s;Ye(qo(e),l=>{const c=zn(Le(l));if(c){const a=c;s=a.style.overflow,n.value&&(a.style.overflow="hidden")}},{immediate:!0});const o=()=>{const l=zn(Le(e));!l||n.value||(Ps&&(r=Wt(l,"touchmove",c=>{ua(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},i=()=>{const l=zn(Le(e));!l||!n.value||(Ps&&(r==null||r()),l.style.overflow=s,n.value=!1)};return Hr(i),ae({get(){return n.value},set(l){l?o():i()}})}function lu(e,t,n={}){const{window:r=De}=n;return $r(e,t,r==null?void 0:r.sessionStorage,n)}function cu({window:e=De}={}){if(!e)return{x:ue(0),y:ue(0)};const t=ue(e.scrollX),n=ue(e.scrollY);return Wt(e,"scroll",()=>{t.value=e.scrollX,n.value=e.scrollY},{capture:!1,passive:!0}),{x:t,y:n}}const Qo=/^[a-z]+:/i,fa="vitepress-theme-appearance",Zo=/#.*$/,da=/(index)?\.(md|html)$/,Ee=typeof document<"u",Go={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function ha(e,t,n=!1){if(t===void 0)return!1;if(e=Ms(`/${e}`),n)return new RegExp(t).test(e);if(Ms(t)!==e)return!1;const r=t.match(Zo);return r?(Ee?location.hash:"")===r[0]:!0}function Ms(e){return decodeURI(e).replace(Zo,"").replace(da,"")}function pa(e){return Qo.test(e)}function ga(e,t){var r,s,o,i,l,c,a;const n=Object.keys(e.locales).find(f=>f!=="root"&&!pa(f)&&ha(t,`/${f}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:ti(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function ei(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=ma(e.title,r);return`${n}${s}`}function ma(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function _a(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function ti(e,t){return[...e.filter(n=>!_a(t,n)),...t]}const ya=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ba=/^[a-z]:/i;function Fs(e){const t=ba.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(ya,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const va=Symbol(),it=Ar(Wc);function au(e){const t=ae(()=>ga(it.value,e.data.relativePath)),n=t.value.appearance?aa({storageKey:fa,initialValue:()=>typeof t.value.appearance=="string"?t.value.appearance:"auto",...typeof t.value.appearance=="object"?t.value.appearance:{}}):ue(!1);return{site:t,theme:ae(()=>t.value.themeConfig),page:ae(()=>e.data),frontmatter:ae(()=>e.data.frontmatter),params:ae(()=>e.data.params),lang:ae(()=>t.value.lang),dir:ae(()=>t.value.dir),localeIndex:ae(()=>t.value.localeIndex||"root"),title:ae(()=>ei(t.value,e.data)),description:ae(()=>e.data.description||t.value.description),isDark:n}}function wa(){const e=bt(va);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ca(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Is(e){return Qo.test(e)||!e.startsWith("/")?e:Ca(it.value.base,e)}function Ea(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),Ee){const n="/zx/";t=Fs(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${Fs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let dn=[];function uu(e){dn.push(e),Ln(()=>{dn=dn.filter(t=>t!==e)})}const xa=Symbol(),Ls="http://a.com",Ta=()=>({path:"/",component:null,data:Go});function fu(e,t){const n=An(Ta()),r={route:n,go:s};async function s(l=Ee?location.href:"/"){var a,f;if(await((a=r.onBeforeRouteChange)==null?void 0:a.call(r,l))===!1)return;const c=new URL(l,Ls);it.value.cleanUrls||!c.pathname.endsWith("/")&&!c.pathname.endsWith(".html")&&(c.pathname+=".html",l=c.pathname+c.search+c.hash),$s(l),await i(l),await((f=r.onAfterRouteChanged)==null?void 0:f.call(r,l))}let o=null;async function i(l,c=0,a=!1){var g;if(await((g=r.onBeforePageLoad)==null?void 0:g.call(r,l))===!1)return;const f=new URL(l,Ls),h=o=f.pathname;try{let w=await e(h);if(!w)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:E,__pageData:S}=w;if(!E)throw new Error(`Invalid route component: ${E}`);n.path=Ee?h:Is(h),n.component=Ft(E),n.data=Ft(S),Ee&&On(()=>{let H=it.value.base+S.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!it.value.cleanUrls&&!H.endsWith("/")&&(H+=".html"),H!==f.pathname&&(f.pathname=H,l=H+f.search+f.hash,history.replaceState(null,"",l)),f.hash&&!c){let m=null;try{m=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(y){console.warn(y)}if(m){Ns(m,f.hash);return}}window.scrollTo(0,c)})}}catch(w){if(!/fetch|Page not found/.test(w.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(w),!a)try{const E=await fetch(it.value.base+"hashmap.json");window.__VP_HASH_MAP__=await E.json(),await i(l,c,!0);return}catch{}o===h&&(o=null,n.path=Ee?h:Is(h),n.component=t?Ft(t):null,n.data=Go)}}return Ee&&(window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:f}=a,{href:h,origin:g,pathname:w,hash:E,search:S}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),H=window.location,m=w.match(/\.\w+$/);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&g===H.origin&&!(m&&m[0]!==".html")&&(l.preventDefault(),w===H.pathname&&S===H.search?(E!==H.hash&&(history.pushState(null,"",E),window.dispatchEvent(new Event("hashchange"))),E?Ns(a,E,a.classList.contains("header-anchor")):($s(h),window.scrollTo(0,0))):s(h))}},{capture:!0}),window.addEventListener("popstate",l=>{i(location.href,l.state&&l.state.scrollPosition||0)}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function Aa(){const e=bt(xa);if(!e)throw new Error("useRouter() is called without provider.");return e}function ni(){return Aa().route}function Ns(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let a=function(){!n||Math.abs(c-window.scrollY)>window.innerHeight?window.scrollTo(0,c):window.scrollTo({left:0,top:c,behavior:"smooth"})},s=it.value.scrollOffset,o=0,i=24;if(typeof s=="object"&&"padding"in s&&(i=s.padding,s=s.selector),typeof s=="number")o=s;else if(typeof s=="string")o=Hs(s,i);else if(Array.isArray(s))for(const f of s){const h=Hs(f,i);if(h){o=h;break}}const l=parseInt(window.getComputedStyle(r).paddingTop,10),c=window.scrollY+r.getBoundingClientRect().top-o+l;requestAnimationFrame(a)}}function Hs(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}function $s(e){Ee&&e!==location.href&&(history.replaceState({scrollPosition:window.scrollY},document.title),history.pushState(null,"",e))}const js=()=>dn.forEach(e=>e()),du=Pr({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=ni(),{site:n}=wa();return()=>cr(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?cr(t.component,{onVnodeMounted:js,onVnodeUpdated:js}):"404 Page Not Found"])}}),hu=Pr({setup(e,{slots:t}){const n=ue(!1);return At(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function pu(){Ee&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(a=>a.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function gu(){if(Ee){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className);let l="";o.querySelectorAll("span.line:not(.diff.remove)").forEach(c=>l+=(c.textContent||"")+`
+`),l=l.slice(0,-1),i&&(l=l.replace(/^ *(\$|>) /gm,"").trim()),Sa(l).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const c=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,c)})}})}}async function Sa(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function mu(e,t){let n=[],r=!0;const s=o=>{if(r){r=!1;return}n.forEach(i=>document.head.removeChild(i)),n=[],o.forEach(i=>{const l=Ds(i);document.head.appendChild(l),n.push(l)})};Or(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[];document.title=ei(i,o);const a=l||i.description;let f=document.querySelector("meta[name=description]");f?f.setAttribute("content",a):Ds(["meta",{name:"description",content:a}]),s(ti(i.head,Pa(c)))})}function Ds([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),r}function Oa(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Pa(e){return e.filter(t=>!Oa(t))}const Yn=new Set,ri=()=>document.createElement("link"),Ra=e=>{const t=ri();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ma=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let cn;const Fa=Ee&&(cn=ri())&&cn.relList&&cn.relList.supports&&cn.relList.supports("prefetch")?Ra:Ma;function _u(){if(!Ee||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!Yn.has(c)){Yn.add(c);const a=Ea(c);a&&Fa(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):Yn.add(l))})})};At(r);const s=ni();Ye(()=>s.path,r),Ln(()=>{n&&n.disconnect()})}export{Xa as $,Ha as A,Sl as B,Da as C,Ua as D,Ar as E,ge as F,uu as G,se as H,Ba as I,Qo as J,ni as K,rc as L,bt as M,gr as N,On as O,cu as P,za as Q,Sn as R,su as S,Bo as T,ja as U,tu as V,iu as W,Ul as X,Qa as Y,Ka as Z,eu as _,Ho as a,Wa as a0,mu as a1,xa as a2,au as a3,va as a4,du as a5,hu as a6,it as a7,Ga as a8,fu as a9,Ea as aa,_u as ab,gu as ac,pu as ad,cr as ae,Yo as af,Hr as ag,ru as ah,lu as ai,ou as aj,nu as ak,Aa as al,Wt as am,yo as an,$a as ao,Ja as ap,ce as aq,Va as ar,Ft as as,Za as at,Io as b,qa as c,Pr as d,Ya as e,Is as f,ae as g,ue as h,pa as i,At as j,No as k,oo as l,Na as m,mr as n,Mo as o,La as p,ha as q,ka as r,Ee as s,Ia as t,wa as u,na as v,dl as w,Ye as x,Or as y,Ln as z};
docs/assets/chunks/theme.da00fba9.js
@@ -0,0 +1,1 @@
+import{d as g,o as a,c as i,r as u,n as T,a as x,t as L,_ as m,b as $,w as _,T as re,e as f,u as Fe,i as Oe,f as ie,g as y,h as I,j as G,k as c,l,p as z,m as D,q,s as J,v as oe,x as K,y as ce,z as ue,A as Le,B as Ge,C as R,F as N,D as A,E as de,G as W,H as h,I as j,J as Se,K as ee,L as Z,M as te,N as Me,O as Ue,P as Ie,Q as je,R as Ke,S as Pe,U as Re,V as qe,W as Ne,X as Te,Y as We,Z as Ye,$ as Je,a0 as Xe}from"./framework.54ce79f7.js";const Ze=g({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),i("span",{class:T(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[x(L(e.text),1)],!0)],2))}});const Qe=m(Ze,[["__scopeId","data-v-ea5b2908"]]),et={key:0,class:"VPBackdrop"},tt=g({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),$(re,{name:"fade"},{default:_(()=>[e.show?(a(),i("div",et)):f("",!0)]),_:1}))}});const st=m(tt,[["__scopeId","data-v-54a304ca"]]),V=Fe;function nt(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function ae(s){return/^\//.test(s)?s:`/${s}`}function Y(s){if(Oe(s))return s;const{site:e}=V(),{pathname:t,search:n,hash:o}=new URL(s,"http://a.com"),r=t.endsWith("/")||t.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,e.value.cleanUrls?"":".html")}${n}${o}`);return ie(r)}function X({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:o,theme:r}=V(),d=y(()=>{var v,b;return{label:(v=t.value.locales[n.value])==null?void 0:v.label,link:((b=t.value.locales[n.value])==null?void 0:b.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:y(()=>Object.entries(t.value.locales).flatMap(([v,b])=>s&&d.value.label===b.label?[]:{text:b.label,link:ot(b.link||(v==="root"?"/":`/${v}/`),r.value.i18nRouting!==!1&&e,o.value.relativePath.slice(d.value.link.length-1),!t.value.cleanUrls)})),currentLang:d}}function ot(s,e,t,n){return e?s.replace(/\/$/,"")+ae(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const at=s=>(z("data-v-b9c0c15a"),s=s(),D(),s),lt={class:"NotFound"},rt={class:"code"},it={class:"title"},ct=at(()=>c("div",{class:"divider"},null,-1)),ut={class:"quote"},dt={class:"action"},_t=["href","aria-label"],vt=g({__name:"NotFound",setup(s){const{site:e,theme:t}=V(),{localeLinks:n}=X({removeCurrent:!1}),o=I("/");return G(()=>{var d;const r=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(o.value=((d=n.value.find(({link:p})=>p.startsWith(r)))==null?void 0:d.link)||n.value[0].link)}),(r,d)=>{var p,v,b,M,S;return a(),i("div",lt,[c("p",rt,L(((p=l(t).notFound)==null?void 0:p.code)??"404"),1),c("h1",it,L(((v=l(t).notFound)==null?void 0:v.title)??"PAGE NOT FOUND"),1),ct,c("blockquote",ut,L(((b=l(t).notFound)==null?void 0:b.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),c("div",dt,[c("a",{class:"link",href:l(ie)(o.value),"aria-label":((M=l(t).notFound)==null?void 0:M.linkLabel)??"go to home"},L(((S=l(t).notFound)==null?void 0:S.linkText)??"Take me home"),9,_t)])])}}});const pt=m(vt,[["__scopeId","data-v-b9c0c15a"]]);function Ce(s,e){if(Array.isArray(s))return Q(s);if(s==null)return[];e=ae(e);const t=Object.keys(s).sort((o,r)=>r.split("/").length-o.split("/").length).find(o=>e.startsWith(ae(o))),n=t?s[t]:[];return Array.isArray(n)?Q(n):Q(n.items,n.base)}function ht(s){const e=[];let t=0;for(const n in s){const o=s[n];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function ft(s){const e=[];function t(n){for(const o of n)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(s),e}function le(s,e){return Array.isArray(e)?e.some(t=>le(s,t)):q(s,e.link)?!0:e.items?le(s,e.items):!1}function Q(s,e){return[...s].map(t=>{const n={...t},o=n.base||e;return o&&n.link&&(n.link=o+n.link),n.items&&(n.items=Q(n.items,o)),n})}function F(){const{frontmatter:s,page:e,theme:t}=V(),n=oe("(min-width: 960px)"),o=I(!1),r=y(()=>{const w=t.value.sidebar,k=e.value.relativePath;return w?Ce(w,k):[]}),d=I(r.value);K(r,(w,k)=>{JSON.stringify(w)!==JSON.stringify(k)&&(d.value=r.value)});const p=y(()=>s.value.sidebar!==!1&&d.value.length>0&&s.value.layout!=="home"),v=y(()=>b?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),b=y(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),M=y(()=>p.value&&n.value),S=y(()=>p.value?ht(d.value):[]);function B(){o.value=!0}function C(){o.value=!1}function P(){o.value?C():B()}return{isOpen:o,sidebar:d,sidebarGroups:S,hasSidebar:p,hasAside:b,leftAside:v,isSidebarEnabled:M,open:B,close:C,toggle:P}}function mt(s,e){let t;ce(()=>{t=s.value?document.activeElement:void 0}),G(()=>{window.addEventListener("keyup",n)}),ue(()=>{window.removeEventListener("keyup",n)});function n(o){o.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}const Be=I(J?location.hash:"");J&&window.addEventListener("hashchange",()=>{Be.value=location.hash});function gt(s){const{page:e}=V(),t=I(!1),n=y(()=>s.value.collapsed!=null),o=y(()=>!!s.value.link),r=I(!1),d=()=>{r.value=q(e.value.relativePath,s.value.link)};K([e,s,Be],d),G(d);const p=y(()=>r.value?!0:s.value.items?le(e.value.relativePath,s.value.items):!1),v=y(()=>!!(s.value.items&&s.value.items.length));ce(()=>{t.value=!!(n.value&&s.value.collapsed)}),Le(()=>{(r.value||p.value)&&(t.value=!1)});function b(){n.value&&(t.value=!t.value)}return{collapsed:t,collapsible:n,isLink:o,isActiveLink:r,hasActiveLink:p,hasChildren:v,toggle:b}}function bt(){const{hasSidebar:s}=F(),e=oe("(min-width: 960px)"),t=oe("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const $t=71;function _e(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function ve(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{title:kt(t),link:"#"+t.id,level:n}});return yt(e,s)}function kt(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function yt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(d=>d.level>=n&&d.level<=o);const r=[];e:for(let d=0;d<s.length;d++){const p=s[d];if(d===0)r.push(p);else{for(let v=d-1;v>=0;v--){const b=s[v];if(b.level<p.level){(b.children||(b.children=[])).push(p);continue e}}r.push(p)}}return r}function Pt(s,e){const{isAsideEnabled:t}=bt(),n=nt(r,100);let o=null;G(()=>{requestAnimationFrame(r),window.addEventListener("scroll",n)}),Ge(()=>{d(location.hash)}),ue(()=>{window.removeEventListener("scroll",n)});function r(){if(!t.value)return;const p=[].slice.call(s.value.querySelectorAll(".outline-link")),v=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(C=>p.some(P=>P.hash===C.hash&&C.offsetParent!==null)),b=window.scrollY,M=window.innerHeight,S=document.body.offsetHeight,B=Math.abs(b+M-S)<1;if(v.length&&B){d(v[v.length-1].hash);return}for(let C=0;C<v.length;C++){const P=v[C],w=v[C+1],[k,H]=Vt(C,P,w);if(k){d(H);return}}}function d(p){o&&o.classList.remove("active"),p==null?o=null:o=s.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const v=o;v?(v.classList.add("active"),e.value.style.top=v.offsetTop+33+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Ve(s){return s.parentElement.offsetTop-$t}function Vt(s,e,t){const n=window.scrollY;return s===0&&n===0?[!0,null]:n<Ve(e)?[!1,null]:!t||n<Ve(t)?[!0,e.hash]:[!1,null]}const wt=["href","title"],Lt=g({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(s){function e({target:t}){const n=t.href.split("#")[1],o=document.getElementById(decodeURIComponent(n));o==null||o.focus({preventScroll:!0})}return(t,n)=>{const o=R("VPDocOutlineItem",!0);return a(),i("ul",{class:T(t.root?"root":"nested")},[(a(!0),i(N,null,A(t.headers,({children:r,link:d,title:p})=>(a(),i("li",null,[c("a",{class:"outline-link",href:d,onClick:e,title:p},L(p),9,wt),r!=null&&r.length?(a(),$(o,{key:0,headers:r},null,8,["headers"])):f("",!0)]))),256))],2)}}});const pe=m(Lt,[["__scopeId","data-v-463da30f"]]),St=s=>(z("data-v-626d8d18"),s=s(),D(),s),Mt={class:"content"},It={class:"outline-title",role:"heading"},Nt={"aria-labelledby":"doc-outline-aria-label"},Tt=St(()=>c("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),Ct=g({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=V(),n=de([]);W(()=>{n.value=ve(e.value.outline??t.value.outline)});const o=I(),r=I();return Pt(o,r),(d,p)=>(a(),i("div",{class:T(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:o,role:"navigation"},[c("div",Mt,[c("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),c("div",It,L(l(_e)(l(t))),1),c("nav",Nt,[Tt,h(pe,{headers:n.value,root:!0},null,8,["headers"])])])],2))}});const Bt=m(Ct,[["__scopeId","data-v-626d8d18"]]),At={class:"VPDocAsideCarbonAds"},xt=g({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(a(),i("div",At,[h(l(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ht=s=>(z("data-v-cb998dce"),s=s(),D(),s),zt={class:"VPDocAside"},Dt=Ht(()=>c("div",{class:"spacer"},null,-1)),Et=g({__name:"VPDocAside",setup(s){const{theme:e}=V();return(t,n)=>(a(),i("div",zt,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),h(Bt),u(t.$slots,"aside-outline-after",{},void 0,!0),Dt,u(t.$slots,"aside-ads-before",{},void 0,!0),l(e).carbonAds?(a(),$(xt,{key:0,"carbon-ads":l(e).carbonAds},null,8,["carbon-ads"])):f("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}});const Ft=m(Et,[["__scopeId","data-v-cb998dce"]]);function Ot(){const{theme:s,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{};let o;return typeof n=="function"?o=n(e.value):o=n.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function Gt(){const{page:s,theme:e,frontmatter:t}=V();return y(()=>{var v,b,M,S,B,C,P,w;const n=Ce(e.value.sidebar,s.value.relativePath),o=ft(n),r=o.findIndex(k=>q(s.value.relativePath,k.link)),d=((v=e.value.docFooter)==null?void 0:v.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((b=e.value.docFooter)==null?void 0:b.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((M=o[r-1])==null?void 0:M.docFooterText)??((S=o[r-1])==null?void 0:S.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((B=o[r-1])==null?void 0:B.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((C=o[r+1])==null?void 0:C.docFooterText)??((P=o[r+1])==null?void 0:P.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((w=o[r+1])==null?void 0:w.link)}}})}const Ut={},jt={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Kt=c("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Rt=c("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),qt=[Kt,Rt];function Wt(s,e){return a(),i("svg",jt,qt)}const Yt=m(Ut,[["render",Wt]]),U=g({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=y(()=>e.tag??(e.href?"a":"span")),n=y(()=>e.href&&Se.test(e.href));return(o,r)=>(a(),$(j(t.value),{class:T(["VPLink",{link:o.href,"vp-external-link-icon":n.value,"no-icon":o.noIcon}]),href:o.href?l(Y)(o.href):void 0,target:o.target??(n.value?"_blank":void 0),rel:o.rel??(n.value?"noreferrer":void 0)},{default:_(()=>[u(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Jt={class:"VPLastUpdated"},Xt=["datetime"],Zt=g({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n}=V(),o=y(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),r=y(()=>o.value.toISOString()),d=I("");return G(()=>{ce(()=>{var p;d.value=new Intl.DateTimeFormat(void 0,((p=e.value.lastUpdated)==null?void 0:p.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(p,v)=>{var b;return a(),i("p",Jt,[x(L(((b=l(e).lastUpdated)==null?void 0:b.text)||l(e).lastUpdatedText||"Last updated")+": ",1),c("time",{datetime:r.value},L(d.value),9,Xt)])}}});const Qt=m(Zt,[["__scopeId","data-v-6a7fda06"]]),es={key:0,class:"VPDocFooter"},ts={key:0,class:"edit-info"},ss={key:0,class:"edit-link"},ns={key:1,class:"last-updated"},os={key:1,class:"prev-next"},as={class:"pager"},ls=["href"],rs=["innerHTML"],is=["innerHTML"],cs={class:"pager"},us=["href"],ds=["innerHTML"],_s=["innerHTML"],vs=g({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=V(),o=Ot(),r=Gt(),d=y(()=>e.value.editLink&&n.value.editLink!==!1),p=y(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),v=y(()=>d.value||p.value||r.value.prev||r.value.next);return(b,M)=>{var S,B,C,P,w,k;return v.value?(a(),i("footer",es,[u(b.$slots,"doc-footer-before",{},void 0,!0),d.value||p.value?(a(),i("div",ts,[d.value?(a(),i("div",ss,[h(U,{class:"edit-link-button",href:l(o).url,"no-icon":!0},{default:_(()=>[h(Yt,{class:"edit-link-icon","aria-label":"edit icon"}),x(" "+L(l(o).text),1)]),_:1},8,["href"])])):f("",!0),p.value?(a(),i("div",ns,[h(Qt)])):f("",!0)])):f("",!0),(S=l(r).prev)!=null&&S.link||(B=l(r).next)!=null&&B.link?(a(),i("nav",os,[c("div",as,[(C=l(r).prev)!=null&&C.link?(a(),i("a",{key:0,class:"pager-link prev",href:l(Y)(l(r).prev.link)},[c("span",{class:"desc",innerHTML:((P=l(e).docFooter)==null?void 0:P.prev)||"Previous page"},null,8,rs),c("span",{class:"title",innerHTML:l(r).prev.text},null,8,is)],8,ls)):f("",!0)]),c("div",cs,[(w=l(r).next)!=null&&w.link?(a(),i("a",{key:0,class:"pager-link next",href:l(Y)(l(r).next.link)},[c("span",{class:"desc",innerHTML:((k=l(e).docFooter)==null?void 0:k.next)||"Next page"},null,8,ds),c("span",{class:"title",innerHTML:l(r).next.text},null,8,_s)],8,us)):f("",!0)])])):f("",!0)])):f("",!0)}}});const ps=m(vs,[["__scopeId","data-v-a2d931e4"]]),hs={},fs={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ms=c("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),gs=[ms];function bs(s,e){return a(),i("svg",fs,gs)}const he=m(hs,[["render",bs]]),$s={key:0,class:"VPDocOutlineDropdown"},ks={key:0,class:"items"},ys=g({__name:"VPDocOutlineDropdown",setup(s){const{frontmatter:e,theme:t}=V(),n=I(!1);W(()=>{n.value=!1});const o=de([]);return W(()=>{o.value=ve(e.value.outline??t.value.outline)}),(r,d)=>o.value.length>0?(a(),i("div",$s,[c("button",{onClick:d[0]||(d[0]=p=>n.value=!n.value),class:T({open:n.value})},[x(L(l(_e)(l(t)))+" ",1),h(he,{class:"icon"})],2),n.value?(a(),i("div",ks,[h(pe,{headers:o.value},null,8,["headers"])])):f("",!0)])):f("",!0)}});const Ps=m(ys,[["__scopeId","data-v-95bb0785"]]),Vs=s=>(z("data-v-a3c25e27"),s=s(),D(),s),ws={class:"container"},Ls=Vs(()=>c("div",{class:"aside-curtain"},null,-1)),Ss={class:"aside-container"},Ms={class:"aside-content"},Is={class:"content"},Ns={class:"content-container"},Ts={class:"main"},Cs=g({__name:"VPDoc",setup(s){const{theme:e}=V(),t=ee(),{hasSidebar:n,hasAside:o,leftAside:r}=F(),d=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,v)=>{const b=R("Content");return a(),i("div",{class:T(["VPDoc",{"has-sidebar":l(n),"has-aside":l(o)}])},[u(p.$slots,"doc-top",{},void 0,!0),c("div",ws,[l(o)?(a(),i("div",{key:0,class:T(["aside",{"left-aside":l(r)}])},[Ls,c("div",Ss,[c("div",Ms,[h(Ft,null,{"aside-top":_(()=>[u(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":_(()=>[u(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":_(()=>[u(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":_(()=>[u(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":_(()=>[u(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":_(()=>[u(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),c("div",Is,[c("div",Ns,[u(p.$slots,"doc-before",{},void 0,!0),h(Ps),c("main",Ts,[h(b,{class:T(["vp-doc",[d.value,l(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),h(ps,null,{"doc-footer-before":_(()=>[u(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(p.$slots,"doc-after",{},void 0,!0)])])]),u(p.$slots,"doc-bottom",{},void 0,!0)],2)}}});const Bs=m(Cs,[["__scopeId","data-v-a3c25e27"]]),As=g({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{}},setup(s){const e=s,t=y(()=>e.href&&Se.test(e.href)),n=y(()=>e.tag||e.href?"a":"button");return(o,r)=>(a(),$(j(n.value),{class:T(["VPButton",[o.size,o.theme]]),href:o.href?l(Y)(o.href):void 0,target:t.value?"_blank":void 0,rel:t.value?"noreferrer":void 0},{default:_(()=>[x(L(o.text),1)]),_:1},8,["class","href","target","rel"]))}});const xs=m(As,[["__scopeId","data-v-1e76fe75"]]),Hs=["src","alt"],zs=g({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=R("VPImage",!0);return e.image?(a(),i(N,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),i("img",Z({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:l(ie)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Hs)):(a(),i(N,{key:1},[h(n,Z({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),h(n,Z({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}});const fe=m(zs,[["__scopeId","data-v-ab19afbb"]]),Ds=s=>(z("data-v-5a3e9999"),s=s(),D(),s),Es={class:"container"},Fs={class:"main"},Os={key:0,class:"name"},Gs=["innerHTML"],Us=["innerHTML"],js=["innerHTML"],Ks={key:0,class:"actions"},Rs={key:0,class:"image"},qs={class:"image-container"},Ws=Ds(()=>c("div",{class:"image-bg"},null,-1)),Ys=g({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=te("hero-image-slot-exists");return(t,n)=>(a(),i("div",{class:T(["VPHero",{"has-image":t.image||l(e)}])},[c("div",Es,[c("div",Fs,[u(t.$slots,"home-hero-info",{},()=>[t.name?(a(),i("h1",Os,[c("span",{innerHTML:t.name,class:"clip"},null,8,Gs)])):f("",!0),t.text?(a(),i("p",{key:1,innerHTML:t.text,class:"text"},null,8,Us)):f("",!0),t.tagline?(a(),i("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,js)):f("",!0)],!0),t.actions?(a(),i("div",Ks,[(a(!0),i(N,null,A(t.actions,o=>(a(),i("div",{key:o.link,class:"action"},[h(xs,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link},null,8,["theme","text","href"])]))),128))])):f("",!0)]),t.image||l(e)?(a(),i("div",Rs,[c("div",qs,[Ws,u(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(fe,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}});const Js=m(Ys,[["__scopeId","data-v-5a3e9999"]]),Xs=g({__name:"VPHomeHero",setup(s){const{frontmatter:e}=V();return(t,n)=>l(e).hero?(a(),$(Js,{key:0,class:"VPHomeHero",name:l(e).hero.name,text:l(e).hero.text,tagline:l(e).hero.tagline,image:l(e).hero.image,actions:l(e).hero.actions},{"home-hero-info":_(()=>[u(t.$slots,"home-hero-info")]),"home-hero-image":_(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Zs={},Qs={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},en=c("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),tn=[en];function sn(s,e){return a(),i("svg",Qs,tn)}const nn=m(Zs,[["render",sn]]),on={class:"box"},an=["innerHTML"],ln=["innerHTML"],rn=["innerHTML"],cn={key:3,class:"link-text"},un={class:"link-text-value"},dn=g({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{}},setup(s){return(e,t)=>(a(),$(U,{class:"VPFeature",href:e.link,rel:e.rel,"no-icon":!0,tag:e.link?"a":"div"},{default:_(()=>[c("article",on,[typeof e.icon=="object"?(a(),$(fe,{key:0,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),i("div",{key:1,class:"icon",innerHTML:e.icon},null,8,an)):f("",!0),c("h2",{class:"title",innerHTML:e.title},null,8,ln),e.details?(a(),i("p",{key:2,class:"details",innerHTML:e.details},null,8,rn)):f("",!0),e.linkText?(a(),i("div",cn,[c("p",un,[x(L(e.linkText)+" ",1),h(nn,{class:"link-text-icon"})])])):f("",!0)])]),_:1},8,["href","rel","tag"]))}});const _n=m(dn,[["__scopeId","data-v-6c0c85a1"]]),vn={key:0,class:"VPFeatures"},pn={class:"container"},hn={class:"items"},fn=g({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=y(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,o)=>n.features?(a(),i("div",vn,[c("div",pn,[c("div",hn,[(a(!0),i(N,null,A(n.features,r=>(a(),i("div",{key:r.title,class:T(["item",[t.value]])},[h(_n,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel},null,8,["icon","title","details","link","link-text","rel"])],2))),128))])])])):f("",!0)}});const mn=m(fn,[["__scopeId","data-v-7e232fde"]]),gn=g({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=V();return(t,n)=>l(e).features?(a(),$(mn,{key:0,class:"VPHomeFeatures",features:l(e).features},null,8,["features"])):f("",!0)}}),bn={class:"VPHome"},$n=g({__name:"VPHome",setup(s){return(e,t)=>{const n=R("Content");return a(),i("div",bn,[u(e.$slots,"home-hero-before",{},void 0,!0),h(Xs,null,{"home-hero-info":_(()=>[u(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":_(()=>[u(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(e.$slots,"home-hero-after",{},void 0,!0),u(e.$slots,"home-features-before",{},void 0,!0),h(gn),u(e.$slots,"home-features-after",{},void 0,!0),h(n)])}}});const kn=m($n,[["__scopeId","data-v-20eabd3a"]]),yn={},Pn={class:"VPPage"};function Vn(s,e){const t=R("Content");return a(),i("div",Pn,[u(s.$slots,"page-top"),h(t),u(s.$slots,"page-bottom")])}const wn=m(yn,[["render",Vn]]),Ln=g({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=V(),{hasSidebar:n}=F();return(o,r)=>(a(),i("div",{class:T(["VPContent",{"has-sidebar":l(n),"is-home":l(t).layout==="home"}]),id:"VPContent"},[l(e).isNotFound?u(o.$slots,"not-found",{key:0},()=>[h(pt)],!0):l(t).layout==="page"?(a(),$(wn,{key:1},{"page-top":_(()=>[u(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":_(()=>[u(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):l(t).layout==="home"?(a(),$(kn,{key:2},{"home-hero-before":_(()=>[u(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":_(()=>[u(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":_(()=>[u(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":_(()=>[u(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":_(()=>[u(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":_(()=>[u(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):l(t).layout&&l(t).layout!=="doc"?(a(),$(j(l(t).layout),{key:3})):(a(),$(Bs,{key:4},{"doc-top":_(()=>[u(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":_(()=>[u(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":_(()=>[u(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":_(()=>[u(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":_(()=>[u(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":_(()=>[u(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":_(()=>[u(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":_(()=>[u(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":_(()=>[u(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":_(()=>[u(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":_(()=>[u(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}});const Sn=m(Ln,[["__scopeId","data-v-3cf691b6"]]),Mn={class:"container"},In=["innerHTML"],Nn=["innerHTML"],Tn=g({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=F();return(o,r)=>l(e).footer&&l(t).footer!==!1?(a(),i("footer",{key:0,class:T(["VPFooter",{"has-sidebar":l(n)}])},[c("div",Mn,[l(e).footer.message?(a(),i("p",{key:0,class:"message",innerHTML:l(e).footer.message},null,8,In)):f("",!0),l(e).footer.copyright?(a(),i("p",{key:1,class:"copyright",innerHTML:l(e).footer.copyright},null,8,Nn)):f("",!0)])],2)):f("",!0)}});const Cn=m(Tn,[["__scopeId","data-v-e4279f1c"]]),Bn={class:"header"},An={class:"outline"},xn=g({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=V(),n=I(!1),o=I(0),r=I();W(()=>{n.value=!1});function d(){n.value=!n.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(b){b.target.classList.contains("outline-link")&&(r.value&&(r.value.style.transition="none"),Ue(()=>{n.value=!1}))}function v(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,M)=>(a(),i("div",{class:"VPLocalNavOutlineDropdown",style:Me({"--vp-vh":o.value+"px"})},[b.headers.length>0?(a(),i("button",{key:0,onClick:d,class:T({open:n.value})},[x(L(l(_e)(l(t)))+" ",1),h(he,{class:"icon"})],2)):(a(),i("button",{key:1,onClick:v},L(l(t).returnToTopLabel||"Return to top"),1)),h(re,{name:"flyout"},{default:_(()=>[n.value?(a(),i("div",{key:0,ref_key:"items",ref:r,class:"items",onClick:p},[c("div",Bn,[c("a",{class:"top-link",href:"#",onClick:v},L(l(t).returnToTopLabel||"Return to top"),1)]),c("div",An,[h(pe,{headers:b.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}});const Hn=m(xn,[["__scopeId","data-v-24251f6f"]]),zn={},Dn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},En=c("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),Fn=c("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),On=c("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Gn=c("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),Un=[En,Fn,On,Gn];function jn(s,e){return a(),i("svg",Dn,Un)}const Kn=m(zn,[["render",jn]]),Rn=["aria-expanded"],qn={class:"menu-text"},Wn=g({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=F(),{y:o}=Ie(),r=de([]),d=I(0);G(()=>{d.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),W(()=>{r.value=ve(t.value.outline??e.value.outline)});const p=y(()=>r.value.length===0&&!n.value),v=y(()=>({VPLocalNav:!0,fixed:p.value,"reached-top":o.value>=d.value}));return(b,M)=>l(t).layout!=="home"&&(!p.value||l(o)>=d.value)?(a(),i("div",{key:0,class:T(v.value)},[l(n)?(a(),i("button",{key:0,class:"menu","aria-expanded":b.open,"aria-controls":"VPSidebarNav",onClick:M[0]||(M[0]=S=>b.$emit("open-menu"))},[h(Kn,{class:"menu-icon"}),c("span",qn,L(l(e).sidebarMenuLabel||"Menu"),1)],8,Rn)):f("",!0),h(Hn,{headers:r.value,navHeight:d.value},null,8,["headers","navHeight"])],2)):f("",!0)}});const Yn=m(Wn,[["__scopeId","data-v-9e669cc1"]]);function Jn(){const s=I(!1);function e(){s.value=!0,window.addEventListener("resize",o)}function t(){s.value=!1,window.removeEventListener("resize",o)}function n(){s.value?t():e()}function o(){window.outerWidth>=768&&t()}const r=ee();return K(()=>r.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const Xn={},Zn={class:"VPSwitch",type:"button",role:"switch"},Qn={class:"check"},eo={key:0,class:"icon"};function to(s,e){return a(),i("button",Zn,[c("span",Qn,[s.$slots.default?(a(),i("span",eo,[u(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const so=m(Xn,[["render",to],["__scopeId","data-v-1c29e291"]]),no={},oo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ao=c("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),lo=[ao];function ro(s,e){return a(),i("svg",oo,lo)}const io=m(no,[["render",ro]]),co={},uo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},_o=je('<path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path>',9),vo=[_o];function po(s,e){return a(),i("svg",uo,vo)}const ho=m(co,[["render",po]]),fo=g({__name:"VPSwitchAppearance",setup(s){const{isDark:e}=V(),t=te("toggle-appearance",()=>{e.value=!e.value});return(n,o)=>(a(),$(so,{title:"toggle dark mode",class:"VPSwitchAppearance","aria-checked":l(e),onClick:l(t)},{default:_(()=>[h(ho,{class:"sun"}),h(io,{class:"moon"})]),_:1},8,["aria-checked","onClick"]))}});const me=m(fo,[["__scopeId","data-v-3329432d"]]),mo={key:0,class:"VPNavBarAppearance"},go=g({__name:"VPNavBarAppearance",setup(s){const{site:e}=V();return(t,n)=>l(e).appearance?(a(),i("div",mo,[h(me)])):f("",!0)}});const bo=m(go,[["__scopeId","data-v-5e9f0637"]]),ge=I();let Ae=!1,ne=0;function $o(s){const e=I(!1);if(J){!Ae&&ko(),ne++;const t=K(ge,n=>{var o,r,d;n===s.el.value||(o=s.el.value)!=null&&o.contains(n)?(e.value=!0,(r=s.onFocus)==null||r.call(s)):(e.value=!1,(d=s.onBlur)==null||d.call(s))});ue(()=>{t(),ne--,ne||yo()})}return Ke(e)}function ko(){document.addEventListener("focusin",xe),Ae=!0,ge.value=document.activeElement}function yo(){document.removeEventListener("focusin",xe)}function xe(){ge.value=document.activeElement}const Po={},Vo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},wo=c("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Lo=[wo];function So(s,e){return a(),i("svg",Vo,Lo)}const He=m(Po,[["render",So]]),Mo={},Io={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},No=c("circle",{cx:"12",cy:"12",r:"2"},null,-1),To=c("circle",{cx:"19",cy:"12",r:"2"},null,-1),Co=c("circle",{cx:"5",cy:"12",r:"2"},null,-1),Bo=[No,To,Co];function Ao(s,e){return a(),i("svg",Io,Bo)}const xo=m(Mo,[["render",Ao]]),Ho={class:"VPMenuLink"},zo=g({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,n)=>(a(),i("div",Ho,[h(U,{class:T({active:l(q)(l(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:_(()=>[x(L(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const se=m(zo,[["__scopeId","data-v-f51f088d"]]),Do={class:"VPMenuGroup"},Eo={key:0,class:"title"},Fo=g({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",Do,[e.text?(a(),i("p",Eo,L(e.text),1)):f("",!0),(a(!0),i(N,null,A(e.items,n=>(a(),i(N,null,["link"in n?(a(),$(se,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}});const Oo=m(Fo,[["__scopeId","data-v-a6b0397c"]]),Go={class:"VPMenu"},Uo={key:0,class:"items"},jo=g({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),i("div",Go,[e.items?(a(),i("div",Uo,[(a(!0),i(N,null,A(e.items,n=>(a(),i(N,{key:n.text},["link"in n?(a(),$(se,{key:0,item:n},null,8,["item"])):(a(),$(Oo,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),u(e.$slots,"default",{},void 0,!0)]))}});const Ko=m(jo,[["__scopeId","data-v-e42ed9b3"]]),Ro=["aria-expanded","aria-label"],qo={key:0,class:"text"},Wo=["innerHTML"],Yo={class:"menu"},Jo=g({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=I(!1),t=I();$o({el:t,onBlur:n});function n(){e.value=!1}return(o,r)=>(a(),i("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=d=>e.value=!0),onMouseleave:r[2]||(r[2]=d=>e.value=!1)},[c("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:r[0]||(r[0]=d=>e.value=!e.value)},[o.button||o.icon?(a(),i("span",qo,[o.icon?(a(),$(j(o.icon),{key:0,class:"option-icon"})):f("",!0),o.button?(a(),i("span",{key:1,innerHTML:o.button},null,8,Wo)):f("",!0),h(He,{class:"text-icon"})])):(a(),$(xo,{key:1,class:"icon"}))],8,Ro),c("div",Yo,[h(Ko,{items:o.items},{default:_(()=>[u(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const be=m(Jo,[["__scopeId","data-v-aa8de344"]]),Xo={discord:'<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Discord</title><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"/></svg>',facebook:'<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Facebook</title><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>',github:'<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>',instagram:'<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Instagram</title><path d="M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z"/></svg>',linkedin:'<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>LinkedIn</title><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>',mastodon:'<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Mastodon</title><path d="M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z"/></svg>',slack:'<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Slack</title><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"/></svg>',twitter:'<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Twitter</title><path d="M21.543 7.104c.015.211.015.423.015.636 0 6.507-4.954 14.01-14.01 14.01v-.003A13.94 13.94 0 0 1 0 19.539a9.88 9.88 0 0 0 7.287-2.041 4.93 4.93 0 0 1-4.6-3.42 4.916 4.916 0 0 0 2.223-.084A4.926 4.926 0 0 1 .96 9.167v-.062a4.887 4.887 0 0 0 2.235.616A4.928 4.928 0 0 1 1.67 3.148 13.98 13.98 0 0 0 11.82 8.292a4.929 4.929 0 0 1 8.39-4.49 9.868 9.868 0 0 0 3.128-1.196 4.941 4.941 0 0 1-2.165 2.724A9.828 9.828 0 0 0 24 4.555a10.019 10.019 0 0 1-2.457 2.549z"/></svg>',x:'<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>X</title><path d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"/></svg>',youtube:'<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>YouTube</title><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg>'},Zo=["href","aria-label","innerHTML"],Qo=g({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=y(()=>typeof e.icon=="object"?e.icon.svg:Xo[e.icon]);return(n,o)=>(a(),i("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Zo))}});const ea=m(Qo,[["__scopeId","data-v-16cf740a"]]),ta={class:"VPSocialLinks"},sa=g({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),i("div",ta,[(a(!0),i(N,null,A(e.links,({link:n,icon:o,ariaLabel:r})=>(a(),$(ea,{key:n,icon:o,link:n,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}});const $e=m(sa,[["__scopeId","data-v-e71e869c"]]),na={key:0,class:"group translations"},oa={class:"trans-title"},aa={key:1,class:"group"},la={class:"item appearance"},ra={class:"label"},ia={class:"appearance-action"},ca={key:2,class:"group"},ua={class:"item social-links"},da=g({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=V(),{localeLinks:n,currentLang:o}=X({correspondingLink:!0}),r=y(()=>n.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(d,p)=>r.value?(a(),$(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:_(()=>[l(n).length&&l(o).label?(a(),i("div",na,[c("p",oa,L(l(o).label),1),(a(!0),i(N,null,A(l(n),v=>(a(),$(se,{key:v.link,item:v},null,8,["item"]))),128))])):f("",!0),l(e).appearance?(a(),i("div",aa,[c("div",la,[c("p",ra,L(l(t).darkModeSwitchLabel||"Appearance"),1),c("div",ia,[h(me)])])])):f("",!0),l(t).socialLinks?(a(),i("div",ca,[c("div",ua,[h($e,{class:"social-links-list",links:l(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}});const _a=m(da,[["__scopeId","data-v-c8c2ae4b"]]),va=s=>(z("data-v-6bee1efd"),s=s(),D(),s),pa=["aria-expanded"],ha=va(()=>c("span",{class:"container"},[c("span",{class:"top"}),c("span",{class:"middle"}),c("span",{class:"bottom"})],-1)),fa=[ha],ma=g({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),i("button",{type:"button",class:T(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},fa,10,pa))}});const ga=m(ma,[["__scopeId","data-v-6bee1efd"]]),ba=["innerHTML"],$a=g({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,n)=>(a(),$(U,{class:T({VPNavBarMenuLink:!0,active:l(q)(l(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:_(()=>[c("span",{innerHTML:t.item.text},null,8,ba)]),_:1},8,["class","href","target","rel"]))}});const ka=m($a,[["__scopeId","data-v-cb318fec"]]),ya=g({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const{page:e}=V();return(t,n)=>(a(),$(be,{class:T({VPNavBarMenuGroup:!0,active:l(q)(l(e).relativePath,t.item.activeMatch,!!t.item.activeMatch)}),button:t.item.text,items:t.item.items},null,8,["class","button","items"]))}}),Pa=s=>(z("data-v-f732b5d0"),s=s(),D(),s),Va={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},wa=Pa(()=>c("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),La=g({__name:"VPNavBarMenu",setup(s){const{theme:e}=V();return(t,n)=>l(e).nav?(a(),i("nav",Va,[wa,(a(!0),i(N,null,A(l(e).nav,o=>(a(),i(N,{key:o.text},["link"in o?(a(),$(ka,{key:0,item:o},null,8,["item"])):(a(),$(ya,{key:1,item:o},null,8,["item"]))],64))),128))])):f("",!0)}});const Sa=m(La,[["__scopeId","data-v-f732b5d0"]]);const Ma={type:"button",class:"DocSearch DocSearch-Button","aria-label":"Search"},Ia={class:"DocSearch-Button-Container"},Na=c("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[c("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Ta={class:"DocSearch-Button-Placeholder"},Ca=c("span",{class:"DocSearch-Button-Keys"},[c("kbd",{class:"DocSearch-Button-Key"}),c("kbd",{class:"DocSearch-Button-Key"},"K")],-1),we=g({__name:"VPNavBarSearchButton",props:{placeholder:{}},setup(s){return(e,t)=>(a(),i("button",Ma,[c("span",Ia,[Na,c("span",Ta,L(e.placeholder),1)]),Ca]))}});const Ba={id:"local-search"},Aa={key:1,id:"docsearch"},xa=g({__name:"VPNavBarSearch",setup(s){const e=Re(()=>qe(()=>import("./VPLocalSearchBox.fd4d2435.js"),["assets/chunks/VPLocalSearchBox.fd4d2435.js","assets/chunks/framework.54ce79f7.js"])),t=()=>null,{theme:n,localeIndex:o}=V(),r=I(!1),d=I(!1),p=y(()=>{var w,k,H,O,E,ke,ye;const P=((w=n.value.search)==null?void 0:w.options)??n.value.algolia;return((E=(O=(H=(k=P==null?void 0:P.locales)==null?void 0:k[o.value])==null?void 0:H.translations)==null?void 0:O.button)==null?void 0:E.buttonText)||((ye=(ke=P==null?void 0:P.translations)==null?void 0:ke.button)==null?void 0:ye.buttonText)||"Search"});G(()=>{});function v(){r.value||(r.value=!0,setTimeout(b,16))}function b(){const P=new Event("keydown");P.key="k",P.metaKey=!0,window.dispatchEvent(P),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||b()},16)}function M(P){const w=P.target,k=w.tagName;return w.isContentEditable||k==="INPUT"||k==="SELECT"||k==="TEXTAREA"}const S=I(!1);Pe("k",P=>{(P.ctrlKey||P.metaKey)&&(P.preventDefault(),S.value=!0)}),Pe("/",P=>{M(P)||(P.preventDefault(),S.value=!0)});const B=I("'Meta'");G(()=>{B.value=/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"'โŒ˜'":"'Ctrl'"});const C="local";return(P,w)=>{var k;return a(),i("div",{class:"VPNavBarSearch",style:Me({"--vp-meta-key":B.value})},[l(C)==="local"?(a(),i(N,{key:0},[S.value?(a(),$(l(e),{key:0,placeholder:p.value,onClose:w[0]||(w[0]=H=>S.value=!1)},null,8,["placeholder"])):f("",!0),c("div",Ba,[h(we,{placeholder:p.value,onClick:w[1]||(w[1]=H=>S.value=!0)},null,8,["placeholder"])])],64)):l(C)==="algolia"?(a(),i(N,{key:1},[r.value?(a(),$(l(t),{key:0,algolia:((k=l(n).search)==null?void 0:k.options)??l(n).algolia,onVnodeBeforeMount:w[2]||(w[2]=H=>d.value=!0)},null,8,["algolia"])):f("",!0),d.value?f("",!0):(a(),i("div",Aa,[h(we,{placeholder:p.value,onClick:v},null,8,["placeholder"])]))],64)):f("",!0)],4)}}});const Ha=g({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=V();return(t,n)=>l(e).socialLinks?(a(),$($e,{key:0,class:"VPNavBarSocialLinks",links:l(e).socialLinks},null,8,["links"])):f("",!0)}});const za=m(Ha,[["__scopeId","data-v-ef6192dc"]]),Da=["href"],Ea=g({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=V(),{hasSidebar:n}=F(),{currentLang:o}=X();return(r,d)=>(a(),i("div",{class:T(["VPNavBarTitle",{"has-sidebar":l(n)}])},[c("a",{class:"title",href:l(t).logoLink??l(Y)(l(o).link)},[u(r.$slots,"nav-bar-title-before",{},void 0,!0),l(t).logo?(a(),$(fe,{key:0,class:"logo",image:l(t).logo},null,8,["image"])):f("",!0),l(t).siteTitle?(a(),i(N,{key:1},[x(L(l(t).siteTitle),1)],64)):l(t).siteTitle===void 0?(a(),i(N,{key:2},[x(L(l(e).title),1)],64)):f("",!0),u(r.$slots,"nav-bar-title-after",{},void 0,!0)],8,Da)],2))}});const Fa=m(Ea,[["__scopeId","data-v-2973dbb4"]]),Oa={},Ga={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Ua=c("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),ja=c("path",{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 ",class:"css-c4d79v"},null,-1),Ka=[Ua,ja];function Ra(s,e){return a(),i("svg",Ga,Ka)}const ze=m(Oa,[["render",Ra]]),qa={class:"items"},Wa={class:"title"},Ya=g({__name:"VPNavBarTranslations",setup(s){const{theme:e}=V(),{localeLinks:t,currentLang:n}=X({correspondingLink:!0});return(o,r)=>l(t).length&&l(n).label?(a(),$(be,{key:0,class:"VPNavBarTranslations",icon:ze,label:l(e).langMenuLabel||"Change language"},{default:_(()=>[c("div",qa,[c("p",Wa,L(l(n).label),1),(a(!0),i(N,null,A(l(t),d=>(a(),$(se,{key:d.link,item:d},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}});const Ja=m(Ya,[["__scopeId","data-v-ff4524ae"]]),Xa=s=>(z("data-v-f1abbc6e"),s=s(),D(),s),Za={class:"container"},Qa={class:"title"},el={class:"content"},tl=Xa(()=>c("div",{class:"curtain"},null,-1)),sl={class:"content-body"},nl=g({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Ie(),{hasSidebar:t}=F(),{frontmatter:n}=V(),o=I({});return Le(()=>{o.value={"has-sidebar":t.value,top:n.value.layout==="home"&&e.value===0}}),(r,d)=>(a(),i("div",{class:T(["VPNavBar",o.value])},[c("div",Za,[c("div",Qa,[h(Fa,null,{"nav-bar-title-before":_(()=>[u(r.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":_(()=>[u(r.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),c("div",el,[tl,c("div",sl,[u(r.$slots,"nav-bar-content-before",{},void 0,!0),h(xa,{class:"search"}),h(Sa,{class:"menu"}),h(Ja,{class:"translations"}),h(bo,{class:"appearance"}),h(za,{class:"social-links"}),h(_a,{class:"extra"}),u(r.$slots,"nav-bar-content-after",{},void 0,!0),h(ga,{class:"hamburger",active:r.isScreenOpen,onClick:d[0]||(d[0]=p=>r.$emit("toggle-screen"))},null,8,["active"])])])])],2))}});const ol=m(nl,[["__scopeId","data-v-f1abbc6e"]]),al={key:0,class:"VPNavScreenAppearance"},ll={class:"text"},rl=g({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=V();return(n,o)=>l(e).appearance?(a(),i("div",al,[c("p",ll,L(l(t).darkModeSwitchLabel||"Appearance"),1),h(me)])):f("",!0)}});const il=m(rl,[["__scopeId","data-v-0dc5cf49"]]),cl=g({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=te("close-screen");return(t,n)=>(a(),$(U,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:l(e)},{default:_(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const ul=m(cl,[["__scopeId","data-v-fe523e3d"]]),dl={},_l={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},vl=c("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),pl=[vl];function hl(s,e){return a(),i("svg",_l,pl)}const fl=m(dl,[["render",hl]]),ml=g({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=te("close-screen");return(t,n)=>(a(),$(U,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:l(e)},{default:_(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const De=m(ml,[["__scopeId","data-v-aea78dd1"]]),gl={class:"VPNavScreenMenuGroupSection"},bl={key:0,class:"title"},$l=g({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",gl,[e.text?(a(),i("p",bl,L(e.text),1)):f("",!0),(a(!0),i(N,null,A(e.items,n=>(a(),$(De,{key:n.text,item:n},null,8,["item"]))),128))]))}});const kl=m($l,[["__scopeId","data-v-f60dbfa7"]]),yl=["aria-controls","aria-expanded"],Pl={class:"button-text"},Vl=["id"],wl={key:1,class:"group"},Ll=g({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=I(!1),n=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(r,d)=>(a(),i("div",{class:T(["VPNavScreenMenuGroup",{open:t.value}])},[c("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:o},[c("span",Pl,L(r.text),1),h(fl,{class:"button-icon"})],8,yl),c("div",{id:n.value,class:"items"},[(a(!0),i(N,null,A(r.items,p=>(a(),i(N,{key:p.text},["link"in p?(a(),i("div",{key:p.text,class:"item"},[h(De,{item:p},null,8,["item"])])):(a(),i("div",wl,[h(kl,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,Vl)],2))}});const Sl=m(Ll,[["__scopeId","data-v-c2c554ed"]]),Ml={key:0,class:"VPNavScreenMenu"},Il=g({__name:"VPNavScreenMenu",setup(s){const{theme:e}=V();return(t,n)=>l(e).nav?(a(),i("nav",Ml,[(a(!0),i(N,null,A(l(e).nav,o=>(a(),i(N,{key:o.text},["link"in o?(a(),$(ul,{key:0,item:o},null,8,["item"])):(a(),$(Sl,{key:1,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Nl=g({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=V();return(t,n)=>l(e).socialLinks?(a(),$($e,{key:0,class:"VPNavScreenSocialLinks",links:l(e).socialLinks},null,8,["links"])):f("",!0)}}),Tl={class:"list"},Cl=g({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=X({correspondingLink:!0}),n=I(!1);function o(){n.value=!n.value}return(r,d)=>l(e).length&&l(t).label?(a(),i("div",{key:0,class:T(["VPNavScreenTranslations",{open:n.value}])},[c("button",{class:"title",onClick:o},[h(ze,{class:"icon lang"}),x(" "+L(l(t).label)+" ",1),h(He,{class:"icon chevron"})]),c("ul",Tl,[(a(!0),i(N,null,A(l(e),p=>(a(),i("li",{key:p.link,class:"item"},[h(U,{class:"link",href:p.link},{default:_(()=>[x(L(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}});const Bl=m(Cl,[["__scopeId","data-v-41505286"]]),Al={class:"container"},xl=g({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=I(null),t=Ne(J?document.body:null);return(n,o)=>(a(),$(re,{name:"fade",onEnter:o[0]||(o[0]=r=>t.value=!0),onAfterLeave:o[1]||(o[1]=r=>t.value=!1)},{default:_(()=>[n.open?(a(),i("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[c("div",Al,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),h(Il,{class:"menu"}),h(Bl,{class:"translations"}),h(il,{class:"appearance"}),h(Nl,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}});const Hl=m(xl,[["__scopeId","data-v-57cce842"]]),zl={class:"VPNav"},Dl=g({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Jn();return Te("close-screen",t),(o,r)=>(a(),i("header",zl,[h(ol,{"is-screen-open":l(e),onToggleScreen:l(n)},{"nav-bar-title-before":_(()=>[u(o.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":_(()=>[u(o.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":_(()=>[u(o.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":_(()=>[u(o.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),h(Hl,{open:l(e)},{"nav-screen-content-before":_(()=>[u(o.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":_(()=>[u(o.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])]))}});const El=m(Dl,[["__scopeId","data-v-5bdc5df3"]]),Fl=s=>(z("data-v-bd01e0d5"),s=s(),D(),s),Ol=["role","tabindex"],Gl=Fl(()=>c("div",{class:"indicator"},null,-1)),Ul=["onKeydown"],jl={key:1,class:"items"},Kl=g({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:o,isActiveLink:r,hasActiveLink:d,hasChildren:p,toggle:v}=gt(y(()=>e.item)),b=y(()=>p.value?"section":"div"),M=y(()=>o.value?"a":"div"),S=y(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),B=y(()=>o.value?void 0:"button"),C=y(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":o.value},{"is-active":r.value},{"has-active":d.value}]);function P(k){"key"in k&&k.key!=="Enter"||!e.item.link&&v()}function w(){e.item.link&&v()}return(k,H)=>{const O=R("VPSidebarItem",!0);return a(),$(j(b.value),{class:T(["VPSidebarItem",C.value])},{default:_(()=>[k.item.text?(a(),i("div",Z({key:0,class:"item",role:B.value},Ye(k.item.items?{click:P,keydown:P}:{},!0),{tabindex:k.item.items&&0}),[Gl,k.item.link?(a(),$(U,{key:0,tag:M.value,class:"link",href:k.item.link,rel:k.item.rel,target:k.item.target},{default:_(()=>[(a(),$(j(S.value),{class:"text",innerHTML:k.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(j(S.value),{key:1,class:"text",innerHTML:k.item.text},null,8,["innerHTML"])),k.item.collapsed!=null?(a(),i("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:w,onKeydown:We(w,["enter"]),tabindex:"0"},[h(he,{class:"caret-icon"})],40,Ul)):f("",!0)],16,Ol)):f("",!0),k.item.items&&k.item.items.length?(a(),i("div",jl,[k.depth<5?(a(!0),i(N,{key:0},A(k.item.items,E=>(a(),$(O,{key:E.text,item:E,depth:k.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}});const Rl=m(Kl,[["__scopeId","data-v-bd01e0d5"]]),Ee=s=>(z("data-v-ee2efba5"),s=s(),D(),s),ql=Ee(()=>c("div",{class:"curtain"},null,-1)),Wl={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Yl=Ee(()=>c("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Jl=g({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const e=s,{sidebarGroups:t,hasSidebar:n}=F(),o=I(null),r=Ne(J?document.body:null);return K([e,o],()=>{var d;e.open?(r.value=!0,(d=o.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"}),(d,p)=>l(n)?(a(),i("aside",{key:0,class:T(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:o,onClick:p[0]||(p[0]=Je(()=>{},["stop"]))},[ql,c("nav",Wl,[Yl,u(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),i(N,null,A(l(t),v=>(a(),i("div",{key:v.text,class:"group"},[h(Rl,{item:v,depth:0},null,8,["item"])]))),128)),u(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}});const Xl=m(Jl,[["__scopeId","data-v-ee2efba5"]]),Zl=g({__name:"VPSkipLink",setup(s){const e=ee(),t=I();K(()=>e.path,()=>t.value.focus());function n({target:o}){const r=document.getElementById(decodeURIComponent(o.hash).slice(1));if(r){const d=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",d)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",d),r.focus(),window.scrollTo(0,0)}}return(o,r)=>(a(),i(N,null,[c("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),c("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}});const Ql=m(Zl,[["__scopeId","data-v-c8291ffa"]]),er=g({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=F(),o=ee();K(()=>o.path,n),mt(e,n);const{frontmatter:r}=V(),d=Xe(),p=y(()=>!!d["home-hero-image"]);return Te("hero-image-slot-exists",p),(v,b)=>{const M=R("Content");return l(r).layout!==!1?(a(),i("div",{key:0,class:T(["Layout",l(r).pageClass])},[u(v.$slots,"layout-top",{},void 0,!0),h(Ql),h(st,{class:"backdrop",show:l(e),onClick:l(n)},null,8,["show","onClick"]),l(r).navbar!==!1?(a(),$(El,{key:0},{"nav-bar-title-before":_(()=>[u(v.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":_(()=>[u(v.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":_(()=>[u(v.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":_(()=>[u(v.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":_(()=>[u(v.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":_(()=>[u(v.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3})):f("",!0),h(Yn,{open:l(e),onOpenMenu:l(t)},null,8,["open","onOpenMenu"]),h(Xl,{open:l(e)},{"sidebar-nav-before":_(()=>[u(v.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":_(()=>[u(v.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),h(Sn,null,{"page-top":_(()=>[u(v.$slots,"page-top",{},void 0,!0)]),"page-bottom":_(()=>[u(v.$slots,"page-bottom",{},void 0,!0)]),"not-found":_(()=>[u(v.$slots,"not-found",{},void 0,!0)]),"home-hero-before":_(()=>[u(v.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":_(()=>[u(v.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":_(()=>[u(v.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":_(()=>[u(v.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":_(()=>[u(v.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":_(()=>[u(v.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":_(()=>[u(v.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":_(()=>[u(v.$slots,"doc-before",{},void 0,!0)]),"doc-after":_(()=>[u(v.$slots,"doc-after",{},void 0,!0)]),"doc-top":_(()=>[u(v.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":_(()=>[u(v.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":_(()=>[u(v.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":_(()=>[u(v.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":_(()=>[u(v.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":_(()=>[u(v.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":_(()=>[u(v.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":_(()=>[u(v.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),h(Cn),u(v.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(M,{key:1}))}}});const tr=m(er,[["__scopeId","data-v-4064354f"]]);const nr={Layout:tr,enhanceApp:({app:s})=>{s.component("Badge",Qe)}};function or(s,e){const{localeIndex:t}=V();function n(o){var C,P;const r=o.split("."),d=s&&typeof s=="object",p=d&&((P=(C=s.locales)==null?void 0:C[t.value])==null?void 0:P.translations)||null,v=d&&s.translations||null;let b=p,M=v,S=e;const B=r.pop();for(const w of r){let k=null;const H=S==null?void 0:S[w];H&&(k=S=H);const O=M==null?void 0:M[w];O&&(k=M=O);const E=b==null?void 0:b[w];E&&(k=b=E),H||(S=k),O||(M=k),E||(b=k)}return(b==null?void 0:b[B])??(M==null?void 0:M[B])??(S==null?void 0:S[B])??""}return n}export{or as c,nr as t,V as u};
docs/assets/chunks/VPLocalSearchBox.fd4d2435.js
@@ -0,0 +1,7 @@
+import{V as vt,h as ne,x as ze,af as Nt,ag as kt,d as Tt,E as me,ah as Xe,g as Te,ai as It,aj as Dt,y as _t,ak as Ot,j as Ie,O as fe,S as be,al as Rt,am as Mt,W as Lt,s as Pt,an as zt,o as Z,b as Bt,k as S,$ as Vt,l as W,ao as $t,ap as Wt,aq as Kt,c as ee,n as et,e as we,D as tt,F as rt,a as de,t as he,ar as jt,p as Jt,m as Ut,as as at,at as Ht,a4 as Gt,aa as qt,_ as Qt}from"./framework.54ce79f7.js";import{u as Yt,c as Zt}from"./theme.da00fba9.js";const Xt={root:()=>vt(()=>import("./@localSearchIndexroot.afe41412.js"),[])};/*!
+* tabbable 6.2.0
+* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
+*/var pt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ee=pt.join(","),yt=typeof Element>"u",oe=yt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Se=!yt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ae=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},er=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},gt=function(e,t,r){if(Ae(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ee));return t&&oe.call(e,Ee)&&n.unshift(e),n=n.filter(r),n},mt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ae(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=oe.call(i,Ee);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ae(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},bt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ie=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||er(e))&&!bt(e)?0:e.tabIndex},tr=function(e,t){var r=ie(e);return r<0&&t&&!bt(e)?0:r},rr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},wt=function(e){return e.tagName==="INPUT"},ar=function(e){return wt(e)&&e.type==="hidden"},nr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},ir=function(e,t){for(var r=0;r<e.length;r++)if(e[r].checked&&e[r].form===t)return e[r]},or=function(e){if(!e.name)return!0;var t=e.form||Se(e),r=function(s){return t.querySelectorAll('input[type="radio"][name="'+s+'"]')},n;if(typeof window<"u"&&typeof window.CSS<"u"&&typeof window.CSS.escape=="function")n=r(window.CSS.escape(e.name));else try{n=r(e.name)}catch(i){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",i.message),!1}var a=ir(n,e.form);return!a||a===e},sr=function(e){return wt(e)&&e.type==="radio"},ur=function(e){return sr(e)&&!or(e)},lr=function(e){var t,r=e&&Se(e),n=(t=r)===null||t===void 0?void 0:t.host,a=!1;if(r&&r!==e){var i,s,u;for(a=!!((i=n)!==null&&i!==void 0&&(s=i.ownerDocument)!==null&&s!==void 0&&s.contains(n)||e!=null&&(u=e.ownerDocument)!==null&&u!==void 0&&u.contains(e));!a&&n;){var l,h,d;r=Se(n),n=(l=r)===null||l===void 0?void 0:l.host,a=!!((h=n)!==null&&h!==void 0&&(d=h.ownerDocument)!==null&&d!==void 0&&d.contains(n))}}return a},nt=function(e){var t=e.getBoundingClientRect(),r=t.width,n=t.height;return r===0&&n===0},cr=function(e,t){var r=t.displayCheck,n=t.getShadowRoot;if(getComputedStyle(e).visibility==="hidden")return!0;var a=oe.call(e,"details>summary:first-of-type"),i=a?e.parentElement:e;if(oe.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Se(e);if(u&&!u.shadowRoot&&n(u)===!0)return nt(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(lr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return nt(e);return!1},fr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r<t.children.length;r++){var n=t.children.item(r);if(n.tagName==="LEGEND")return oe.call(t,"fieldset[disabled] *")?!0:!n.contains(e)}return!0}t=t.parentElement}return!1},Ce=function(e,t){return!(t.disabled||Ae(t)||ar(t)||cr(t,e)||nr(t)||fr(t))},Be=function(e,t){return!(ur(t)||ie(t)<0||!Ce(e,t))},dr=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return!!(isNaN(t)||t>=0)},hr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=tr(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(rr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},vr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=mt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:dr}):r=gt(e,t.includeContainer,Be.bind(null,t)),hr(r)},pr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=mt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=gt(e,t.includeContainer,Ce.bind(null,t)),r},se=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return oe.call(e,Ee)===!1?!1:Be(t,e)},yr=pt.concat("iframe").join(","),De=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return oe.call(e,yr)===!1?!1:Ce(t,e)};/*!
+* focus-trap 7.5.2
+* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
+*/function it(o,e){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(o);e&&(r=r.filter(function(n){return Object.getOwnPropertyDescriptor(o,n).enumerable})),t.push.apply(t,r)}return t}function ot(o){for(var e=1;e<arguments.length;e++){var t=arguments[e]!=null?arguments[e]:{};e%2?it(Object(t),!0).forEach(function(r){gr(o,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(t)):it(Object(t)).forEach(function(r){Object.defineProperty(o,r,Object.getOwnPropertyDescriptor(t,r))})}return o}function gr(o,e,t){return e=br(e),e in o?Object.defineProperty(o,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):o[e]=t,o}function mr(o,e){if(typeof o!="object"||o===null)return o;var t=o[Symbol.toPrimitive];if(t!==void 0){var r=t.call(o,e||"default");if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(o)}function br(o){var e=mr(o,"string");return typeof e=="symbol"?e:String(e)}var st={activateTrap:function(e,t){if(e.length>0){var r=e[e.length-1];r!==t&&r.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var r=e.indexOf(t);r!==-1&&e.splice(r,1),e.length>0&&e[e.length-1].unpause()}},wr=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},xr=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ye=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Fr=function(e){return ye(e)&&!e.shiftKey},Er=function(e){return ye(e)&&e.shiftKey},ut=function(e){return setTimeout(e,0)},lt=function(e,t){var r=-1;return e.every(function(n,a){return t(n)?(r=a,!1):!0}),r},ve=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return typeof e=="function"?e.apply(void 0,r):e},xe=function(e){return e.target.shadowRoot&&typeof e.composedPath=="function"?e.composedPath()[0]:e.target},Sr=[],Ar=function(e,t){var r=(t==null?void 0:t.document)||document,n=(t==null?void 0:t.trapStack)||Sr,a=ot({returnFocusOnDeactivate:!0,escapeDeactivates:!0,delayInitialFocus:!0,isKeyForward:Fr,isKeyBackward:Er},t),i={containers:[],containerGroups:[],tabbableGroups:[],nodeFocusedBeforeActivation:null,mostRecentlyFocusedNode:null,active:!1,paused:!1,delayInitialFocusTimer:void 0,recentNavEvent:void 0},s,u=function(c,f,p){return c&&c[f]!==void 0?c[f]:a[p||f]},l=function(c,f){var p=typeof(f==null?void 0:f.composedPath)=="function"?f.composedPath():void 0;return i.containerGroups.findIndex(function(w){var T=w.container,O=w.tabbableNodes;return T.contains(c)||(p==null?void 0:p.includes(T))||O.find(function(P){return P===c})})},h=function(c){var f=a[c];if(typeof f=="function"){for(var p=arguments.length,w=new Array(p>1?p-1:0),T=1;T<p;T++)w[T-1]=arguments[T];f=f.apply(void 0,w)}if(f===!0&&(f=void 0),!f){if(f===void 0||f===!1)return f;throw new Error("`".concat(c,"` was specified but was not a node, or did not return a node"))}var O=f;if(typeof f=="string"&&(O=r.querySelector(f),!O))throw new Error("`".concat(c,"` as selector refers to no known node"));return O},d=function(){var c=h("initialFocus");if(c===!1)return!1;if(c===void 0||!De(c,a.tabbableOptions))if(l(r.activeElement)>=0)c=r.activeElement;else{var f=i.tabbableGroups[0],p=f&&f.firstTabbableNode;c=p||h("fallbackFocus")}if(!c)throw new Error("Your focus-trap needs to have at least one focusable element");return c},v=function(){if(i.containerGroups=i.containers.map(function(c){var f=vr(c,a.tabbableOptions),p=pr(c,a.tabbableOptions),w=f.length>0?f[0]:void 0,T=f.length>0?f[f.length-1]:void 0,O=p.find(function(b){return se(b)}),P=p.slice().reverse().find(function(b){return se(b)}),m=!!f.find(function(b){return ie(b)>0});return{container:c,tabbableNodes:f,focusableNodes:p,posTabIndexesFound:m,firstTabbableNode:w,lastTabbableNode:T,firstDomTabbableNode:O,lastDomTabbableNode:P,nextTabbableNode:function(z){var G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,j=f.indexOf(z);return j<0?G?p.slice(p.indexOf(z)+1).find(function(J){return se(J)}):p.slice(0,p.indexOf(z)).reverse().find(function(J){return se(J)}):f[j+(G?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(c){return c.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(c){return c.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},y=function F(c){if(c!==!1&&c!==r.activeElement){if(!c||!c.focus){F(d());return}c.focus({preventScroll:!!a.preventScroll}),i.mostRecentlyFocusedNode=c,wr(c)&&c.select()}},g=function(c){var f=h("setReturnFocus",c);return f||(f===!1?!1:c)},E=function(c){var f=c.target,p=c.event,w=c.isBackward,T=w===void 0?!1:w;f=f||xe(p),v();var O=null;if(i.tabbableGroups.length>0){var P=l(f,p),m=P>=0?i.containerGroups[P]:void 0;if(P<0)T?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(T){var b=lt(i.tabbableGroups,function(U){var H=U.firstTabbableNode;return f===H});if(b<0&&(m.container===f||De(f,a.tabbableOptions)&&!se(f,a.tabbableOptions)&&!m.nextTabbableNode(f,!1))&&(b=P),b>=0){var z=b===0?i.tabbableGroups.length-1:b-1,G=i.tabbableGroups[z];O=ie(f)>=0?G.lastTabbableNode:G.lastDomTabbableNode}else ye(p)||(O=m.nextTabbableNode(f,!1))}else{var j=lt(i.tabbableGroups,function(U){var H=U.lastTabbableNode;return f===H});if(j<0&&(m.container===f||De(f,a.tabbableOptions)&&!se(f,a.tabbableOptions)&&!m.nextTabbableNode(f))&&(j=P),j>=0){var J=j===i.tabbableGroups.length-1?0:j+1,B=i.tabbableGroups[J];O=ie(f)>=0?B.firstTabbableNode:B.firstDomTabbableNode}else ye(p)||(O=m.nextTabbableNode(f))}}else O=h("fallbackFocus");return O},x=function(c){var f=xe(c);if(!(l(f,c)>=0)){if(ve(a.clickOutsideDeactivates,c)){s.deactivate({returnFocus:a.returnFocusOnDeactivate});return}ve(a.allowOutsideClick,c)||c.preventDefault()}},C=function(c){var f=xe(c),p=l(f,c)>=0;if(p||f instanceof Document)p&&(i.mostRecentlyFocusedNode=f);else{c.stopImmediatePropagation();var w,T=!0;if(i.mostRecentlyFocusedNode)if(ie(i.mostRecentlyFocusedNode)>0){var O=l(i.mostRecentlyFocusedNode),P=i.containerGroups[O].tabbableNodes;if(P.length>0){var m=P.findIndex(function(b){return b===i.mostRecentlyFocusedNode});m>=0&&(a.isKeyForward(i.recentNavEvent)?m+1<P.length&&(w=P[m+1],T=!1):m-1>=0&&(w=P[m-1],T=!1))}}else i.containerGroups.some(function(b){return b.tabbableNodes.some(function(z){return ie(z)>0})})||(T=!1);else T=!1;T&&(w=E({target:i.mostRecentlyFocusedNode,isBackward:a.isKeyBackward(i.recentNavEvent)})),y(w||i.mostRecentlyFocusedNode||d())}i.recentNavEvent=void 0},N=function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=c;var p=E({event:c,isBackward:f});p&&(ye(c)&&c.preventDefault(),y(p))},A=function(c){if(xr(c)&&ve(a.escapeDeactivates,c)!==!1){c.preventDefault(),s.deactivate();return}(a.isKeyForward(c)||a.isKeyBackward(c))&&N(c,a.isKeyBackward(c))},M=function(c){var f=xe(c);l(f,c)>=0||ve(a.clickOutsideDeactivates,c)||ve(a.allowOutsideClick,c)||(c.preventDefault(),c.stopImmediatePropagation())},L=function(){if(i.active)return st.activateTrap(n,s),i.delayInitialFocusTimer=a.delayInitialFocus?ut(function(){y(d())}):y(d()),r.addEventListener("focusin",C,!0),r.addEventListener("mousedown",x,{capture:!0,passive:!1}),r.addEventListener("touchstart",x,{capture:!0,passive:!1}),r.addEventListener("click",M,{capture:!0,passive:!1}),r.addEventListener("keydown",A,{capture:!0,passive:!1}),s},D=function(){if(i.active)return r.removeEventListener("focusin",C,!0),r.removeEventListener("mousedown",x,!0),r.removeEventListener("touchstart",x,!0),r.removeEventListener("click",M,!0),r.removeEventListener("keydown",A,!0),s},k=function(c){var f=c.some(function(p){var w=Array.from(p.removedNodes);return w.some(function(T){return T===i.mostRecentlyFocusedNode})});f&&y(d())},I=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(k):void 0,R=function(){I&&(I.disconnect(),i.active&&!i.paused&&i.containers.map(function(c){I.observe(c,{subtree:!0,childList:!0})}))};return s={get active(){return i.active},get paused(){return i.paused},activate:function(c){if(i.active)return this;var f=u(c,"onActivate"),p=u(c,"onPostActivate"),w=u(c,"checkCanFocusTrap");w||v(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=r.activeElement,f==null||f();var T=function(){w&&v(),L(),R(),p==null||p()};return w?(w(i.containers.concat()).then(T,T),this):(T(),this)},deactivate:function(c){if(!i.active)return this;var f=ot({onDeactivate:a.onDeactivate,onPostDeactivate:a.onPostDeactivate,checkCanReturnFocus:a.checkCanReturnFocus},c);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,D(),i.active=!1,i.paused=!1,R(),st.deactivateTrap(n,s);var p=u(f,"onDeactivate"),w=u(f,"onPostDeactivate"),T=u(f,"checkCanReturnFocus"),O=u(f,"returnFocus","returnFocusOnDeactivate");p==null||p();var P=function(){ut(function(){O&&y(g(i.nodeFocusedBeforeActivation)),w==null||w()})};return O&&T?(T(g(i.nodeFocusedBeforeActivation)).then(P,P),this):(P(),this)},pause:function(c){if(i.paused||!i.active)return this;var f=u(c,"onPause"),p=u(c,"onPostPause");return i.paused=!0,f==null||f(),D(),R(),p==null||p(),this},unpause:function(c){if(!i.paused||!i.active)return this;var f=u(c,"onUnpause"),p=u(c,"onPostUnpause");return i.paused=!1,f==null||f(),v(),L(),R(),p==null||p(),this},updateContainerElements:function(c){var f=[].concat(c).filter(Boolean);return i.containers=f.map(function(p){return typeof p=="string"?r.querySelector(p):p}),i.active&&v(),R(),this}},s.updateContainerElements(e),s};function Cr(o,e={}){let t;const{immediate:r,...n}=e,a=ne(!1),i=ne(!1),s=d=>t&&t.activate(d),u=d=>t&&t.deactivate(d),l=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)};return ze(()=>Nt(o),d=>{d&&(t=Ar(d,{...n,onActivate(){a.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){a.value=!1,e.onDeactivate&&e.onDeactivate()}}),r&&s())},{flush:"post"}),kt(()=>u()),{hasFocus:a,isPaused:i,activate:s,deactivate:u,pause:l,unpause:h}}class le{constructor(e,t=!0,r=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=r,this.iframesTimeout=n}static matches(e,t){const r=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let a=!1;return r.every(i=>n.call(e,i)?(a=!0,!1):!0),a}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(r=>{const n=t.filter(a=>a.contains(r)).length>0;t.indexOf(r)===-1&&!n&&t.push(r)}),t}getIframeContents(e,t,r=()=>{}){let n;try{const a=e.contentWindow;if(n=a.document,!a||!n)throw new Error("iframe inaccessible")}catch{r()}n&&t(n)}isIframeBlank(e){const t="about:blank",r=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&r!==t&&r}observeIframeLoad(e,t,r){let n=!1,a=null;const i=()=>{if(!n){n=!0,clearTimeout(a);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,r))}catch{r()}}};e.addEventListener("load",i),a=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,r){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,r):this.getIframeContents(e,t,r):this.observeIframeLoad(e,t,r)}catch{r()}}waitForIframes(e,t){let r=0;this.forEachIframe(e,()=>!0,n=>{r++,this.waitForIframes(n.querySelector("html"),()=>{--r||t()})},n=>{n||t()})}forEachIframe(e,t,r,n=()=>{}){let a=e.querySelectorAll("iframe"),i=a.length,s=0;a=Array.prototype.slice.call(a);const u=()=>{--i<=0&&n(s)};i||u(),a.forEach(l=>{le.matches(l,this.exclude)?u():this.onIframeReady(l,h=>{t(l)&&(s++,r(h)),u()},u)})}createIterator(e,t,r){return document.createNodeIterator(e,t,r,!1)}createInstanceOnIframe(e){return new le(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,r){const n=e.compareDocumentPosition(r),a=Node.DOCUMENT_POSITION_PRECEDING;if(n&a)if(t!==null){const i=t.compareDocumentPosition(r),s=Node.DOCUMENT_POSITION_FOLLOWING;if(i&s)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let r;return t===null?r=e.nextNode():r=e.nextNode()&&e.nextNode(),{prevNode:t,node:r}}checkIframeFilter(e,t,r,n){let a=!1,i=!1;return n.forEach((s,u)=>{s.val===r&&(a=u,i=s.handled)}),this.compareNodeIframe(e,t,r)?(a===!1&&!i?n.push({val:r,handled:!0}):a!==!1&&!i&&(n[a].handled=!0),!0):(a===!1&&n.push({val:r,handled:!1}),!1)}handleOpenIframes(e,t,r,n){e.forEach(a=>{a.handled||this.getIframeContents(a.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,r,n)})})}iterateThroughNodes(e,t,r,n,a){const i=this.createIterator(t,e,n);let s=[],u=[],l,h,d=()=>({prevNode:h,node:l}=this.getIteratorNode(i),l);for(;d();)this.iframes&&this.forEachIframe(t,v=>this.checkIframeFilter(l,h,v,s),v=>{this.createInstanceOnIframe(v).forEachNode(e,y=>u.push(y),n)}),u.push(l);u.forEach(v=>{r(v)}),this.iframes&&this.handleOpenIframes(s,e,r,n),a()}forEachNode(e,t,r,n=()=>{}){const a=this.getContexts();let i=a.length;i||n(),a.forEach(s=>{const u=()=>{this.iterateThroughNodes(e,s,t,r,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(s,u):u()})}}let Nr=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new le(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const r=this.opt.log;this.opt.debug&&typeof r=="object"&&typeof r[t]=="function"&&r[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,r=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let a in t)if(t.hasOwnProperty(a)){const i=t[a],s=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(a):this.escapeStr(a),u=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);s!==""&&u!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(s)}|${this.escapeStr(u)})`,`gm${r}`),n+`(${this.processSynomyms(s)}|${this.processSynomyms(u)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,r,n)=>{let a=n.charAt(r+1);return/[(|)\\]/.test(a)||a===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const r=this.opt.ignorePunctuation;return Array.isArray(r)&&r.length&&t.push(this.escapeStr(r.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",r=this.opt.caseSensitive?["aร รกแบฃรฃแบกฤƒแบฑแบฏแบณแบตแบทรขแบงแบฅแบฉแบซแบญรครฅฤฤ…","Aร€รแบขรƒแบ ฤ‚แบฐแบฎแบฒแบดแบถร‚แบฆแบคแบจแบชแบฌร„ร…ฤ€ฤ„","cรงฤ‡ฤ","Cร‡ฤ†ฤŒ","dฤ‘ฤ","DฤฤŽ","eรจรฉแบปแบฝแบนรชแปแบฟแปƒแป…แป‡รซฤ›ฤ“ฤ™","Eรˆร‰แบบแบผแบธรŠแป€แบพแป‚แป„แป†ร‹ฤšฤ’ฤ˜","iรฌรญแป‰ฤฉแป‹รฎรฏฤซ","IรŒรแปˆฤจแปŠรŽรฤช","lล‚","Lล","nรฑลˆล„","Nร‘ล‡ลƒ","oรฒรณแปรตแปรดแป“แป‘แป•แป—แป™ฦกแปŸแปกแป›แปแปฃรถรธล","Oร’ร“แปŽร•แปŒร”แป’แปแป”แป–แป˜ฦ แปžแป แปšแปœแปขร–ร˜ลŒ","rล™","Rล˜","sลกล›ศ™ลŸ","Sล ลšศ˜ลž","tลฅศ›ลฃ","Tลคศšลข","uรนรบแปงลฉแปฅฦฐแปซแปฉแปญแปฏแปฑรปรผลฏลซ","Uร™รšแปฆลจแปคฦฏแปชแปจแปฌแปฎแปฐร›รœลฎลช","yรฝแปณแปทแปนแปตรฟ","Yรแปฒแปถแปธแปดลธ","zลพลผลบ","Zลฝลปลน"]:["aร รกแบฃรฃแบกฤƒแบฑแบฏแบณแบตแบทรขแบงแบฅแบฉแบซแบญรครฅฤฤ…Aร€รแบขรƒแบ ฤ‚แบฐแบฎแบฒแบดแบถร‚แบฆแบคแบจแบชแบฌร„ร…ฤ€ฤ„","cรงฤ‡ฤCร‡ฤ†ฤŒ","dฤ‘ฤDฤฤŽ","eรจรฉแบปแบฝแบนรชแปแบฟแปƒแป…แป‡รซฤ›ฤ“ฤ™Eรˆร‰แบบแบผแบธรŠแป€แบพแป‚แป„แป†ร‹ฤšฤ’ฤ˜","iรฌรญแป‰ฤฉแป‹รฎรฏฤซIรŒรแปˆฤจแปŠรŽรฤช","lล‚Lล","nรฑลˆล„Nร‘ล‡ลƒ","oรฒรณแปรตแปรดแป“แป‘แป•แป—แป™ฦกแปŸแปกแป›แปแปฃรถรธลOร’ร“แปŽร•แปŒร”แป’แปแป”แป–แป˜ฦ แปžแป แปšแปœแปขร–ร˜ลŒ","rล™Rล˜","sลกล›ศ™ลŸSล ลšศ˜ลž","tลฅศ›ลฃTลคศšลข","uรนรบแปงลฉแปฅฦฐแปซแปฉแปญแปฏแปฑรปรผลฏลซUร™รšแปฆลจแปคฦฏแปชแปจแปฌแปฎแปฐร›รœลฎลช","yรฝแปณแปทแปนแปตรฟYรแปฒแปถแปธแปดลธ","zลพลผลบZลฝลปลน"];let n=[];return e.split("").forEach(a=>{r.every(i=>{if(i.indexOf(a)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ยกยฟ";let r=this.opt.accuracy,n=typeof r=="string"?r:r.value,a=typeof r=="string"?[]:r.limiters,i="";switch(a.forEach(s=>{i+=`|${this.escapeStr(s)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(r=>{this.opt.separateWordSearch?r.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):r.trim()&&t.indexOf(r)===-1&&t.push(r)}),{keywords:t.sort((r,n)=>n.length-r.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let r=0;return e.sort((n,a)=>n.start-a.start).forEach(n=>{let{start:a,end:i,valid:s}=this.callNoMatchOnInvalidRanges(n,r);s&&(n.start=a,n.length=i-a,t.push(n),r=i)}),t}callNoMatchOnInvalidRanges(e,t){let r,n,a=!1;return e&&typeof e.start<"u"?(r=parseInt(e.start,10),n=r+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-r>0?a=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:r,end:n,valid:a}}checkWhitespaceRanges(e,t,r){let n,a=!0,i=r.length,s=t-i,u=parseInt(e.start,10)-s;return u=u>i?i:u,n=u+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),u<0||n-u<0||u>i||n>i?(a=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):r.substring(u,n).replace(/\s+/g,"")===""&&(a=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:u,end:n,valid:a}}getTextNodes(e){let t="",r=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{r.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:r})})}matchesExclude(e){return le.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,r){const n=this.opt.element?this.opt.element:"mark",a=e.splitText(t),i=a.splitText(r-t);let s=document.createElement(n);return s.setAttribute("data-markjs","true"),this.opt.className&&s.setAttribute("class",this.opt.className),s.textContent=a.textContent,a.parentNode.replaceChild(s,a),i}wrapRangeInMappedTextNode(e,t,r,n,a){e.nodes.every((i,s)=>{const u=e.nodes[s+1];if(typeof u>"u"||u.start>t){if(!n(i.node))return!1;const l=t-i.start,h=(r>i.end?i.end:r)-i.start,d=e.value.substr(0,i.start),v=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,l,h),e.value=d+v,e.nodes.forEach((y,g)=>{g>=s&&(e.nodes[g].start>0&&g!==s&&(e.nodes[g].start-=h),e.nodes[g].end-=h)}),r-=h,a(i.node.previousSibling,i.start),r>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,r,n,a){const i=t===0?0:t+1;this.getTextNodes(s=>{s.nodes.forEach(u=>{u=u.node;let l;for(;(l=e.exec(u.textContent))!==null&&l[i]!=="";){if(!r(l[i],u))continue;let h=l.index;if(i!==0)for(let d=1;d<i;d++)h+=l[d].length;u=this.wrapRangeInTextNode(u,h,h+l[i].length),n(u.previousSibling),e.lastIndex=0}}),a()})}wrapMatchesAcrossElements(e,t,r,n,a){const i=t===0?0:t+1;this.getTextNodes(s=>{let u;for(;(u=e.exec(s.value))!==null&&u[i]!=="";){let l=u.index;if(i!==0)for(let d=1;d<i;d++)l+=u[d].length;const h=l+u[i].length;this.wrapRangeInMappedTextNode(s,l,h,d=>r(u[i],d),(d,v)=>{e.lastIndex=v,n(d)})}a()})}wrapRangeFromIndex(e,t,r,n){this.getTextNodes(a=>{const i=a.value.length;e.forEach((s,u)=>{let{start:l,end:h,valid:d}=this.checkWhitespaceRanges(s,i,a.value);d&&this.wrapRangeInMappedTextNode(a,l,h,v=>t(v,s,a.value.substring(l,h),u),v=>{r(v,s)})}),n()})}unwrapMatches(e){const t=e.parentNode;let r=document.createDocumentFragment();for(;e.firstChild;)r.appendChild(e.removeChild(e.firstChild));t.replaceChild(r,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let r=0,n="wrapMatches";const a=i=>{r++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,s)=>this.opt.filter(s,i,r),a,()=>{r===0&&this.opt.noMatch(e),this.opt.done(r)})}mark(e,t){this.opt=t;let r=0,n="wrapMatches";const{keywords:a,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),s=this.opt.caseSensitive?"":"i",u=l=>{let h=new RegExp(this.createRegExp(l),`gm${s}`),d=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(v,y)=>this.opt.filter(y,l,r,d),v=>{d++,r++,this.opt.each(v)},()=>{d===0&&this.opt.noMatch(l),a[i-1]===l?this.opt.done(r):u(a[a.indexOf(l)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(r):u(a[0])}markRanges(e,t){this.opt=t;let r=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(a,i,s,u)=>this.opt.filter(a,i,s,u),(a,i)=>{r++,this.opt.each(a,i)},()=>{this.opt.done(r)})):this.opt.done(r)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,r=>{this.unwrapMatches(r)},r=>{const n=le.matches(r,t),a=this.matchesExclude(r);return!n||a?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function kr(o){const e=new Nr(o);return this.mark=(t,r)=>(e.mark(t,r),this),this.markRegExp=(t,r)=>(e.markRegExp(t,r),this),this.markRanges=(t,r)=>(e.markRanges(t,r),this),this.unmark=t=>(e.unmark(t),this),this}var V=function(){return V=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++){t=arguments[r];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a])}return e},V.apply(this,arguments)};function Tr(o,e,t,r){function n(a){return a instanceof t?a:new t(function(i){i(a)})}return new(t||(t=Promise))(function(a,i){function s(h){try{l(r.next(h))}catch(d){i(d)}}function u(h){try{l(r.throw(h))}catch(d){i(d)}}function l(h){h.done?a(h.value):n(h.value).then(s,u)}l((r=r.apply(o,e||[])).next())})}function Ir(o,e){var t={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},r,n,a,i;return i={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function s(l){return function(h){return u([l,h])}}function u(l){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,l[0]&&(t=0)),t;)try{if(r=1,n&&(a=l[0]&2?n.return:l[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,l[1])).done)return a;switch(n=0,a&&(l=[l[0]&2,a.value]),l[0]){case 0:case 1:a=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,n=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(a=t.trys,!(a=a.length>0&&a[a.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]<a[3])){t.label=l[1];break}if(l[0]===6&&t.label<a[1]){t.label=a[1],a=l;break}if(a&&t.label<a[2]){t.label=a[2],t.ops.push(l);break}a[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(o,t)}catch(h){l=[6,h],n=0}finally{r=a=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}function _(o){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&o[e],r=0;if(t)return t.call(o);if(o&&typeof o.length=="number")return{next:function(){return o&&r>=o.length&&(o=void 0),{value:o&&o[r++],done:!o}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function $(o,e){var t=typeof Symbol=="function"&&o[Symbol.iterator];if(!t)return o;var r=t.call(o),n,a=[],i;try{for(;(e===void 0||e-- >0)&&!(n=r.next()).done;)a.push(n.value)}catch(s){i={error:s}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(i)throw i.error}}return a}var Dr="ENTRIES",xt="KEYS",Ft="VALUES",K="",_e=function(){function o(e,t){var r=e._tree,n=Array.from(r.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:r,keys:n}]:[]}return o.prototype.next=function(){var e=this.dive();return this.backtrack(),e},o.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var e=ue(this._path),t=e.node,r=e.keys;if(ue(r)===K)return{done:!1,value:this.result()};var n=t.get(ue(r));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()},o.prototype.backtrack=function(){if(this._path.length!==0){var e=ue(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}},o.prototype.key=function(){return this.set._prefix+this._path.map(function(e){var t=e.keys;return ue(t)}).filter(function(e){return e!==K}).join("")},o.prototype.value=function(){return ue(this._path).node.get(K)},o.prototype.result=function(){switch(this._type){case Ft:return this.value();case xt:return this.key();default:return[this.key(),this.value()]}},o.prototype[Symbol.iterator]=function(){return this},o}(),ue=function(o){return o[o.length-1]},_r=function(o,e,t){var r=new Map;if(e===void 0)return r;for(var n=e.length+1,a=n+t,i=new Uint8Array(a*n).fill(t+1),s=0;s<n;++s)i[s]=s;for(var u=1;u<a;++u)i[u*n]=u;return Et(o,e,t,r,i,1,n,""),r},Et=function(o,e,t,r,n,a,i,s){var u,l,h=a*i;try{e:for(var d=_(o.keys()),v=d.next();!v.done;v=d.next()){var y=v.value;if(y===K){var g=n[h-1];g<=t&&r.set(s,[o.get(y),g])}else{for(var E=a,x=0;x<y.length;++x,++E){for(var C=y[x],N=i*E,A=N-i,M=n[N],L=Math.max(0,E-t-1),D=Math.min(i-1,E+t),k=L;k<D;++k){var I=C!==e[k],R=n[A+k]+ +I,F=n[A+k+1]+1,c=n[N+k]+1,f=n[N+k+1]=Math.min(R,F,c);f<M&&(M=f)}if(M>t)continue e}Et(o.get(y),e,t,r,n,E,i,s+y)}}}catch(p){u={error:p}}finally{try{v&&!v.done&&(l=d.return)&&l.call(d)}finally{if(u)throw u.error}}},Oe=function(){function o(e,t){e===void 0&&(e=new Map),t===void 0&&(t=""),this._size=void 0,this._tree=e,this._prefix=t}return o.prototype.atPrefix=function(e){var t,r;if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");var n=$(Ne(this._tree,e.slice(this._prefix.length)),2),a=n[0],i=n[1];if(a===void 0){var s=$(Ke(i),2),u=s[0],l=s[1];try{for(var h=_(u.keys()),d=h.next();!d.done;d=h.next()){var v=d.value;if(v!==K&&v.startsWith(l)){var y=new Map;return y.set(v.slice(l.length),u.get(v)),new o(y,e)}}}catch(g){t={error:g}}finally{try{d&&!d.done&&(r=h.return)&&r.call(h)}finally{if(t)throw t.error}}}return new o(a,e)},o.prototype.clear=function(){this._size=void 0,this._tree.clear()},o.prototype.delete=function(e){return this._size=void 0,Or(this._tree,e)},o.prototype.entries=function(){return new _e(this,Dr)},o.prototype.forEach=function(e){var t,r;try{for(var n=_(this),a=n.next();!a.done;a=n.next()){var i=$(a.value,2),s=i[0],u=i[1];e(s,u,this)}}catch(l){t={error:l}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},o.prototype.fuzzyGet=function(e,t){return _r(this._tree,e,t)},o.prototype.get=function(e){var t=Ve(this._tree,e);return t!==void 0?t.get(K):void 0},o.prototype.has=function(e){var t=Ve(this._tree,e);return t!==void 0&&t.has(K)},o.prototype.keys=function(){return new _e(this,xt)},o.prototype.set=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Re(this._tree,e);return r.set(K,t),this},Object.defineProperty(o.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var e=this.entries();!e.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),o.prototype.update=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Re(this._tree,e);return r.set(K,t(r.get(K))),this},o.prototype.fetch=function(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;var r=Re(this._tree,e),n=r.get(K);return n===void 0&&r.set(K,n=t()),n},o.prototype.values=function(){return new _e(this,Ft)},o.prototype[Symbol.iterator]=function(){return this.entries()},o.from=function(e){var t,r,n=new o;try{for(var a=_(e),i=a.next();!i.done;i=a.next()){var s=$(i.value,2),u=s[0],l=s[1];n.set(u,l)}}catch(h){t={error:h}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return n},o.fromObject=function(e){return o.from(Object.entries(e))},o}(),Ne=function(o,e,t){var r,n;if(t===void 0&&(t=[]),e.length===0||o==null)return[o,t];try{for(var a=_(o.keys()),i=a.next();!i.done;i=a.next()){var s=i.value;if(s!==K&&e.startsWith(s))return t.push([o,s]),Ne(o.get(s),e.slice(s.length),t)}}catch(u){r={error:u}}finally{try{i&&!i.done&&(n=a.return)&&n.call(a)}finally{if(r)throw r.error}}return t.push([o,e]),Ne(void 0,"",t)},Ve=function(o,e){var t,r;if(e.length===0||o==null)return o;try{for(var n=_(o.keys()),a=n.next();!a.done;a=n.next()){var i=a.value;if(i!==K&&e.startsWith(i))return Ve(o.get(i),e.slice(i.length))}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},Re=function(o,e){var t,r,n=e.length;e:for(var a=0;o&&a<n;){try{for(var i=(t=void 0,_(o.keys())),s=i.next();!s.done;s=i.next()){var u=s.value;if(u!==K&&e[a]===u[0]){for(var l=Math.min(n-a,u.length),h=1;h<l&&e[a+h]===u[h];)++h;var d=o.get(u);if(h===u.length)o=d;else{var v=new Map;v.set(u.slice(h),d),o.set(e.slice(a,a+h),v),o.delete(u),o=v}a+=h;continue e}}}catch(g){t={error:g}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(t)throw t.error}}var y=new Map;return o.set(e.slice(a),y),y}return o},Or=function(o,e){var t=$(Ne(o,e),2),r=t[0],n=t[1];if(r!==void 0){if(r.delete(K),r.size===0)St(n);else if(r.size===1){var a=$(r.entries().next().value,2),i=a[0],s=a[1];At(n,i,s)}}},St=function(o){if(o.length!==0){var e=$(Ke(o),2),t=e[0],r=e[1];if(t.delete(r),t.size===0)St(o.slice(0,-1));else if(t.size===1){var n=$(t.entries().next().value,2),a=n[0],i=n[1];a!==K&&At(o.slice(0,-1),a,i)}}},At=function(o,e,t){if(o.length!==0){var r=$(Ke(o),2),n=r[0],a=r[1];n.set(a+e,t),n.delete(a)}},Ke=function(o){return o[o.length-1]},pe,je="or",Ct="and",Rr="and_not",Mr=function(){function o(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');var t=e.autoVacuum==null||e.autoVacuum===!0?Pe:e.autoVacuum;this._options=V(V(V({},Le),e),{autoVacuum:t,searchOptions:V(V({},ct),e.searchOptions||{}),autoSuggestOptions:V(V({},Vr),e.autoSuggestOptions||{})}),this._index=new Oe,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=We,this.addFields(this._options.fields)}return o.prototype.add=function(e){var t,r,n,a,i,s,u=this._options,l=u.extractField,h=u.tokenize,d=u.processTerm,v=u.fields,y=u.idField,g=l(e,y);if(g==null)throw new Error('MiniSearch: document does not have ID field "'.concat(y,'"'));if(this._idToShortId.has(g))throw new Error("MiniSearch: duplicate ID ".concat(g));var E=this.addDocumentId(g);this.saveStoredFields(E,e);try{for(var x=_(v),C=x.next();!C.done;C=x.next()){var N=C.value,A=l(e,N);if(A!=null){var M=h(A.toString(),N),L=this._fieldIds[N],D=new Set(M).size;this.addFieldLength(E,L,this._documentCount-1,D);try{for(var k=(n=void 0,_(M)),I=k.next();!I.done;I=k.next()){var R=I.value,F=d(R,N);if(Array.isArray(F))try{for(var c=(i=void 0,_(F)),f=c.next();!f.done;f=c.next()){var p=f.value;this.addTerm(L,E,p)}}catch(w){i={error:w}}finally{try{f&&!f.done&&(s=c.return)&&s.call(c)}finally{if(i)throw i.error}}else F&&this.addTerm(L,E,F)}}catch(w){n={error:w}}finally{try{I&&!I.done&&(a=k.return)&&a.call(k)}finally{if(n)throw n.error}}}}}catch(w){t={error:w}}finally{try{C&&!C.done&&(r=x.return)&&r.call(x)}finally{if(t)throw t.error}}},o.prototype.addAll=function(e){var t,r;try{for(var n=_(e),a=n.next();!a.done;a=n.next()){var i=a.value;this.add(i)}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},o.prototype.addAllAsync=function(e,t){var r=this;t===void 0&&(t={});var n=t.chunkSize,a=n===void 0?10:n,i={chunk:[],promise:Promise.resolve()},s=e.reduce(function(h,d,v){var y=h.chunk,g=h.promise;return y.push(d),(v+1)%a===0?{chunk:[],promise:g.then(function(){return new Promise(function(E){return setTimeout(E,0)})}).then(function(){return r.addAll(y)})}:{chunk:y,promise:g}},i),u=s.chunk,l=s.promise;return l.then(function(){return r.addAll(u)})},o.prototype.remove=function(e){var t,r,n,a,i,s,u=this._options,l=u.tokenize,h=u.processTerm,d=u.extractField,v=u.fields,y=u.idField,g=d(e,y);if(g==null)throw new Error('MiniSearch: document does not have ID field "'.concat(y,'"'));var E=this._idToShortId.get(g);if(E==null)throw new Error("MiniSearch: cannot remove document with ID ".concat(g,": it is not in the index"));try{for(var x=_(v),C=x.next();!C.done;C=x.next()){var N=C.value,A=d(e,N);if(A!=null){var M=l(A.toString(),N),L=this._fieldIds[N],D=new Set(M).size;this.removeFieldLength(E,L,this._documentCount,D);try{for(var k=(n=void 0,_(M)),I=k.next();!I.done;I=k.next()){var R=I.value,F=h(R,N);if(Array.isArray(F))try{for(var c=(i=void 0,_(F)),f=c.next();!f.done;f=c.next()){var p=f.value;this.removeTerm(L,E,p)}}catch(w){i={error:w}}finally{try{f&&!f.done&&(s=c.return)&&s.call(c)}finally{if(i)throw i.error}}else F&&this.removeTerm(L,E,F)}}catch(w){n={error:w}}finally{try{I&&!I.done&&(a=k.return)&&a.call(k)}finally{if(n)throw n.error}}}}}catch(w){t={error:w}}finally{try{C&&!C.done&&(r=x.return)&&r.call(x)}finally{if(t)throw t.error}}this._storedFields.delete(E),this._documentIds.delete(E),this._idToShortId.delete(g),this._fieldLength.delete(E),this._documentCount-=1},o.prototype.removeAll=function(e){var t,r;if(e)try{for(var n=_(e),a=n.next();!a.done;a=n.next()){var i=a.value;this.remove(i)}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Oe,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},o.prototype.discard=function(e){var t=this,r=this._idToShortId.get(e);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(e,": it is not in the index"));this._idToShortId.delete(e),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(n,a){t.removeFieldLength(r,a,t._documentCount,n)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},o.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var e=this._options.autoVacuum,t=e.minDirtFactor,r=e.minDirtCount,n=e.batchSize,a=e.batchWait;this.conditionalVacuum({batchSize:n,batchWait:a},{minDirtCount:r,minDirtFactor:t})}},o.prototype.discardAll=function(e){var t,r,n=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var a=_(e),i=a.next();!i.done;i=a.next()){var s=i.value;this.discard(s)}}catch(u){t={error:u}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}}finally{this._options.autoVacuum=n}this.maybeAutoVacuum()},o.prototype.replace=function(e){var t=this._options,r=t.idField,n=t.extractField,a=n(e,r);this.discard(a),this.add(e)},o.prototype.vacuum=function(e){return e===void 0&&(e={}),this.conditionalVacuum(e)},o.prototype.conditionalVacuum=function(e,t){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var n=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=We,r.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)},o.prototype.performVacuuming=function(e,t){return Tr(this,void 0,void 0,function(){var r,n,a,i,s,u,l,h,d,v,y,g,E,x,C,N,A,M,L,D,k,I,R,F,c;return Ir(this,function(f){switch(f.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(t))return[3,10];n=e.batchSize||$e.batchSize,a=e.batchWait||$e.batchWait,i=1,f.label=1;case 1:f.trys.push([1,7,8,9]),s=_(this._index),u=s.next(),f.label=2;case 2:if(u.done)return[3,6];l=$(u.value,2),h=l[0],d=l[1];try{for(v=(I=void 0,_(d)),y=v.next();!y.done;y=v.next()){g=$(y.value,2),E=g[0],x=g[1];try{for(C=(F=void 0,_(x)),N=C.next();!N.done;N=C.next())A=$(N.value,1),M=A[0],!this._documentIds.has(M)&&(x.size<=1?d.delete(E):x.delete(M))}catch(p){F={error:p}}finally{try{N&&!N.done&&(c=C.return)&&c.call(C)}finally{if(F)throw F.error}}}}catch(p){I={error:p}}finally{try{y&&!y.done&&(R=v.return)&&R.call(v)}finally{if(I)throw I.error}}return this._index.get(h).size===0&&this._index.delete(h),i%n!==0?[3,4]:[4,new Promise(function(p){return setTimeout(p,a)})];case 3:f.sent(),f.label=4;case 4:i+=1,f.label=5;case 5:return u=s.next(),[3,2];case 6:return[3,9];case 7:return L=f.sent(),D={error:L},[3,9];case 8:try{u&&!u.done&&(k=s.return)&&k.call(s)}finally{if(D)throw D.error}return[7];case 9:this._dirtCount-=r,f.label=10;case 10:return[4,null];case 11:return f.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},o.prototype.vacuumConditionsMet=function(e){if(e==null)return!0;var t=e.minDirtCount,r=e.minDirtFactor;return t=t||Pe.minDirtCount,r=r||Pe.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=r},Object.defineProperty(o.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),o.prototype.has=function(e){return this._idToShortId.has(e)},o.prototype.getStoredFields=function(e){var t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)},o.prototype.search=function(e,t){var r,n;t===void 0&&(t={});var a=this.executeQuery(e,t),i=[];try{for(var s=_(a),u=s.next();!u.done;u=s.next()){var l=$(u.value,2),h=l[0],d=l[1],v=d.score,y=d.terms,g=d.match,E=y.length,x={id:this._documentIds.get(h),score:v*E,terms:Object.keys(g),match:g};Object.assign(x,this._storedFields.get(h)),(t.filter==null||t.filter(x))&&i.push(x)}}catch(C){r={error:C}}finally{try{u&&!u.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}return i.sort(dt),i},o.prototype.autoSuggest=function(e,t){var r,n,a,i;t===void 0&&(t={}),t=V(V({},this._options.autoSuggestOptions),t);var s=new Map;try{for(var u=_(this.search(e,t)),l=u.next();!l.done;l=u.next()){var h=l.value,d=h.score,v=h.terms,y=v.join(" "),g=s.get(y);g!=null?(g.score+=d,g.count+=1):s.set(y,{score:d,terms:v,count:1})}}catch(L){r={error:L}}finally{try{l&&!l.done&&(n=u.return)&&n.call(u)}finally{if(r)throw r.error}}var E=[];try{for(var x=_(s),C=x.next();!C.done;C=x.next()){var N=$(C.value,2),g=N[0],A=N[1],d=A.score,v=A.terms,M=A.count;E.push({suggestion:g,terms:v,score:d/M})}}catch(L){a={error:L}}finally{try{C&&!C.done&&(i=x.return)&&i.call(x)}finally{if(a)throw a.error}}return E.sort(dt),E},Object.defineProperty(o.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(o.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),o.loadJSON=function(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)},o.getDefault=function(e){if(Le.hasOwnProperty(e))return Me(Le,e);throw new Error('MiniSearch: unknown option "'.concat(e,'"'))},o.loadJS=function(e,t){var r,n,a,i,s,u,l=e.index,h=e.documentCount,d=e.nextId,v=e.documentIds,y=e.fieldIds,g=e.fieldLength,E=e.averageFieldLength,x=e.storedFields,C=e.dirtCount,N=e.serializationVersion;if(N!==1&&N!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var A=new o(t);A._documentCount=h,A._nextId=d,A._documentIds=Fe(v),A._idToShortId=new Map,A._fieldIds=y,A._fieldLength=Fe(g),A._avgFieldLength=E,A._storedFields=Fe(x),A._dirtCount=C||0,A._index=new Oe;try{for(var M=_(A._documentIds),L=M.next();!L.done;L=M.next()){var D=$(L.value,2),k=D[0],I=D[1];A._idToShortId.set(I,k)}}catch(b){r={error:b}}finally{try{L&&!L.done&&(n=M.return)&&n.call(M)}finally{if(r)throw r.error}}try{for(var R=_(l),F=R.next();!F.done;F=R.next()){var c=$(F.value,2),f=c[0],p=c[1],w=new Map;try{for(var T=(s=void 0,_(Object.keys(p))),O=T.next();!O.done;O=T.next()){var P=O.value,m=p[P];N===1&&(m=m.ds),w.set(parseInt(P,10),Fe(m))}}catch(b){s={error:b}}finally{try{O&&!O.done&&(u=T.return)&&u.call(T)}finally{if(s)throw s.error}}A._index.set(f,w)}}catch(b){a={error:b}}finally{try{F&&!F.done&&(i=R.return)&&i.call(R)}finally{if(a)throw a.error}}return A},o.prototype.executeQuery=function(e,t){var r=this;if(t===void 0&&(t={}),typeof e!="string"){var n=V(V(V({},t),e),{queries:void 0}),a=e.queries.map(function(x){return r.executeQuery(x,n)});return this.combineResults(a,n.combineWith)}var i=this._options,s=i.tokenize,u=i.processTerm,l=i.searchOptions,h=V(V({tokenize:s,processTerm:u},l),t),d=h.tokenize,v=h.processTerm,y=d(e).flatMap(function(x){return v(x)}).filter(function(x){return!!x}),g=y.map(Br(h)),E=g.map(function(x){return r.executeQuerySpec(x,h)});return this.combineResults(E,h.combineWith)},o.prototype.executeQuerySpec=function(e,t){var r,n,a,i,s=V(V({},this._options.searchOptions),t),u=(s.fields||this._options.fields).reduce(function(P,m){var b;return V(V({},P),(b={},b[m]=Me(s.boost,m)||1,b))},{}),l=s.boostDocument,h=s.weights,d=s.maxFuzzy,v=s.bm25,y=V(V({},ct.weights),h),g=y.fuzzy,E=y.prefix,x=this._index.get(e.term),C=this.termResults(e.term,e.term,1,x,u,l,v),N,A;if(e.prefix&&(N=this._index.atPrefix(e.term)),e.fuzzy){var M=e.fuzzy===!0?.2:e.fuzzy,L=M<1?Math.min(d,Math.round(e.term.length*M)):M;L&&(A=this._index.fuzzyGet(e.term,L))}if(N)try{for(var D=_(N),k=D.next();!k.done;k=D.next()){var I=$(k.value,2),R=I[0],F=I[1],c=R.length-e.term.length;if(c){A==null||A.delete(R);var f=E*R.length/(R.length+.3*c);this.termResults(e.term,R,f,F,u,l,v,C)}}}catch(P){r={error:P}}finally{try{k&&!k.done&&(n=D.return)&&n.call(D)}finally{if(r)throw r.error}}if(A)try{for(var p=_(A.keys()),w=p.next();!w.done;w=p.next()){var R=w.value,T=$(A.get(R),2),O=T[0],c=T[1];if(c){var f=g*R.length/(R.length+c);this.termResults(e.term,R,f,O,u,l,v,C)}}}catch(P){a={error:P}}finally{try{w&&!w.done&&(i=p.return)&&i.call(p)}finally{if(a)throw a.error}}return C},o.prototype.combineResults=function(e,t){if(t===void 0&&(t=je),e.length===0)return new Map;var r=t.toLowerCase();return e.reduce(Lr[r])||new Map},o.prototype.toJSON=function(){var e,t,r,n,a=[];try{for(var i=_(this._index),s=i.next();!s.done;s=i.next()){var u=$(s.value,2),l=u[0],h=u[1],d={};try{for(var v=(r=void 0,_(h)),y=v.next();!y.done;y=v.next()){var g=$(y.value,2),E=g[0],x=g[1];d[E]=Object.fromEntries(x)}}catch(C){r={error:C}}finally{try{y&&!y.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}a.push([l,d])}}catch(C){e={error:C}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:a,serializationVersion:2}},o.prototype.termResults=function(e,t,r,n,a,i,s,u){var l,h,d,v,y;if(u===void 0&&(u=new Map),n==null)return u;try{for(var g=_(Object.keys(a)),E=g.next();!E.done;E=g.next()){var x=E.value,C=a[x],N=this._fieldIds[x],A=n.get(N);if(A!=null){var M=A.size,L=this._avgFieldLength[N];try{for(var D=(d=void 0,_(A.keys())),k=D.next();!k.done;k=D.next()){var I=k.value;if(!this._documentIds.has(I)){this.removeTerm(N,I,t),M-=1;continue}var R=i?i(this._documentIds.get(I),t,this._storedFields.get(I)):1;if(R){var F=A.get(I),c=this._fieldLength.get(I)[N],f=zr(F,M,this._documentCount,c,L,s),p=r*C*R*f,w=u.get(I);if(w){w.score+=p,$r(w.terms,e);var T=Me(w.match,t);T?T.push(x):w.match[t]=[x]}else u.set(I,{score:p,terms:[e],match:(y={},y[t]=[x],y)})}}}catch(O){d={error:O}}finally{try{k&&!k.done&&(v=D.return)&&v.call(D)}finally{if(d)throw d.error}}}}}catch(O){l={error:O}}finally{try{E&&!E.done&&(h=g.return)&&h.call(g)}finally{if(l)throw l.error}}return u},o.prototype.addTerm=function(e,t,r){var n=this._index.fetch(r,ht),a=n.get(e);if(a==null)a=new Map,a.set(t,1),n.set(e,a);else{var i=a.get(t);a.set(t,(i||0)+1)}},o.prototype.removeTerm=function(e,t,r){if(!this._index.has(r)){this.warnDocumentChanged(t,e,r);return}var n=this._index.fetch(r,ht),a=n.get(e);a==null||a.get(t)==null?this.warnDocumentChanged(t,e,r):a.get(t)<=1?a.size<=1?n.delete(e):a.delete(t):a.set(t,a.get(t)-1),this._index.get(r).size===0&&this._index.delete(r)},o.prototype.warnDocumentChanged=function(e,t,r){var n,a;try{for(var i=_(Object.keys(this._fieldIds)),s=i.next();!s.done;s=i.next()){var u=s.value;if(this._fieldIds[u]===t){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(e),' has changed before removal: term "').concat(r,'" was not present in field "').concat(u,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(l){n={error:l}}finally{try{s&&!s.done&&(a=i.return)&&a.call(i)}finally{if(n)throw n.error}}},o.prototype.addDocumentId=function(e){var t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t},o.prototype.addFields=function(e){for(var t=0;t<e.length;t++)this._fieldIds[e[t]]=t},o.prototype.addFieldLength=function(e,t,r,n){var a=this._fieldLength.get(e);a==null&&this._fieldLength.set(e,a=[]),a[t]=n;var i=this._avgFieldLength[t]||0,s=i*r+n;this._avgFieldLength[t]=s/(r+1)},o.prototype.removeFieldLength=function(e,t,r,n){if(r===1){this._avgFieldLength[t]=0;return}var a=this._avgFieldLength[t]*r-n;this._avgFieldLength[t]=a/(r-1)},o.prototype.saveStoredFields=function(e,t){var r,n,a=this._options,i=a.storeFields,s=a.extractField;if(!(i==null||i.length===0)){var u=this._storedFields.get(e);u==null&&this._storedFields.set(e,u={});try{for(var l=_(i),h=l.next();!h.done;h=l.next()){var d=h.value,v=s(t,d);v!==void 0&&(u[d]=v)}}catch(y){r={error:y}}finally{try{h&&!h.done&&(n=l.return)&&n.call(l)}finally{if(r)throw r.error}}}},o}(),Me=function(o,e){return Object.prototype.hasOwnProperty.call(o,e)?o[e]:void 0},Lr=(pe={},pe[je]=function(o,e){var t,r;try{for(var n=_(e.keys()),a=n.next();!a.done;a=n.next()){var i=a.value,s=o.get(i);if(s==null)o.set(i,e.get(i));else{var u=e.get(i),l=u.score,h=u.terms,d=u.match;s.score=s.score+l,s.match=Object.assign(s.match,d),ft(s.terms,h)}}}catch(v){t={error:v}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return o},pe[Ct]=function(o,e){var t,r,n=new Map;try{for(var a=_(e.keys()),i=a.next();!i.done;i=a.next()){var s=i.value,u=o.get(s);if(u!=null){var l=e.get(s),h=l.score,d=l.terms,v=l.match;ft(u.terms,d),n.set(s,{score:u.score+h,terms:u.terms,match:Object.assign(u.match,v)})}}}catch(y){t={error:y}}finally{try{i&&!i.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}return n},pe[Rr]=function(o,e){var t,r;try{for(var n=_(e.keys()),a=n.next();!a.done;a=n.next()){var i=a.value;o.delete(i)}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return o},pe),Pr={k:1.2,b:.7,d:.5},zr=function(o,e,t,r,n,a){var i=a.k,s=a.b,u=a.d,l=Math.log(1+(t-e+.5)/(e+.5));return l*(u+o*(i+1)/(o+i*(1-s+s*r/n)))},Br=function(o){return function(e,t,r){var n=typeof o.fuzzy=="function"?o.fuzzy(e,t,r):o.fuzzy||!1,a=typeof o.prefix=="function"?o.prefix(e,t,r):o.prefix===!0;return{term:e,fuzzy:n,prefix:a}}},Le={idField:"id",extractField:function(o,e){return o[e]},tokenize:function(o,e){return o.split(Wr)},processTerm:function(o,e){return o.toLowerCase()},fields:void 0,searchOptions:void 0,storeFields:[],logger:function(o,e,t){return console!=null&&console.warn!=null&&console[o](e)},autoVacuum:!0},ct={combineWith:je,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:Pr},Vr={combineWith:Ct,prefix:function(o,e,t){return e===t.length-1}},$e={batchSize:1e3,batchWait:10},We={minDirtFactor:.1,minDirtCount:20},Pe=V(V({},$e),We),$r=function(o,e){o.includes(e)||o.push(e)},ft=function(o,e){var t,r;try{for(var n=_(e),a=n.next();!a.done;a=n.next()){var i=a.value;o.includes(i)||o.push(i)}}catch(s){t={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},dt=function(o,e){var t=o.score,r=e.score;return r-t},ht=function(){return new Map},Fe=function(o){var e,t,r=new Map;try{for(var n=_(Object.keys(o)),a=n.next();!a.done;a=n.next()){var i=a.value;r.set(parseInt(i,10),o[i])}}catch(s){e={error:s}}finally{try{a&&!a.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}return r},Wr=/[\n\r -#%-*,-/:;?@[-\]_{}\u00A0\u00A1\u00A7\u00AB\u00B6\u00B7\u00BB\u00BF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2000-\u200A\u2010-\u2029\u202F-\u2043\u2045-\u2051\u2053-\u205F\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u3000-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]+/u;const Q=o=>(Jt("data-v-7103b5f8"),o=o(),Ut(),o),Kr=["aria-owns"],jr={class:"shell"},Jr=["title"],Ur=Q(()=>S("svg",{class:"search-icon",width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[S("g",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[S("circle",{cx:"11",cy:"11",r:"8"}),S("path",{d:"m21 21l-4.35-4.35"})])],-1)),Hr=[Ur],Gr={class:"search-actions before"},qr=["title"],Qr=Q(()=>S("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M19 12H5m7 7l-7-7l7-7"})],-1)),Yr=[Qr],Zr=["placeholder"],Xr={class:"search-actions"},ea=["title"],ta=Q(()=>S("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M3 14h7v7H3zM3 3h7v7H3zm11 1h7m-7 5h7m-7 6h7m-7 5h7"})],-1)),ra=[ta],aa=["disabled","title"],na=Q(()=>S("svg",{width:"18",height:"18",viewBox:"0 0 24 24","aria-hidden":"true"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M20 5H9l-7 7l7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2Zm-2 4l-6 6m0-6l6 6"})],-1)),ia=[na],oa=["id","role","aria-labelledby"],sa=["aria-selected"],ua=["href","aria-label","onMouseenter","onFocusin"],la={class:"titles"},ca=Q(()=>S("span",{class:"title-icon"},"#",-1)),fa=["innerHTML"],da=Q(()=>S("svg",{width:"18",height:"18",viewBox:"0 0 24 24"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"m9 18l6-6l-6-6"})],-1)),ha={class:"title main"},va=["innerHTML"],pa={key:0,class:"excerpt-wrapper"},ya={key:0,class:"excerpt",inert:""},ga=["innerHTML"],ma=Q(()=>S("div",{class:"excerpt-gradient-bottom"},null,-1)),ba=Q(()=>S("div",{class:"excerpt-gradient-top"},null,-1)),wa={key:0,class:"no-results"},xa={class:"search-keyboard-shortcuts"},Fa=["aria-label"],Ea=Q(()=>S("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 19V5m-7 7l7-7l7 7"})],-1)),Sa=[Ea],Aa=["aria-label"],Ca=Q(()=>S("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[S("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2",d:"M12 5v14m7-7l-7 7l-7-7"})],-1)),Na=[Ca],ka=["aria-label"],Ta=Q(()=>S("svg",{width:"14",height:"14",viewBox:"0 0 24 24"},[S("g",{fill:"none",stroke:"currentcolor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"2"},[S("path",{d:"m9 10l-5 5l5 5"}),S("path",{d:"M20 4v7a4 4 0 0 1-4 4H4"})])],-1)),Ia=[Ta],Da=["aria-label"],_a=Tt({__name:"VPLocalSearchBox",props:{placeholder:{}},emits:["close"],setup(o,{emit:e}){var T,O,P;const t=me(),r=me(),n=me(Xt),a=Yt(),{activate:i}=Cr(t,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:s,theme:u}=a,l=Xe(async()=>{var m,b,z,G,j,J,B,U,H;return at(Mr.loadJSON((z=await((b=(m=n.value)[s.value])==null?void 0:b.call(m)))==null?void 0:z.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((G=u.value.search)==null?void 0:G.provider)==="local"&&((J=(j=u.value.search.options)==null?void 0:j.miniSearch)==null?void 0:J.searchOptions)},...((B=u.value.search)==null?void 0:B.provider)==="local"&&((H=(U=u.value.search.options)==null?void 0:U.miniSearch)==null?void 0:H.options)}))}),d=Te(()=>{var m,b;return((m=u.value.search)==null?void 0:m.provider)==="local"&&((b=u.value.search.options)==null?void 0:b.disableQueryPersistence)===!0}).value?ne(""):It("vitepress:local-search-filter",""),v=Dt("vitepress:local-search-detailed-list",((T=u.value.search)==null?void 0:T.provider)==="local"&&((O=u.value.search.options)==null?void 0:O.detailedView)===!0),y=Te(()=>{var m,b,z;return((m=u.value.search)==null?void 0:m.provider)==="local"&&(((b=u.value.search.options)==null?void 0:b.disableDetailedView)===!0||((z=u.value.search.options)==null?void 0:z.detailedView)===!1)});_t(()=>{y.value&&(v.value=!1)});const g=me([]),E=ne(!1);ze(d,()=>{E.value=!1});const x=Xe(async()=>{if(r.value)return at(new kr(r.value))},null);Ot(()=>[l.value,d.value,v.value],async([m,b,z],G,j)=>{var Je,Ue,He,Ge;let J=!1;if(j(()=>{J=!0}),!m)return;g.value=m.search(b).slice(0,16),E.value=!0;const B=z?await Promise.all(g.value.map(q=>C(q.id))):[];if(J)return;const U=new Map;for(const{id:q,mod:te}of B){const re=q.slice(0,q.indexOf("#"));let X=U.get(re);if(X)continue;X=new Map,U.set(re,X);const Y=te.default??te;if(Y!=null&&Y.render||Y!=null&&Y.setup){const ae=Ht(Y);ae.config.warnHandler=()=>{},ae.provide(Gt,a),Object.defineProperties(ae.config.globalProperties,{$frontmatter:{get(){return a.frontmatter.value}},$params:{get(){return a.page.value.params}}});const qe=document.createElement("div");ae.mount(qe),qe.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(ce=>{var Ze;const ge=(Ze=ce.querySelector("a"))==null?void 0:Ze.getAttribute("href"),Qe=(ge==null?void 0:ge.startsWith("#"))&&ge.slice(1);if(!Qe)return;let Ye="";for(;(ce=ce.nextElementSibling)&&!/^h[1-6]$/i.test(ce.tagName);)Ye+=ce.outerHTML;X.set(Qe,Ye)}),ae.unmount()}if(J)return}const H=new Set;if(g.value=g.value.map(q=>{const[te,re]=q.id.split("#"),X=U.get(te),Y=(X==null?void 0:X.get(re))??"";for(const ae in q.match)H.add(ae);return{...q,text:Y}}),await fe(),J)return;await new Promise(q=>{var te;(te=x.value)==null||te.unmark({done:()=>{var re;(re=x.value)==null||re.markRegExp(w(H),{done:q})}})});const ke=((Je=t.value)==null?void 0:Je.querySelectorAll(".result .excerpt"))??[];for(const q of ke)(Ue=q.querySelector('mark[data-markjs="true"]'))==null||Ue.scrollIntoView({block:"center"});(Ge=(He=r.value)==null?void 0:He.firstElementChild)==null||Ge.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function C(m){const b=qt(m.slice(0,m.indexOf("#")));try{if(!b)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await vt(()=>import(b),[])}}catch(z){return console.error(z),{id:m,mod:{}}}}const N=ne(),A=Te(()=>{var m;return((m=d.value)==null?void 0:m.length)<=0});function M(m=!0){var b,z;(b=N.value)==null||b.focus(),m&&((z=N.value)==null||z.select())}Ie(()=>{M()});function L(m){m.pointerType==="mouse"&&M()}const D=ne(-1),k=ne(!1);ze(g,m=>{D.value=m.length?0:-1,I()});function I(){fe(()=>{const m=document.querySelector(".result.selected");m&&m.scrollIntoView({block:"nearest"})})}be("ArrowUp",m=>{m.preventDefault(),D.value--,D.value<0&&(D.value=g.value.length-1),k.value=!0,I()}),be("ArrowDown",m=>{m.preventDefault(),D.value++,D.value>=g.value.length&&(D.value=0),k.value=!0,I()});const R=Rt();be("Enter",()=>{const m=g.value[D.value];m&&(R.go(m.id),e("close"))}),be("Escape",()=>{e("close")});const F={modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}},c=Zt((P=u.value.search)==null?void 0:P.options,F);Ie(()=>{window.history.pushState(null,"",null)}),Mt("popstate",m=>{m.preventDefault(),e("close")});const f=Lt(Pt?document.body:null);Ie(()=>{fe(()=>{f.value=!0,fe().then(()=>i())})}),zt(()=>{f.value=!1});function p(){d.value="",fe().then(()=>M(!1))}function w(m){return new RegExp([...m].sort((b,z)=>z.length-b.length).map(b=>`(${b.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}return(m,b)=>{var z,G,j,J;return Z(),Bt(jt,{to:"body"},[S("div",{ref_key:"el",ref:t,role:"button","aria-owns":(z=g.value)!=null&&z.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[S("div",{class:"backdrop",onClick:b[0]||(b[0]=B=>m.$emit("close"))}),S("div",jr,[S("form",{class:"search-bar",onPointerup:b[4]||(b[4]=B=>L(B)),onSubmit:b[5]||(b[5]=Vt(()=>{},["prevent"]))},[S("label",{title:m.placeholder,id:"localsearch-label",for:"localsearch-input"},Hr,8,Jr),S("div",Gr,[S("button",{class:"back-button",title:W(c)("modal.backButtonTitle"),onClick:b[1]||(b[1]=B=>m.$emit("close"))},Yr,8,qr)]),$t(S("input",{ref_key:"searchInput",ref:N,"onUpdate:modelValue":b[2]||(b[2]=B=>Kt(d)?d.value=B:null),placeholder:m.placeholder,id:"localsearch-input","aria-labelledby":"localsearch-label",class:"search-input"},null,8,Zr),[[Wt,W(d)]]),S("div",Xr,[y.value?we("",!0):(Z(),ee("button",{key:0,class:et(["toggle-layout-button",{"detailed-list":W(v)}]),title:W(c)("modal.displayDetails"),onClick:b[3]||(b[3]=B=>D.value>-1&&(v.value=!W(v)))},ra,10,ea)),S("button",{class:"clear-button",type:"reset",disabled:A.value,title:W(c)("modal.resetButtonTitle"),onClick:p},ia,8,aa)])],32),S("ul",{ref_key:"resultsEl",ref:r,id:(G=g.value)!=null&&G.length?"localsearch-list":void 0,role:(j=g.value)!=null&&j.length?"listbox":void 0,"aria-labelledby":(J=g.value)!=null&&J.length?"localsearch-label":void 0,class:"results",onMousemove:b[7]||(b[7]=B=>k.value=!1)},[(Z(!0),ee(rt,null,tt(g.value,(B,U)=>(Z(),ee("li",{key:B.id,role:"option","aria-selected":D.value===U?"true":"false"},[S("a",{href:B.id,class:et(["result",{selected:D.value===U}]),"aria-label":[...B.titles,B.title].join(" > "),onMouseenter:H=>!k.value&&(D.value=U),onFocusin:H=>D.value=U,onClick:b[6]||(b[6]=H=>m.$emit("close"))},[S("div",null,[S("div",la,[ca,(Z(!0),ee(rt,null,tt(B.titles,(H,ke)=>(Z(),ee("span",{key:ke,class:"title"},[S("span",{class:"text",innerHTML:H},null,8,fa),da]))),128)),S("span",ha,[S("span",{class:"text",innerHTML:B.title},null,8,va)])]),W(v)?(Z(),ee("div",pa,[B.text?(Z(),ee("div",ya,[S("div",{class:"vp-doc",innerHTML:B.text},null,8,ga)])):we("",!0),ma,ba])):we("",!0)])],42,ua)],8,sa))),128)),W(d)&&!g.value.length&&E.value?(Z(),ee("li",wa,[de(he(W(c)("modal.noResultsText"))+' "',1),S("strong",null,he(W(d)),1),de('" ')])):we("",!0)],40,oa),S("div",xa,[S("span",null,[S("kbd",{"aria-label":W(c)("modal.footer.navigateUpKeyAriaLabel")},Sa,8,Fa),S("kbd",{"aria-label":W(c)("modal.footer.navigateDownKeyAriaLabel")},Na,8,Aa),de(" "+he(W(c)("modal.footer.navigateText")),1)]),S("span",null,[S("kbd",{"aria-label":W(c)("modal.footer.selectKeyAriaLabel")},Ia,8,ka),de(" "+he(W(c)("modal.footer.selectText")),1)]),S("span",null,[S("kbd",{"aria-label":W(c)("modal.footer.closeKeyAriaLabel")},"esc",8,Da),de(" "+he(W(c)("modal.footer.closeText")),1)])])])],8,Kr)])}}});const Pa=Qt(_a,[["__scopeId","data-v-7103b5f8"]]);export{Pa as default};
docs/assets/app.58befdb7.js
@@ -0,0 +1,1 @@
+import{s as o,a1 as p,a2 as i,a3 as u,a4 as c,a5 as l,a6 as d,a7 as f,a8 as m,a9 as h,aa as A,V as g,d as P,u as v,j as y,y as C,ab as w,ac as _,ad as b,ae as E}from"./chunks/framework.54ce79f7.js";import{t as R}from"./chunks/theme.da00fba9.js";function r(e){if(e.extends){const a=r(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=r(R),D=P({name:"VitePressApp",setup(){const{site:e}=v();return y(()=>{C(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),w(),_(),b(),s.setup&&s.setup(),()=>E(s.Layout)}});async function j(){const e=S(),a=O();a.provide(i,e);const t=u(e.route);return a.provide(c,t),a.component("Content",l),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:f}),{app:a,router:e,data:t}}function O(){return m(D)}function S(){let e=o,a;return h(t=>{let n=A(t);return n?(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),o&&(e=!1),g(()=>import(n),[])):null},s.NotFound)}o&&j().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{j as createApp};
docs/assets/getting-started.md.6acf3454.js
@@ -0,0 +1,221 @@
+import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.54ce79f7.js";const F=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started.md","filePath":"getting-started.md"}'),p={name:"getting-started.md"},o=l(`<h1 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to &quot;Getting Started&quot;">โ€‹</a></h1><h2 id="install" tabindex="-1">Install <a class="header-anchor" href="#install" aria-label="Permalink to &quot;Install&quot;">โ€‹</a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">npm</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">i</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">-g</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">zx</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">npm</span><span style="color:#24292E;"> </span><span style="color:#032F62;">i</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">-g</span><span style="color:#24292E;"> </span><span style="color:#032F62;">zx</span></span></code></pre></div><p><strong>Requirement</strong>: Node version &gt;= 16.0.0</p><h2 id="documentation" tabindex="-1">Documentation <a class="header-anchor" href="#documentation" aria-label="Permalink to &quot;Documentation&quot;">โ€‹</a></h2><p><a href="https://webpod.dev/?from=zx"><img src="https://webpod.dev/img/banner.png" alt="Webpod - deploy JavaScript apps" width="190" align="right"></a></p><p>Write your scripts in a file with an <code>.mjs</code> extension in order to use <code>await</code> at the top level. If you prefer the <code>.js</code> extension, wrap your scripts in something like <code>void async function () {...}()</code>.</p><p>Add the following shebang to the beginning of your <code>zx</code> scripts:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#6A737D;">#!/usr/bin/env zx</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6A737D;">#!/usr/bin/env zx</span></span></code></pre></div><p>Now you will be able to run your script like so:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">chmod</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">+x</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">./script.mjs</span></span>
+<span class="line"><span style="color:#B392F0;">./script.mjs</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">chmod</span><span style="color:#24292E;"> </span><span style="color:#032F62;">+x</span><span style="color:#24292E;"> </span><span style="color:#032F62;">./script.mjs</span></span>
+<span class="line"><span style="color:#6F42C1;">./script.mjs</span></span></code></pre></div><p>Or via the <code>zx</code> executable:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">zx</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">./script.mjs</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">zx</span><span style="color:#24292E;"> </span><span style="color:#032F62;">./script.mjs</span></span></code></pre></div><p>All functions (<code>$</code>, <code>cd</code>, <code>fetch</code>, etc) are available straight away without any imports.</p><p>Or import globals explicitly (for better autocomplete in VS Code).</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx/globals&#39;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx/globals&#39;</span></span></code></pre></div><h3 id="command" tabindex="-1"><code>$\`command\` </code> <a class="header-anchor" href="#command" aria-label="Permalink to &quot;\`\`$\`command\` \`\`&quot;">โ€‹</a></h3><p>Executes a given command using the <code>spawn</code> func and returns <a href="#processpromise"><code>ProcessPromise</code></a>.</p><p>Everything passed through <code>\${...}</code> will be automatically escaped and quoted.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> name </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;foo &amp; bar&#39;</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`mkdir \${</span><span style="color:#E1E4E8;">name</span><span style="color:#9ECBFF;">}\`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> name </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;foo &amp; bar&#39;</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`mkdir \${</span><span style="color:#24292E;">name</span><span style="color:#032F62;">}\`</span></span></code></pre></div><p><strong>There is no need to add extra quotes.</strong> Read more about it in <a href="./quotes">quotes</a>.</p><p>You can pass an array of arguments if needed:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> flags </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> [</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--oneline&#39;</span><span style="color:#E1E4E8;">,</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--decorate&#39;</span><span style="color:#E1E4E8;">,</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--color&#39;</span><span style="color:#E1E4E8;">,</span></span>
+<span class="line"><span style="color:#E1E4E8;">]</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`git log \${</span><span style="color:#E1E4E8;">flags</span><span style="color:#9ECBFF;">}\`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> flags </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> [</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--oneline&#39;</span><span style="color:#24292E;">,</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--decorate&#39;</span><span style="color:#24292E;">,</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--color&#39;</span><span style="color:#24292E;">,</span></span>
+<span class="line"><span style="color:#24292E;">]</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`git log \${</span><span style="color:#24292E;">flags</span><span style="color:#032F62;">}\`</span></span></code></pre></div><p>If the executed program returns a non-zero exit code, <a href="#processoutput"><code>ProcessOutput</code></a> will be thrown.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">try</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`exit 1\`</span></span>
+<span class="line"><span style="color:#E1E4E8;">} </span><span style="color:#F97583;">catch</span><span style="color:#E1E4E8;"> (p) {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  console.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">\`Exit code: \${</span><span style="color:#E1E4E8;">p</span><span style="color:#9ECBFF;">.</span><span style="color:#E1E4E8;">exitCode</span><span style="color:#9ECBFF;">}\`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#E1E4E8;">  console.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">\`Error: \${</span><span style="color:#E1E4E8;">p</span><span style="color:#9ECBFF;">.</span><span style="color:#E1E4E8;">stderr</span><span style="color:#9ECBFF;">}\`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">try</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`exit 1\`</span></span>
+<span class="line"><span style="color:#24292E;">} </span><span style="color:#D73A49;">catch</span><span style="color:#24292E;"> (p) {</span></span>
+<span class="line"><span style="color:#24292E;">  console.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(</span><span style="color:#032F62;">\`Exit code: \${</span><span style="color:#24292E;">p</span><span style="color:#032F62;">.</span><span style="color:#24292E;">exitCode</span><span style="color:#032F62;">}\`</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#24292E;">  console.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(</span><span style="color:#032F62;">\`Error: \${</span><span style="color:#24292E;">p</span><span style="color:#032F62;">.</span><span style="color:#24292E;">stderr</span><span style="color:#032F62;">}\`</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h3 id="processpromise" tabindex="-1"><code>ProcessPromise</code> <a class="header-anchor" href="#processpromise" aria-label="Permalink to &quot;\`ProcessPromise\`&quot;">โ€‹</a></h3><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">class</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">ProcessPromise</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">extends</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">Promise</span><span style="color:#E1E4E8;">&lt;</span><span style="color:#B392F0;">ProcessOutput</span><span style="color:#E1E4E8;">&gt; {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#FFAB70;">stdin</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">Writable</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#FFAB70;">stdout</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">Readable</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#FFAB70;">stderr</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">Readable</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#FFAB70;">exitCode</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">Promise</span><span style="color:#E1E4E8;">&lt;</span><span style="color:#79B8FF;">number</span><span style="color:#E1E4E8;">&gt;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#FFAB70;">dest</span><span style="color:#E1E4E8;">)</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">ProcessPromise</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">kill</span><span style="color:#E1E4E8;">()</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">Promise</span><span style="color:#E1E4E8;">&lt;</span><span style="color:#79B8FF;">void</span><span style="color:#E1E4E8;">&gt;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">nothrow</span><span style="color:#E1E4E8;">()</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">this</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">quiet</span><span style="color:#E1E4E8;">()</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">this</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">class</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">ProcessPromise</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">extends</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">Promise</span><span style="color:#24292E;">&lt;</span><span style="color:#6F42C1;">ProcessOutput</span><span style="color:#24292E;">&gt; {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#E36209;">stdin</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">Writable</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#E36209;">stdout</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">Readable</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#E36209;">stderr</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">Readable</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#E36209;">exitCode</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">Promise</span><span style="color:#24292E;">&lt;</span><span style="color:#005CC5;">number</span><span style="color:#24292E;">&gt;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#E36209;">dest</span><span style="color:#24292E;">)</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">ProcessPromise</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">kill</span><span style="color:#24292E;">()</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">Promise</span><span style="color:#24292E;">&lt;</span><span style="color:#005CC5;">void</span><span style="color:#24292E;">&gt;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">nothrow</span><span style="color:#24292E;">()</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">this</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">quiet</span><span style="color:#24292E;">()</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">this</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><p>Read more about the <a href="./process-promise">ProcessPromise</a>.</p><h3 id="processoutput" tabindex="-1"><code>ProcessOutput</code> <a class="header-anchor" href="#processoutput" aria-label="Permalink to &quot;\`ProcessOutput\`&quot;">โ€‹</a></h3><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">class</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">ProcessOutput</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">readonly</span><span style="color:#E1E4E8;"> </span><span style="color:#FFAB70;">stdout</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">string</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">readonly</span><span style="color:#E1E4E8;"> </span><span style="color:#FFAB70;">stderr</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">string</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">readonly</span><span style="color:#E1E4E8;"> </span><span style="color:#FFAB70;">signal</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">string</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">readonly</span><span style="color:#E1E4E8;"> </span><span style="color:#FFAB70;">exitCode</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">number</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">toString</span><span style="color:#E1E4E8;">()</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">string</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// Combined stdout &amp; stderr.</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">class</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">ProcessOutput</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">readonly</span><span style="color:#24292E;"> </span><span style="color:#E36209;">stdout</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">string</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">readonly</span><span style="color:#24292E;"> </span><span style="color:#E36209;">stderr</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">string</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">readonly</span><span style="color:#24292E;"> </span><span style="color:#E36209;">signal</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">string</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">readonly</span><span style="color:#24292E;"> </span><span style="color:#E36209;">exitCode</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">number</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">toString</span><span style="color:#24292E;">()</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">string</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// Combined stdout &amp; stderr.</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><p>The output of the process is captured as-is. Usually, programs print a new line <code>\\n</code> at the end. If <code>ProcessOutput</code> is used as an argument to some other <code>$</code> process, <strong>zx</strong> will use stdout and trim the new line.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> date </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`date\`</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`echo Current date is \${</span><span style="color:#E1E4E8;">date</span><span style="color:#9ECBFF;">}.\`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> date </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`date\`</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`echo Current date is \${</span><span style="color:#24292E;">date</span><span style="color:#032F62;">}.\`</span></span></code></pre></div><h2 id="functions" tabindex="-1">Functions <a class="header-anchor" href="#functions" aria-label="Permalink to &quot;Functions&quot;">โ€‹</a></h2><h3 id="cd" tabindex="-1"><code>cd()</code> <a class="header-anchor" href="#cd" aria-label="Permalink to &quot;\`cd()\`&quot;">โ€‹</a></h3><p>Changes the current working directory.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">cd</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;/tmp&#39;</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`pwd\`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// =&gt; /tmp</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">cd</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;/tmp&#39;</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`pwd\`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// =&gt; /tmp</span></span></code></pre></div><p>Like <code>echo</code>, in addition to <code>string</code> arguments, <code>cd</code> accepts and trims trailing newlines from <code>ProcessOutput</code> enabling common idioms like:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">cd</span><span style="color:#E1E4E8;">(</span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`mktemp -d\`</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">cd</span><span style="color:#24292E;">(</span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`mktemp -d\`</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="fetch" tabindex="-1"><code>fetch()</code> <a class="header-anchor" href="#fetch" aria-label="Permalink to &quot;\`fetch()\`&quot;">โ€‹</a></h3><p>A wrapper around the <a href="https://www.npmjs.com/package/node-fetch" target="_blank" rel="noreferrer">node-fetch</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> resp </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">fetch</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;https://medv.io&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> resp </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">fetch</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;https://medv.io&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="question" tabindex="-1"><code>question()</code> <a class="header-anchor" href="#question" aria-label="Permalink to &quot;\`question()\`&quot;">โ€‹</a></h3><p>A wrapper around the <a href="https://nodejs.org/api/readline.html" target="_blank" rel="noreferrer">readline</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> bear </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">question</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;What kind of bear is best? &#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> bear </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">question</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;What kind of bear is best? &#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="sleep" tabindex="-1"><code>sleep()</code> <a class="header-anchor" href="#sleep" aria-label="Permalink to &quot;\`sleep()\`&quot;">โ€‹</a></h3><p>A wrapper around the <code>setTimeout</code> function.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">sleep</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">1000</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">sleep</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">1000</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="echo" tabindex="-1"><code>echo()</code> <a class="header-anchor" href="#echo" aria-label="Permalink to &quot;\`echo()\`&quot;">โ€‹</a></h3><p>A <code>console.log()</code> alternative which can take <a href="#processoutput">ProcessOutput</a>.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> branch </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`git branch --show-current\`</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#B392F0;">echo</span><span style="color:#9ECBFF;">\`Current branch is \${</span><span style="color:#E1E4E8;">branch</span><span style="color:#9ECBFF;">}.\`</span></span>
+<span class="line"><span style="color:#6A737D;">// or</span></span>
+<span class="line"><span style="color:#B392F0;">echo</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;Current branch is&#39;</span><span style="color:#E1E4E8;">, branch)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> branch </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`git branch --show-current\`</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6F42C1;">echo</span><span style="color:#032F62;">\`Current branch is \${</span><span style="color:#24292E;">branch</span><span style="color:#032F62;">}.\`</span></span>
+<span class="line"><span style="color:#6A737D;">// or</span></span>
+<span class="line"><span style="color:#6F42C1;">echo</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;Current branch is&#39;</span><span style="color:#24292E;">, branch)</span></span></code></pre></div><h3 id="stdin" tabindex="-1"><code>stdin()</code> <a class="header-anchor" href="#stdin" aria-label="Permalink to &quot;\`stdin()\`&quot;">โ€‹</a></h3><p>Returns the stdin as a string.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> content </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">JSON</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">parse</span><span style="color:#E1E4E8;">(</span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">stdin</span><span style="color:#E1E4E8;">())</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> content </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">JSON</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">parse</span><span style="color:#24292E;">(</span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">stdin</span><span style="color:#24292E;">())</span></span></code></pre></div><h3 id="within" tabindex="-1"><code>within()</code> <a class="header-anchor" href="#within" aria-label="Permalink to &quot;\`within()\`&quot;">โ€‹</a></h3><p>Creates a new async context.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`pwd\`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// =&gt; /home/path</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#B392F0;">within</span><span style="color:#E1E4E8;">(</span><span style="color:#F97583;">async</span><span style="color:#E1E4E8;"> () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">cd</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;/tmp&#39;</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">setTimeout</span><span style="color:#E1E4E8;">(</span><span style="color:#F97583;">async</span><span style="color:#E1E4E8;"> () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`pwd\`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// =&gt; /tmp</span></span>
+<span class="line"><span style="color:#E1E4E8;">  }, </span><span style="color:#79B8FF;">1000</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#E1E4E8;">})</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`pwd\`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// =&gt; /home/path</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`pwd\`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// =&gt; /home/path</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6F42C1;">within</span><span style="color:#24292E;">(</span><span style="color:#D73A49;">async</span><span style="color:#24292E;"> () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">cd</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;/tmp&#39;</span><span style="color:#24292E;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">setTimeout</span><span style="color:#24292E;">(</span><span style="color:#D73A49;">async</span><span style="color:#24292E;"> () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">    </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`pwd\`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// =&gt; /tmp</span></span>
+<span class="line"><span style="color:#24292E;">  }, </span><span style="color:#005CC5;">1000</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#24292E;">})</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`pwd\`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// =&gt; /home/path</span></span></code></pre></div><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`node --version\`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// =&gt; v20.2.0</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> version </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">within</span><span style="color:#E1E4E8;">(</span><span style="color:#F97583;">async</span><span style="color:#E1E4E8;"> () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  $.prefix </span><span style="color:#F97583;">+=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;export NVM_DIR=$HOME/.nvm; source $NVM_DIR/nvm.sh; nvm use 16;&#39;</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">return</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`node --version\`</span></span>
+<span class="line"><span style="color:#E1E4E8;">})</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#B392F0;">echo</span><span style="color:#E1E4E8;">(version) </span><span style="color:#6A737D;">// =&gt; v16.20.0</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`node --version\`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// =&gt; v20.2.0</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> version </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">within</span><span style="color:#24292E;">(</span><span style="color:#D73A49;">async</span><span style="color:#24292E;"> () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">  $.prefix </span><span style="color:#D73A49;">+=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;export NVM_DIR=$HOME/.nvm; source $NVM_DIR/nvm.sh; nvm use 16;&#39;</span></span>
+<span class="line"><span style="color:#24292E;">  </span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">return</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`node --version\`</span></span>
+<span class="line"><span style="color:#24292E;">})</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6F42C1;">echo</span><span style="color:#24292E;">(version) </span><span style="color:#6A737D;">// =&gt; v16.20.0</span></span></code></pre></div><h3 id="retry" tabindex="-1"><code>retry()</code> <a class="header-anchor" href="#retry" aria-label="Permalink to &quot;\`retry()\`&quot;">โ€‹</a></h3><p>Retries a callback for a few times. Will return after the first successful attempt, or will throw after specifies attempts count.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">retry</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">10</span><span style="color:#E1E4E8;">, () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`curl https://medv.io\`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With a specified delay between attempts.</span></span>
+<span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">retry</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">20</span><span style="color:#E1E4E8;">, </span><span style="color:#9ECBFF;">&#39;1s&#39;</span><span style="color:#E1E4E8;">, () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`curl https://medv.io\`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With an exponential backoff.</span></span>
+<span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">retry</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">30</span><span style="color:#E1E4E8;">, </span><span style="color:#B392F0;">expBackoff</span><span style="color:#E1E4E8;">(), () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`curl https://medv.io\`</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">retry</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">10</span><span style="color:#24292E;">, () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`curl https://medv.io\`</span><span style="color:#24292E;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With a specified delay between attempts.</span></span>
+<span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">retry</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">20</span><span style="color:#24292E;">, </span><span style="color:#032F62;">&#39;1s&#39;</span><span style="color:#24292E;">, () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`curl https://medv.io\`</span><span style="color:#24292E;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With an exponential backoff.</span></span>
+<span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">retry</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">30</span><span style="color:#24292E;">, </span><span style="color:#6F42C1;">expBackoff</span><span style="color:#24292E;">(), () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`curl https://medv.io\`</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="spinner" tabindex="-1"><code>spinner()</code> <a class="header-anchor" href="#spinner" aria-label="Permalink to &quot;\`spinner()\`&quot;">โ€‹</a></h3><p>Starts a simple CLI spinner.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">spinner</span><span style="color:#E1E4E8;">(() </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`long-running command\`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With a message.</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">spinner</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;working...&#39;</span><span style="color:#E1E4E8;">, () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`sleep 99\`</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">spinner</span><span style="color:#24292E;">(() </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`long-running command\`</span><span style="color:#24292E;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With a message.</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">spinner</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;working...&#39;</span><span style="color:#24292E;">, () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`sleep 99\`</span><span style="color:#24292E;">)</span></span></code></pre></div><h2 id="packages" tabindex="-1">Packages <a class="header-anchor" href="#packages" aria-label="Permalink to &quot;Packages&quot;">โ€‹</a></h2><p>The following packages are available without importing inside scripts.</p><h3 id="chalk-package" tabindex="-1"><code>chalk</code> package <a class="header-anchor" href="#chalk-package" aria-label="Permalink to &quot;\`chalk\` package&quot;">โ€‹</a></h3><p>The <a href="https://www.npmjs.com/package/chalk" target="_blank" rel="noreferrer">chalk</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">console.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(chalk.</span><span style="color:#B392F0;">blue</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;Hello world!&#39;</span><span style="color:#E1E4E8;">))</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">console.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(chalk.</span><span style="color:#6F42C1;">blue</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;Hello world!&#39;</span><span style="color:#24292E;">))</span></span></code></pre></div><h3 id="fs-package" tabindex="-1"><code>fs</code> package <a class="header-anchor" href="#fs-package" aria-label="Permalink to &quot;\`fs\` package&quot;">โ€‹</a></h3><p>The <a href="https://www.npmjs.com/package/fs-extra" target="_blank" rel="noreferrer">fs-extra</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> {version} </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> fs.</span><span style="color:#B392F0;">readJson</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;./package.json&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> {version} </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> fs.</span><span style="color:#6F42C1;">readJson</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;./package.json&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="os-package" tabindex="-1"><code>os</code> package <a class="header-anchor" href="#os-package" aria-label="Permalink to &quot;\`os\` package&quot;">โ€‹</a></h3><p>The <a href="https://nodejs.org/api/os.html" target="_blank" rel="noreferrer">os</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`cd \${</span><span style="color:#E1E4E8;">os</span><span style="color:#9ECBFF;">.</span><span style="color:#B392F0;">homedir</span><span style="color:#9ECBFF;">()</span><span style="color:#9ECBFF;">} &amp;&amp; mkdir example\`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`cd \${</span><span style="color:#24292E;">os</span><span style="color:#032F62;">.</span><span style="color:#6F42C1;">homedir</span><span style="color:#032F62;">()</span><span style="color:#032F62;">} &amp;&amp; mkdir example\`</span></span></code></pre></div><h3 id="path-package" tabindex="-1"><code>path</code> package <a class="header-anchor" href="#path-package" aria-label="Permalink to &quot;\`path\` package&quot;">โ€‹</a></h3><p>The <a href="https://nodejs.org/api/path.html" target="_blank" rel="noreferrer">path</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`mkdir \${</span><span style="color:#E1E4E8;">path</span><span style="color:#9ECBFF;">.</span><span style="color:#B392F0;">join</span><span style="color:#9ECBFF;">(</span><span style="color:#E1E4E8;">basedir</span><span style="color:#9ECBFF;">, </span><span style="color:#9ECBFF;">&#39;output&#39;</span><span style="color:#9ECBFF;">)</span><span style="color:#9ECBFF;">}\`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`mkdir \${</span><span style="color:#24292E;">path</span><span style="color:#032F62;">.</span><span style="color:#6F42C1;">join</span><span style="color:#032F62;">(</span><span style="color:#24292E;">basedir</span><span style="color:#032F62;">, </span><span style="color:#032F62;">&#39;output&#39;</span><span style="color:#032F62;">)</span><span style="color:#032F62;">}\`</span></span></code></pre></div><h3 id="globby-package" tabindex="-1"><code>globby</code> package <a class="header-anchor" href="#globby-package" aria-label="Permalink to &quot;\`globby\` package&quot;">โ€‹</a></h3><p>The <a href="https://github.com/sindresorhus/globby" target="_blank" rel="noreferrer">globby</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> packages </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">glob</span><span style="color:#E1E4E8;">([</span><span style="color:#9ECBFF;">&#39;package.json&#39;</span><span style="color:#E1E4E8;">, </span><span style="color:#9ECBFF;">&#39;packages/*/package.json&#39;</span><span style="color:#E1E4E8;">])</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> packages </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">glob</span><span style="color:#24292E;">([</span><span style="color:#032F62;">&#39;package.json&#39;</span><span style="color:#24292E;">, </span><span style="color:#032F62;">&#39;packages/*/package.json&#39;</span><span style="color:#24292E;">])</span></span></code></pre></div><h3 id="yaml-package" tabindex="-1"><code>yaml</code> package <a class="header-anchor" href="#yaml-package" aria-label="Permalink to &quot;\`yaml\` package&quot;">โ€‹</a></h3><p>The <a href="https://www.npmjs.com/package/yaml" target="_blank" rel="noreferrer">yaml</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">console.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">YAML</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">parse</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;foo: bar&#39;</span><span style="color:#E1E4E8;">).foo)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">console.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">YAML</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">parse</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;foo: bar&#39;</span><span style="color:#24292E;">).foo)</span></span></code></pre></div><h3 id="minimist-package" tabindex="-1"><code>minimist</code> package <a class="header-anchor" href="#minimist-package" aria-label="Permalink to &quot;\`minimist\` package&quot;">โ€‹</a></h3><p>The <a href="https://www.npmjs.com/package/minimist" target="_blank" rel="noreferrer">minimist</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> myCustomArgv </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">minimist</span><span style="color:#E1E4E8;">(process.argv.</span><span style="color:#B392F0;">slice</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">2</span><span style="color:#E1E4E8;">), { boolean: [</span><span style="color:#9ECBFF;">&quot;force&quot;</span><span style="color:#E1E4E8;">, </span><span style="color:#9ECBFF;">&quot;help&quot;</span><span style="color:#E1E4E8;">] })</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> myCustomArgv </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">minimist</span><span style="color:#24292E;">(process.argv.</span><span style="color:#6F42C1;">slice</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">2</span><span style="color:#24292E;">), { boolean: [</span><span style="color:#032F62;">&quot;force&quot;</span><span style="color:#24292E;">, </span><span style="color:#032F62;">&quot;help&quot;</span><span style="color:#24292E;">] })</span></span></code></pre></div><p>A minimist-parsed version of the process args as <code>argv</code> (parsed without any config).</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">if</span><span style="color:#E1E4E8;"> (argv.someFlag) {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">echo</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;yes&#39;</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">if</span><span style="color:#24292E;"> (argv.someFlag) {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">echo</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;yes&#39;</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h3 id="which-package" tabindex="-1"><code>which</code> package <a class="header-anchor" href="#which-package" aria-label="Permalink to &quot;\`which\` package&quot;">โ€‹</a></h3><p>The <a href="https://github.com/npm/node-which" target="_blank" rel="noreferrer">which</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> node </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">which</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;node&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> node </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">which</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;node&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h2 id="configuration" tabindex="-1">Configuration <a class="header-anchor" href="#configuration" aria-label="Permalink to &quot;Configuration&quot;">โ€‹</a></h2><h3 id="shell" tabindex="-1"><code>$.shell</code> <a class="header-anchor" href="#shell" aria-label="Permalink to &quot;\`$.shell\`&quot;">โ€‹</a></h3><p>Specifies what shell is used. Default is <code>which bash</code>.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">$.shell </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;/usr/bin/bash&#39;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">$.shell </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;/usr/bin/bash&#39;</span></span></code></pre></div><p>Or use a CLI argument: <code>--shell=/bin/bash</code></p><h3 id="spawn" tabindex="-1"><code>$.spawn</code> <a class="header-anchor" href="#spawn" aria-label="Permalink to &quot;\`$.spawn\`&quot;">โ€‹</a></h3><p>Specifies a <code>spawn</code> api. Defaults to <code>require(&#39;child_process&#39;).spawn</code>.</p><h3 id="prefix" tabindex="-1"><code>$.prefix</code> <a class="header-anchor" href="#prefix" aria-label="Permalink to &quot;\`$.prefix\`&quot;">โ€‹</a></h3><p>Specifies the command that will be prefixed to all commands run.</p><p>Default is <code>set -euo pipefail;</code>.</p><p>Or use a CLI argument: <code>--prefix=&#39;set -e;&#39;</code></p><h3 id="quote" tabindex="-1"><code>$.quote</code> <a class="header-anchor" href="#quote" aria-label="Permalink to &quot;\`$.quote\`&quot;">โ€‹</a></h3><p>Specifies a function for escaping special characters during command substitution.</p><h3 id="verbose" tabindex="-1"><code>$.verbose</code> <a class="header-anchor" href="#verbose" aria-label="Permalink to &quot;\`$.verbose\`&quot;">โ€‹</a></h3><p>Specifies verbosity. Default is <code>true</code>.</p><p>In verbose mode, <code>zx</code> prints all executed commands alongside with their outputs.</p><p>Or use the CLI argument <code>--quiet</code> to set <code>$.verbose = false</code>.</p><h3 id="env" tabindex="-1"><code>$.env</code> <a class="header-anchor" href="#env" aria-label="Permalink to &quot;\`$.env\`&quot;">โ€‹</a></h3><p>Specifies an environment variables map.</p><p>Defaults to <code>p<wbr>rocess.env</code>.</p><h3 id="cwd" tabindex="-1"><code>$.cwd</code> <a class="header-anchor" href="#cwd" aria-label="Permalink to &quot;\`$.cwd\`&quot;">โ€‹</a></h3><p>Specifies a current working directory of all processes created with the <code>$</code>.</p><p>The <a href="#cd">cd()</a> func changes only <code>process.cwd()</code> and if no <code>$.cwd</code> specified, all <code>$</code> processes use <code>process.cwd()</code> by default (same as <code>spawn</code> behavior).</p><h3 id="log" tabindex="-1"><code>$.log</code> <a class="header-anchor" href="#log" aria-label="Permalink to &quot;\`$.log\`&quot;">โ€‹</a></h3><p>Specifies a <a href="src/core.ts">logging function</a>.</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> { LogEntry, log } </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx/core&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">$.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> (</span><span style="color:#FFAB70;">entry</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">LogEntry</span><span style="color:#E1E4E8;">) </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">switch</span><span style="color:#E1E4E8;"> (entry.kind) {</span></span>
+<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#F97583;">case</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;cmd&#39;</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">      </span><span style="color:#6A737D;">// for example, apply custom data masker for cmd printing</span></span>
+<span class="line"><span style="color:#E1E4E8;">      process.stderr.</span><span style="color:#B392F0;">write</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">masker</span><span style="color:#E1E4E8;">(entry.cmd))</span></span>
+<span class="line"><span style="color:#E1E4E8;">      </span><span style="color:#F97583;">break</span></span>
+<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#F97583;">default</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">      </span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(entry)</span></span>
+<span class="line"><span style="color:#E1E4E8;">  }</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> { LogEntry, log } </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx/core&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">$.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> (</span><span style="color:#E36209;">entry</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">LogEntry</span><span style="color:#24292E;">) </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">switch</span><span style="color:#24292E;"> (entry.kind) {</span></span>
+<span class="line"><span style="color:#24292E;">    </span><span style="color:#D73A49;">case</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;cmd&#39;</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">      </span><span style="color:#6A737D;">// for example, apply custom data masker for cmd printing</span></span>
+<span class="line"><span style="color:#24292E;">      process.stderr.</span><span style="color:#6F42C1;">write</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">masker</span><span style="color:#24292E;">(entry.cmd))</span></span>
+<span class="line"><span style="color:#24292E;">      </span><span style="color:#D73A49;">break</span></span>
+<span class="line"><span style="color:#24292E;">    </span><span style="color:#D73A49;">default</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">      </span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(entry)</span></span>
+<span class="line"><span style="color:#24292E;">  }</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h2 id="polyfills" tabindex="-1">Polyfills <a class="header-anchor" href="#polyfills" aria-label="Permalink to &quot;Polyfills&quot;">โ€‹</a></h2><h3 id="filename-dirname" tabindex="-1"><code>__filename</code> &amp; <code>__dirname</code> <a class="header-anchor" href="#filename-dirname" aria-label="Permalink to &quot;\`__filename\` &amp; \`__dirname\`&quot;">โ€‹</a></h3><p>In <a href="https://nodejs.org/api/esm.html" target="_blank" rel="noreferrer">ESM</a> modules, Node.js does not provide <code>__filename</code> and <code>__dirname</code> globals. As such globals are really handy in scripts, <code>zx</code> provides these for use in <code>.mjs</code> files (when using the <code>zx</code> executable).</p><h3 id="require" tabindex="-1"><code>require()</code> <a class="header-anchor" href="#require" aria-label="Permalink to &quot;\`require()\`&quot;">โ€‹</a></h3><p>In <a href="https://nodejs.org/api/modules.html#modules_module_createrequire_filename" target="_blank" rel="noreferrer">ESM</a> modules, the <code>require()</code> function is not defined. The <code>zx</code> provides <code>require()</code> function, so it can be used with imports in <code>.mjs</code> files (when using <code>zx</code> executable).</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> {version} </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">require</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;./package.json&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> {version} </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">require</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;./package.json&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h2 id="faq" tabindex="-1">FAQ <a class="header-anchor" href="#faq" aria-label="Permalink to &quot;FAQ&quot;">โ€‹</a></h2><h3 id="passing-env-variables" tabindex="-1">Passing env variables <a class="header-anchor" href="#passing-env-variables" aria-label="Permalink to &quot;Passing env variables&quot;">โ€‹</a></h3><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">p<wbr>rocess.env.</span><span style="color:#79B8FF;">FOO</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;bar&#39;</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`echo $FOO\`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">p<wbr>rocess.env.</span><span style="color:#005CC5;">FOO</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;bar&#39;</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`echo $FOO\`</span></span></code></pre></div><h3 id="passing-array-of-values" tabindex="-1">Passing array of values <a class="header-anchor" href="#passing-array-of-values" aria-label="Permalink to &quot;Passing array of values&quot;">โ€‹</a></h3><p>When passing an array of values as an argument to <code>$</code>, items of the array will be escaped individually and concatenated via space.</p><p>Example:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> files </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> [</span><span style="color:#F97583;">...</span><span style="color:#E1E4E8;">]</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`tar cz \${</span><span style="color:#E1E4E8;">files</span><span style="color:#9ECBFF;">}\`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> files </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> [</span><span style="color:#D73A49;">...</span><span style="color:#24292E;">]</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`tar cz \${</span><span style="color:#24292E;">files</span><span style="color:#032F62;">}\`</span></span></code></pre></div><h3 id="importing-into-other-scripts" tabindex="-1">Importing into other scripts <a class="header-anchor" href="#importing-into-other-scripts" aria-label="Permalink to &quot;Importing into other scripts&quot;">โ€‹</a></h3><p>It is possible to make use of <code>$</code> and other functions via explicit imports:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#6A737D;">#!/usr/bin/env node</span></span>
+<span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> { $ } </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`date\`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6A737D;">#!/usr/bin/env node</span></span>
+<span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> { $ } </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`date\`</span></span></code></pre></div><h3 id="scripts-without-extensions" tabindex="-1">Scripts without extensions <a class="header-anchor" href="#scripts-without-extensions" aria-label="Permalink to &quot;Scripts without extensions&quot;">โ€‹</a></h3><p>If script does not have a file extension (like <code>.git/hooks/pre-commit</code>), zx assumes that it is an <a href="https://nodejs.org/api/modules.html#modules_module_createrequire_filename" target="_blank" rel="noreferrer">ESM</a> module.</p><h3 id="markdown-scripts" tabindex="-1">Markdown scripts <a class="header-anchor" href="#markdown-scripts" aria-label="Permalink to &quot;Markdown scripts&quot;">โ€‹</a></h3><p>The <code>zx</code> can execute <a href="./markdown-scripts">scripts written as markdown</a>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">zx</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">docs/markdown.md</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">zx</span><span style="color:#24292E;"> </span><span style="color:#032F62;">docs/markdown.md</span></span></code></pre></div><h3 id="typescript-scripts" tabindex="-1">TypeScript scripts <a class="header-anchor" href="#typescript-scripts" aria-label="Permalink to &quot;TypeScript scripts&quot;">โ€‹</a></h3><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> { $ } </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx&#39;</span></span>
+<span class="line"><span style="color:#6A737D;">// Or</span></span>
+<span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx/globals&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">void</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">async</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">function</span><span style="color:#E1E4E8;"> () {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`ls -la\`</span></span>
+<span class="line"><span style="color:#E1E4E8;">}()</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> { $ } </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx&#39;</span></span>
+<span class="line"><span style="color:#6A737D;">// Or</span></span>
+<span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx/globals&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">void</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">async</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">function</span><span style="color:#24292E;"> () {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`ls -la\`</span></span>
+<span class="line"><span style="color:#24292E;">}()</span></span></code></pre></div><p>Set <a href="https://nodejs.org/api/packages.html#packages_type" target="_blank" rel="noreferrer"><code>&quot;type&quot;: &quot;module&quot;</code></a> in <strong>package.json</strong> and <a href="https://www.typescriptlang.org/tsconfig/#module" target="_blank" rel="noreferrer"><code>&quot;module&quot;: &quot;ESNext&quot;</code></a> in <strong>tsconfig.json</strong>.</p><h3 id="executing-remote-scripts" tabindex="-1">Executing remote scripts <a class="header-anchor" href="#executing-remote-scripts" aria-label="Permalink to &quot;Executing remote scripts&quot;">โ€‹</a></h3><p>If the argument to the <code>zx</code> executable starts with <code>https://</code>, the file will be downloaded and executed.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">zx</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">https://medv.io/game-of-life.js</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">zx</span><span style="color:#24292E;"> </span><span style="color:#032F62;">https://medv.io/game-of-life.js</span></span></code></pre></div><h3 id="executing-scripts-from-stdin" tabindex="-1">Executing scripts from stdin <a class="header-anchor" href="#executing-scripts-from-stdin" aria-label="Permalink to &quot;Executing scripts from stdin&quot;">โ€‹</a></h3><p>The <code>zx</code> supports executing scripts from stdin.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">zx </span><span style="color:#F97583;">&lt;&lt;</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;EOF&#39;</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`pwd\`</span></span>
+<span class="line"><span style="color:#79B8FF;">EOF</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">zx </span><span style="color:#D73A49;">&lt;&lt;</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;EOF&#39;</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`pwd\`</span></span>
+<span class="line"><span style="color:#005CC5;">EOF</span></span></code></pre></div><h3 id="executing-scripts-via-eval" tabindex="-1">Executing scripts via --eval <a class="header-anchor" href="#executing-scripts-via-eval" aria-label="Permalink to &quot;Executing scripts via --eval&quot;">โ€‹</a></h3><p>Evaluate the following argument as a script.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">cat</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">package.json</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">|</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">zx</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">--eval</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;let v = JSON.parse(await stdin()).version; echo(v)&#39;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">cat</span><span style="color:#24292E;"> </span><span style="color:#032F62;">package.json</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">|</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">zx</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">--eval</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;let v = JSON.parse(await stdin()).version; echo(v)&#39;</span></span></code></pre></div><h3 id="installing-dependencies-via-install" tabindex="-1">Installing dependencies via --install <a class="header-anchor" href="#installing-dependencies-via-install" aria-label="Permalink to &quot;Installing dependencies via --install&quot;">โ€‹</a></h3><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#6A737D;">// script.mjs:</span></span>
+<span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> sh </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;tinysh&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">sh.</span><span style="color:#B392F0;">say</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;Hello, world!&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6A737D;">// script.mjs:</span></span>
+<span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> sh </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;tinysh&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">sh.</span><span style="color:#6F42C1;">say</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;Hello, world!&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><p>Add <code>--install</code> flag to the <code>zx</code> command to install missing dependencies automatically.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">zx</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">--install</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">script.mjs</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">zx</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">--install</span><span style="color:#24292E;"> </span><span style="color:#032F62;">script.mjs</span></span></code></pre></div><p>You can also specify needed version by adding comment with <code>@</code> after the import.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> sh </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;tinysh&#39;</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// @^1</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> sh </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;tinysh&#39;</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// @^1</span></span></code></pre></div><h3 id="executing-commands-on-remote-hosts" tabindex="-1">Executing commands on remote hosts <a class="header-anchor" href="#executing-commands-on-remote-hosts" aria-label="Permalink to &quot;Executing commands on remote hosts&quot;">โ€‹</a></h3><p>The <code>zx</code> uses <a href="https://github.com/webpod/webpod" target="_blank" rel="noreferrer">webpod</a> to execute commands on remote hosts.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> { ssh } </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">ssh</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;user@host&#39;</span><span style="color:#E1E4E8;">)</span><span style="color:#9ECBFF;">\`echo Hello, world!\`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> { ssh } </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">ssh</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;user@host&#39;</span><span style="color:#24292E;">)</span><span style="color:#032F62;">\`echo Hello, world!\`</span></span></code></pre></div><h3 id="attaching-a-profile" tabindex="-1">Attaching a profile <a class="header-anchor" href="#attaching-a-profile" aria-label="Permalink to &quot;Attaching a profile&quot;">โ€‹</a></h3><p>By default <code>child_process</code> does not include aliases and bash functions. But you are still able to do it by hand. Just attach necessary directives to the <code>$.prefix</code>.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">$.prefix </span><span style="color:#F97583;">+=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;export NVM_DIR=$HOME/.nvm; source $NVM_DIR/nvm.sh; &#39;</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">\`nvm -v\`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">$.prefix </span><span style="color:#D73A49;">+=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;export NVM_DIR=$HOME/.nvm; source $NVM_DIR/nvm.sh; &#39;</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">\`nvm -v\`</span></span></code></pre></div><h3 id="using-github-actions" tabindex="-1">Using GitHub Actions <a class="header-anchor" href="#using-github-actions" aria-label="Permalink to &quot;Using GitHub Actions&quot;">โ€‹</a></h3><p>The default GitHub Action runner comes with <code>npx</code> installed.</p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#85E89D;">jobs</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#85E89D;">build</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#85E89D;">runs-on</span><span style="color:#E1E4E8;">: </span><span style="color:#9ECBFF;">ubuntu-latest</span></span>
+<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#85E89D;">steps</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">      - </span><span style="color:#85E89D;">uses</span><span style="color:#E1E4E8;">: </span><span style="color:#9ECBFF;">actions/checkout@v3</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">      - </span><span style="color:#85E89D;">name</span><span style="color:#E1E4E8;">: </span><span style="color:#9ECBFF;">Build</span></span>
+<span class="line"><span style="color:#E1E4E8;">        </span><span style="color:#85E89D;">env</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">          </span><span style="color:#85E89D;">FORCE_COLOR</span><span style="color:#E1E4E8;">: </span><span style="color:#79B8FF;">3</span></span>
+<span class="line"><span style="color:#E1E4E8;">        </span><span style="color:#85E89D;">run</span><span style="color:#E1E4E8;">: </span><span style="color:#F97583;">|</span></span>
+<span class="line"><span style="color:#9ECBFF;">          npx zx &lt;&lt;&#39;EOF&#39;</span></span>
+<span class="line"><span style="color:#9ECBFF;">          await $\`...\`</span></span>
+<span class="line"><span style="color:#9ECBFF;">          EOF</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#22863A;">jobs</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#22863A;">build</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">    </span><span style="color:#22863A;">runs-on</span><span style="color:#24292E;">: </span><span style="color:#032F62;">ubuntu-latest</span></span>
+<span class="line"><span style="color:#24292E;">    </span><span style="color:#22863A;">steps</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">      - </span><span style="color:#22863A;">uses</span><span style="color:#24292E;">: </span><span style="color:#032F62;">actions/checkout@v3</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">      - </span><span style="color:#22863A;">name</span><span style="color:#24292E;">: </span><span style="color:#032F62;">Build</span></span>
+<span class="line"><span style="color:#24292E;">        </span><span style="color:#22863A;">env</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">          </span><span style="color:#22863A;">FORCE_COLOR</span><span style="color:#24292E;">: </span><span style="color:#005CC5;">3</span></span>
+<span class="line"><span style="color:#24292E;">        </span><span style="color:#22863A;">run</span><span style="color:#24292E;">: </span><span style="color:#D73A49;">|</span></span>
+<span class="line"><span style="color:#032F62;">          npx zx &lt;&lt;&#39;EOF&#39;</span></span>
+<span class="line"><span style="color:#032F62;">          await $\`...\`</span></span>
+<span class="line"><span style="color:#032F62;">          EOF</span></span></code></pre></div><h3 id="canary-beta-rc-builds" tabindex="-1">Canary / Beta / RC builds <a class="header-anchor" href="#canary-beta-rc-builds" aria-label="Permalink to &quot;Canary / Beta / RC builds&quot;">โ€‹</a></h3><p>Impatient early adopters can try the experimental zx versions. But keep in mind: these builds are โš ๏ธ๏ธ__beta__ in every sense.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">npm</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">i</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">zx@dev</span></span>
+<span class="line"><span style="color:#B392F0;">npx</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">zx@dev</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">--install</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">--quiet</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">&lt;&lt;&lt;</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;import _ from &quot;lodash&quot; /* 4.17.15 */; console.log(_.VERSION)&#39;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">npm</span><span style="color:#24292E;"> </span><span style="color:#032F62;">i</span><span style="color:#24292E;"> </span><span style="color:#032F62;">zx@dev</span></span>
+<span class="line"><span style="color:#6F42C1;">npx</span><span style="color:#24292E;"> </span><span style="color:#032F62;">zx@dev</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">--install</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">--quiet</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">&lt;&lt;&lt;</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;import _ from &quot;lodash&quot; /* 4.17.15 */; console.log(_.VERSION)&#39;</span></span></code></pre></div><h2 id="license" tabindex="-1">License <a class="header-anchor" href="#license" aria-label="Permalink to &quot;License&quot;">โ€‹</a></h2><p><a href="https://github.com/google/zx/blob/main/LICENSE" target="_blank" rel="noreferrer">Apache-2.0</a></p><p>Disclaimer: <em>This is not an officially supported Google product.</em></p>`,171),e=[o];function t(c,r,i,y,E,d){return a(),n("div",null,e)}const g=s(p,[["render",t]]);export{F as __pageData,g as default};
docs/assets/getting-started.md.6acf3454.lean.js
@@ -0,0 +1,1 @@
+import{_ as s,o as a,c as n,Q as l}from"./chunks/framework.54ce79f7.js";const F=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting-started.md","filePath":"getting-started.md"}'),p={name:"getting-started.md"},o=l("",171),e=[o];function t(c,r,i,y,E,d){return a(),n("div",null,e)}const g=s(p,[["render",t]]);export{F as __pageData,g as default};
docs/assets/index.md.066698c6.js
@@ -0,0 +1,1 @@
+import{_ as e,o as t,c as i}from"./chunks/framework.54ce79f7.js";const p=JSON.parse('{"title":"","titleTemplate":"google/zx","description":"","frontmatter":{"layout":"home","titleTemplate":"google/zx","hero":{"name":"zx","text":"A tool for writing better scripts","actions":[{"theme":"brand","text":"Documentation","link":"/getting-started"}]},"features":[{"title":"Simple","details":"Write your scripts in a familiar language."},{"title":"Powerful","details":"Interact with the full ecosystem of JS libraries."},{"title":"Batteries included","details":"Everything you need, right out of the box."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),a={name:"index.md"};function o(r,n,l,s,c,d){return t(),i("div")}const f=e(a,[["render",o]]);export{p as __pageData,f as default};
docs/assets/index.md.066698c6.lean.js
@@ -0,0 +1,1 @@
+import{_ as e,o as t,c as i}from"./chunks/framework.54ce79f7.js";const p=JSON.parse('{"title":"","titleTemplate":"google/zx","description":"","frontmatter":{"layout":"home","titleTemplate":"google/zx","hero":{"name":"zx","text":"A tool for writing better scripts","actions":[{"theme":"brand","text":"Documentation","link":"/getting-started"}]},"features":[{"title":"Simple","details":"Write your scripts in a familiar language."},{"title":"Powerful","details":"Interact with the full ecosystem of JS libraries."},{"title":"Batteries included","details":"Everything you need, right out of the box."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),a={name:"index.md"};function o(r,n,l,s,c,d){return t(),i("div")}const f=e(a,[["render",o]]);export{p as __pageData,f as default};
docs/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2
Binary file
docs/assets/inter-italic-cyrillic.ea42a392.woff2
Binary file
docs/assets/inter-italic-greek-ext.4fbe9427.woff2
Binary file
docs/assets/inter-italic-greek.8f4463c4.woff2
Binary file
docs/assets/inter-italic-latin-ext.bd8920cc.woff2
Binary file
docs/assets/inter-italic-latin.bd3b6f56.woff2
Binary file
docs/assets/inter-italic-vietnamese.6ce511fb.woff2
Binary file
docs/assets/inter-roman-cyrillic-ext.e75737ce.woff2
Binary file
docs/assets/inter-roman-cyrillic.5f2c6c8c.woff2
Binary file
docs/assets/inter-roman-greek-ext.ab0619bc.woff2
Binary file
docs/assets/inter-roman-greek.d5a6d92a.woff2
Binary file
docs/assets/inter-roman-latin-ext.0030eebd.woff2
Binary file
docs/assets/inter-roman-latin.2ed14f66.woff2
Binary file
docs/assets/inter-roman-vietnamese.14ce25a6.woff2
Binary file
docs/assets/known-issues.md.e3403a7b.js
@@ -0,0 +1,1 @@
+import{_ as s,o as a,c as e,Q as o}from"./chunks/framework.54ce79f7.js";const E=JSON.parse('{"title":"Known Issues","description":"","frontmatter":{},"headers":[],"relativePath":"known-issues.md","filePath":"known-issues.md"}'),n={name:"known-issues.md"},t=o('<h1 id="known-issues" tabindex="-1">Known Issues <a class="header-anchor" href="#known-issues" aria-label="Permalink to &quot;Known Issues&quot;">โ€‹</a></h1><h2 id="output-gets-truncated" tabindex="-1">Output gets truncated <a class="header-anchor" href="#output-gets-truncated" aria-label="Permalink to &quot;Output gets truncated&quot;">โ€‹</a></h2><p>This is a known issue with <code>console.log()</code> (see <a href="https://github.com/nodejs/node/issues/6379" target="_blank" rel="noreferrer">nodejs/node#6379</a>). It&#39;s caused by different behaviour of <code>console.log()</code> writing to the terminal vs to a file. If a process calls <code>process.exit()</code>, buffered output will be truncated. To prevent this, the process should use <code>process.exitCode = 1</code> and wait for the process to exit itself. Or use something like <a href="https://www.npmjs.com/package/exit" target="_blank" rel="noreferrer">exit</a> package.</p><p>Workaround is to write to a temp file:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> tmp </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`mktemp`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// Creates a temp file.</span></span>\n<span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> {stdout} </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`cmd &gt; ${</span><span style="color:#E1E4E8;">tmp</span><span style="color:#9ECBFF;">}; cat ${</span><span style="color:#E1E4E8;">tmp</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> tmp </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`mktemp`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// Creates a temp file.</span></span>\n<span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> {stdout} </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`cmd &gt; ${</span><span style="color:#24292E;">tmp</span><span style="color:#032F62;">}; cat ${</span><span style="color:#24292E;">tmp</span><span style="color:#032F62;">}`</span></span></code></pre></div><h2 id="colors-in-subprocess" tabindex="-1">Colors in subprocess <a class="header-anchor" href="#colors-in-subprocess" aria-label="Permalink to &quot;Colors in subprocess&quot;">โ€‹</a></h2><p>You may see what tools invoked with <code>await $</code> don&#39;t show colors, compared to what you see in a terminal. This is because, the subprocess does not think it&#39;s a TTY and the subprocess turns off colors. Usually there is a way force the subprocess to add colors.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">p<wbr>rocess.env.</span><span style="color:#79B8FF;">FORCE_COLOR</span><span style="color:#F97583;">=</span><span style="color:#9ECBFF;">&#39;1&#39;</span></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`cmd`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">p<wbr>rocess.env.</span><span style="color:#005CC5;">FORCE_COLOR</span><span style="color:#D73A49;">=</span><span style="color:#032F62;">&#39;1&#39;</span></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`cmd`</span></span></code></pre></div>',8),p=[t];function l(c,r,i,d,u,y){return a(),e("div",null,p)}const m=s(n,[["render",l]]);export{E as __pageData,m as default};
docs/assets/known-issues.md.e3403a7b.lean.js
@@ -0,0 +1,1 @@
+import{_ as s,o as a,c as e,Q as o}from"./chunks/framework.54ce79f7.js";const E=JSON.parse('{"title":"Known Issues","description":"","frontmatter":{},"headers":[],"relativePath":"known-issues.md","filePath":"known-issues.md"}'),n={name:"known-issues.md"},t=o("",8),p=[t];function l(c,r,i,d,u,y){return a(),e("div",null,p)}const m=s(n,[["render",l]]);export{E as __pageData,m as default};
docs/assets/markdown-scripts.md.c7e9dbed.js
@@ -0,0 +1,1 @@
+import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.54ce79f7.js";const g=JSON.parse('{"title":"Markdown Scripts","description":"","frontmatter":{},"headers":[],"relativePath":"markdown-scripts.md","filePath":"markdown-scripts.md"}'),p={name:"markdown-scripts.md"},l=o('<h1 id="markdown-scripts" tabindex="-1">Markdown Scripts <a class="header-anchor" href="#markdown-scripts" aria-label="Permalink to &quot;Markdown Scripts&quot;">โ€‹</a></h1><p>It&#39;s possible to write scripts using markdown. Only code blocks will be executed by zx.</p><blockquote><p>You can run this markdown file:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#e1e4e8;">zx docs/markdown.md</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292e;">zx docs/markdown.md</span></span></code></pre></div></blockquote><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`whoami`</span></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`echo ${</span><span style="color:#E1E4E8;">__dirname</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`whoami`</span></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`echo ${</span><span style="color:#24292E;">__dirname</span><span style="color:#032F62;">}`</span></span></code></pre></div><p>The <code>__filename</code> will be pointed to <strong>markdown.md</strong>:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">console.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(chalk.</span><span style="color:#B392F0;">yellowBright</span><span style="color:#E1E4E8;">(__filename))</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">console.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(chalk.</span><span style="color:#6F42C1;">yellowBright</span><span style="color:#24292E;">(__filename))</span></span></code></pre></div><p>We can use imports here as well:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">import</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;chalk&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">import</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;chalk&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><p>A bash code (with <code>bash</code> or <code>sh</code> language tags) also will be executed:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">VAR</span><span style="color:#F97583;">=</span><span style="color:#9ECBFF;">$(</span><span style="color:#B392F0;">date</span><span style="color:#9ECBFF;">)</span></span>\n<span class="line"><span style="color:#79B8FF;">echo</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&quot;</span><span style="color:#E1E4E8;">$VAR</span><span style="color:#9ECBFF;">&quot;</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">|</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">wc</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">-c</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">VAR</span><span style="color:#D73A49;">=</span><span style="color:#032F62;">$(</span><span style="color:#6F42C1;">date</span><span style="color:#032F62;">)</span></span>\n<span class="line"><span style="color:#005CC5;">echo</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&quot;</span><span style="color:#24292E;">$VAR</span><span style="color:#032F62;">&quot;</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">|</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">wc</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">-c</span></span></code></pre></div><p>Other code blocks are ignored:</p><div class="language-css vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">css</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#85E89D;">body</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">.hero</span><span style="color:#E1E4E8;"> {</span></span>\n<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#79B8FF;">margin</span><span style="color:#E1E4E8;">: </span><span style="color:#79B8FF;">42</span><span style="color:#F97583;">px</span><span style="color:#E1E4E8;">;</span></span>\n<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#22863A;">body</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">.hero</span><span style="color:#24292E;"> {</span></span>\n<span class="line"><span style="color:#24292E;">    </span><span style="color:#005CC5;">margin</span><span style="color:#24292E;">: </span><span style="color:#005CC5;">42</span><span style="color:#D73A49;">px</span><span style="color:#24292E;">;</span></span>\n<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div>',12),e=[l];function c(t,r,i,d,y,E){return a(),n("div",null,e)}const F=s(p,[["render",c]]);export{g as __pageData,F as default};
docs/assets/markdown-scripts.md.c7e9dbed.lean.js
@@ -0,0 +1,1 @@
+import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.54ce79f7.js";const g=JSON.parse('{"title":"Markdown Scripts","description":"","frontmatter":{},"headers":[],"relativePath":"markdown-scripts.md","filePath":"markdown-scripts.md"}'),p={name:"markdown-scripts.md"},l=o("",12),e=[l];function c(t,r,i,d,y,E){return a(),n("div",null,e)}const F=s(p,[["render",c]]);export{g as __pageData,F as default};
docs/assets/process-promise.md.d7916acc.js
@@ -0,0 +1,1 @@
+import{_ as s,o as a,c as n,Q as p}from"./chunks/framework.54ce79f7.js";const h=JSON.parse('{"title":"ProcessPromise","description":"","frontmatter":{},"headers":[],"relativePath":"process-promise.md","filePath":"process-promise.md"}'),l={name:"process-promise.md"},o=p('<h1 id="processpromise" tabindex="-1">ProcessPromise <a class="header-anchor" href="#processpromise" aria-label="Permalink to &quot;ProcessPromise&quot;">โ€‹</a></h1><p>The <code>$</code> returns a <code>ProcessPromise</code> instance.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`command`</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> p</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`command`</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> p</span></span></code></pre></div><h2 id="stdin" tabindex="-1"><code>stdin</code> <a class="header-anchor" href="#stdin" aria-label="Permalink to &quot;`stdin`&quot;">โ€‹</a></h2><p>Returns a writable stream of the stdin process. Accessing this getter will trigger execution of a subprocess with <a href="#stdio"><code>stdio(&#39;pipe&#39;)</code></a>.</p><p>Do not forget to end the stream.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`while read; do echo $REPLY; done`</span></span>\n<span class="line"><span style="color:#E1E4E8;">p.stdin.</span><span style="color:#B392F0;">write</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;Hello, World!</span><span style="color:#79B8FF;">\\n</span><span style="color:#9ECBFF;">&#39;</span><span style="color:#E1E4E8;">)</span></span>\n<span class="line"><span style="color:#E1E4E8;">p.stdin.</span><span style="color:#B392F0;">end</span><span style="color:#E1E4E8;">()</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`while read; do echo $REPLY; done`</span></span>\n<span class="line"><span style="color:#24292E;">p.stdin.</span><span style="color:#6F42C1;">write</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;Hello, World!</span><span style="color:#005CC5;">\\n</span><span style="color:#032F62;">&#39;</span><span style="color:#24292E;">)</span></span>\n<span class="line"><span style="color:#24292E;">p.stdin.</span><span style="color:#6F42C1;">end</span><span style="color:#24292E;">()</span></span></code></pre></div><p>By default, each process is created with stdin in <em>inherit</em> mode.</p><h2 id="stdout-stderr" tabindex="-1"><code>stdout</code>/<code>stderr</code> <a class="header-anchor" href="#stdout-stderr" aria-label="Permalink to &quot;`stdout`/`stderr`&quot;">โ€‹</a></h2><p>Returns a readable streams of stdout/stderr process.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">const</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">p</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`npm init`</span></span>\n<span class="line"><span style="color:#F97583;">for</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> (</span><span style="color:#F97583;">const</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">chunk</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">of</span><span style="color:#E1E4E8;"> p.stdout) {</span></span>\n<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">echo</span><span style="color:#E1E4E8;">(chunk)</span></span>\n<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">const</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">p</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`npm init`</span></span>\n<span class="line"><span style="color:#D73A49;">for</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> (</span><span style="color:#D73A49;">const</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">chunk</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">of</span><span style="color:#24292E;"> p.stdout) {</span></span>\n<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">echo</span><span style="color:#24292E;">(chunk)</span></span>\n<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h2 id="exitcode" tabindex="-1"><code>exitCode</code> <a class="header-anchor" href="#exitcode" aria-label="Permalink to &quot;`exitCode`&quot;">โ€‹</a></h2><p>Returns a promise which resolves to the exit code of the process.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">if</span><span style="color:#E1E4E8;"> (</span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`[[ -d path ]]`</span><span style="color:#E1E4E8;">.exitCode </span><span style="color:#F97583;">==</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">0</span><span style="color:#E1E4E8;">) {</span></span>\n<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">...</span></span>\n<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">if</span><span style="color:#24292E;"> (</span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`[[ -d path ]]`</span><span style="color:#24292E;">.exitCode </span><span style="color:#D73A49;">==</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">0</span><span style="color:#24292E;">) {</span></span>\n<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">...</span></span>\n<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h2 id="pipe" tabindex="-1"><code>pipe()</code> <a class="header-anchor" href="#pipe" aria-label="Permalink to &quot;`pipe()`&quot;">โ€‹</a></h2><p>Redirects the stdout of the process.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`echo &quot;Hello, stdout!&quot;`</span></span>\n<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(fs.</span><span style="color:#B392F0;">createWriteStream</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;/tmp/output.txt&#39;</span><span style="color:#E1E4E8;">))</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`cat /tmp/output.txt`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`echo &quot;Hello, stdout!&quot;`</span></span>\n<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(fs.</span><span style="color:#6F42C1;">createWriteStream</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;/tmp/output.txt&#39;</span><span style="color:#24292E;">))</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`cat /tmp/output.txt`</span></span></code></pre></div><p>Pipes can be used to show a real-time output of the process:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`echo 1; sleep 1; echo 2; sleep 1; echo 3;`</span></span>\n<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(process.stdout)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`echo 1; sleep 1; echo 2; sleep 1; echo 3;`</span></span>\n<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(process.stdout)</span></span></code></pre></div><p>The <code>pipe()</code> method can combine <code>$</code> processes. Same as <code>|</code> in bash:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> greeting </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`printf &quot;hello&quot;`</span></span>\n<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`awk &#39;{printf $1&quot;, world!&quot;}&#39;`</span><span style="color:#E1E4E8;">)</span></span>\n<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`tr &#39;[a-z]&#39; &#39;[A-Z]&#39;`</span><span style="color:#E1E4E8;">)</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#B392F0;">echo</span><span style="color:#E1E4E8;">(greeting)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> greeting </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`printf &quot;hello&quot;`</span></span>\n<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`awk &#39;{printf $1&quot;, world!&quot;}&#39;`</span><span style="color:#24292E;">)</span></span>\n<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`tr &#39;[a-z]&#39; &#39;[A-Z]&#39;`</span><span style="color:#24292E;">)</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#6F42C1;">echo</span><span style="color:#24292E;">(greeting)</span></span></code></pre></div><p>Use combinations of <code>pipe()</code> and <a href="#nothrow"><code>nothrow()</code></a>:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`find ./examples -type f -print0`</span></span>\n<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`xargs -0 grep ${&#39;missing&#39;</span><span style="color:#9ECBFF;"> </span><span style="color:#F97583;">+</span><span style="color:#9ECBFF;"> </span><span style="color:#9ECBFF;">&#39;part&#39;}`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">nothrow</span><span style="color:#E1E4E8;">())</span></span>\n<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`wc -l`</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`find ./examples -type f -print0`</span></span>\n<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`xargs -0 grep ${&#39;missing&#39;</span><span style="color:#032F62;"> </span><span style="color:#D73A49;">+</span><span style="color:#032F62;"> </span><span style="color:#032F62;">&#39;part&#39;}`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">nothrow</span><span style="color:#24292E;">())</span></span>\n<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`wc -l`</span><span style="color:#24292E;">)</span></span></code></pre></div><h2 id="kill" tabindex="-1"><code>kill()</code> <a class="header-anchor" href="#kill" aria-label="Permalink to &quot;`kill()`&quot;">โ€‹</a></h2><p>Kills the process and all children.</p><p>By default, signal <code>SIGTERM</code> is sent. You can specify a signal via an argument.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`sleep 999`</span></span>\n<span class="line"><span style="color:#B392F0;">setTimeout</span><span style="color:#E1E4E8;">(() </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> p.</span><span style="color:#B392F0;">kill</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;SIGINT&#39;</span><span style="color:#E1E4E8;">), </span><span style="color:#79B8FF;">100</span><span style="color:#E1E4E8;">)</span></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> p</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`sleep 999`</span></span>\n<span class="line"><span style="color:#6F42C1;">setTimeout</span><span style="color:#24292E;">(() </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> p.</span><span style="color:#6F42C1;">kill</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;SIGINT&#39;</span><span style="color:#24292E;">), </span><span style="color:#005CC5;">100</span><span style="color:#24292E;">)</span></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> p</span></span></code></pre></div><h2 id="stdio" tabindex="-1"><code>stdio()</code> <a class="header-anchor" href="#stdio" aria-label="Permalink to &quot;`stdio()`&quot;">โ€‹</a></h2><p>Specifies a stdio for the process.</p><p>Default is <code>.stdio(&#39;inherit&#39;, &#39;pipe&#39;, &#39;pipe&#39;)</code>.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`read`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">stdio</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;pipe&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`read`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">stdio</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;pipe&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h2 id="nothrow" tabindex="-1"><code>nothrow()</code> <a class="header-anchor" href="#nothrow" aria-label="Permalink to &quot;`nothrow()`&quot;">โ€‹</a></h2><p>Changes behavior of <code>$</code> to not throw an exception on non-zero exit codes.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`grep something from-file`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">nothrow</span><span style="color:#E1E4E8;">()</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#6A737D;">// Inside a pipe():</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`find ./examples -type f -print0`</span></span>\n<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`xargs -0 grep something`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">nothrow</span><span style="color:#E1E4E8;">())</span></span>\n<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`wc -l`</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`grep something from-file`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">nothrow</span><span style="color:#24292E;">()</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#6A737D;">// Inside a pipe():</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`find ./examples -type f -print0`</span></span>\n<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`xargs -0 grep something`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">nothrow</span><span style="color:#24292E;">())</span></span>\n<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`wc -l`</span><span style="color:#24292E;">)</span></span></code></pre></div><p>If only the <code>exitCode</code> is needed, you can use <a href="#exitcode"><code>exitCode</code></a> directly:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">if</span><span style="color:#E1E4E8;"> (</span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`[[ -d path ]]`</span><span style="color:#E1E4E8;">.exitCode </span><span style="color:#F97583;">==</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">0</span><span style="color:#E1E4E8;">) {</span></span>\n<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">...</span></span>\n<span class="line"><span style="color:#E1E4E8;">}</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#6A737D;">// Equivalent of:</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#F97583;">if</span><span style="color:#E1E4E8;"> ((</span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`[[ -d path ]]`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">nothrow</span><span style="color:#E1E4E8;">()).exitCode </span><span style="color:#F97583;">==</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">0</span><span style="color:#E1E4E8;">) {</span></span>\n<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">...</span></span>\n<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">if</span><span style="color:#24292E;"> (</span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`[[ -d path ]]`</span><span style="color:#24292E;">.exitCode </span><span style="color:#D73A49;">==</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">0</span><span style="color:#24292E;">) {</span></span>\n<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">...</span></span>\n<span class="line"><span style="color:#24292E;">}</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#6A737D;">// Equivalent of:</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#D73A49;">if</span><span style="color:#24292E;"> ((</span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`[[ -d path ]]`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">nothrow</span><span style="color:#24292E;">()).exitCode </span><span style="color:#D73A49;">==</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">0</span><span style="color:#24292E;">) {</span></span>\n<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">...</span></span>\n<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h2 id="quiet" tabindex="-1"><code>quiet()</code> <a class="header-anchor" href="#quiet" aria-label="Permalink to &quot;`quiet()`&quot;">โ€‹</a></h2><p>Changes behavior of <code>$</code> to disable verbose output.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#6A737D;">// Command and output will not be displayed.</span></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`grep something from-file`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">quiet</span><span style="color:#E1E4E8;">()</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6A737D;">// Command and output will not be displayed.</span></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`grep something from-file`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">quiet</span><span style="color:#24292E;">()</span></span></code></pre></div><h2 id="timeout" tabindex="-1"><code>timeout()</code> <a class="header-anchor" href="#timeout" aria-label="Permalink to &quot;`timeout()`&quot;">โ€‹</a></h2><p>Kills the process after a specified timeout.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`sleep 999`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">timeout</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;5s&#39;</span><span style="color:#E1E4E8;">)</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#6A737D;">// Or with a specific signal.</span></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`sleep 999`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">timeout</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;5s&#39;</span><span style="color:#E1E4E8;">, </span><span style="color:#9ECBFF;">&#39;SIGKILL&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`sleep 999`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">timeout</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;5s&#39;</span><span style="color:#24292E;">)</span></span>\n<span class="line"></span>\n<span class="line"><span style="color:#6A737D;">// Or with a specific signal.</span></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`sleep 999`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">timeout</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;5s&#39;</span><span style="color:#24292E;">, </span><span style="color:#032F62;">&#39;SIGKILL&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div>',42),e=[o];function t(c,r,i,y,E,d){return a(),n("div",null,e)}const u=s(l,[["render",t]]);export{h as __pageData,u as default};
docs/assets/process-promise.md.d7916acc.lean.js
@@ -0,0 +1,1 @@
+import{_ as s,o as a,c as n,Q as p}from"./chunks/framework.54ce79f7.js";const h=JSON.parse('{"title":"ProcessPromise","description":"","frontmatter":{},"headers":[],"relativePath":"process-promise.md","filePath":"process-promise.md"}'),l={name:"process-promise.md"},o=p("",42),e=[o];function t(c,r,i,y,E,d){return a(),n("div",null,e)}const u=s(l,[["render",t]]);export{h as __pageData,u as default};
docs/assets/quotes.md.5dad2b0d.js
@@ -0,0 +1,1 @@
+import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.54ce79f7.js";const g=JSON.parse('{"title":"Quotes","description":"","frontmatter":{},"headers":[],"relativePath":"quotes.md","filePath":"quotes.md"}'),l={name:"quotes.md"},p=o('<h1 id="quotes" tabindex="-1">Quotes <a class="header-anchor" href="#quotes" aria-label="Permalink to &quot;Quotes&quot;">โ€‹</a></h1><p>When passing arguments to <code>${...}</code> there is no need to add quotes. <strong>Quotes will be added automatically if needed.</strong></p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> name </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;foo &amp; bar&#39;</span></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`mkdir ${</span><span style="color:#E1E4E8;">name</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> name </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;foo &amp; bar&#39;</span></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`mkdir ${</span><span style="color:#24292E;">name</span><span style="color:#032F62;">}`</span></span></code></pre></div><p>For quotes <strong>zx</strong> uses special bash syntax (next commands are valid bash):</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">mkdir</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">$&#39;foo &amp; bar&#39;</span></span>\n<span class="line"><span style="color:#B392F0;">$</span><span style="color:#B392F0;">&#39;ls&#39;</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">$&#39;-la&#39;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">mkdir</span><span style="color:#24292E;"> </span><span style="color:#032F62;">$&#39;foo &amp; bar&#39;</span></span>\n<span class="line"><span style="color:#6F42C1;">$</span><span style="color:#6F42C1;">&#39;ls&#39;</span><span style="color:#24292E;"> </span><span style="color:#032F62;">$&#39;-la&#39;</span></span></code></pre></div><p>If you add quotes <code>&quot;${name}&quot;</code>, it will produce a wrong command.</p><p>If you need to add something extra, consider putting it inside curly brackets.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`mkdir ${&#39;path/to-dir/&#39;</span><span style="color:#9ECBFF;"> </span><span style="color:#F97583;">+</span><span style="color:#9ECBFF;"> </span><span style="color:#E1E4E8;">name</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`mkdir ${&#39;path/to-dir/&#39;</span><span style="color:#032F62;"> </span><span style="color:#D73A49;">+</span><span style="color:#032F62;"> </span><span style="color:#24292E;">name</span><span style="color:#032F62;">}`</span></span></code></pre></div><p>This will also work properly:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`mkdir path/to-dir/${</span><span style="color:#E1E4E8;">name</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`mkdir path/to-dir/${</span><span style="color:#24292E;">name</span><span style="color:#032F62;">}`</span></span></code></pre></div><h3 id="array-of-arguments" tabindex="-1">Array of arguments <a class="header-anchor" href="#array-of-arguments" aria-label="Permalink to &quot;Array of arguments&quot;">โ€‹</a></h3><p>The <code>zx</code> can also take an array or arguments in the <code>${...}</code>. Items of the array will be quoted separately and concatenated via a space.</p><p>Do <strong>not</strong> add a <code>.join(&#39; &#39;)</code>.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> flags </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> [</span></span>\n<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--oneline&#39;</span><span style="color:#E1E4E8;">,</span></span>\n<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--decorate&#39;</span><span style="color:#E1E4E8;">,</span></span>\n<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--color&#39;</span><span style="color:#E1E4E8;">,</span></span>\n<span class="line"><span style="color:#E1E4E8;">]</span></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`git log ${</span><span style="color:#E1E4E8;">flags</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> flags </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> [</span></span>\n<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--oneline&#39;</span><span style="color:#24292E;">,</span></span>\n<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--decorate&#39;</span><span style="color:#24292E;">,</span></span>\n<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--color&#39;</span><span style="color:#24292E;">,</span></span>\n<span class="line"><span style="color:#24292E;">]</span></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`git log ${</span><span style="color:#24292E;">flags</span><span style="color:#032F62;">}`</span></span></code></pre></div><p>If you already have a string with arrays, it&#39;s your responsibility to correctly parse it and distinguish separate arguments. For example like this:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`git log ${&#39;--oneline --decorate --color&#39;</span><span style="color:#9ECBFF;">.</span><span style="color:#B392F0;">split</span><span style="color:#9ECBFF;">(</span><span style="color:#9ECBFF;">&#39; &#39;</span><span style="color:#9ECBFF;">)</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`git log ${&#39;--oneline --decorate --color&#39;</span><span style="color:#032F62;">.</span><span style="color:#6F42C1;">split</span><span style="color:#032F62;">(</span><span style="color:#032F62;">&#39; &#39;</span><span style="color:#032F62;">)</span><span style="color:#032F62;">}`</span></span></code></pre></div><h3 id="globbing-and" tabindex="-1">globbing and <code>~</code> <a class="header-anchor" href="#globbing-and" aria-label="Permalink to &quot;globbing and `~`&quot;">โ€‹</a></h3><p>As everything passed through <code>${...}</code> will be escaped, you can&#39;t use <code>~</code> or glob syntax.</p><p>In order for this to work the zx provides <a href="./getting-started#globby-package">globby package</a>.</p><p>For instead of this:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> files </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;~/dev/**/*.md&#39;</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// wrong</span></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`ls ${</span><span style="color:#E1E4E8;">files</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> files </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;~/dev/**/*.md&#39;</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// wrong</span></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`ls ${</span><span style="color:#24292E;">files</span><span style="color:#032F62;">}`</span></span></code></pre></div><p>Use <code>glob</code> function and <code>os</code> package:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> files </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">glob</span><span style="color:#E1E4E8;">(os.</span><span style="color:#B392F0;">homedir</span><span style="color:#E1E4E8;">() </span><span style="color:#F97583;">+</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;/dev/**/*.md&#39;</span><span style="color:#E1E4E8;">)</span></span>\n<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`ls ${</span><span style="color:#E1E4E8;">files</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> files </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">glob</span><span style="color:#24292E;">(os.</span><span style="color:#6F42C1;">homedir</span><span style="color:#24292E;">() </span><span style="color:#D73A49;">+</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;/dev/**/*.md&#39;</span><span style="color:#24292E;">)</span></span>\n<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`ls ${</span><span style="color:#24292E;">files</span><span style="color:#032F62;">}`</span></span></code></pre></div>',23),e=[p];function t(c,r,i,y,d,E){return a(),n("div",null,e)}const h=s(l,[["render",t]]);export{g as __pageData,h as default};
docs/assets/quotes.md.5dad2b0d.lean.js
@@ -0,0 +1,1 @@
+import{_ as s,o as a,c as n,Q as o}from"./chunks/framework.54ce79f7.js";const g=JSON.parse('{"title":"Quotes","description":"","frontmatter":{},"headers":[],"relativePath":"quotes.md","filePath":"quotes.md"}'),l={name:"quotes.md"},p=o("",23),e=[p];function t(c,r,i,y,d,E){return a(),n("div",null,e)}const h=s(l,[["render",t]]);export{g as __pageData,h as default};
docs/assets/style.23bc6f20.css
@@ -0,0 +1,1 @@
+@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/zx/assets/inter-roman-cyrillic.5f2c6c8c.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/zx/assets/inter-roman-cyrillic-ext.e75737ce.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/zx/assets/inter-roman-greek.d5a6d92a.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/zx/assets/inter-roman-greek-ext.ab0619bc.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/zx/assets/inter-roman-latin.2ed14f66.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/zx/assets/inter-roman-latin-ext.0030eebd.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:normal;font-named-instance:"Regular";src:url(/zx/assets/inter-roman-vietnamese.14ce25a6.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/zx/assets/inter-italic-cyrillic.ea42a392.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/zx/assets/inter-italic-cyrillic-ext.33bd5a8e.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/zx/assets/inter-italic-greek.8f4463c4.woff2) format("woff2");unicode-range:U+0370-03FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/zx/assets/inter-italic-greek-ext.4fbe9427.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/zx/assets/inter-italic-latin.bd3b6f56.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/zx/assets/inter-italic-latin-ext.bd8920cc.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter var;font-weight:100 900;font-display:swap;font-style:italic;font-named-instance:"Italic";src:url(/zx/assets/inter-italic-vietnamese.6ce511fb.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB}@font-face{font-family:Chinese Quotes;src:local("PingFang SC Regular"),local("PingFang SC"),local("SimHei"),local("Source Han Sans SC");unicode-range:U+2018,U+2019,U+201C,U+201D}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Chinese Quotes", "Inter var", "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Helvetica, Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-local-nav: 10;--vp-z-index-nav: 20;--vp-z-index-layout-top: 30;--vp-z-index-backdrop: 40;--vp-z-index-sidebar: 50;--vp-z-index-footer: 60}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' height='20' width='20' stroke='rgba(128,128,128,1)' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2M9 5a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2M9 5a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2m-6 9 2 2 4-4'/%3E%3C/svg%3E")}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-green-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-green-1);--vp-code-line-diff-remove-color: var(--vp-c-red-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-red-1);--vp-code-line-warning-color: var(--vp-c-yellow-soft);--vp-code-line-error-color: var(--vp-c-red-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-brand-soft);--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-gray-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-brand-1);--vp-badge-tip-bg: var(--vp-c-brand-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-green-1);--vp-local-search-highlight-text: var(--vp-c-black)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);direction:ltr;font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-brand-1)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code-light{display:none}html:not(.dark) .vp-code-dark{display:none}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s}.vp-doc blockquote>p{margin:0;font-size:16px;color:var(--vp-c-text-2);transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin-bottom:4px;text-align:center;letter-spacing:1px;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge[data-v-ea5b2908]{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.vp-doc h1>.VPBadge[data-v-ea5b2908]{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge[data-v-ea5b2908]{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge[data-v-ea5b2908]{vertical-align:middle}.vp-doc h4>.VPBadge[data-v-ea5b2908],.vp-doc h5>.VPBadge[data-v-ea5b2908],.vp-doc h6>.VPBadge[data-v-ea5b2908]{vertical-align:middle;line-height:18px}.VPBadge.info[data-v-ea5b2908]{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip[data-v-ea5b2908]{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning[data-v-ea5b2908]{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger[data-v-ea5b2908]{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-54a304ca]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-54a304ca],.VPBackdrop.fade-leave-to[data-v-54a304ca]{opacity:0}.VPBackdrop.fade-leave-active[data-v-54a304ca]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-54a304ca]{display:none}}.NotFound[data-v-b9c0c15a]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-b9c0c15a]{padding:96px 32px 168px}}.code[data-v-b9c0c15a]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-b9c0c15a]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-b9c0c15a]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-b9c0c15a]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-b9c0c15a]{padding-top:20px}.link[data-v-b9c0c15a]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-b9c0c15a]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-463da30f]{position:relative;z-index:1}.nested[data-v-463da30f]{padding-left:16px}.outline-link[data-v-463da30f]{display:block;line-height:28px;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s;font-weight:400}.outline-link[data-v-463da30f]:hover,.outline-link.active[data-v-463da30f]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-463da30f]{padding-left:13px}.VPDocAsideOutline[data-v-626d8d18]{display:none}.VPDocAsideOutline.has-outline[data-v-626d8d18]{display:block}.content[data-v-626d8d18]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-626d8d18]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-626d8d18]{letter-spacing:.4px;line-height:28px;font-size:13px;font-weight:600}.VPDocAside[data-v-cb998dce]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-cb998dce]{flex-grow:1}.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-cb998dce] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-cb998dce] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-6a7fda06]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-6a7fda06]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-a2d931e4]{margin-top:64px}.edit-info[data-v-a2d931e4]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-a2d931e4]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-a2d931e4]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-a2d931e4]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-a2d931e4]{margin-right:8px;width:14px;height:14px;fill:currentColor}.prev-next[data-v-a2d931e4]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-a2d931e4]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-a2d931e4]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-a2d931e4]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-a2d931e4]{margin-left:auto;text-align:right}.desc[data-v-a2d931e4]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-a2d931e4]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDocOutlineDropdown[data-v-95bb0785]{margin-bottom:48px}.VPDocOutlineDropdown button[data-v-95bb0785]{display:block;font-size:14px;font-weight:500;line-height:24px;border:1px solid var(--vp-c-border);padding:4px 12px;color:var(--vp-c-text-2);background-color:var(--vp-c-default-soft);border-radius:8px;transition:color .5s}.VPDocOutlineDropdown button[data-v-95bb0785]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPDocOutlineDropdown button.open[data-v-95bb0785]{color:var(--vp-c-text-1)}.icon[data-v-95bb0785]{display:inline-block;vertical-align:middle;width:16px;height:16px;fill:currentColor}[data-v-95bb0785] .outline-link{font-size:14px;font-weight:400}.open>.icon[data-v-95bb0785]{transform:rotate(90deg)}.items[data-v-95bb0785]{margin-top:12px;border-left:1px solid var(--vp-c-divider)}.VPDoc[data-v-a3c25e27]{padding:32px 24px 96px;width:100%}.VPDoc .VPDocOutlineDropdown[data-v-a3c25e27]{display:none}@media (min-width: 960px) and (max-width: 1279px){.VPDoc .VPDocOutlineDropdown[data-v-a3c25e27]{display:block}}@media (min-width: 768px){.VPDoc[data-v-a3c25e27]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-a3c25e27]{padding:32px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-a3c25e27]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-a3c25e27]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-a3c25e27]{display:flex;justify-content:center}.VPDoc .aside[data-v-a3c25e27]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-a3c25e27]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-a3c25e27]{max-width:1104px}}.container[data-v-a3c25e27]{margin:0 auto;width:100%}.aside[data-v-a3c25e27]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-a3c25e27]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-a3c25e27]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 32px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-a3c25e27]::-webkit-scrollbar{display:none}.aside-curtain[data-v-a3c25e27]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-a3c25e27]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 32px));padding-bottom:32px}.content[data-v-a3c25e27]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-a3c25e27]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-a3c25e27]{order:1;margin:0;min-width:640px}}.content-container[data-v-a3c25e27]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-a3c25e27]{max-width:688px}.external-link-icon-enabled[data-v-a3c25e27] :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.VPButton[data-v-1e76fe75]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-1e76fe75]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-1e76fe75]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-1e76fe75]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-1e76fe75]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-1e76fe75]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-1e76fe75]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-1e76fe75]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-1e76fe75]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-1e76fe75]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-1e76fe75]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-1e76fe75]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-1e76fe75]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-ab19afbb]{display:none}.dark .VPImage.light[data-v-ab19afbb]{display:none}.VPHero[data-v-5a3e9999]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-5a3e9999]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-5a3e9999]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-5a3e9999]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-5a3e9999]{flex-direction:row}}.main[data-v-5a3e9999]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-5a3e9999]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-5a3e9999]{text-align:left}}@media (min-width: 960px){.main[data-v-5a3e9999]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-5a3e9999]{max-width:592px}}.name[data-v-5a3e9999],.text[data-v-5a3e9999]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-5a3e9999],.VPHero.has-image .text[data-v-5a3e9999]{margin:0 auto}.name[data-v-5a3e9999]{color:var(--vp-home-hero-name-color)}.clip[data-v-5a3e9999]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-5a3e9999],.text[data-v-5a3e9999]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-5a3e9999],.text[data-v-5a3e9999]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-5a3e9999],.VPHero.has-image .text[data-v-5a3e9999]{margin:0}}.tagline[data-v-5a3e9999]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-5a3e9999]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-5a3e9999]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-5a3e9999]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-5a3e9999]{margin:0}}.actions[data-v-5a3e9999]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-5a3e9999]{justify-content:center}@media (min-width: 640px){.actions[data-v-5a3e9999]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-5a3e9999]{justify-content:flex-start}}.action[data-v-5a3e9999]{flex-shrink:0;padding:6px}.image[data-v-5a3e9999]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-5a3e9999]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-5a3e9999]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-5a3e9999]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-5a3e9999]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-5a3e9999]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-5a3e9999]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-5a3e9999]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-5a3e9999]{width:320px;height:320px}}[data-v-5a3e9999] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-5a3e9999] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-5a3e9999] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-6c0c85a1]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-6c0c85a1]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-6c0c85a1]{display:flex;flex-direction:column;padding:24px;height:100%}.VPFeature[data-v-6c0c85a1] .VPImage{margin-bottom:20px}.icon[data-v-6c0c85a1]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-6c0c85a1]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-6c0c85a1]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-6c0c85a1]{padding-top:8px}.link-text-value[data-v-6c0c85a1]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-6c0c85a1]{display:inline-block;margin-left:6px;width:14px;height:14px;fill:currentColor}.VPFeatures[data-v-7e232fde]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-7e232fde]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-7e232fde]{padding:0 64px}}.container[data-v-7e232fde]{margin:0 auto;max-width:1152px}.items[data-v-7e232fde]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-7e232fde]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-7e232fde],.item.grid-4[data-v-7e232fde],.item.grid-6[data-v-7e232fde]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-7e232fde],.item.grid-4[data-v-7e232fde]{width:50%}.item.grid-3[data-v-7e232fde],.item.grid-6[data-v-7e232fde]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-7e232fde]{width:25%}}.VPHome[data-v-20eabd3a]{padding-bottom:96px}.VPHome[data-v-20eabd3a] .VPHomeSponsors{margin-top:112px;margin-bottom:-128px}@media (min-width: 768px){.VPHome[data-v-20eabd3a]{padding-bottom:128px}}.VPContent[data-v-3cf691b6]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-3cf691b6]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-3cf691b6]{margin:0}@media (min-width: 960px){.VPContent[data-v-3cf691b6]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-3cf691b6]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-3cf691b6]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e4279f1c]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e4279f1c]{display:none}@media (min-width: 768px){.VPFooter[data-v-e4279f1c]{padding:32px}}.container[data-v-e4279f1c]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e4279f1c],.copyright[data-v-e4279f1c]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-24251f6f]{padding:12px 20px 11px}.VPLocalNavOutlineDropdown button[data-v-24251f6f]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-24251f6f]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-24251f6f]{color:var(--vp-c-text-1)}.icon[data-v-24251f6f]{display:inline-block;vertical-align:middle;margin-left:2px;width:14px;height:14px;fill:currentColor}[data-v-24251f6f] .outline-link{font-size:14px;padding:2px 0}.open>.icon[data-v-24251f6f]{transform:rotate(90deg)}.items[data-v-24251f6f]{position:absolute;top:64px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}.header[data-v-24251f6f]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-24251f6f]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-24251f6f]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-24251f6f]{transition:all .2s ease-out}.flyout-leave-active[data-v-24251f6f]{transition:all .15s ease-in}.flyout-enter-from[data-v-24251f6f],.flyout-leave-to[data-v-24251f6f]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-9e669cc1]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--vp-c-gutter);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-9e669cc1]{position:fixed}.VPLocalNav.reached-top[data-v-9e669cc1]{border-top-color:transparent}@media (min-width: 960px){.VPLocalNav[data-v-9e669cc1]{display:none}}.menu[data-v-9e669cc1]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-9e669cc1]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-9e669cc1]{padding:0 32px}}.menu-icon[data-v-9e669cc1]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPOutlineDropdown[data-v-9e669cc1]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-9e669cc1]{padding:12px 32px 11px}}.VPSwitch[data-v-1c29e291]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-1c29e291]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1c29e291]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-1c29e291]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1c29e291] svg{position:absolute;top:3px;left:3px;width:12px;height:12px;fill:var(--vp-c-text-2)}.dark .icon[data-v-1c29e291] svg{fill:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-3329432d]{opacity:1}.moon[data-v-3329432d],.dark .sun[data-v-3329432d]{opacity:0}.dark .moon[data-v-3329432d]{opacity:1}.dark .VPSwitchAppearance[data-v-3329432d] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-5e9f0637]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-5e9f0637]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-f51f088d]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-f51f088d]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-f51f088d]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-f51f088d]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-a6b0397c]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-a6b0397c]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-a6b0397c]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-a6b0397c]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-e42ed9b3]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-e42ed9b3] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-e42ed9b3] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-e42ed9b3] .group:last-child{padding-bottom:0}.VPMenu[data-v-e42ed9b3] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-e42ed9b3] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-e42ed9b3] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-e42ed9b3] .action{padding-left:24px}.VPFlyout[data-v-aa8de344]{position:relative}.VPFlyout[data-v-aa8de344]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-aa8de344]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-aa8de344]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-aa8de344]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-aa8de344]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-aa8de344],.button[aria-expanded=true]+.menu[data-v-aa8de344]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-aa8de344]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-aa8de344]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-aa8de344]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-aa8de344]{margin-right:0;width:16px;height:16px;fill:currentColor}.text-icon[data-v-aa8de344]{margin-left:4px;width:14px;height:14px;fill:currentColor}.icon[data-v-aa8de344]{width:20px;height:20px;fill:currentColor;transition:fill .25s}.menu[data-v-aa8de344]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-16cf740a]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-16cf740a]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-16cf740a]>svg{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-e71e869c]{display:flex;justify-content:center}.VPNavBarExtra[data-v-c8c2ae4b]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-c8c2ae4b]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-c8c2ae4b]{display:none}}.trans-title[data-v-c8c2ae4b]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-c8c2ae4b],.item.social-links[data-v-c8c2ae4b]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-c8c2ae4b]{min-width:176px}.appearance-action[data-v-c8c2ae4b]{margin-right:-2px}.social-links-list[data-v-c8c2ae4b]{margin:-4px -8px}.VPNavBarHamburger[data-v-6bee1efd]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-6bee1efd]{display:none}}.container[data-v-6bee1efd]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-6bee1efd]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-6bee1efd]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-6bee1efd]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-6bee1efd],.VPNavBarHamburger.active:hover .middle[data-v-6bee1efd],.VPNavBarHamburger.active:hover .bottom[data-v-6bee1efd]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-6bee1efd],.middle[data-v-6bee1efd],.bottom[data-v-6bee1efd]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-6bee1efd]{top:0;left:0;transform:translate(0)}.middle[data-v-6bee1efd]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-6bee1efd]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-cb318fec]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-cb318fec],.VPNavBarMenuLink[data-v-cb318fec]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-f732b5d0]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-f732b5d0]{display:flex}}/*! @docsearch/css 3.5.2 | MIT License | ยฉ Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"ยป "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:1px;letter-spacing:-12px;color:transparent}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:var(--vp-meta-key);font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-ef6192dc]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-ef6192dc]{display:flex;align-items:center}}.title[data-v-2973dbb4]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-2973dbb4]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-2973dbb4]{border-bottom-color:var(--vp-c-divider)}}[data-v-2973dbb4] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-ff4524ae]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-ff4524ae]{display:flex;align-items:center}}.title[data-v-ff4524ae]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-f1abbc6e]{position:relative;border-bottom:1px solid transparent;padding:0 8px 0 24px;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap}@media (min-width: 768px){.VPNavBar[data-v-f1abbc6e]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar[data-v-f1abbc6e]{padding:0}.VPNavBar[data-v-f1abbc6e]:not(.has-sidebar):not(.top){border-bottom-color:var(--vp-c-gutter);background-color:var(--vp-nav-bg-color)}}.container[data-v-f1abbc6e]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-f1abbc6e],.container>.content[data-v-f1abbc6e]{pointer-events:none}.container[data-v-f1abbc6e] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-f1abbc6e]{max-width:100%}}.title[data-v-f1abbc6e]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-f1abbc6e]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-f1abbc6e]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-f1abbc6e]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-f1abbc6e]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-f1abbc6e]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-f1abbc6e]{display:flex;justify-content:flex-end;align-items:center;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.top) .content-body[data-v-f1abbc6e]{position:relative;background-color:var(--vp-nav-bg-color)}}@media (max-width: 767px){.content-body[data-v-f1abbc6e]{column-gap:.5rem}}.menu+.translations[data-v-f1abbc6e]:before,.menu+.appearance[data-v-f1abbc6e]:before,.menu+.social-links[data-v-f1abbc6e]:before,.translations+.appearance[data-v-f1abbc6e]:before,.appearance+.social-links[data-v-f1abbc6e]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-f1abbc6e]:before,.translations+.appearance[data-v-f1abbc6e]:before{margin-right:16px}.appearance+.social-links[data-v-f1abbc6e]:before{margin-left:16px}.social-links[data-v-f1abbc6e]{margin-right:-8px}@media (min-width: 960px){.VPNavBar.has-sidebar .curtain[data-v-f1abbc6e]{position:absolute;right:0;bottom:-31px;width:calc(100% - var(--vp-sidebar-width));height:32px}.VPNavBar.has-sidebar .curtain[data-v-f1abbc6e]:before{display:block;width:100%;height:32px;background:linear-gradient(var(--vp-c-bg),transparent 70%);content:""}}@media (min-width: 1440px){.VPNavBar.has-sidebar .curtain[data-v-f1abbc6e]{width:calc(100% - ((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width)))}}.VPNavScreenAppearance[data-v-0dc5cf49]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-0dc5cf49]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-fe523e3d]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-fe523e3d]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-aea78dd1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-aea78dd1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-f60dbfa7]{display:block}.title[data-v-f60dbfa7]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-c2c554ed]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-c2c554ed]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-c2c554ed]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-c2c554ed]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-c2c554ed]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-c2c554ed]{transform:rotate(45deg)}.button[data-v-c2c554ed]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-c2c554ed]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-c2c554ed]{width:14px;height:14px;fill:var(--vp-c-text-2);transition:fill .5s,transform .25s}.group[data-v-c2c554ed]:first-child{padding-top:0}.group+.group[data-v-c2c554ed],.group+.item[data-v-c2c554ed]{padding-top:4px}.VPNavScreenTranslations[data-v-41505286]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-41505286]{height:auto}.title[data-v-41505286]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-41505286]{width:16px;height:16px;fill:currentColor}.icon.lang[data-v-41505286]{margin-right:8px}.icon.chevron[data-v-41505286]{margin-left:4px}.list[data-v-41505286]{padding:4px 0 0 24px}.link[data-v-41505286]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-57cce842]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 1px);right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .5s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-57cce842],.VPNavScreen.fade-leave-active[data-v-57cce842]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-57cce842],.VPNavScreen.fade-leave-active .container[data-v-57cce842]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-57cce842],.VPNavScreen.fade-leave-to[data-v-57cce842]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-57cce842],.VPNavScreen.fade-leave-to .container[data-v-57cce842]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-57cce842]{display:none}}.container[data-v-57cce842]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-57cce842],.menu+.appearance[data-v-57cce842],.translations+.appearance[data-v-57cce842]{margin-top:24px}.menu+.social-links[data-v-57cce842]{margin-top:16px}.appearance+.social-links[data-v-57cce842]{margin-top:16px}.VPNav[data-v-5bdc5df3]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-5bdc5df3]{position:fixed}}.VPSidebarItem.level-0[data-v-bd01e0d5]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-bd01e0d5]{padding-bottom:10px}.item[data-v-bd01e0d5]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-bd01e0d5]{cursor:pointer}.indicator[data-v-bd01e0d5]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-bd01e0d5],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-bd01e0d5],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-bd01e0d5],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-bd01e0d5]{background-color:var(--vp-c-brand-1)}.link[data-v-bd01e0d5]{display:flex;align-items:center;flex-grow:1}.text[data-v-bd01e0d5]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-bd01e0d5]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-bd01e0d5],.VPSidebarItem.level-2 .text[data-v-bd01e0d5],.VPSidebarItem.level-3 .text[data-v-bd01e0d5],.VPSidebarItem.level-4 .text[data-v-bd01e0d5],.VPSidebarItem.level-5 .text[data-v-bd01e0d5]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-bd01e0d5],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-bd01e0d5],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-bd01e0d5],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-bd01e0d5],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-bd01e0d5],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-bd01e0d5]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-1.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-2.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-3.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-4.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-5.has-active>.item>.text[data-v-bd01e0d5],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-bd01e0d5],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-bd01e0d5],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-bd01e0d5],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-bd01e0d5],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-bd01e0d5],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-bd01e0d5]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-bd01e0d5],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-bd01e0d5],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-bd01e0d5],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-bd01e0d5],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-bd01e0d5],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-bd01e0d5]{color:var(--vp-c-brand-1)}.caret[data-v-bd01e0d5]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-bd01e0d5]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-bd01e0d5]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-bd01e0d5]{width:18px;height:18px;fill:currentColor;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-bd01e0d5]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-bd01e0d5],.VPSidebarItem.level-2 .items[data-v-bd01e0d5],.VPSidebarItem.level-3 .items[data-v-bd01e0d5],.VPSidebarItem.level-4 .items[data-v-bd01e0d5],.VPSidebarItem.level-5 .items[data-v-bd01e0d5]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-bd01e0d5]{display:none}.VPSidebar[data-v-ee2efba5]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-ee2efba5]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-ee2efba5]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-ee2efba5]{z-index:1;padding-top:var(--vp-nav-height);padding-bottom:128px;width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-ee2efba5]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-ee2efba5]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-ee2efba5]{outline:0}.group+.group[data-v-ee2efba5]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-ee2efba5]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSkipLink[data-v-c8291ffa]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c8291ffa]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c8291ffa]{top:14px;left:16px}}.Layout[data-v-4064354f]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-843cc1b2]{border-top:1px solid var(--vp-c-gutter);padding:88px 24px 96px;background-color:var(--vp-c-bg)}.container[data-v-843cc1b2]{margin:0 auto;max-width:1152px}.love[data-v-843cc1b2]{margin:0 auto;width:28px;height:28px;color:var(--vp-c-text-3)}.icon[data-v-843cc1b2]{width:28px;height:28px;fill:currentColor}.message[data-v-843cc1b2]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-843cc1b2]{padding-top:32px}.action[data-v-843cc1b2]{padding-top:40px;text-align:center}.VPTeamPage[data-v-b1cfd8dc]{padding-bottom:96px}@media (min-width: 768px){.VPTeamPage[data-v-b1cfd8dc]{padding-bottom:128px}}.VPTeamPageSection+.VPTeamPageSection[data-v-b1cfd8dc-s],.VPTeamMembers+.VPTeamPageSection[data-v-b1cfd8dc-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-b1cfd8dc-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-b1cfd8dc-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-b1cfd8dc-s],.VPTeamMembers+.VPTeamPageSection[data-v-b1cfd8dc-s]{margin-top:96px}}.VPTeamMembers[data-v-b1cfd8dc-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-b1cfd8dc-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-b1cfd8dc-s]{padding:0 64px}}.VPTeamPageTitle[data-v-46c5e327]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-46c5e327]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-46c5e327]{padding:80px 64px 48px}}.title[data-v-46c5e327]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-46c5e327]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-46c5e327]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-46c5e327]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-3bf2e850]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-3bf2e850]{padding:0 64px}}.title[data-v-3bf2e850]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-3bf2e850]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-3bf2e850]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-3bf2e850]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-3bf2e850]{padding-top:40px}.VPTeamMembersItem[data-v-3a0078bd]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-3a0078bd]{padding:32px}.VPTeamMembersItem.small .data[data-v-3a0078bd]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-3a0078bd]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-3a0078bd]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-3a0078bd]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-3a0078bd]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-3a0078bd]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-3a0078bd]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-3a0078bd]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-3a0078bd]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-3a0078bd]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-3a0078bd]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-3a0078bd]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-3a0078bd]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-3a0078bd]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-3a0078bd]{text-align:center}.avatar[data-v-3a0078bd]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-3a0078bd]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-3a0078bd]{margin:0;font-weight:600}.affiliation[data-v-3a0078bd]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-3a0078bd]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-3a0078bd]:hover{color:var(--vp-c-brand-1)}.desc[data-v-3a0078bd]{margin:0 auto}.desc[data-v-3a0078bd] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-3a0078bd]{display:flex;justify-content:center;height:56px}.sp-link[data-v-3a0078bd]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-3a0078bd]:hover,.sp .sp-link.link[data-v-3a0078bd]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-3a0078bd]{margin-right:8px;width:16px;height:16px;fill:currentColor}.VPTeamMembers.small .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-bf782009]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-bf782009]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-bf782009]{max-width:876px}.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-bf782009]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-bf782009]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-bf782009]{max-width:760px}.container[data-v-bf782009]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.VPLocalSearchBox[data-v-7103b5f8]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-7103b5f8]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-7103b5f8]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-7103b5f8]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-7103b5f8]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-7103b5f8]{padding:0 8px}}.search-bar[data-v-7103b5f8]:focus-within{border-color:var(--vp-c-brand-1)}.search-icon[data-v-7103b5f8]{margin:8px}@media (max-width: 767px){.search-icon[data-v-7103b5f8]{display:none}}.search-input[data-v-7103b5f8]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-7103b5f8]{padding:6px 4px}}.search-actions[data-v-7103b5f8]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-7103b5f8]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-7103b5f8]{display:none}}.search-actions button[data-v-7103b5f8]{padding:8px}.search-actions button[data-v-7103b5f8]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-7103b5f8]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-7103b5f8]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-7103b5f8]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-7103b5f8]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-7103b5f8]{display:none}}.search-keyboard-shortcuts kbd[data-v-7103b5f8]{background:rgba(128,128,128,.1);border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-7103b5f8]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-7103b5f8]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-7103b5f8]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-7103b5f8]{margin:8px}}.titles[data-v-7103b5f8]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-7103b5f8]{display:flex;align-items:center;gap:4px}.title.main[data-v-7103b5f8]{font-weight:500}.title-icon[data-v-7103b5f8]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-7103b5f8]{opacity:.5}.result.selected[data-v-7103b5f8]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-7103b5f8]{position:relative}.excerpt[data-v-7103b5f8]{opacity:75%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;opacity:.5;margin-top:4px}.result.selected .excerpt[data-v-7103b5f8]{opacity:1}.excerpt[data-v-7103b5f8] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-7103b5f8] mark,.excerpt[data-v-7103b5f8] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-7103b5f8] .vp-code-group .tabs{display:none}.excerpt[data-v-7103b5f8] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-7103b5f8]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-7103b5f8]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-7103b5f8],.result.selected .title-icon[data-v-7103b5f8]{color:var(--vp-c-brand-1)!important}.no-results[data-v-7103b5f8]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-7103b5f8]{flex:none}
docs/404.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>404 | google/zx</title>
+    <meta name="description" content="Not Found">
+    <link rel="preload stylesheet" href="/zx/assets/style.23bc6f20.css" as="style">
+    
+    <script type="module" src="/zx/assets/app.58befdb7.js"></script>
+    <link rel="preload" href="/zx/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
+    <script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
+  </head>
+  <body>
+    <div id="app"><div class="Layout" data-v-4064354f><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-4064354f data-v-5bdc5df3><div class="VPNavBar" data-v-5bdc5df3 data-v-f1abbc6e><div class="container" data-v-f1abbc6e><div class="title" data-v-f1abbc6e><div class="VPNavBarTitle" data-v-f1abbc6e data-v-2973dbb4><a class="title" href="/zx/" data-v-2973dbb4><!--[--><!--]--><!----><!--[-->google/zx<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-f1abbc6e><div class="curtain" data-v-f1abbc6e></div><div class="content-body" data-v-f1abbc6e><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-f1abbc6e><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f1abbc6e data-v-f732b5d0><span id="main-nav-aria-label" class="visually-hidden" data-v-f732b5d0>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/zx/" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zx/getting-started" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Docs</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f732b5d0 data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-aa8de344><span class="text" data-v-aa8de344><!----><span data-v-aa8de344>7.x</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-aa8de344><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><div class="items" data-v-e42ed9b3><!--[--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-f51f088d><a class="VPLink link vp-external-link-icon" href="https://github.com/google/zx/releases" target="_blank" rel="noreferrer" data-v-f51f088d><!--[-->Releases<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-f1abbc6e data-v-5e9f0637><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-5e9f0637 data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-f1abbc6e data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-f1abbc6e data-v-c8c2ae4b data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-aa8de344><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-aa8de344><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><!----><!--[--><!--[--><!----><div class="group" data-v-c8c2ae4b><div class="item appearance" data-v-c8c2ae4b><p class="label" data-v-c8c2ae4b>Appearance</p><div class="appearance-action" data-v-c8c2ae4b><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-c8c2ae4b data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-c8c2ae4b><div class="item social-links" data-v-c8c2ae4b><div class="VPSocialLinks social-links-list" data-v-c8c2ae4b data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f1abbc6e data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav fixed reached-top" data-v-4064354f data-v-9e669cc1><!----><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-9e669cc1 data-v-24251f6f><button data-v-24251f6f>Return to top</button><!----></div></div><!----><div class="VPContent" id="VPContent" data-v-4064354f data-v-3cf691b6><!--[--><div class="NotFound" data-v-3cf691b6 data-v-b9c0c15a><p class="code" data-v-b9c0c15a>404</p><h1 class="title" data-v-b9c0c15a>PAGE NOT FOUND</h1><div class="divider" data-v-b9c0c15a></div><blockquote class="quote" data-v-b9c0c15a>But if you don&#39;t change your direction, and if you keep looking, you may end up where you are heading.</blockquote><div class="action" data-v-b9c0c15a><a class="link" href="/zx/" aria-label="go to home" data-v-b9c0c15a>Take me home</a></div></div><!--]--></div><footer class="VPFooter" data-v-4064354f data-v-e4279f1c><div class="container" data-v-e4279f1c><p class="message" data-v-e4279f1c>Disclaimer: This is not an officially supported Google product.</p><!----></div></footer><!--[--><!--]--></div></div>
+    <script>window.__VP_HASH_MAP__=JSON.parse("{\"markdown-scripts.md\":\"c7e9dbed\",\"index.md\":\"066698c6\",\"quotes.md\":\"5dad2b0d\",\"known-issues.md\":\"e3403a7b\",\"process-promise.md\":\"d7916acc\",\"getting-started.md\":\"6acf3454\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"google/zx\",\"titleTemplate\":\":title | google/zx\",\"description\":\"A tool for writing better scripts\",\"base\":\"/zx/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Docs\",\"link\":\"/getting-started\"},{\"text\":\"7.x\",\"items\":[{\"text\":\"Releases\",\"link\":\"https://github.com/google/zx/releases\"}]}],\"sidebar\":[{\"text\":\"Docs\",\"items\":[{\"text\":\"Getting Started\",\"link\":\"/getting-started\"},{\"text\":\"Process Promise\",\"link\":\"/process-promise\"},{\"text\":\"Quotes\",\"link\":\"/quotes\"},{\"text\":\"Markdown Scripts\",\"link\":\"/markdown-scripts\"}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/google/zx\"}],\"footer\":{\"message\":\"Disclaimer: This is not an officially supported Google product.\"},\"search\":{\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":true}");</script>
+    
+  </body>
+</html>
\ No newline at end of file
docs/getting-started.html
@@ -0,0 +1,242 @@
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Getting Started | google/zx</title>
+    <meta name="description" content="A tool for writing better scripts">
+    <link rel="preload stylesheet" href="/zx/assets/style.23bc6f20.css" as="style">
+    
+    <script type="module" src="/zx/assets/app.58befdb7.js"></script>
+    <link rel="preload" href="/zx/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
+    <link rel="modulepreload" href="/zx/assets/chunks/framework.54ce79f7.js">
+    <link rel="modulepreload" href="/zx/assets/chunks/theme.da00fba9.js">
+    <link rel="modulepreload" href="/zx/assets/getting-started.md.6acf3454.lean.js">
+    <script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
+  </head>
+  <body>
+    <div id="app"><div class="Layout" data-v-4064354f><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-4064354f data-v-5bdc5df3><div class="VPNavBar has-sidebar" data-v-5bdc5df3 data-v-f1abbc6e><div class="container" data-v-f1abbc6e><div class="title" data-v-f1abbc6e><div class="VPNavBarTitle has-sidebar" data-v-f1abbc6e data-v-2973dbb4><a class="title" href="/zx/" data-v-2973dbb4><!--[--><!--]--><!----><!--[-->google/zx<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-f1abbc6e><div class="curtain" data-v-f1abbc6e></div><div class="content-body" data-v-f1abbc6e><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-f1abbc6e><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f1abbc6e data-v-f732b5d0><span id="main-nav-aria-label" class="visually-hidden" data-v-f732b5d0>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zx/" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/zx/getting-started" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Docs</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f732b5d0 data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-aa8de344><span class="text" data-v-aa8de344><!----><span data-v-aa8de344>7.x</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-aa8de344><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><div class="items" data-v-e42ed9b3><!--[--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-f51f088d><a class="VPLink link vp-external-link-icon" href="https://github.com/google/zx/releases" target="_blank" rel="noreferrer" data-v-f51f088d><!--[-->Releases<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-f1abbc6e data-v-5e9f0637><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-5e9f0637 data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-f1abbc6e data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-f1abbc6e data-v-c8c2ae4b data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-aa8de344><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-aa8de344><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><!----><!--[--><!--[--><!----><div class="group" data-v-c8c2ae4b><div class="item appearance" data-v-c8c2ae4b><p class="label" data-v-c8c2ae4b>Appearance</p><div class="appearance-action" data-v-c8c2ae4b><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-c8c2ae4b data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-c8c2ae4b><div class="item social-links" data-v-c8c2ae4b><div class="VPSocialLinks social-links-list" data-v-c8c2ae4b data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f1abbc6e data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav reached-top" data-v-4064354f data-v-9e669cc1><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-9e669cc1><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-9e669cc1><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-9e669cc1>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-9e669cc1 data-v-24251f6f><button data-v-24251f6f>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-4064354f data-v-ee2efba5><div class="curtain" data-v-ee2efba5></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-ee2efba5><span class="visually-hidden" id="sidebar-aria-label" data-v-ee2efba5> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-ee2efba5><section class="VPSidebarItem level-0 has-active" data-v-ee2efba5 data-v-bd01e0d5><div class="item" role="button" tabindex="0" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><h2 class="text" data-v-bd01e0d5>Docs</h2><!----></div><div class="items" data-v-bd01e0d5><!--[--><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/getting-started" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Getting Started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/process-promise" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Process Promise</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/quotes" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Quotes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/markdown-scripts" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Markdown Scripts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-4064354f data-v-3cf691b6><div class="VPDoc has-sidebar has-aside" data-v-3cf691b6 data-v-a3c25e27><!--[--><!--]--><div class="container" data-v-a3c25e27><div class="aside" data-v-a3c25e27><div class="aside-curtain" data-v-a3c25e27></div><div class="aside-container" data-v-a3c25e27><div class="aside-content" data-v-a3c25e27><div class="VPDocAside" data-v-a3c25e27 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" role="navigation" data-v-cb998dce data-v-626d8d18><div class="content" data-v-626d8d18><div class="outline-marker" data-v-626d8d18></div><div class="outline-title" role="heading" data-v-626d8d18>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-626d8d18><span class="visually-hidden" id="doc-outline-aria-label" data-v-626d8d18> Table of Contents for current page </span><ul class="root" data-v-626d8d18 data-v-463da30f><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-a3c25e27><div class="content-container" data-v-a3c25e27><!--[--><!--]--><!----><main class="main" data-v-a3c25e27><div style="position:relative;" class="vp-doc _zx_getting-started" data-v-a3c25e27><div><h1 id="getting-started" tabindex="-1">Getting Started <a class="header-anchor" href="#getting-started" aria-label="Permalink to &quot;Getting Started&quot;">โ€‹</a></h1><h2 id="install" tabindex="-1">Install <a class="header-anchor" href="#install" aria-label="Permalink to &quot;Install&quot;">โ€‹</a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">npm</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">i</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">-g</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">zx</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">npm</span><span style="color:#24292E;"> </span><span style="color:#032F62;">i</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">-g</span><span style="color:#24292E;"> </span><span style="color:#032F62;">zx</span></span></code></pre></div><p><strong>Requirement</strong>: Node version &gt;= 16.0.0</p><h2 id="documentation" tabindex="-1">Documentation <a class="header-anchor" href="#documentation" aria-label="Permalink to &quot;Documentation&quot;">โ€‹</a></h2><p><a href="https://webpod.dev/?from=zx"><img src="https://webpod.dev/img/banner.png" alt="Webpod - deploy JavaScript apps" width="190" align="right"></a></p><p>Write your scripts in a file with an <code>.mjs</code> extension in order to use <code>await</code> at the top level. If you prefer the <code>.js</code> extension, wrap your scripts in something like <code>void async function () {...}()</code>.</p><p>Add the following shebang to the beginning of your <code>zx</code> scripts:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#6A737D;">#!/usr/bin/env zx</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6A737D;">#!/usr/bin/env zx</span></span></code></pre></div><p>Now you will be able to run your script like so:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">chmod</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">+x</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">./script.mjs</span></span>
+<span class="line"><span style="color:#B392F0;">./script.mjs</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">chmod</span><span style="color:#24292E;"> </span><span style="color:#032F62;">+x</span><span style="color:#24292E;"> </span><span style="color:#032F62;">./script.mjs</span></span>
+<span class="line"><span style="color:#6F42C1;">./script.mjs</span></span></code></pre></div><p>Or via the <code>zx</code> executable:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">zx</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">./script.mjs</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">zx</span><span style="color:#24292E;"> </span><span style="color:#032F62;">./script.mjs</span></span></code></pre></div><p>All functions (<code>$</code>, <code>cd</code>, <code>fetch</code>, etc) are available straight away without any imports.</p><p>Or import globals explicitly (for better autocomplete in VS Code).</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx/globals&#39;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx/globals&#39;</span></span></code></pre></div><h3 id="command" tabindex="-1"><code>$`command` </code> <a class="header-anchor" href="#command" aria-label="Permalink to &quot;``$`command` ``&quot;">โ€‹</a></h3><p>Executes a given command using the <code>spawn</code> func and returns <a href="#processpromise"><code>ProcessPromise</code></a>.</p><p>Everything passed through <code>${...}</code> will be automatically escaped and quoted.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> name </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;foo &amp; bar&#39;</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`mkdir ${</span><span style="color:#E1E4E8;">name</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> name </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;foo &amp; bar&#39;</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`mkdir ${</span><span style="color:#24292E;">name</span><span style="color:#032F62;">}`</span></span></code></pre></div><p><strong>There is no need to add extra quotes.</strong> Read more about it in <a href="./quotes">quotes</a>.</p><p>You can pass an array of arguments if needed:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> flags </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> [</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--oneline&#39;</span><span style="color:#E1E4E8;">,</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--decorate&#39;</span><span style="color:#E1E4E8;">,</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--color&#39;</span><span style="color:#E1E4E8;">,</span></span>
+<span class="line"><span style="color:#E1E4E8;">]</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`git log ${</span><span style="color:#E1E4E8;">flags</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> flags </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> [</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--oneline&#39;</span><span style="color:#24292E;">,</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--decorate&#39;</span><span style="color:#24292E;">,</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--color&#39;</span><span style="color:#24292E;">,</span></span>
+<span class="line"><span style="color:#24292E;">]</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`git log ${</span><span style="color:#24292E;">flags</span><span style="color:#032F62;">}`</span></span></code></pre></div><p>If the executed program returns a non-zero exit code, <a href="#processoutput"><code>ProcessOutput</code></a> will be thrown.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">try</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`exit 1`</span></span>
+<span class="line"><span style="color:#E1E4E8;">} </span><span style="color:#F97583;">catch</span><span style="color:#E1E4E8;"> (p) {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  console.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">`Exit code: ${</span><span style="color:#E1E4E8;">p</span><span style="color:#9ECBFF;">.</span><span style="color:#E1E4E8;">exitCode</span><span style="color:#9ECBFF;">}`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#E1E4E8;">  console.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">`Error: ${</span><span style="color:#E1E4E8;">p</span><span style="color:#9ECBFF;">.</span><span style="color:#E1E4E8;">stderr</span><span style="color:#9ECBFF;">}`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">try</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`exit 1`</span></span>
+<span class="line"><span style="color:#24292E;">} </span><span style="color:#D73A49;">catch</span><span style="color:#24292E;"> (p) {</span></span>
+<span class="line"><span style="color:#24292E;">  console.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(</span><span style="color:#032F62;">`Exit code: ${</span><span style="color:#24292E;">p</span><span style="color:#032F62;">.</span><span style="color:#24292E;">exitCode</span><span style="color:#032F62;">}`</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#24292E;">  console.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(</span><span style="color:#032F62;">`Error: ${</span><span style="color:#24292E;">p</span><span style="color:#032F62;">.</span><span style="color:#24292E;">stderr</span><span style="color:#032F62;">}`</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h3 id="processpromise" tabindex="-1"><code>ProcessPromise</code> <a class="header-anchor" href="#processpromise" aria-label="Permalink to &quot;`ProcessPromise`&quot;">โ€‹</a></h3><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">class</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">ProcessPromise</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">extends</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">Promise</span><span style="color:#E1E4E8;">&lt;</span><span style="color:#B392F0;">ProcessOutput</span><span style="color:#E1E4E8;">&gt; {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#FFAB70;">stdin</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">Writable</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#FFAB70;">stdout</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">Readable</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#FFAB70;">stderr</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">Readable</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#FFAB70;">exitCode</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">Promise</span><span style="color:#E1E4E8;">&lt;</span><span style="color:#79B8FF;">number</span><span style="color:#E1E4E8;">&gt;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#FFAB70;">dest</span><span style="color:#E1E4E8;">)</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">ProcessPromise</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">kill</span><span style="color:#E1E4E8;">()</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">Promise</span><span style="color:#E1E4E8;">&lt;</span><span style="color:#79B8FF;">void</span><span style="color:#E1E4E8;">&gt;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">nothrow</span><span style="color:#E1E4E8;">()</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">this</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">quiet</span><span style="color:#E1E4E8;">()</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">this</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">class</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">ProcessPromise</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">extends</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">Promise</span><span style="color:#24292E;">&lt;</span><span style="color:#6F42C1;">ProcessOutput</span><span style="color:#24292E;">&gt; {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#E36209;">stdin</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">Writable</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#E36209;">stdout</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">Readable</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#E36209;">stderr</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">Readable</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#E36209;">exitCode</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">Promise</span><span style="color:#24292E;">&lt;</span><span style="color:#005CC5;">number</span><span style="color:#24292E;">&gt;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#E36209;">dest</span><span style="color:#24292E;">)</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">ProcessPromise</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">kill</span><span style="color:#24292E;">()</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">Promise</span><span style="color:#24292E;">&lt;</span><span style="color:#005CC5;">void</span><span style="color:#24292E;">&gt;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">nothrow</span><span style="color:#24292E;">()</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">this</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">quiet</span><span style="color:#24292E;">()</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">this</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><p>Read more about the <a href="./process-promise">ProcessPromise</a>.</p><h3 id="processoutput" tabindex="-1"><code>ProcessOutput</code> <a class="header-anchor" href="#processoutput" aria-label="Permalink to &quot;`ProcessOutput`&quot;">โ€‹</a></h3><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">class</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">ProcessOutput</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">readonly</span><span style="color:#E1E4E8;"> </span><span style="color:#FFAB70;">stdout</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">string</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">readonly</span><span style="color:#E1E4E8;"> </span><span style="color:#FFAB70;">stderr</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">string</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">readonly</span><span style="color:#E1E4E8;"> </span><span style="color:#FFAB70;">signal</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">string</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">readonly</span><span style="color:#E1E4E8;"> </span><span style="color:#FFAB70;">exitCode</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">number</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">toString</span><span style="color:#E1E4E8;">()</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">string</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// Combined stdout &amp; stderr.</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">class</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">ProcessOutput</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">readonly</span><span style="color:#24292E;"> </span><span style="color:#E36209;">stdout</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">string</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">readonly</span><span style="color:#24292E;"> </span><span style="color:#E36209;">stderr</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">string</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">readonly</span><span style="color:#24292E;"> </span><span style="color:#E36209;">signal</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">string</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">readonly</span><span style="color:#24292E;"> </span><span style="color:#E36209;">exitCode</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">number</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">toString</span><span style="color:#24292E;">()</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">string</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// Combined stdout &amp; stderr.</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><p>The output of the process is captured as-is. Usually, programs print a new line <code>\n</code> at the end. If <code>ProcessOutput</code> is used as an argument to some other <code>$</code> process, <strong>zx</strong> will use stdout and trim the new line.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> date </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`date`</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`echo Current date is ${</span><span style="color:#E1E4E8;">date</span><span style="color:#9ECBFF;">}.`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> date </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`date`</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`echo Current date is ${</span><span style="color:#24292E;">date</span><span style="color:#032F62;">}.`</span></span></code></pre></div><h2 id="functions" tabindex="-1">Functions <a class="header-anchor" href="#functions" aria-label="Permalink to &quot;Functions&quot;">โ€‹</a></h2><h3 id="cd" tabindex="-1"><code>cd()</code> <a class="header-anchor" href="#cd" aria-label="Permalink to &quot;`cd()`&quot;">โ€‹</a></h3><p>Changes the current working directory.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">cd</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;/tmp&#39;</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`pwd`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// =&gt; /tmp</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">cd</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;/tmp&#39;</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`pwd`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// =&gt; /tmp</span></span></code></pre></div><p>Like <code>echo</code>, in addition to <code>string</code> arguments, <code>cd</code> accepts and trims trailing newlines from <code>ProcessOutput</code> enabling common idioms like:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">cd</span><span style="color:#E1E4E8;">(</span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`mktemp -d`</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">cd</span><span style="color:#24292E;">(</span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`mktemp -d`</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="fetch" tabindex="-1"><code>fetch()</code> <a class="header-anchor" href="#fetch" aria-label="Permalink to &quot;`fetch()`&quot;">โ€‹</a></h3><p>A wrapper around the <a href="https://www.npmjs.com/package/node-fetch" target="_blank" rel="noreferrer">node-fetch</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> resp </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">fetch</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;https://medv.io&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> resp </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">fetch</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;https://medv.io&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="question" tabindex="-1"><code>question()</code> <a class="header-anchor" href="#question" aria-label="Permalink to &quot;`question()`&quot;">โ€‹</a></h3><p>A wrapper around the <a href="https://nodejs.org/api/readline.html" target="_blank" rel="noreferrer">readline</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> bear </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">question</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;What kind of bear is best? &#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> bear </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">question</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;What kind of bear is best? &#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="sleep" tabindex="-1"><code>sleep()</code> <a class="header-anchor" href="#sleep" aria-label="Permalink to &quot;`sleep()`&quot;">โ€‹</a></h3><p>A wrapper around the <code>setTimeout</code> function.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">sleep</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">1000</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">sleep</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">1000</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="echo" tabindex="-1"><code>echo()</code> <a class="header-anchor" href="#echo" aria-label="Permalink to &quot;`echo()`&quot;">โ€‹</a></h3><p>A <code>console.log()</code> alternative which can take <a href="#processoutput">ProcessOutput</a>.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> branch </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`git branch --show-current`</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#B392F0;">echo</span><span style="color:#9ECBFF;">`Current branch is ${</span><span style="color:#E1E4E8;">branch</span><span style="color:#9ECBFF;">}.`</span></span>
+<span class="line"><span style="color:#6A737D;">// or</span></span>
+<span class="line"><span style="color:#B392F0;">echo</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;Current branch is&#39;</span><span style="color:#E1E4E8;">, branch)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> branch </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`git branch --show-current`</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6F42C1;">echo</span><span style="color:#032F62;">`Current branch is ${</span><span style="color:#24292E;">branch</span><span style="color:#032F62;">}.`</span></span>
+<span class="line"><span style="color:#6A737D;">// or</span></span>
+<span class="line"><span style="color:#6F42C1;">echo</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;Current branch is&#39;</span><span style="color:#24292E;">, branch)</span></span></code></pre></div><h3 id="stdin" tabindex="-1"><code>stdin()</code> <a class="header-anchor" href="#stdin" aria-label="Permalink to &quot;`stdin()`&quot;">โ€‹</a></h3><p>Returns the stdin as a string.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> content </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">JSON</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">parse</span><span style="color:#E1E4E8;">(</span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">stdin</span><span style="color:#E1E4E8;">())</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> content </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">JSON</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">parse</span><span style="color:#24292E;">(</span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">stdin</span><span style="color:#24292E;">())</span></span></code></pre></div><h3 id="within" tabindex="-1"><code>within()</code> <a class="header-anchor" href="#within" aria-label="Permalink to &quot;`within()`&quot;">โ€‹</a></h3><p>Creates a new async context.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`pwd`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// =&gt; /home/path</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#B392F0;">within</span><span style="color:#E1E4E8;">(</span><span style="color:#F97583;">async</span><span style="color:#E1E4E8;"> () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">cd</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;/tmp&#39;</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">setTimeout</span><span style="color:#E1E4E8;">(</span><span style="color:#F97583;">async</span><span style="color:#E1E4E8;"> () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`pwd`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// =&gt; /tmp</span></span>
+<span class="line"><span style="color:#E1E4E8;">  }, </span><span style="color:#79B8FF;">1000</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#E1E4E8;">})</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`pwd`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// =&gt; /home/path</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`pwd`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// =&gt; /home/path</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6F42C1;">within</span><span style="color:#24292E;">(</span><span style="color:#D73A49;">async</span><span style="color:#24292E;"> () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">cd</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;/tmp&#39;</span><span style="color:#24292E;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">setTimeout</span><span style="color:#24292E;">(</span><span style="color:#D73A49;">async</span><span style="color:#24292E;"> () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">    </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`pwd`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// =&gt; /tmp</span></span>
+<span class="line"><span style="color:#24292E;">  }, </span><span style="color:#005CC5;">1000</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#24292E;">})</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`pwd`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// =&gt; /home/path</span></span></code></pre></div><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`node --version`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// =&gt; v20.2.0</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> version </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">within</span><span style="color:#E1E4E8;">(</span><span style="color:#F97583;">async</span><span style="color:#E1E4E8;"> () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  $.prefix </span><span style="color:#F97583;">+=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;export NVM_DIR=$HOME/.nvm; source $NVM_DIR/nvm.sh; nvm use 16;&#39;</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">return</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`node --version`</span></span>
+<span class="line"><span style="color:#E1E4E8;">})</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#B392F0;">echo</span><span style="color:#E1E4E8;">(version) </span><span style="color:#6A737D;">// =&gt; v16.20.0</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`node --version`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// =&gt; v20.2.0</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> version </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">within</span><span style="color:#24292E;">(</span><span style="color:#D73A49;">async</span><span style="color:#24292E;"> () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">  $.prefix </span><span style="color:#D73A49;">+=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;export NVM_DIR=$HOME/.nvm; source $NVM_DIR/nvm.sh; nvm use 16;&#39;</span></span>
+<span class="line"><span style="color:#24292E;">  </span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">return</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`node --version`</span></span>
+<span class="line"><span style="color:#24292E;">})</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6F42C1;">echo</span><span style="color:#24292E;">(version) </span><span style="color:#6A737D;">// =&gt; v16.20.0</span></span></code></pre></div><h3 id="retry" tabindex="-1"><code>retry()</code> <a class="header-anchor" href="#retry" aria-label="Permalink to &quot;`retry()`&quot;">โ€‹</a></h3><p>Retries a callback for a few times. Will return after the first successful attempt, or will throw after specifies attempts count.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">retry</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">10</span><span style="color:#E1E4E8;">, () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`curl https://medv.io`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With a specified delay between attempts.</span></span>
+<span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">retry</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">20</span><span style="color:#E1E4E8;">, </span><span style="color:#9ECBFF;">&#39;1s&#39;</span><span style="color:#E1E4E8;">, () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`curl https://medv.io`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With an exponential backoff.</span></span>
+<span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">retry</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">30</span><span style="color:#E1E4E8;">, </span><span style="color:#B392F0;">expBackoff</span><span style="color:#E1E4E8;">(), () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`curl https://medv.io`</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">retry</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">10</span><span style="color:#24292E;">, () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`curl https://medv.io`</span><span style="color:#24292E;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With a specified delay between attempts.</span></span>
+<span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">retry</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">20</span><span style="color:#24292E;">, </span><span style="color:#032F62;">&#39;1s&#39;</span><span style="color:#24292E;">, () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`curl https://medv.io`</span><span style="color:#24292E;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With an exponential backoff.</span></span>
+<span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">retry</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">30</span><span style="color:#24292E;">, </span><span style="color:#6F42C1;">expBackoff</span><span style="color:#24292E;">(), () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`curl https://medv.io`</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="spinner" tabindex="-1"><code>spinner()</code> <a class="header-anchor" href="#spinner" aria-label="Permalink to &quot;`spinner()`&quot;">โ€‹</a></h3><p>Starts a simple CLI spinner.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">spinner</span><span style="color:#E1E4E8;">(() </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`long-running command`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With a message.</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">spinner</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;working...&#39;</span><span style="color:#E1E4E8;">, () </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`sleep 99`</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">spinner</span><span style="color:#24292E;">(() </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`long-running command`</span><span style="color:#24292E;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// With a message.</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">spinner</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;working...&#39;</span><span style="color:#24292E;">, () </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`sleep 99`</span><span style="color:#24292E;">)</span></span></code></pre></div><h2 id="packages" tabindex="-1">Packages <a class="header-anchor" href="#packages" aria-label="Permalink to &quot;Packages&quot;">โ€‹</a></h2><p>The following packages are available without importing inside scripts.</p><h3 id="chalk-package" tabindex="-1"><code>chalk</code> package <a class="header-anchor" href="#chalk-package" aria-label="Permalink to &quot;`chalk` package&quot;">โ€‹</a></h3><p>The <a href="https://www.npmjs.com/package/chalk" target="_blank" rel="noreferrer">chalk</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">console.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(chalk.</span><span style="color:#B392F0;">blue</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;Hello world!&#39;</span><span style="color:#E1E4E8;">))</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">console.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(chalk.</span><span style="color:#6F42C1;">blue</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;Hello world!&#39;</span><span style="color:#24292E;">))</span></span></code></pre></div><h3 id="fs-package" tabindex="-1"><code>fs</code> package <a class="header-anchor" href="#fs-package" aria-label="Permalink to &quot;`fs` package&quot;">โ€‹</a></h3><p>The <a href="https://www.npmjs.com/package/fs-extra" target="_blank" rel="noreferrer">fs-extra</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> {version} </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> fs.</span><span style="color:#B392F0;">readJson</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;./package.json&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> {version} </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> fs.</span><span style="color:#6F42C1;">readJson</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;./package.json&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h3 id="os-package" tabindex="-1"><code>os</code> package <a class="header-anchor" href="#os-package" aria-label="Permalink to &quot;`os` package&quot;">โ€‹</a></h3><p>The <a href="https://nodejs.org/api/os.html" target="_blank" rel="noreferrer">os</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`cd ${</span><span style="color:#E1E4E8;">os</span><span style="color:#9ECBFF;">.</span><span style="color:#B392F0;">homedir</span><span style="color:#9ECBFF;">()</span><span style="color:#9ECBFF;">} &amp;&amp; mkdir example`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`cd ${</span><span style="color:#24292E;">os</span><span style="color:#032F62;">.</span><span style="color:#6F42C1;">homedir</span><span style="color:#032F62;">()</span><span style="color:#032F62;">} &amp;&amp; mkdir example`</span></span></code></pre></div><h3 id="path-package" tabindex="-1"><code>path</code> package <a class="header-anchor" href="#path-package" aria-label="Permalink to &quot;`path` package&quot;">โ€‹</a></h3><p>The <a href="https://nodejs.org/api/path.html" target="_blank" rel="noreferrer">path</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`mkdir ${</span><span style="color:#E1E4E8;">path</span><span style="color:#9ECBFF;">.</span><span style="color:#B392F0;">join</span><span style="color:#9ECBFF;">(</span><span style="color:#E1E4E8;">basedir</span><span style="color:#9ECBFF;">, </span><span style="color:#9ECBFF;">&#39;output&#39;</span><span style="color:#9ECBFF;">)</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`mkdir ${</span><span style="color:#24292E;">path</span><span style="color:#032F62;">.</span><span style="color:#6F42C1;">join</span><span style="color:#032F62;">(</span><span style="color:#24292E;">basedir</span><span style="color:#032F62;">, </span><span style="color:#032F62;">&#39;output&#39;</span><span style="color:#032F62;">)</span><span style="color:#032F62;">}`</span></span></code></pre></div><h3 id="globby-package" tabindex="-1"><code>globby</code> package <a class="header-anchor" href="#globby-package" aria-label="Permalink to &quot;`globby` package&quot;">โ€‹</a></h3><p>The <a href="https://github.com/sindresorhus/globby" target="_blank" rel="noreferrer">globby</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> packages </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">glob</span><span style="color:#E1E4E8;">([</span><span style="color:#9ECBFF;">&#39;package.json&#39;</span><span style="color:#E1E4E8;">, </span><span style="color:#9ECBFF;">&#39;packages/*/package.json&#39;</span><span style="color:#E1E4E8;">])</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> packages </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">glob</span><span style="color:#24292E;">([</span><span style="color:#032F62;">&#39;package.json&#39;</span><span style="color:#24292E;">, </span><span style="color:#032F62;">&#39;packages/*/package.json&#39;</span><span style="color:#24292E;">])</span></span></code></pre></div><h3 id="yaml-package" tabindex="-1"><code>yaml</code> package <a class="header-anchor" href="#yaml-package" aria-label="Permalink to &quot;`yaml` package&quot;">โ€‹</a></h3><p>The <a href="https://www.npmjs.com/package/yaml" target="_blank" rel="noreferrer">yaml</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">console.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">YAML</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">parse</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;foo: bar&#39;</span><span style="color:#E1E4E8;">).foo)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">console.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">YAML</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">parse</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;foo: bar&#39;</span><span style="color:#24292E;">).foo)</span></span></code></pre></div><h3 id="minimist-package" tabindex="-1"><code>minimist</code> package <a class="header-anchor" href="#minimist-package" aria-label="Permalink to &quot;`minimist` package&quot;">โ€‹</a></h3><p>The <a href="https://www.npmjs.com/package/minimist" target="_blank" rel="noreferrer">minimist</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> myCustomArgv </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">minimist</span><span style="color:#E1E4E8;">(process.argv.</span><span style="color:#B392F0;">slice</span><span style="color:#E1E4E8;">(</span><span style="color:#79B8FF;">2</span><span style="color:#E1E4E8;">), { boolean: [</span><span style="color:#9ECBFF;">&quot;force&quot;</span><span style="color:#E1E4E8;">, </span><span style="color:#9ECBFF;">&quot;help&quot;</span><span style="color:#E1E4E8;">] })</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> myCustomArgv </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">minimist</span><span style="color:#24292E;">(process.argv.</span><span style="color:#6F42C1;">slice</span><span style="color:#24292E;">(</span><span style="color:#005CC5;">2</span><span style="color:#24292E;">), { boolean: [</span><span style="color:#032F62;">&quot;force&quot;</span><span style="color:#24292E;">, </span><span style="color:#032F62;">&quot;help&quot;</span><span style="color:#24292E;">] })</span></span></code></pre></div><p>A minimist-parsed version of the process args as <code>argv</code> (parsed without any config).</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">if</span><span style="color:#E1E4E8;"> (argv.someFlag) {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">echo</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;yes&#39;</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">if</span><span style="color:#24292E;"> (argv.someFlag) {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">echo</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;yes&#39;</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h3 id="which-package" tabindex="-1"><code>which</code> package <a class="header-anchor" href="#which-package" aria-label="Permalink to &quot;`which` package&quot;">โ€‹</a></h3><p>The <a href="https://github.com/npm/node-which" target="_blank" rel="noreferrer">which</a> package.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> node </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">which</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;node&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> node </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">which</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;node&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h2 id="configuration" tabindex="-1">Configuration <a class="header-anchor" href="#configuration" aria-label="Permalink to &quot;Configuration&quot;">โ€‹</a></h2><h3 id="shell" tabindex="-1"><code>$.shell</code> <a class="header-anchor" href="#shell" aria-label="Permalink to &quot;`$.shell`&quot;">โ€‹</a></h3><p>Specifies what shell is used. Default is <code>which bash</code>.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">$.shell </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;/usr/bin/bash&#39;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">$.shell </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;/usr/bin/bash&#39;</span></span></code></pre></div><p>Or use a CLI argument: <code>--shell=/bin/bash</code></p><h3 id="spawn" tabindex="-1"><code>$.spawn</code> <a class="header-anchor" href="#spawn" aria-label="Permalink to &quot;`$.spawn`&quot;">โ€‹</a></h3><p>Specifies a <code>spawn</code> api. Defaults to <code>require(&#39;child_process&#39;).spawn</code>.</p><h3 id="prefix" tabindex="-1"><code>$.prefix</code> <a class="header-anchor" href="#prefix" aria-label="Permalink to &quot;`$.prefix`&quot;">โ€‹</a></h3><p>Specifies the command that will be prefixed to all commands run.</p><p>Default is <code>set -euo pipefail;</code>.</p><p>Or use a CLI argument: <code>--prefix=&#39;set -e;&#39;</code></p><h3 id="quote" tabindex="-1"><code>$.quote</code> <a class="header-anchor" href="#quote" aria-label="Permalink to &quot;`$.quote`&quot;">โ€‹</a></h3><p>Specifies a function for escaping special characters during command substitution.</p><h3 id="verbose" tabindex="-1"><code>$.verbose</code> <a class="header-anchor" href="#verbose" aria-label="Permalink to &quot;`$.verbose`&quot;">โ€‹</a></h3><p>Specifies verbosity. Default is <code>true</code>.</p><p>In verbose mode, <code>zx</code> prints all executed commands alongside with their outputs.</p><p>Or use the CLI argument <code>--quiet</code> to set <code>$.verbose = false</code>.</p><h3 id="env" tabindex="-1"><code>$.env</code> <a class="header-anchor" href="#env" aria-label="Permalink to &quot;`$.env`&quot;">โ€‹</a></h3><p>Specifies an environment variables map.</p><p>Defaults to <code>p<wbr>rocess.env</code>.</p><h3 id="cwd" tabindex="-1"><code>$.cwd</code> <a class="header-anchor" href="#cwd" aria-label="Permalink to &quot;`$.cwd`&quot;">โ€‹</a></h3><p>Specifies a current working directory of all processes created with the <code>$</code>.</p><p>The <a href="#cd">cd()</a> func changes only <code>process.cwd()</code> and if no <code>$.cwd</code> specified, all <code>$</code> processes use <code>process.cwd()</code> by default (same as <code>spawn</code> behavior).</p><h3 id="log" tabindex="-1"><code>$.log</code> <a class="header-anchor" href="#log" aria-label="Permalink to &quot;`$.log`&quot;">โ€‹</a></h3><p>Specifies a <a href="src/core.ts">logging function</a>.</p><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> { LogEntry, log } </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx/core&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">$.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> (</span><span style="color:#FFAB70;">entry</span><span style="color:#F97583;">:</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">LogEntry</span><span style="color:#E1E4E8;">) </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">switch</span><span style="color:#E1E4E8;"> (entry.kind) {</span></span>
+<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#F97583;">case</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;cmd&#39;</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">      </span><span style="color:#6A737D;">// for example, apply custom data masker for cmd printing</span></span>
+<span class="line"><span style="color:#E1E4E8;">      process.stderr.</span><span style="color:#B392F0;">write</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">masker</span><span style="color:#E1E4E8;">(entry.cmd))</span></span>
+<span class="line"><span style="color:#E1E4E8;">      </span><span style="color:#F97583;">break</span></span>
+<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#F97583;">default</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">      </span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(entry)</span></span>
+<span class="line"><span style="color:#E1E4E8;">  }</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> { LogEntry, log } </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx/core&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">$.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> (</span><span style="color:#E36209;">entry</span><span style="color:#D73A49;">:</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">LogEntry</span><span style="color:#24292E;">) </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">switch</span><span style="color:#24292E;"> (entry.kind) {</span></span>
+<span class="line"><span style="color:#24292E;">    </span><span style="color:#D73A49;">case</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;cmd&#39;</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">      </span><span style="color:#6A737D;">// for example, apply custom data masker for cmd printing</span></span>
+<span class="line"><span style="color:#24292E;">      process.stderr.</span><span style="color:#6F42C1;">write</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">masker</span><span style="color:#24292E;">(entry.cmd))</span></span>
+<span class="line"><span style="color:#24292E;">      </span><span style="color:#D73A49;">break</span></span>
+<span class="line"><span style="color:#24292E;">    </span><span style="color:#D73A49;">default</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">      </span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(entry)</span></span>
+<span class="line"><span style="color:#24292E;">  }</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h2 id="polyfills" tabindex="-1">Polyfills <a class="header-anchor" href="#polyfills" aria-label="Permalink to &quot;Polyfills&quot;">โ€‹</a></h2><h3 id="filename-dirname" tabindex="-1"><code>__filename</code> &amp; <code>__dirname</code> <a class="header-anchor" href="#filename-dirname" aria-label="Permalink to &quot;`__filename` &amp; `__dirname`&quot;">โ€‹</a></h3><p>In <a href="https://nodejs.org/api/esm.html" target="_blank" rel="noreferrer">ESM</a> modules, Node.js does not provide <code>__filename</code> and <code>__dirname</code> globals. As such globals are really handy in scripts, <code>zx</code> provides these for use in <code>.mjs</code> files (when using the <code>zx</code> executable).</p><h3 id="require" tabindex="-1"><code>require()</code> <a class="header-anchor" href="#require" aria-label="Permalink to &quot;`require()`&quot;">โ€‹</a></h3><p>In <a href="https://nodejs.org/api/modules.html#modules_module_createrequire_filename" target="_blank" rel="noreferrer">ESM</a> modules, the <code>require()</code> function is not defined. The <code>zx</code> provides <code>require()</code> function, so it can be used with imports in <code>.mjs</code> files (when using <code>zx</code> executable).</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> {version} </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">require</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;./package.json&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> {version} </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">require</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;./package.json&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h2 id="faq" tabindex="-1">FAQ <a class="header-anchor" href="#faq" aria-label="Permalink to &quot;FAQ&quot;">โ€‹</a></h2><h3 id="passing-env-variables" tabindex="-1">Passing env variables <a class="header-anchor" href="#passing-env-variables" aria-label="Permalink to &quot;Passing env variables&quot;">โ€‹</a></h3><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">p<wbr>rocess.env.</span><span style="color:#79B8FF;">FOO</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;bar&#39;</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`echo $FOO`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">p<wbr>rocess.env.</span><span style="color:#005CC5;">FOO</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;bar&#39;</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`echo $FOO`</span></span></code></pre></div><h3 id="passing-array-of-values" tabindex="-1">Passing array of values <a class="header-anchor" href="#passing-array-of-values" aria-label="Permalink to &quot;Passing array of values&quot;">โ€‹</a></h3><p>When passing an array of values as an argument to <code>$</code>, items of the array will be escaped individually and concatenated via space.</p><p>Example:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> files </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> [</span><span style="color:#F97583;">...</span><span style="color:#E1E4E8;">]</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`tar cz ${</span><span style="color:#E1E4E8;">files</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> files </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> [</span><span style="color:#D73A49;">...</span><span style="color:#24292E;">]</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`tar cz ${</span><span style="color:#24292E;">files</span><span style="color:#032F62;">}`</span></span></code></pre></div><h3 id="importing-into-other-scripts" tabindex="-1">Importing into other scripts <a class="header-anchor" href="#importing-into-other-scripts" aria-label="Permalink to &quot;Importing into other scripts&quot;">โ€‹</a></h3><p>It is possible to make use of <code>$</code> and other functions via explicit imports:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#6A737D;">#!/usr/bin/env node</span></span>
+<span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> { $ } </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`date`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6A737D;">#!/usr/bin/env node</span></span>
+<span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> { $ } </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`date`</span></span></code></pre></div><h3 id="scripts-without-extensions" tabindex="-1">Scripts without extensions <a class="header-anchor" href="#scripts-without-extensions" aria-label="Permalink to &quot;Scripts without extensions&quot;">โ€‹</a></h3><p>If script does not have a file extension (like <code>.git/hooks/pre-commit</code>), zx assumes that it is an <a href="https://nodejs.org/api/modules.html#modules_module_createrequire_filename" target="_blank" rel="noreferrer">ESM</a> module.</p><h3 id="markdown-scripts" tabindex="-1">Markdown scripts <a class="header-anchor" href="#markdown-scripts" aria-label="Permalink to &quot;Markdown scripts&quot;">โ€‹</a></h3><p>The <code>zx</code> can execute <a href="./markdown-scripts">scripts written as markdown</a>:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">zx</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">docs/markdown.md</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">zx</span><span style="color:#24292E;"> </span><span style="color:#032F62;">docs/markdown.md</span></span></code></pre></div><h3 id="typescript-scripts" tabindex="-1">TypeScript scripts <a class="header-anchor" href="#typescript-scripts" aria-label="Permalink to &quot;TypeScript scripts&quot;">โ€‹</a></h3><div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> { $ } </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx&#39;</span></span>
+<span class="line"><span style="color:#6A737D;">// Or</span></span>
+<span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx/globals&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">void</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">async</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">function</span><span style="color:#E1E4E8;"> () {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`ls -la`</span></span>
+<span class="line"><span style="color:#E1E4E8;">}()</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> { $ } </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx&#39;</span></span>
+<span class="line"><span style="color:#6A737D;">// Or</span></span>
+<span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx/globals&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">void</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">async</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">function</span><span style="color:#24292E;"> () {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`ls -la`</span></span>
+<span class="line"><span style="color:#24292E;">}()</span></span></code></pre></div><p>Set <a href="https://nodejs.org/api/packages.html#packages_type" target="_blank" rel="noreferrer"><code>&quot;type&quot;: &quot;module&quot;</code></a> in <strong>package.json</strong> and <a href="https://www.typescriptlang.org/tsconfig/#module" target="_blank" rel="noreferrer"><code>&quot;module&quot;: &quot;ESNext&quot;</code></a> in <strong>tsconfig.json</strong>.</p><h3 id="executing-remote-scripts" tabindex="-1">Executing remote scripts <a class="header-anchor" href="#executing-remote-scripts" aria-label="Permalink to &quot;Executing remote scripts&quot;">โ€‹</a></h3><p>If the argument to the <code>zx</code> executable starts with <code>https://</code>, the file will be downloaded and executed.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">zx</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">https://medv.io/game-of-life.js</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">zx</span><span style="color:#24292E;"> </span><span style="color:#032F62;">https://medv.io/game-of-life.js</span></span></code></pre></div><h3 id="executing-scripts-from-stdin" tabindex="-1">Executing scripts from stdin <a class="header-anchor" href="#executing-scripts-from-stdin" aria-label="Permalink to &quot;Executing scripts from stdin&quot;">โ€‹</a></h3><p>The <code>zx</code> supports executing scripts from stdin.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">zx </span><span style="color:#F97583;">&lt;&lt;</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;EOF&#39;</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`pwd`</span></span>
+<span class="line"><span style="color:#79B8FF;">EOF</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">zx </span><span style="color:#D73A49;">&lt;&lt;</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;EOF&#39;</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`pwd`</span></span>
+<span class="line"><span style="color:#005CC5;">EOF</span></span></code></pre></div><h3 id="executing-scripts-via-eval" tabindex="-1">Executing scripts via --eval <a class="header-anchor" href="#executing-scripts-via-eval" aria-label="Permalink to &quot;Executing scripts via --eval&quot;">โ€‹</a></h3><p>Evaluate the following argument as a script.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">cat</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">package.json</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">|</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">zx</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">--eval</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;let v = JSON.parse(await stdin()).version; echo(v)&#39;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">cat</span><span style="color:#24292E;"> </span><span style="color:#032F62;">package.json</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">|</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">zx</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">--eval</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;let v = JSON.parse(await stdin()).version; echo(v)&#39;</span></span></code></pre></div><h3 id="installing-dependencies-via-install" tabindex="-1">Installing dependencies via --install <a class="header-anchor" href="#installing-dependencies-via-install" aria-label="Permalink to &quot;Installing dependencies via --install&quot;">โ€‹</a></h3><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#6A737D;">// script.mjs:</span></span>
+<span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> sh </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;tinysh&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">sh.</span><span style="color:#B392F0;">say</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;Hello, world!&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6A737D;">// script.mjs:</span></span>
+<span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> sh </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;tinysh&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">sh.</span><span style="color:#6F42C1;">say</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;Hello, world!&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><p>Add <code>--install</code> flag to the <code>zx</code> command to install missing dependencies automatically.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">zx</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">--install</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">script.mjs</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">zx</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">--install</span><span style="color:#24292E;"> </span><span style="color:#032F62;">script.mjs</span></span></code></pre></div><p>You can also specify needed version by adding comment with <code>@</code> after the import.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> sh </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;tinysh&#39;</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// @^1</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> sh </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;tinysh&#39;</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// @^1</span></span></code></pre></div><h3 id="executing-commands-on-remote-hosts" tabindex="-1">Executing commands on remote hosts <a class="header-anchor" href="#executing-commands-on-remote-hosts" aria-label="Permalink to &quot;Executing commands on remote hosts&quot;">โ€‹</a></h3><p>The <code>zx</code> uses <a href="https://github.com/webpod/webpod" target="_blank" rel="noreferrer">webpod</a> to execute commands on remote hosts.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">import</span><span style="color:#E1E4E8;"> { ssh } </span><span style="color:#F97583;">from</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;zx&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">ssh</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;user@host&#39;</span><span style="color:#E1E4E8;">)</span><span style="color:#9ECBFF;">`echo Hello, world!`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">import</span><span style="color:#24292E;"> { ssh } </span><span style="color:#D73A49;">from</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;zx&#39;</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">ssh</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;user@host&#39;</span><span style="color:#24292E;">)</span><span style="color:#032F62;">`echo Hello, world!`</span></span></code></pre></div><h3 id="attaching-a-profile" tabindex="-1">Attaching a profile <a class="header-anchor" href="#attaching-a-profile" aria-label="Permalink to &quot;Attaching a profile&quot;">โ€‹</a></h3><p>By default <code>child_process</code> does not include aliases and bash functions. But you are still able to do it by hand. Just attach necessary directives to the <code>$.prefix</code>.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">$.prefix </span><span style="color:#F97583;">+=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;export NVM_DIR=$HOME/.nvm; source $NVM_DIR/nvm.sh; &#39;</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`nvm -v`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">$.prefix </span><span style="color:#D73A49;">+=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;export NVM_DIR=$HOME/.nvm; source $NVM_DIR/nvm.sh; &#39;</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`nvm -v`</span></span></code></pre></div><h3 id="using-github-actions" tabindex="-1">Using GitHub Actions <a class="header-anchor" href="#using-github-actions" aria-label="Permalink to &quot;Using GitHub Actions&quot;">โ€‹</a></h3><p>The default GitHub Action runner comes with <code>npx</code> installed.</p><div class="language-yaml vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">yaml</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#85E89D;">jobs</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#85E89D;">build</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#85E89D;">runs-on</span><span style="color:#E1E4E8;">: </span><span style="color:#9ECBFF;">ubuntu-latest</span></span>
+<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#85E89D;">steps</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">      - </span><span style="color:#85E89D;">uses</span><span style="color:#E1E4E8;">: </span><span style="color:#9ECBFF;">actions/checkout@v3</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#E1E4E8;">      - </span><span style="color:#85E89D;">name</span><span style="color:#E1E4E8;">: </span><span style="color:#9ECBFF;">Build</span></span>
+<span class="line"><span style="color:#E1E4E8;">        </span><span style="color:#85E89D;">env</span><span style="color:#E1E4E8;">:</span></span>
+<span class="line"><span style="color:#E1E4E8;">          </span><span style="color:#85E89D;">FORCE_COLOR</span><span style="color:#E1E4E8;">: </span><span style="color:#79B8FF;">3</span></span>
+<span class="line"><span style="color:#E1E4E8;">        </span><span style="color:#85E89D;">run</span><span style="color:#E1E4E8;">: </span><span style="color:#F97583;">|</span></span>
+<span class="line"><span style="color:#9ECBFF;">          npx zx &lt;&lt;&#39;EOF&#39;</span></span>
+<span class="line"><span style="color:#9ECBFF;">          await $`...`</span></span>
+<span class="line"><span style="color:#9ECBFF;">          EOF</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#22863A;">jobs</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#22863A;">build</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">    </span><span style="color:#22863A;">runs-on</span><span style="color:#24292E;">: </span><span style="color:#032F62;">ubuntu-latest</span></span>
+<span class="line"><span style="color:#24292E;">    </span><span style="color:#22863A;">steps</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">      - </span><span style="color:#22863A;">uses</span><span style="color:#24292E;">: </span><span style="color:#032F62;">actions/checkout@v3</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#24292E;">      - </span><span style="color:#22863A;">name</span><span style="color:#24292E;">: </span><span style="color:#032F62;">Build</span></span>
+<span class="line"><span style="color:#24292E;">        </span><span style="color:#22863A;">env</span><span style="color:#24292E;">:</span></span>
+<span class="line"><span style="color:#24292E;">          </span><span style="color:#22863A;">FORCE_COLOR</span><span style="color:#24292E;">: </span><span style="color:#005CC5;">3</span></span>
+<span class="line"><span style="color:#24292E;">        </span><span style="color:#22863A;">run</span><span style="color:#24292E;">: </span><span style="color:#D73A49;">|</span></span>
+<span class="line"><span style="color:#032F62;">          npx zx &lt;&lt;&#39;EOF&#39;</span></span>
+<span class="line"><span style="color:#032F62;">          await $`...`</span></span>
+<span class="line"><span style="color:#032F62;">          EOF</span></span></code></pre></div><h3 id="canary-beta-rc-builds" tabindex="-1">Canary / Beta / RC builds <a class="header-anchor" href="#canary-beta-rc-builds" aria-label="Permalink to &quot;Canary / Beta / RC builds&quot;">โ€‹</a></h3><p>Impatient early adopters can try the experimental zx versions. But keep in mind: these builds are โš ๏ธ๏ธ__beta__ in every sense.</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">npm</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">i</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">zx@dev</span></span>
+<span class="line"><span style="color:#B392F0;">npx</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">zx@dev</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">--install</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">--quiet</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">&lt;&lt;&lt;</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;import _ from &quot;lodash&quot; /* 4.17.15 */; console.log(_.VERSION)&#39;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">npm</span><span style="color:#24292E;"> </span><span style="color:#032F62;">i</span><span style="color:#24292E;"> </span><span style="color:#032F62;">zx@dev</span></span>
+<span class="line"><span style="color:#6F42C1;">npx</span><span style="color:#24292E;"> </span><span style="color:#032F62;">zx@dev</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">--install</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">--quiet</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">&lt;&lt;&lt;</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;import _ from &quot;lodash&quot; /* 4.17.15 */; console.log(_.VERSION)&#39;</span></span></code></pre></div><h2 id="license" tabindex="-1">License <a class="header-anchor" href="#license" aria-label="Permalink to &quot;License&quot;">โ€‹</a></h2><p><a href="https://github.com/google/zx/blob/main/LICENSE" target="_blank" rel="noreferrer">Apache-2.0</a></p><p>Disclaimer: <em>This is not an officially supported Google product.</em></p></div></div></main><footer class="VPDocFooter" data-v-a3c25e27 data-v-a2d931e4><!--[--><!--]--><!----><nav class="prev-next" data-v-a2d931e4><div class="pager" data-v-a2d931e4><!----></div><div class="pager" data-v-a2d931e4><a class="pager-link next" href="/zx/process-promise" data-v-a2d931e4><span class="desc" data-v-a2d931e4>Next page</span><span class="title" data-v-a2d931e4>Process Promise</span></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-4064354f data-v-e4279f1c><div class="container" data-v-e4279f1c><p class="message" data-v-e4279f1c>Disclaimer: This is not an officially supported Google product.</p><!----></div></footer><!--[--><!--]--></div></div>
+    <script>window.__VP_HASH_MAP__=JSON.parse("{\"markdown-scripts.md\":\"c7e9dbed\",\"index.md\":\"066698c6\",\"quotes.md\":\"5dad2b0d\",\"known-issues.md\":\"e3403a7b\",\"process-promise.md\":\"d7916acc\",\"getting-started.md\":\"6acf3454\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"google/zx\",\"titleTemplate\":\":title | google/zx\",\"description\":\"A tool for writing better scripts\",\"base\":\"/zx/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Docs\",\"link\":\"/getting-started\"},{\"text\":\"7.x\",\"items\":[{\"text\":\"Releases\",\"link\":\"https://github.com/google/zx/releases\"}]}],\"sidebar\":[{\"text\":\"Docs\",\"items\":[{\"text\":\"Getting Started\",\"link\":\"/getting-started\"},{\"text\":\"Process Promise\",\"link\":\"/process-promise\"},{\"text\":\"Quotes\",\"link\":\"/quotes\"},{\"text\":\"Markdown Scripts\",\"link\":\"/markdown-scripts\"}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/google/zx\"}],\"footer\":{\"message\":\"Disclaimer: This is not an officially supported Google product.\"},\"search\":{\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":true}");</script>
+    
+  </body>
+</html>
\ No newline at end of file
docs/hashmap.json
@@ -0,0 +1,1 @@
+{"markdown-scripts.md":"c7e9dbed","index.md":"066698c6","quotes.md":"5dad2b0d","known-issues.md":"e3403a7b","process-promise.md":"d7916acc","getting-started.md":"6acf3454"}
docs/index.html
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>google/zx</title>
+    <meta name="description" content="A tool for writing better scripts">
+    <link rel="preload stylesheet" href="/zx/assets/style.23bc6f20.css" as="style">
+    
+    <script type="module" src="/zx/assets/app.58befdb7.js"></script>
+    <link rel="preload" href="/zx/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
+    <link rel="modulepreload" href="/zx/assets/chunks/framework.54ce79f7.js">
+    <link rel="modulepreload" href="/zx/assets/chunks/theme.da00fba9.js">
+    <link rel="modulepreload" href="/zx/assets/index.md.066698c6.lean.js">
+    <script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
+  </head>
+  <body>
+    <div id="app"><div class="Layout" data-v-4064354f><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-4064354f data-v-5bdc5df3><div class="VPNavBar top" data-v-5bdc5df3 data-v-f1abbc6e><div class="container" data-v-f1abbc6e><div class="title" data-v-f1abbc6e><div class="VPNavBarTitle" data-v-f1abbc6e data-v-2973dbb4><a class="title" href="/zx/" data-v-2973dbb4><!--[--><!--]--><!----><!--[-->google/zx<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-f1abbc6e><div class="curtain" data-v-f1abbc6e></div><div class="content-body" data-v-f1abbc6e><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-f1abbc6e><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f1abbc6e data-v-f732b5d0><span id="main-nav-aria-label" class="visually-hidden" data-v-f732b5d0>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink active" href="/zx/" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zx/getting-started" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Docs</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f732b5d0 data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-aa8de344><span class="text" data-v-aa8de344><!----><span data-v-aa8de344>7.x</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-aa8de344><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><div class="items" data-v-e42ed9b3><!--[--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-f51f088d><a class="VPLink link vp-external-link-icon" href="https://github.com/google/zx/releases" target="_blank" rel="noreferrer" data-v-f51f088d><!--[-->Releases<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-f1abbc6e data-v-5e9f0637><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-5e9f0637 data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-f1abbc6e data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-f1abbc6e data-v-c8c2ae4b data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-aa8de344><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-aa8de344><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><!----><!--[--><!--[--><!----><div class="group" data-v-c8c2ae4b><div class="item appearance" data-v-c8c2ae4b><p class="label" data-v-c8c2ae4b>Appearance</p><div class="appearance-action" data-v-c8c2ae4b><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-c8c2ae4b data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-c8c2ae4b><div class="item social-links" data-v-c8c2ae4b><div class="VPSocialLinks social-links-list" data-v-c8c2ae4b data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f1abbc6e data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><!----></header><!----><!----><div class="VPContent is-home" id="VPContent" data-v-4064354f data-v-3cf691b6><div class="VPHome" data-v-3cf691b6 data-v-20eabd3a><!--[--><!--]--><div class="VPHero VPHomeHero" data-v-20eabd3a data-v-5a3e9999><div class="container" data-v-5a3e9999><div class="main" data-v-5a3e9999><!--[--><h1 class="name" data-v-5a3e9999><span class="clip" data-v-5a3e9999>zx</span></h1><p class="text" data-v-5a3e9999>A tool for writing better scripts</p><!----><!--]--><div class="actions" data-v-5a3e9999><!--[--><div class="action" data-v-5a3e9999><a class="VPButton medium brand" href="/zx/getting-started" data-v-5a3e9999 data-v-1e76fe75>Documentation</a></div><!--]--></div></div><!----></div></div><!--[--><!--]--><!--[--><!--]--><div class="VPFeatures VPHomeFeatures" data-v-20eabd3a data-v-7e232fde><div class="container" data-v-7e232fde><div class="items" data-v-7e232fde><!--[--><div class="grid-3 item" data-v-7e232fde><div class="VPLink no-icon VPFeature" data-v-7e232fde data-v-6c0c85a1><!--[--><article class="box" data-v-6c0c85a1><!----><h2 class="title" data-v-6c0c85a1>Simple</h2><p class="details" data-v-6c0c85a1>Write your scripts in a familiar language.</p><!----></article><!--]--></div></div><div class="grid-3 item" data-v-7e232fde><div class="VPLink no-icon VPFeature" data-v-7e232fde data-v-6c0c85a1><!--[--><article class="box" data-v-6c0c85a1><!----><h2 class="title" data-v-6c0c85a1>Powerful</h2><p class="details" data-v-6c0c85a1>Interact with the full ecosystem of JS libraries.</p><!----></article><!--]--></div></div><div class="grid-3 item" data-v-7e232fde><div class="VPLink no-icon VPFeature" data-v-7e232fde data-v-6c0c85a1><!--[--><article class="box" data-v-6c0c85a1><!----><h2 class="title" data-v-6c0c85a1>Batteries included</h2><p class="details" data-v-6c0c85a1>Everything you need, right out of the box.</p><!----></article><!--]--></div></div><!--]--></div></div></div><!--[--><!--]--><div style="position:relative;" data-v-20eabd3a><div></div></div></div></div><footer class="VPFooter" data-v-4064354f data-v-e4279f1c><div class="container" data-v-e4279f1c><p class="message" data-v-e4279f1c>Disclaimer: This is not an officially supported Google product.</p><!----></div></footer><!--[--><!--]--></div></div>
+    <script>window.__VP_HASH_MAP__=JSON.parse("{\"markdown-scripts.md\":\"c7e9dbed\",\"index.md\":\"066698c6\",\"quotes.md\":\"5dad2b0d\",\"known-issues.md\":\"e3403a7b\",\"process-promise.md\":\"d7916acc\",\"getting-started.md\":\"6acf3454\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"google/zx\",\"titleTemplate\":\":title | google/zx\",\"description\":\"A tool for writing better scripts\",\"base\":\"/zx/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Docs\",\"link\":\"/getting-started\"},{\"text\":\"7.x\",\"items\":[{\"text\":\"Releases\",\"link\":\"https://github.com/google/zx/releases\"}]}],\"sidebar\":[{\"text\":\"Docs\",\"items\":[{\"text\":\"Getting Started\",\"link\":\"/getting-started\"},{\"text\":\"Process Promise\",\"link\":\"/process-promise\"},{\"text\":\"Quotes\",\"link\":\"/quotes\"},{\"text\":\"Markdown Scripts\",\"link\":\"/markdown-scripts\"}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/google/zx\"}],\"footer\":{\"message\":\"Disclaimer: This is not an officially supported Google product.\"},\"search\":{\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":true}");</script>
+    
+  </body>
+</html>
\ No newline at end of file
docs/known-issues.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Known Issues | google/zx</title>
+    <meta name="description" content="A tool for writing better scripts">
+    <link rel="preload stylesheet" href="/zx/assets/style.23bc6f20.css" as="style">
+    
+    <script type="module" src="/zx/assets/app.58befdb7.js"></script>
+    <link rel="preload" href="/zx/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
+    <link rel="modulepreload" href="/zx/assets/chunks/framework.54ce79f7.js">
+    <link rel="modulepreload" href="/zx/assets/chunks/theme.da00fba9.js">
+    <link rel="modulepreload" href="/zx/assets/known-issues.md.e3403a7b.lean.js">
+    <script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
+  </head>
+  <body>
+    <div id="app"><div class="Layout" data-v-4064354f><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-4064354f data-v-5bdc5df3><div class="VPNavBar has-sidebar" data-v-5bdc5df3 data-v-f1abbc6e><div class="container" data-v-f1abbc6e><div class="title" data-v-f1abbc6e><div class="VPNavBarTitle has-sidebar" data-v-f1abbc6e data-v-2973dbb4><a class="title" href="/zx/" data-v-2973dbb4><!--[--><!--]--><!----><!--[-->google/zx<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-f1abbc6e><div class="curtain" data-v-f1abbc6e></div><div class="content-body" data-v-f1abbc6e><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-f1abbc6e><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f1abbc6e data-v-f732b5d0><span id="main-nav-aria-label" class="visually-hidden" data-v-f732b5d0>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zx/" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zx/getting-started" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Docs</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f732b5d0 data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-aa8de344><span class="text" data-v-aa8de344><!----><span data-v-aa8de344>7.x</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-aa8de344><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><div class="items" data-v-e42ed9b3><!--[--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-f51f088d><a class="VPLink link vp-external-link-icon" href="https://github.com/google/zx/releases" target="_blank" rel="noreferrer" data-v-f51f088d><!--[-->Releases<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-f1abbc6e data-v-5e9f0637><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-5e9f0637 data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-f1abbc6e data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-f1abbc6e data-v-c8c2ae4b data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-aa8de344><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-aa8de344><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><!----><!--[--><!--[--><!----><div class="group" data-v-c8c2ae4b><div class="item appearance" data-v-c8c2ae4b><p class="label" data-v-c8c2ae4b>Appearance</p><div class="appearance-action" data-v-c8c2ae4b><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-c8c2ae4b data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-c8c2ae4b><div class="item social-links" data-v-c8c2ae4b><div class="VPSocialLinks social-links-list" data-v-c8c2ae4b data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f1abbc6e data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav reached-top" data-v-4064354f data-v-9e669cc1><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-9e669cc1><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-9e669cc1><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-9e669cc1>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-9e669cc1 data-v-24251f6f><button data-v-24251f6f>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-4064354f data-v-ee2efba5><div class="curtain" data-v-ee2efba5></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-ee2efba5><span class="visually-hidden" id="sidebar-aria-label" data-v-ee2efba5> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-ee2efba5><section class="VPSidebarItem level-0" data-v-ee2efba5 data-v-bd01e0d5><div class="item" role="button" tabindex="0" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><h2 class="text" data-v-bd01e0d5>Docs</h2><!----></div><div class="items" data-v-bd01e0d5><!--[--><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/getting-started" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Getting Started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/process-promise" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Process Promise</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/quotes" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Quotes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/markdown-scripts" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Markdown Scripts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-4064354f data-v-3cf691b6><div class="VPDoc has-sidebar has-aside" data-v-3cf691b6 data-v-a3c25e27><!--[--><!--]--><div class="container" data-v-a3c25e27><div class="aside" data-v-a3c25e27><div class="aside-curtain" data-v-a3c25e27></div><div class="aside-container" data-v-a3c25e27><div class="aside-content" data-v-a3c25e27><div class="VPDocAside" data-v-a3c25e27 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" role="navigation" data-v-cb998dce data-v-626d8d18><div class="content" data-v-626d8d18><div class="outline-marker" data-v-626d8d18></div><div class="outline-title" role="heading" data-v-626d8d18>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-626d8d18><span class="visually-hidden" id="doc-outline-aria-label" data-v-626d8d18> Table of Contents for current page </span><ul class="root" data-v-626d8d18 data-v-463da30f><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-a3c25e27><div class="content-container" data-v-a3c25e27><!--[--><!--]--><!----><main class="main" data-v-a3c25e27><div style="position:relative;" class="vp-doc _zx_known-issues" data-v-a3c25e27><div><h1 id="known-issues" tabindex="-1">Known Issues <a class="header-anchor" href="#known-issues" aria-label="Permalink to &quot;Known Issues&quot;">โ€‹</a></h1><h2 id="output-gets-truncated" tabindex="-1">Output gets truncated <a class="header-anchor" href="#output-gets-truncated" aria-label="Permalink to &quot;Output gets truncated&quot;">โ€‹</a></h2><p>This is a known issue with <code>console.log()</code> (see <a href="https://github.com/nodejs/node/issues/6379" target="_blank" rel="noreferrer">nodejs/node#6379</a>). It&#39;s caused by different behaviour of <code>console.log()</code> writing to the terminal vs to a file. If a process calls <code>process.exit()</code>, buffered output will be truncated. To prevent this, the process should use <code>process.exitCode = 1</code> and wait for the process to exit itself. Or use something like <a href="https://www.npmjs.com/package/exit" target="_blank" rel="noreferrer">exit</a> package.</p><p>Workaround is to write to a temp file:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> tmp </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`mktemp`</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// Creates a temp file.</span></span>
+<span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> {stdout} </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`cmd &gt; ${</span><span style="color:#E1E4E8;">tmp</span><span style="color:#9ECBFF;">}; cat ${</span><span style="color:#E1E4E8;">tmp</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> tmp </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`mktemp`</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// Creates a temp file.</span></span>
+<span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> {stdout} </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`cmd &gt; ${</span><span style="color:#24292E;">tmp</span><span style="color:#032F62;">}; cat ${</span><span style="color:#24292E;">tmp</span><span style="color:#032F62;">}`</span></span></code></pre></div><h2 id="colors-in-subprocess" tabindex="-1">Colors in subprocess <a class="header-anchor" href="#colors-in-subprocess" aria-label="Permalink to &quot;Colors in subprocess&quot;">โ€‹</a></h2><p>You may see what tools invoked with <code>await $</code> don&#39;t show colors, compared to what you see in a terminal. This is because, the subprocess does not think it&#39;s a TTY and the subprocess turns off colors. Usually there is a way force the subprocess to add colors.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">p<wbr>rocess.env.</span><span style="color:#79B8FF;">FORCE_COLOR</span><span style="color:#F97583;">=</span><span style="color:#9ECBFF;">&#39;1&#39;</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`cmd`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">p<wbr>rocess.env.</span><span style="color:#005CC5;">FORCE_COLOR</span><span style="color:#D73A49;">=</span><span style="color:#032F62;">&#39;1&#39;</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`cmd`</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-a3c25e27 data-v-a2d931e4><!--[--><!--]--><!----><nav class="prev-next" data-v-a2d931e4><div class="pager" data-v-a2d931e4><!----></div><div class="pager" data-v-a2d931e4><a class="pager-link next" href="/zx/getting-started" data-v-a2d931e4><span class="desc" data-v-a2d931e4>Next page</span><span class="title" data-v-a2d931e4>Getting Started</span></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-4064354f data-v-e4279f1c><div class="container" data-v-e4279f1c><p class="message" data-v-e4279f1c>Disclaimer: This is not an officially supported Google product.</p><!----></div></footer><!--[--><!--]--></div></div>
+    <script>window.__VP_HASH_MAP__=JSON.parse("{\"markdown-scripts.md\":\"c7e9dbed\",\"index.md\":\"066698c6\",\"quotes.md\":\"5dad2b0d\",\"known-issues.md\":\"e3403a7b\",\"process-promise.md\":\"d7916acc\",\"getting-started.md\":\"6acf3454\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"google/zx\",\"titleTemplate\":\":title | google/zx\",\"description\":\"A tool for writing better scripts\",\"base\":\"/zx/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Docs\",\"link\":\"/getting-started\"},{\"text\":\"7.x\",\"items\":[{\"text\":\"Releases\",\"link\":\"https://github.com/google/zx/releases\"}]}],\"sidebar\":[{\"text\":\"Docs\",\"items\":[{\"text\":\"Getting Started\",\"link\":\"/getting-started\"},{\"text\":\"Process Promise\",\"link\":\"/process-promise\"},{\"text\":\"Quotes\",\"link\":\"/quotes\"},{\"text\":\"Markdown Scripts\",\"link\":\"/markdown-scripts\"}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/google/zx\"}],\"footer\":{\"message\":\"Disclaimer: This is not an officially supported Google product.\"},\"search\":{\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":true}");</script>
+    
+  </body>
+</html>
\ No newline at end of file
docs/markdown-scripts.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Markdown Scripts | google/zx</title>
+    <meta name="description" content="A tool for writing better scripts">
+    <link rel="preload stylesheet" href="/zx/assets/style.23bc6f20.css" as="style">
+    
+    <script type="module" src="/zx/assets/app.58befdb7.js"></script>
+    <link rel="preload" href="/zx/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
+    <link rel="modulepreload" href="/zx/assets/chunks/framework.54ce79f7.js">
+    <link rel="modulepreload" href="/zx/assets/chunks/theme.da00fba9.js">
+    <link rel="modulepreload" href="/zx/assets/markdown-scripts.md.c7e9dbed.lean.js">
+    <script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
+  </head>
+  <body>
+    <div id="app"><div class="Layout" data-v-4064354f><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-4064354f data-v-5bdc5df3><div class="VPNavBar has-sidebar" data-v-5bdc5df3 data-v-f1abbc6e><div class="container" data-v-f1abbc6e><div class="title" data-v-f1abbc6e><div class="VPNavBarTitle has-sidebar" data-v-f1abbc6e data-v-2973dbb4><a class="title" href="/zx/" data-v-2973dbb4><!--[--><!--]--><!----><!--[-->google/zx<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-f1abbc6e><div class="curtain" data-v-f1abbc6e></div><div class="content-body" data-v-f1abbc6e><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-f1abbc6e><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f1abbc6e data-v-f732b5d0><span id="main-nav-aria-label" class="visually-hidden" data-v-f732b5d0>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zx/" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zx/getting-started" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Docs</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f732b5d0 data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-aa8de344><span class="text" data-v-aa8de344><!----><span data-v-aa8de344>7.x</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-aa8de344><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><div class="items" data-v-e42ed9b3><!--[--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-f51f088d><a class="VPLink link vp-external-link-icon" href="https://github.com/google/zx/releases" target="_blank" rel="noreferrer" data-v-f51f088d><!--[-->Releases<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-f1abbc6e data-v-5e9f0637><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-5e9f0637 data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-f1abbc6e data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-f1abbc6e data-v-c8c2ae4b data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-aa8de344><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-aa8de344><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><!----><!--[--><!--[--><!----><div class="group" data-v-c8c2ae4b><div class="item appearance" data-v-c8c2ae4b><p class="label" data-v-c8c2ae4b>Appearance</p><div class="appearance-action" data-v-c8c2ae4b><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-c8c2ae4b data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-c8c2ae4b><div class="item social-links" data-v-c8c2ae4b><div class="VPSocialLinks social-links-list" data-v-c8c2ae4b data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f1abbc6e data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav reached-top" data-v-4064354f data-v-9e669cc1><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-9e669cc1><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-9e669cc1><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-9e669cc1>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-9e669cc1 data-v-24251f6f><button data-v-24251f6f>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-4064354f data-v-ee2efba5><div class="curtain" data-v-ee2efba5></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-ee2efba5><span class="visually-hidden" id="sidebar-aria-label" data-v-ee2efba5> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-ee2efba5><section class="VPSidebarItem level-0 has-active" data-v-ee2efba5 data-v-bd01e0d5><div class="item" role="button" tabindex="0" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><h2 class="text" data-v-bd01e0d5>Docs</h2><!----></div><div class="items" data-v-bd01e0d5><!--[--><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/getting-started" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Getting Started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/process-promise" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Process Promise</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/quotes" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Quotes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/markdown-scripts" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Markdown Scripts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-4064354f data-v-3cf691b6><div class="VPDoc has-sidebar has-aside" data-v-3cf691b6 data-v-a3c25e27><!--[--><!--]--><div class="container" data-v-a3c25e27><div class="aside" data-v-a3c25e27><div class="aside-curtain" data-v-a3c25e27></div><div class="aside-container" data-v-a3c25e27><div class="aside-content" data-v-a3c25e27><div class="VPDocAside" data-v-a3c25e27 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" role="navigation" data-v-cb998dce data-v-626d8d18><div class="content" data-v-626d8d18><div class="outline-marker" data-v-626d8d18></div><div class="outline-title" role="heading" data-v-626d8d18>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-626d8d18><span class="visually-hidden" id="doc-outline-aria-label" data-v-626d8d18> Table of Contents for current page </span><ul class="root" data-v-626d8d18 data-v-463da30f><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-a3c25e27><div class="content-container" data-v-a3c25e27><!--[--><!--]--><!----><main class="main" data-v-a3c25e27><div style="position:relative;" class="vp-doc _zx_markdown-scripts" data-v-a3c25e27><div><h1 id="markdown-scripts" tabindex="-1">Markdown Scripts <a class="header-anchor" href="#markdown-scripts" aria-label="Permalink to &quot;Markdown Scripts&quot;">โ€‹</a></h1><p>It&#39;s possible to write scripts using markdown. Only code blocks will be executed by zx.</p><blockquote><p>You can run this markdown file:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#e1e4e8;">zx docs/markdown.md</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292e;">zx docs/markdown.md</span></span></code></pre></div></blockquote><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`whoami`</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`echo ${</span><span style="color:#E1E4E8;">__dirname</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`whoami`</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`echo ${</span><span style="color:#24292E;">__dirname</span><span style="color:#032F62;">}`</span></span></code></pre></div><p>The <code>__filename</code> will be pointed to <strong>markdown.md</strong>:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">console.</span><span style="color:#B392F0;">log</span><span style="color:#E1E4E8;">(chalk.</span><span style="color:#B392F0;">yellowBright</span><span style="color:#E1E4E8;">(__filename))</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">console.</span><span style="color:#6F42C1;">log</span><span style="color:#24292E;">(chalk.</span><span style="color:#6F42C1;">yellowBright</span><span style="color:#24292E;">(__filename))</span></span></code></pre></div><p>We can use imports here as well:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">import</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;chalk&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">import</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;chalk&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><p>A bash code (with <code>bash</code> or <code>sh</code> language tags) also will be executed:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#E1E4E8;">VAR</span><span style="color:#F97583;">=</span><span style="color:#9ECBFF;">$(</span><span style="color:#B392F0;">date</span><span style="color:#9ECBFF;">)</span></span>
+<span class="line"><span style="color:#79B8FF;">echo</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&quot;</span><span style="color:#E1E4E8;">$VAR</span><span style="color:#9ECBFF;">&quot;</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">|</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">wc</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">-c</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#24292E;">VAR</span><span style="color:#D73A49;">=</span><span style="color:#032F62;">$(</span><span style="color:#6F42C1;">date</span><span style="color:#032F62;">)</span></span>
+<span class="line"><span style="color:#005CC5;">echo</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&quot;</span><span style="color:#24292E;">$VAR</span><span style="color:#032F62;">&quot;</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">|</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">wc</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">-c</span></span></code></pre></div><p>Other code blocks are ignored:</p><div class="language-css vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">css</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#85E89D;">body</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">.hero</span><span style="color:#E1E4E8;"> {</span></span>
+<span class="line"><span style="color:#E1E4E8;">    </span><span style="color:#79B8FF;">margin</span><span style="color:#E1E4E8;">: </span><span style="color:#79B8FF;">42</span><span style="color:#F97583;">px</span><span style="color:#E1E4E8;">;</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#22863A;">body</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">.hero</span><span style="color:#24292E;"> {</span></span>
+<span class="line"><span style="color:#24292E;">    </span><span style="color:#005CC5;">margin</span><span style="color:#24292E;">: </span><span style="color:#005CC5;">42</span><span style="color:#D73A49;">px</span><span style="color:#24292E;">;</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-a3c25e27 data-v-a2d931e4><!--[--><!--]--><!----><nav class="prev-next" data-v-a2d931e4><div class="pager" data-v-a2d931e4><a class="pager-link prev" href="/zx/quotes" data-v-a2d931e4><span class="desc" data-v-a2d931e4>Previous page</span><span class="title" data-v-a2d931e4>Quotes</span></a></div><div class="pager" data-v-a2d931e4><!----></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-4064354f data-v-e4279f1c><div class="container" data-v-e4279f1c><p class="message" data-v-e4279f1c>Disclaimer: This is not an officially supported Google product.</p><!----></div></footer><!--[--><!--]--></div></div>
+    <script>window.__VP_HASH_MAP__=JSON.parse("{\"markdown-scripts.md\":\"c7e9dbed\",\"index.md\":\"066698c6\",\"quotes.md\":\"5dad2b0d\",\"known-issues.md\":\"e3403a7b\",\"process-promise.md\":\"d7916acc\",\"getting-started.md\":\"6acf3454\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"google/zx\",\"titleTemplate\":\":title | google/zx\",\"description\":\"A tool for writing better scripts\",\"base\":\"/zx/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Docs\",\"link\":\"/getting-started\"},{\"text\":\"7.x\",\"items\":[{\"text\":\"Releases\",\"link\":\"https://github.com/google/zx/releases\"}]}],\"sidebar\":[{\"text\":\"Docs\",\"items\":[{\"text\":\"Getting Started\",\"link\":\"/getting-started\"},{\"text\":\"Process Promise\",\"link\":\"/process-promise\"},{\"text\":\"Quotes\",\"link\":\"/quotes\"},{\"text\":\"Markdown Scripts\",\"link\":\"/markdown-scripts\"}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/google/zx\"}],\"footer\":{\"message\":\"Disclaimer: This is not an officially supported Google product.\"},\"search\":{\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":true}");</script>
+    
+  </body>
+</html>
\ No newline at end of file
docs/process-promise.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>ProcessPromise | google/zx</title>
+    <meta name="description" content="A tool for writing better scripts">
+    <link rel="preload stylesheet" href="/zx/assets/style.23bc6f20.css" as="style">
+    
+    <script type="module" src="/zx/assets/app.58befdb7.js"></script>
+    <link rel="preload" href="/zx/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
+    <link rel="modulepreload" href="/zx/assets/chunks/framework.54ce79f7.js">
+    <link rel="modulepreload" href="/zx/assets/chunks/theme.da00fba9.js">
+    <link rel="modulepreload" href="/zx/assets/process-promise.md.d7916acc.lean.js">
+    <script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
+  </head>
+  <body>
+    <div id="app"><div class="Layout" data-v-4064354f><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-4064354f data-v-5bdc5df3><div class="VPNavBar has-sidebar" data-v-5bdc5df3 data-v-f1abbc6e><div class="container" data-v-f1abbc6e><div class="title" data-v-f1abbc6e><div class="VPNavBarTitle has-sidebar" data-v-f1abbc6e data-v-2973dbb4><a class="title" href="/zx/" data-v-2973dbb4><!--[--><!--]--><!----><!--[-->google/zx<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-f1abbc6e><div class="curtain" data-v-f1abbc6e></div><div class="content-body" data-v-f1abbc6e><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-f1abbc6e><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f1abbc6e data-v-f732b5d0><span id="main-nav-aria-label" class="visually-hidden" data-v-f732b5d0>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zx/" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zx/getting-started" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Docs</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f732b5d0 data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-aa8de344><span class="text" data-v-aa8de344><!----><span data-v-aa8de344>7.x</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-aa8de344><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><div class="items" data-v-e42ed9b3><!--[--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-f51f088d><a class="VPLink link vp-external-link-icon" href="https://github.com/google/zx/releases" target="_blank" rel="noreferrer" data-v-f51f088d><!--[-->Releases<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-f1abbc6e data-v-5e9f0637><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-5e9f0637 data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-f1abbc6e data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-f1abbc6e data-v-c8c2ae4b data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-aa8de344><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-aa8de344><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><!----><!--[--><!--[--><!----><div class="group" data-v-c8c2ae4b><div class="item appearance" data-v-c8c2ae4b><p class="label" data-v-c8c2ae4b>Appearance</p><div class="appearance-action" data-v-c8c2ae4b><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-c8c2ae4b data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-c8c2ae4b><div class="item social-links" data-v-c8c2ae4b><div class="VPSocialLinks social-links-list" data-v-c8c2ae4b data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f1abbc6e data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav reached-top" data-v-4064354f data-v-9e669cc1><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-9e669cc1><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-9e669cc1><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-9e669cc1>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-9e669cc1 data-v-24251f6f><button data-v-24251f6f>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-4064354f data-v-ee2efba5><div class="curtain" data-v-ee2efba5></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-ee2efba5><span class="visually-hidden" id="sidebar-aria-label" data-v-ee2efba5> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-ee2efba5><section class="VPSidebarItem level-0 has-active" data-v-ee2efba5 data-v-bd01e0d5><div class="item" role="button" tabindex="0" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><h2 class="text" data-v-bd01e0d5>Docs</h2><!----></div><div class="items" data-v-bd01e0d5><!--[--><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/getting-started" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Getting Started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/process-promise" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Process Promise</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/quotes" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Quotes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/markdown-scripts" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Markdown Scripts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-4064354f data-v-3cf691b6><div class="VPDoc has-sidebar has-aside" data-v-3cf691b6 data-v-a3c25e27><!--[--><!--]--><div class="container" data-v-a3c25e27><div class="aside" data-v-a3c25e27><div class="aside-curtain" data-v-a3c25e27></div><div class="aside-container" data-v-a3c25e27><div class="aside-content" data-v-a3c25e27><div class="VPDocAside" data-v-a3c25e27 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" role="navigation" data-v-cb998dce data-v-626d8d18><div class="content" data-v-626d8d18><div class="outline-marker" data-v-626d8d18></div><div class="outline-title" role="heading" data-v-626d8d18>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-626d8d18><span class="visually-hidden" id="doc-outline-aria-label" data-v-626d8d18> Table of Contents for current page </span><ul class="root" data-v-626d8d18 data-v-463da30f><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-a3c25e27><div class="content-container" data-v-a3c25e27><!--[--><!--]--><!----><main class="main" data-v-a3c25e27><div style="position:relative;" class="vp-doc _zx_process-promise" data-v-a3c25e27><div><h1 id="processpromise" tabindex="-1">ProcessPromise <a class="header-anchor" href="#processpromise" aria-label="Permalink to &quot;ProcessPromise&quot;">โ€‹</a></h1><p>The <code>$</code> returns a <code>ProcessPromise</code> instance.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`command`</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> p</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`command`</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> p</span></span></code></pre></div><h2 id="stdin" tabindex="-1"><code>stdin</code> <a class="header-anchor" href="#stdin" aria-label="Permalink to &quot;`stdin`&quot;">โ€‹</a></h2><p>Returns a writable stream of the stdin process. Accessing this getter will trigger execution of a subprocess with <a href="#stdio"><code>stdio(&#39;pipe&#39;)</code></a>.</p><p>Do not forget to end the stream.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`while read; do echo $REPLY; done`</span></span>
+<span class="line"><span style="color:#E1E4E8;">p.stdin.</span><span style="color:#B392F0;">write</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;Hello, World!</span><span style="color:#79B8FF;">\n</span><span style="color:#9ECBFF;">&#39;</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#E1E4E8;">p.stdin.</span><span style="color:#B392F0;">end</span><span style="color:#E1E4E8;">()</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`while read; do echo $REPLY; done`</span></span>
+<span class="line"><span style="color:#24292E;">p.stdin.</span><span style="color:#6F42C1;">write</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;Hello, World!</span><span style="color:#005CC5;">\n</span><span style="color:#032F62;">&#39;</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#24292E;">p.stdin.</span><span style="color:#6F42C1;">end</span><span style="color:#24292E;">()</span></span></code></pre></div><p>By default, each process is created with stdin in <em>inherit</em> mode.</p><h2 id="stdout-stderr" tabindex="-1"><code>stdout</code>/<code>stderr</code> <a class="header-anchor" href="#stdout-stderr" aria-label="Permalink to &quot;`stdout`/`stderr`&quot;">โ€‹</a></h2><p>Returns a readable streams of stdout/stderr process.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">const</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">p</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`npm init`</span></span>
+<span class="line"><span style="color:#F97583;">for</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> (</span><span style="color:#F97583;">const</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">chunk</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">of</span><span style="color:#E1E4E8;"> p.stdout) {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#B392F0;">echo</span><span style="color:#E1E4E8;">(chunk)</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">const</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">p</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`npm init`</span></span>
+<span class="line"><span style="color:#D73A49;">for</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> (</span><span style="color:#D73A49;">const</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">chunk</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">of</span><span style="color:#24292E;"> p.stdout) {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#6F42C1;">echo</span><span style="color:#24292E;">(chunk)</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h2 id="exitcode" tabindex="-1"><code>exitCode</code> <a class="header-anchor" href="#exitcode" aria-label="Permalink to &quot;`exitCode`&quot;">โ€‹</a></h2><p>Returns a promise which resolves to the exit code of the process.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">if</span><span style="color:#E1E4E8;"> (</span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`[[ -d path ]]`</span><span style="color:#E1E4E8;">.exitCode </span><span style="color:#F97583;">==</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">0</span><span style="color:#E1E4E8;">) {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">...</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">if</span><span style="color:#24292E;"> (</span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`[[ -d path ]]`</span><span style="color:#24292E;">.exitCode </span><span style="color:#D73A49;">==</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">0</span><span style="color:#24292E;">) {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">...</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h2 id="pipe" tabindex="-1"><code>pipe()</code> <a class="header-anchor" href="#pipe" aria-label="Permalink to &quot;`pipe()`&quot;">โ€‹</a></h2><p>Redirects the stdout of the process.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`echo &quot;Hello, stdout!&quot;`</span></span>
+<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(fs.</span><span style="color:#B392F0;">createWriteStream</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;/tmp/output.txt&#39;</span><span style="color:#E1E4E8;">))</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`cat /tmp/output.txt`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`echo &quot;Hello, stdout!&quot;`</span></span>
+<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(fs.</span><span style="color:#6F42C1;">createWriteStream</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;/tmp/output.txt&#39;</span><span style="color:#24292E;">))</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`cat /tmp/output.txt`</span></span></code></pre></div><p>Pipes can be used to show a real-time output of the process:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`echo 1; sleep 1; echo 2; sleep 1; echo 3;`</span></span>
+<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(process.stdout)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`echo 1; sleep 1; echo 2; sleep 1; echo 3;`</span></span>
+<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(process.stdout)</span></span></code></pre></div><p>The <code>pipe()</code> method can combine <code>$</code> processes. Same as <code>|</code> in bash:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> greeting </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`printf &quot;hello&quot;`</span></span>
+<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`awk &#39;{printf $1&quot;, world!&quot;}&#39;`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`tr &#39;[a-z]&#39; &#39;[A-Z]&#39;`</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#B392F0;">echo</span><span style="color:#E1E4E8;">(greeting)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> greeting </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`printf &quot;hello&quot;`</span></span>
+<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`awk &#39;{printf $1&quot;, world!&quot;}&#39;`</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`tr &#39;[a-z]&#39; &#39;[A-Z]&#39;`</span><span style="color:#24292E;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6F42C1;">echo</span><span style="color:#24292E;">(greeting)</span></span></code></pre></div><p>Use combinations of <code>pipe()</code> and <a href="#nothrow"><code>nothrow()</code></a>:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`find ./examples -type f -print0`</span></span>
+<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`xargs -0 grep ${&#39;missing&#39;</span><span style="color:#9ECBFF;"> </span><span style="color:#F97583;">+</span><span style="color:#9ECBFF;"> </span><span style="color:#9ECBFF;">&#39;part&#39;}`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">nothrow</span><span style="color:#E1E4E8;">())</span></span>
+<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`wc -l`</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`find ./examples -type f -print0`</span></span>
+<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`xargs -0 grep ${&#39;missing&#39;</span><span style="color:#032F62;"> </span><span style="color:#D73A49;">+</span><span style="color:#032F62;"> </span><span style="color:#032F62;">&#39;part&#39;}`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">nothrow</span><span style="color:#24292E;">())</span></span>
+<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`wc -l`</span><span style="color:#24292E;">)</span></span></code></pre></div><h2 id="kill" tabindex="-1"><code>kill()</code> <a class="header-anchor" href="#kill" aria-label="Permalink to &quot;`kill()`&quot;">โ€‹</a></h2><p>Kills the process and all children.</p><p>By default, signal <code>SIGTERM</code> is sent. You can specify a signal via an argument.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`sleep 999`</span></span>
+<span class="line"><span style="color:#B392F0;">setTimeout</span><span style="color:#E1E4E8;">(() </span><span style="color:#F97583;">=&gt;</span><span style="color:#E1E4E8;"> p.</span><span style="color:#B392F0;">kill</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;SIGINT&#39;</span><span style="color:#E1E4E8;">), </span><span style="color:#79B8FF;">100</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> p</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`sleep 999`</span></span>
+<span class="line"><span style="color:#6F42C1;">setTimeout</span><span style="color:#24292E;">(() </span><span style="color:#D73A49;">=&gt;</span><span style="color:#24292E;"> p.</span><span style="color:#6F42C1;">kill</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;SIGINT&#39;</span><span style="color:#24292E;">), </span><span style="color:#005CC5;">100</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> p</span></span></code></pre></div><h2 id="stdio" tabindex="-1"><code>stdio()</code> <a class="header-anchor" href="#stdio" aria-label="Permalink to &quot;`stdio()`&quot;">โ€‹</a></h2><p>Specifies a stdio for the process.</p><p>Default is <code>.stdio(&#39;inherit&#39;, &#39;pipe&#39;, &#39;pipe&#39;)</code>.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> p </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`read`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">stdio</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;pipe&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> p </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`read`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">stdio</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;pipe&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div><h2 id="nothrow" tabindex="-1"><code>nothrow()</code> <a class="header-anchor" href="#nothrow" aria-label="Permalink to &quot;`nothrow()`&quot;">โ€‹</a></h2><p>Changes behavior of <code>$</code> to not throw an exception on non-zero exit codes.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`grep something from-file`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">nothrow</span><span style="color:#E1E4E8;">()</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// Inside a pipe():</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`find ./examples -type f -print0`</span></span>
+<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`xargs -0 grep something`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">nothrow</span><span style="color:#E1E4E8;">())</span></span>
+<span class="line"><span style="color:#E1E4E8;">  .</span><span style="color:#B392F0;">pipe</span><span style="color:#E1E4E8;">(</span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`wc -l`</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`grep something from-file`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">nothrow</span><span style="color:#24292E;">()</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// Inside a pipe():</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`find ./examples -type f -print0`</span></span>
+<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`xargs -0 grep something`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">nothrow</span><span style="color:#24292E;">())</span></span>
+<span class="line"><span style="color:#24292E;">  .</span><span style="color:#6F42C1;">pipe</span><span style="color:#24292E;">(</span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`wc -l`</span><span style="color:#24292E;">)</span></span></code></pre></div><p>If only the <code>exitCode</code> is needed, you can use <a href="#exitcode"><code>exitCode</code></a> directly:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">if</span><span style="color:#E1E4E8;"> (</span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`[[ -d path ]]`</span><span style="color:#E1E4E8;">.exitCode </span><span style="color:#F97583;">==</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">0</span><span style="color:#E1E4E8;">) {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">...</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// Equivalent of:</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#F97583;">if</span><span style="color:#E1E4E8;"> ((</span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`[[ -d path ]]`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">nothrow</span><span style="color:#E1E4E8;">()).exitCode </span><span style="color:#F97583;">==</span><span style="color:#E1E4E8;"> </span><span style="color:#79B8FF;">0</span><span style="color:#E1E4E8;">) {</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#F97583;">...</span></span>
+<span class="line"><span style="color:#E1E4E8;">}</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">if</span><span style="color:#24292E;"> (</span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`[[ -d path ]]`</span><span style="color:#24292E;">.exitCode </span><span style="color:#D73A49;">==</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">0</span><span style="color:#24292E;">) {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">...</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// Equivalent of:</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#D73A49;">if</span><span style="color:#24292E;"> ((</span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`[[ -d path ]]`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">nothrow</span><span style="color:#24292E;">()).exitCode </span><span style="color:#D73A49;">==</span><span style="color:#24292E;"> </span><span style="color:#005CC5;">0</span><span style="color:#24292E;">) {</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#D73A49;">...</span></span>
+<span class="line"><span style="color:#24292E;">}</span></span></code></pre></div><h2 id="quiet" tabindex="-1"><code>quiet()</code> <a class="header-anchor" href="#quiet" aria-label="Permalink to &quot;`quiet()`&quot;">โ€‹</a></h2><p>Changes behavior of <code>$</code> to disable verbose output.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#6A737D;">// Command and output will not be displayed.</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`grep something from-file`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">quiet</span><span style="color:#E1E4E8;">()</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6A737D;">// Command and output will not be displayed.</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`grep something from-file`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">quiet</span><span style="color:#24292E;">()</span></span></code></pre></div><h2 id="timeout" tabindex="-1"><code>timeout()</code> <a class="header-anchor" href="#timeout" aria-label="Permalink to &quot;`timeout()`&quot;">โ€‹</a></h2><p>Kills the process after a specified timeout.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`sleep 999`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">timeout</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;5s&#39;</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// Or with a specific signal.</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`sleep 999`</span><span style="color:#E1E4E8;">.</span><span style="color:#B392F0;">timeout</span><span style="color:#E1E4E8;">(</span><span style="color:#9ECBFF;">&#39;5s&#39;</span><span style="color:#E1E4E8;">, </span><span style="color:#9ECBFF;">&#39;SIGKILL&#39;</span><span style="color:#E1E4E8;">)</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`sleep 999`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">timeout</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;5s&#39;</span><span style="color:#24292E;">)</span></span>
+<span class="line"></span>
+<span class="line"><span style="color:#6A737D;">// Or with a specific signal.</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`sleep 999`</span><span style="color:#24292E;">.</span><span style="color:#6F42C1;">timeout</span><span style="color:#24292E;">(</span><span style="color:#032F62;">&#39;5s&#39;</span><span style="color:#24292E;">, </span><span style="color:#032F62;">&#39;SIGKILL&#39;</span><span style="color:#24292E;">)</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-a3c25e27 data-v-a2d931e4><!--[--><!--]--><!----><nav class="prev-next" data-v-a2d931e4><div class="pager" data-v-a2d931e4><a class="pager-link prev" href="/zx/getting-started" data-v-a2d931e4><span class="desc" data-v-a2d931e4>Previous page</span><span class="title" data-v-a2d931e4>Getting Started</span></a></div><div class="pager" data-v-a2d931e4><a class="pager-link next" href="/zx/quotes" data-v-a2d931e4><span class="desc" data-v-a2d931e4>Next page</span><span class="title" data-v-a2d931e4>Quotes</span></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-4064354f data-v-e4279f1c><div class="container" data-v-e4279f1c><p class="message" data-v-e4279f1c>Disclaimer: This is not an officially supported Google product.</p><!----></div></footer><!--[--><!--]--></div></div>
+    <script>window.__VP_HASH_MAP__=JSON.parse("{\"markdown-scripts.md\":\"c7e9dbed\",\"index.md\":\"066698c6\",\"quotes.md\":\"5dad2b0d\",\"known-issues.md\":\"e3403a7b\",\"process-promise.md\":\"d7916acc\",\"getting-started.md\":\"6acf3454\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"google/zx\",\"titleTemplate\":\":title | google/zx\",\"description\":\"A tool for writing better scripts\",\"base\":\"/zx/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Docs\",\"link\":\"/getting-started\"},{\"text\":\"7.x\",\"items\":[{\"text\":\"Releases\",\"link\":\"https://github.com/google/zx/releases\"}]}],\"sidebar\":[{\"text\":\"Docs\",\"items\":[{\"text\":\"Getting Started\",\"link\":\"/getting-started\"},{\"text\":\"Process Promise\",\"link\":\"/process-promise\"},{\"text\":\"Quotes\",\"link\":\"/quotes\"},{\"text\":\"Markdown Scripts\",\"link\":\"/markdown-scripts\"}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/google/zx\"}],\"footer\":{\"message\":\"Disclaimer: This is not an officially supported Google product.\"},\"search\":{\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":true}");</script>
+    
+  </body>
+</html>
\ No newline at end of file
docs/quotes.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html lang="en-US" dir="ltr">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width,initial-scale=1">
+    <title>Quotes | google/zx</title>
+    <meta name="description" content="A tool for writing better scripts">
+    <link rel="preload stylesheet" href="/zx/assets/style.23bc6f20.css" as="style">
+    
+    <script type="module" src="/zx/assets/app.58befdb7.js"></script>
+    <link rel="preload" href="/zx/assets/inter-roman-latin.2ed14f66.woff2" as="font" type="font/woff2" crossorigin="">
+    <link rel="modulepreload" href="/zx/assets/chunks/framework.54ce79f7.js">
+    <link rel="modulepreload" href="/zx/assets/chunks/theme.da00fba9.js">
+    <link rel="modulepreload" href="/zx/assets/quotes.md.5dad2b0d.lean.js">
+    <script id="check-dark-light">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
+  </head>
+  <body>
+    <div id="app"><div class="Layout" data-v-4064354f><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c8291ffa></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c8291ffa> Skip to content </a><!--]--><!----><header class="VPNav" data-v-4064354f data-v-5bdc5df3><div class="VPNavBar has-sidebar" data-v-5bdc5df3 data-v-f1abbc6e><div class="container" data-v-f1abbc6e><div class="title" data-v-f1abbc6e><div class="VPNavBarTitle has-sidebar" data-v-f1abbc6e data-v-2973dbb4><a class="title" href="/zx/" data-v-2973dbb4><!--[--><!--]--><!----><!--[-->google/zx<!--]--><!--[--><!--]--></a></div></div><div class="content" data-v-f1abbc6e><div class="curtain" data-v-f1abbc6e></div><div class="content-body" data-v-f1abbc6e><!--[--><!--]--><div class="VPNavBarSearch search" style="--vp-meta-key:&#39;Meta&#39;;" data-v-f1abbc6e><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg class="DocSearch-Search-Icon" width="20" height="20" viewBox="0 0 20 20" aria-label="search icon"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-f1abbc6e data-v-f732b5d0><span id="main-nav-aria-label" class="visually-hidden" data-v-f732b5d0>Main Navigation</span><!--[--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zx/" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Home</span><!--]--></a><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zx/getting-started" tabindex="0" data-v-f732b5d0 data-v-cb318fec><!--[--><span data-v-cb318fec>Docs</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-f732b5d0 data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-aa8de344><span class="text" data-v-aa8de344><!----><span data-v-aa8de344>7.x</span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="text-icon" data-v-aa8de344><path d="M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"></path></svg></span></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><div class="items" data-v-e42ed9b3><!--[--><!--[--><div class="VPMenuLink" data-v-e42ed9b3 data-v-f51f088d><a class="VPLink link vp-external-link-icon" href="https://github.com/google/zx/releases" target="_blank" rel="noreferrer" data-v-f51f088d><!--[-->Releases<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-f1abbc6e data-v-5e9f0637><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-5e9f0637 data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-f1abbc6e data-v-ef6192dc data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-f1abbc6e data-v-c8c2ae4b data-v-aa8de344><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-aa8de344><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="icon" data-v-aa8de344><circle cx="12" cy="12" r="2"></circle><circle cx="19" cy="12" r="2"></circle><circle cx="5" cy="12" r="2"></circle></svg></button><div class="menu" data-v-aa8de344><div class="VPMenu" data-v-aa8de344 data-v-e42ed9b3><!----><!--[--><!--[--><!----><div class="group" data-v-c8c2ae4b><div class="item appearance" data-v-c8c2ae4b><p class="label" data-v-c8c2ae4b>Appearance</p><div class="appearance-action" data-v-c8c2ae4b><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title="toggle dark mode" aria-checked="false" data-v-c8c2ae4b data-v-3329432d data-v-1c29e291><span class="check" data-v-1c29e291><span class="icon" data-v-1c29e291><!--[--><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="sun" data-v-3329432d><path d="M12,18c-3.3,0-6-2.7-6-6s2.7-6,6-6s6,2.7,6,6S15.3,18,12,18zM12,8c-2.2,0-4,1.8-4,4c0,2.2,1.8,4,4,4c2.2,0,4-1.8,4-4C16,9.8,14.2,8,12,8z"></path><path d="M12,4c-0.6,0-1-0.4-1-1V1c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,3.6,12.6,4,12,4z"></path><path d="M12,24c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1s1,0.4,1,1v2C13,23.6,12.6,24,12,24z"></path><path d="M5.6,6.6c-0.3,0-0.5-0.1-0.7-0.3L3.5,4.9c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C6.2,6.5,5.9,6.6,5.6,6.6z"></path><path d="M19.8,20.8c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l1.4,1.4c0.4,0.4,0.4,1,0,1.4C20.3,20.7,20,20.8,19.8,20.8z"></path><path d="M3,13H1c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S3.6,13,3,13z"></path><path d="M23,13h-2c-0.6,0-1-0.4-1-1s0.4-1,1-1h2c0.6,0,1,0.4,1,1S23.6,13,23,13z"></path><path d="M4.2,20.8c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C4.7,20.7,4.5,20.8,4.2,20.8z"></path><path d="M18.4,6.6c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l1.4-1.4c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-1.4,1.4C18.9,6.5,18.6,6.6,18.4,6.6z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="moon" data-v-3329432d><path d="M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"></path></svg><!--]--></span></span></button></div></div></div><div class="group" data-v-c8c2ae4b><div class="item social-links" data-v-c8c2ae4b><div class="VPSocialLinks social-links-list" data-v-c8c2ae4b data-v-e71e869c><!--[--><a class="VPSocialLink no-icon" href="https://github.com/google/zx" aria-label="github" target="_blank" rel="noopener" data-v-e71e869c data-v-16cf740a><svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitHub</title><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-f1abbc6e data-v-6bee1efd><span class="container" data-v-6bee1efd><span class="top" data-v-6bee1efd></span><span class="middle" data-v-6bee1efd></span><span class="bottom" data-v-6bee1efd></span></span></button></div></div></div></div><!----></header><div class="VPLocalNav reached-top" data-v-4064354f data-v-9e669cc1><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-9e669cc1><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" viewbox="0 0 24 24" class="menu-icon" data-v-9e669cc1><path d="M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"></path><path d="M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"></path><path d="M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"></path><path d="M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"></path></svg><span class="menu-text" data-v-9e669cc1>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-9e669cc1 data-v-24251f6f><button data-v-24251f6f>Return to top</button><!----></div></div><aside class="VPSidebar" data-v-4064354f data-v-ee2efba5><div class="curtain" data-v-ee2efba5></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-ee2efba5><span class="visually-hidden" id="sidebar-aria-label" data-v-ee2efba5> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="group" data-v-ee2efba5><section class="VPSidebarItem level-0 has-active" data-v-ee2efba5 data-v-bd01e0d5><div class="item" role="button" tabindex="0" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><h2 class="text" data-v-bd01e0d5>Docs</h2><!----></div><div class="items" data-v-bd01e0d5><!--[--><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/getting-started" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Getting Started</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/process-promise" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Process Promise</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/quotes" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Quotes</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-bd01e0d5 data-v-bd01e0d5><div class="item" data-v-bd01e0d5><div class="indicator" data-v-bd01e0d5></div><a class="VPLink link link" href="/zx/markdown-scripts" data-v-bd01e0d5><!--[--><p class="text" data-v-bd01e0d5>Markdown Scripts</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-4064354f data-v-3cf691b6><div class="VPDoc has-sidebar has-aside" data-v-3cf691b6 data-v-a3c25e27><!--[--><!--]--><div class="container" data-v-a3c25e27><div class="aside" data-v-a3c25e27><div class="aside-curtain" data-v-a3c25e27></div><div class="aside-container" data-v-a3c25e27><div class="aside-content" data-v-a3c25e27><div class="VPDocAside" data-v-a3c25e27 data-v-cb998dce><!--[--><!--]--><!--[--><!--]--><div class="VPDocAsideOutline" role="navigation" data-v-cb998dce data-v-626d8d18><div class="content" data-v-626d8d18><div class="outline-marker" data-v-626d8d18></div><div class="outline-title" role="heading" data-v-626d8d18>On this page</div><nav aria-labelledby="doc-outline-aria-label" data-v-626d8d18><span class="visually-hidden" id="doc-outline-aria-label" data-v-626d8d18> Table of Contents for current page </span><ul class="root" data-v-626d8d18 data-v-463da30f><!--[--><!--]--></ul></nav></div></div><!--[--><!--]--><div class="spacer" data-v-cb998dce></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-a3c25e27><div class="content-container" data-v-a3c25e27><!--[--><!--]--><!----><main class="main" data-v-a3c25e27><div style="position:relative;" class="vp-doc _zx_quotes" data-v-a3c25e27><div><h1 id="quotes" tabindex="-1">Quotes <a class="header-anchor" href="#quotes" aria-label="Permalink to &quot;Quotes&quot;">โ€‹</a></h1><p>When passing arguments to <code>${...}</code> there is no need to add quotes. <strong>Quotes will be added automatically if needed.</strong></p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> name </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;foo &amp; bar&#39;</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`mkdir ${</span><span style="color:#E1E4E8;">name</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> name </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;foo &amp; bar&#39;</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`mkdir ${</span><span style="color:#24292E;">name</span><span style="color:#032F62;">}`</span></span></code></pre></div><p>For quotes <strong>zx</strong> uses special bash syntax (next commands are valid bash):</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#B392F0;">mkdir</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">$&#39;foo &amp; bar&#39;</span></span>
+<span class="line"><span style="color:#B392F0;">$</span><span style="color:#B392F0;">&#39;ls&#39;</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">$&#39;-la&#39;</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#6F42C1;">mkdir</span><span style="color:#24292E;"> </span><span style="color:#032F62;">$&#39;foo &amp; bar&#39;</span></span>
+<span class="line"><span style="color:#6F42C1;">$</span><span style="color:#6F42C1;">&#39;ls&#39;</span><span style="color:#24292E;"> </span><span style="color:#032F62;">$&#39;-la&#39;</span></span></code></pre></div><p>If you add quotes <code>&quot;${name}&quot;</code>, it will produce a wrong command.</p><p>If you need to add something extra, consider putting it inside curly brackets.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`mkdir ${&#39;path/to-dir/&#39;</span><span style="color:#9ECBFF;"> </span><span style="color:#F97583;">+</span><span style="color:#9ECBFF;"> </span><span style="color:#E1E4E8;">name</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`mkdir ${&#39;path/to-dir/&#39;</span><span style="color:#032F62;"> </span><span style="color:#D73A49;">+</span><span style="color:#032F62;"> </span><span style="color:#24292E;">name</span><span style="color:#032F62;">}`</span></span></code></pre></div><p>This will also work properly:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`mkdir path/to-dir/${</span><span style="color:#E1E4E8;">name</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`mkdir path/to-dir/${</span><span style="color:#24292E;">name</span><span style="color:#032F62;">}`</span></span></code></pre></div><h3 id="array-of-arguments" tabindex="-1">Array of arguments <a class="header-anchor" href="#array-of-arguments" aria-label="Permalink to &quot;Array of arguments&quot;">โ€‹</a></h3><p>The <code>zx</code> can also take an array or arguments in the <code>${...}</code>. Items of the array will be quoted separately and concatenated via a space.</p><p>Do <strong>not</strong> add a <code>.join(&#39; &#39;)</code>.</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> flags </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> [</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--oneline&#39;</span><span style="color:#E1E4E8;">,</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--decorate&#39;</span><span style="color:#E1E4E8;">,</span></span>
+<span class="line"><span style="color:#E1E4E8;">  </span><span style="color:#9ECBFF;">&#39;--color&#39;</span><span style="color:#E1E4E8;">,</span></span>
+<span class="line"><span style="color:#E1E4E8;">]</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`git log ${</span><span style="color:#E1E4E8;">flags</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> flags </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> [</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--oneline&#39;</span><span style="color:#24292E;">,</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--decorate&#39;</span><span style="color:#24292E;">,</span></span>
+<span class="line"><span style="color:#24292E;">  </span><span style="color:#032F62;">&#39;--color&#39;</span><span style="color:#24292E;">,</span></span>
+<span class="line"><span style="color:#24292E;">]</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`git log ${</span><span style="color:#24292E;">flags</span><span style="color:#032F62;">}`</span></span></code></pre></div><p>If you already have a string with arrays, it&#39;s your responsibility to correctly parse it and distinguish separate arguments. For example like this:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`git log ${&#39;--oneline --decorate --color&#39;</span><span style="color:#9ECBFF;">.</span><span style="color:#B392F0;">split</span><span style="color:#9ECBFF;">(</span><span style="color:#9ECBFF;">&#39; &#39;</span><span style="color:#9ECBFF;">)</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`git log ${&#39;--oneline --decorate --color&#39;</span><span style="color:#032F62;">.</span><span style="color:#6F42C1;">split</span><span style="color:#032F62;">(</span><span style="color:#032F62;">&#39; &#39;</span><span style="color:#032F62;">)</span><span style="color:#032F62;">}`</span></span></code></pre></div><h3 id="globbing-and" tabindex="-1">globbing and <code>~</code> <a class="header-anchor" href="#globbing-and" aria-label="Permalink to &quot;globbing and `~`&quot;">โ€‹</a></h3><p>As everything passed through <code>${...}</code> will be escaped, you can&#39;t use <code>~</code> or glob syntax.</p><p>In order for this to work the zx provides <a href="./getting-started#globby-package">globby package</a>.</p><p>For instead of this:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> files </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;~/dev/**/*.md&#39;</span><span style="color:#E1E4E8;"> </span><span style="color:#6A737D;">// wrong</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`ls ${</span><span style="color:#E1E4E8;">files</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> files </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;~/dev/**/*.md&#39;</span><span style="color:#24292E;"> </span><span style="color:#6A737D;">// wrong</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`ls ${</span><span style="color:#24292E;">files</span><span style="color:#032F62;">}`</span></span></code></pre></div><p>Use <code>glob</code> function and <code>os</code> package:</p><div class="language-js vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">js</span><pre class="shiki github-dark vp-code-dark"><code><span class="line"><span style="color:#F97583;">let</span><span style="color:#E1E4E8;"> files </span><span style="color:#F97583;">=</span><span style="color:#E1E4E8;"> </span><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">glob</span><span style="color:#E1E4E8;">(os.</span><span style="color:#B392F0;">homedir</span><span style="color:#E1E4E8;">() </span><span style="color:#F97583;">+</span><span style="color:#E1E4E8;"> </span><span style="color:#9ECBFF;">&#39;/dev/**/*.md&#39;</span><span style="color:#E1E4E8;">)</span></span>
+<span class="line"><span style="color:#F97583;">await</span><span style="color:#E1E4E8;"> </span><span style="color:#B392F0;">$</span><span style="color:#9ECBFF;">`ls ${</span><span style="color:#E1E4E8;">files</span><span style="color:#9ECBFF;">}`</span></span></code></pre><pre class="shiki github-light vp-code-light"><code><span class="line"><span style="color:#D73A49;">let</span><span style="color:#24292E;"> files </span><span style="color:#D73A49;">=</span><span style="color:#24292E;"> </span><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">glob</span><span style="color:#24292E;">(os.</span><span style="color:#6F42C1;">homedir</span><span style="color:#24292E;">() </span><span style="color:#D73A49;">+</span><span style="color:#24292E;"> </span><span style="color:#032F62;">&#39;/dev/**/*.md&#39;</span><span style="color:#24292E;">)</span></span>
+<span class="line"><span style="color:#D73A49;">await</span><span style="color:#24292E;"> </span><span style="color:#6F42C1;">$</span><span style="color:#032F62;">`ls ${</span><span style="color:#24292E;">files</span><span style="color:#032F62;">}`</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-a3c25e27 data-v-a2d931e4><!--[--><!--]--><!----><nav class="prev-next" data-v-a2d931e4><div class="pager" data-v-a2d931e4><a class="pager-link prev" href="/zx/process-promise" data-v-a2d931e4><span class="desc" data-v-a2d931e4>Previous page</span><span class="title" data-v-a2d931e4>Process Promise</span></a></div><div class="pager" data-v-a2d931e4><a class="pager-link next" href="/zx/markdown-scripts" data-v-a2d931e4><span class="desc" data-v-a2d931e4>Next page</span><span class="title" data-v-a2d931e4>Markdown Scripts</span></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-4064354f data-v-e4279f1c><div class="container" data-v-e4279f1c><p class="message" data-v-e4279f1c>Disclaimer: This is not an officially supported Google product.</p><!----></div></footer><!--[--><!--]--></div></div>
+    <script>window.__VP_HASH_MAP__=JSON.parse("{\"markdown-scripts.md\":\"c7e9dbed\",\"index.md\":\"066698c6\",\"quotes.md\":\"5dad2b0d\",\"known-issues.md\":\"e3403a7b\",\"process-promise.md\":\"d7916acc\",\"getting-started.md\":\"6acf3454\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"google/zx\",\"titleTemplate\":\":title | google/zx\",\"description\":\"A tool for writing better scripts\",\"base\":\"/zx/\",\"head\":[],\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Home\",\"link\":\"/\"},{\"text\":\"Docs\",\"link\":\"/getting-started\"},{\"text\":\"7.x\",\"items\":[{\"text\":\"Releases\",\"link\":\"https://github.com/google/zx/releases\"}]}],\"sidebar\":[{\"text\":\"Docs\",\"items\":[{\"text\":\"Getting Started\",\"link\":\"/getting-started\"},{\"text\":\"Process Promise\",\"link\":\"/process-promise\"},{\"text\":\"Quotes\",\"link\":\"/quotes\"},{\"text\":\"Markdown Scripts\",\"link\":\"/markdown-scripts\"}]}],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/google/zx\"}],\"footer\":{\"message\":\"Disclaimer: This is not an officially supported Google product.\"},\"search\":{\"provider\":\"local\"}},\"locales\":{},\"scrollOffset\":90,\"cleanUrls\":true}");</script>
+    
+  </body>
+</html>
\ No newline at end of file
.gitignore
@@ -0,0 +1,2 @@
+/.vitepress/cache/
+/node_modules/
getting-started.md
@@ -0,0 +1,587 @@
+# Getting Started
+
+## Install
+
+```bash
+npm i -g zx
+```
+
+**Requirement**: Node version >= 16.0.0
+
+## Documentation
+
+<a href="https://webpod.dev/?from=zx"><img src="https://webpod.dev/img/banner.png" alt="Webpod - deploy JavaScript apps" width="190" align="right"></a>
+
+Write your scripts in a file with an `.mjs` extension in order to
+use `await` at the top level. If you prefer the `.js` extension,
+wrap your scripts in something like `void async function () {...}()`.
+
+Add the following shebang to the beginning of your `zx` scripts:
+
+```bash
+#!/usr/bin/env zx
+```
+
+Now you will be able to run your script like so:
+
+```bash
+chmod +x ./script.mjs
+./script.mjs
+```
+
+Or via the `zx` executable:
+
+```bash
+zx ./script.mjs
+```
+
+All functions (`$`, `cd`, `fetch`, etc) are available straight away
+without any imports.
+
+Or import globals explicitly (for better autocomplete in VS Code).
+
+```js
+import 'zx/globals'
+```
+
+### ``$`command` ``
+
+Executes a given command using the `spawn` func
+and returns [`ProcessPromise`](#processpromise).
+
+Everything passed through `${...}` will be automatically escaped and quoted.
+
+```js
+let name = 'foo & bar'
+await $`mkdir ${name}`
+```
+
+**There is no need to add extra quotes.** Read more about it in
+[quotes](quotes.md).
+
+You can pass an array of arguments if needed:
+
+```js
+let flags = [
+  '--oneline',
+  '--decorate',
+  '--color',
+]
+await $`git log ${flags}`
+```
+
+If the executed program returns a non-zero exit code,
+[`ProcessOutput`](#processoutput) will be thrown.
+
+```js
+try {
+  await $`exit 1`
+} catch (p) {
+  console.log(`Exit code: ${p.exitCode}`)
+  console.log(`Error: ${p.stderr}`)
+}
+```
+
+### `ProcessPromise`
+
+```ts
+class ProcessPromise extends Promise<ProcessOutput> {
+  stdin: Writable
+  stdout: Readable
+  stderr: Readable
+  exitCode: Promise<number>
+
+  pipe(dest): ProcessPromise
+
+  kill(): Promise<void>
+
+  nothrow(): this
+
+  quiet(): this
+}
+```
+
+Read more about the [ProcessPromise](process-promise.md).
+
+### `ProcessOutput`
+
+```ts
+class ProcessOutput {
+  readonly stdout: string
+  readonly stderr: string
+  readonly signal: string
+  readonly exitCode: number
+
+  toString(): string // Combined stdout & stderr.
+}
+```
+
+The output of the process is captured as-is. Usually, programs print a new
+line `\n` at the end.
+If `ProcessOutput` is used as an argument to some other `$` process,
+**zx** will use stdout and trim the new line.
+
+```js
+let date = await $`date`
+await $`echo Current date is ${date}.`
+```
+
+## Functions
+
+### `cd()`
+
+Changes the current working directory.
+
+```js
+cd('/tmp')
+await $`pwd` // => /tmp
+```
+
+Like `echo`, in addition to `string` arguments, `cd` accepts and trims
+trailing newlines from `ProcessOutput` enabling common idioms like:
+
+```js
+cd(await $`mktemp -d`)
+```
+
+### `fetch()`
+
+A wrapper around the [node-fetch](https://www.npmjs.com/package/node-fetch)
+package.
+
+```js
+let resp = await fetch('https://medv.io')
+```
+
+### `question()`
+
+A wrapper around the [readline](https://nodejs.org/api/readline.html) package.
+
+```js
+let bear = await question('What kind of bear is best? ')
+```
+
+### `sleep()`
+
+A wrapper around the `setTimeout` function.
+
+```js
+await sleep(1000)
+```
+
+### `echo()`
+
+A `console.log()` alternative which can take [ProcessOutput](#processoutput).
+
+```js
+let branch = await $`git branch --show-current`
+
+echo`Current branch is ${branch}.`
+// or
+echo('Current branch is', branch)
+```
+
+### `stdin()`
+
+Returns the stdin as a string.
+
+```js
+let content = JSON.parse(await stdin())
+```
+
+### `within()`
+
+Creates a new async context.
+
+```js
+await $`pwd` // => /home/path
+
+within(async () => {
+  cd('/tmp')
+
+  setTimeout(async () => {
+    await $`pwd` // => /tmp
+  }, 1000)
+})
+
+await $`pwd` // => /home/path
+```
+
+```js
+await $`node --version` // => v20.2.0
+
+let version = await within(async () => {
+  $.prefix += 'export NVM_DIR=$HOME/.nvm; source $NVM_DIR/nvm.sh; nvm use 16;'
+  
+  return $`node --version`
+})
+
+echo(version) // => v16.20.0
+```
+
+### `retry()`
+
+Retries a callback for a few times. Will return after the first
+successful attempt, or will throw after specifies attempts count.
+
+```js
+let p = await retry(10, () => $`curl https://medv.io`)
+
+// With a specified delay between attempts.
+let p = await retry(20, '1s', () => $`curl https://medv.io`)
+
+// With an exponential backoff.
+let p = await retry(30, expBackoff(), () => $`curl https://medv.io`)
+```
+
+### `spinner()`
+
+Starts a simple CLI spinner.
+
+```js
+await spinner(() => $`long-running command`)
+
+// With a message.
+await spinner('working...', () => $`sleep 99`)
+```
+
+## Packages
+
+The following packages are available without importing inside scripts.
+
+### `chalk` package
+
+The [chalk](https://www.npmjs.com/package/chalk) package.
+
+```js
+console.log(chalk.blue('Hello world!'))
+```
+
+### `fs` package
+
+The [fs-extra](https://www.npmjs.com/package/fs-extra) package.
+
+```js
+let {version} = await fs.readJson('./package.json')
+```
+
+### `os` package
+
+The [os](https://nodejs.org/api/os.html) package.
+
+```js
+await $`cd ${os.homedir()} && mkdir example`
+```
+
+### `path` package
+
+The [path](https://nodejs.org/api/path.html) package.
+
+```js
+await $`mkdir ${path.join(basedir, 'output')}`
+```
+
+### `globby` package
+
+The [globby](https://github.com/sindresorhus/globby) package.
+
+```js
+let packages = await glob(['package.json', 'packages/*/package.json'])
+```
+
+### `yaml` package
+
+The [yaml](https://www.npmjs.com/package/yaml) package.
+
+```js
+console.log(YAML.parse('foo: bar').foo)
+```
+
+### `minimist` package
+
+The [minimist](https://www.npmjs.com/package/minimist) package.
+
+```js
+let myCustomArgv = minimist(process.argv.slice(2), { boolean: ["force", "help"] })
+```
+
+A minimist-parsed version of the process args as `argv` (parsed without any config).
+
+```js
+if (argv.someFlag) {
+  echo('yes')
+}
+```
+
+### `which` package
+
+The [which](https://github.com/npm/node-which) package.
+
+```js
+let node = await which('node')
+```
+
+## Configuration
+
+### `$.shell`
+
+Specifies what shell is used. Default is `which bash`.
+
+```js
+$.shell = '/usr/bin/bash'
+```
+
+Or use a CLI argument: `--shell=/bin/bash`
+
+### `$.spawn`
+
+Specifies a `spawn` api. Defaults to `require('child_process').spawn`.
+
+### `$.prefix`
+
+Specifies the command that will be prefixed to all commands run.
+
+Default is `set -euo pipefail;`.
+
+Or use a CLI argument: `--prefix='set -e;'`
+
+### `$.quote`
+
+Specifies a function for escaping special characters during
+command substitution.
+
+### `$.verbose`
+
+Specifies verbosity. Default is `true`.
+
+In verbose mode, `zx` prints all executed commands alongside with their
+outputs.
+
+Or use the CLI argument `--quiet` to set `$.verbose = false`.
+
+### `$.env`
+
+Specifies an environment variables map.
+
+Defaults to `process.env`.
+
+### `$.cwd`
+
+Specifies a current working directory of all processes created with the `$`.
+
+The [cd()](#cd) func changes only `process.cwd()` and if no `$.cwd` specified,
+all `$` processes use `process.cwd()` by default (same as `spawn` behavior).
+
+### `$.log`
+
+Specifies a [logging function](src/core.ts).
+
+```ts
+import { LogEntry, log } from 'zx/core'
+
+$.log = (entry: LogEntry) => {
+  switch (entry.kind) {
+    case 'cmd':
+      // for example, apply custom data masker for cmd printing
+      process.stderr.write(masker(entry.cmd))
+      break
+    default:
+      log(entry)
+  }
+}
+```
+
+## Polyfills
+
+### `__filename` & `__dirname`
+
+In [ESM](https://nodejs.org/api/esm.html) modules, Node.js does not provide
+`__filename` and `__dirname` globals. As such globals are really handy in
+scripts,
+`zx` provides these for use in `.mjs` files (when using the `zx` executable).
+
+### `require()`
+
+In [ESM](https://nodejs.org/api/modules.html#modules_module_createrequire_filename)
+modules, the `require()` function is not defined.
+The `zx` provides `require()` function, so it can be used with imports in `.mjs`
+files (when using `zx` executable).
+
+```js
+let {version} = require('./package.json')
+```
+
+## FAQ
+
+### Passing env variables
+
+```js
+process.env.FOO = 'bar'
+await $`echo $FOO`
+```
+
+### Passing array of values
+
+When passing an array of values as an argument to `$`, items of the array will
+be escaped
+individually and concatenated via space.
+
+Example:
+
+```js
+let files = [...]
+await $`tar cz ${files}`
+```
+
+### Importing into other scripts
+
+It is possible to make use of `$` and other functions via explicit imports:
+
+```js
+#!/usr/bin/env node
+import { $ } from 'zx'
+
+await $`date`
+```
+
+### Scripts without extensions
+
+If script does not have a file extension (like `.git/hooks/pre-commit`), zx
+assumes that it is
+an [ESM](https://nodejs.org/api/modules.html#modules_module_createrequire_filename)
+module.
+
+### Markdown scripts
+
+The `zx` can execute [scripts written as markdown](markdown-scripts.md):
+
+```bash
+zx docs/markdown.md
+```
+
+### TypeScript scripts
+
+```ts
+import { $ } from 'zx'
+// Or
+import 'zx/globals'
+
+void async function () {
+  await $`ls -la`
+}()
+```
+
+Set [`"type": "module"`](https://nodejs.org/api/packages.html#packages_type)
+in **package.json**
+and [`"module": "ESNext"`](https://www.typescriptlang.org/tsconfig/#module)
+in **tsconfig.json**.
+
+### Executing remote scripts
+
+If the argument to the `zx` executable starts with `https://`, the file will be
+downloaded and executed.
+
+```bash
+zx https://medv.io/game-of-life.js
+```
+
+### Executing scripts from stdin
+
+The `zx` supports executing scripts from stdin.
+
+```js
+zx << 'EOF'
+await $`pwd`
+EOF
+```
+
+### Executing scripts via --eval
+
+Evaluate the following argument as a script.
+
+```bash
+cat package.json | zx --eval 'let v = JSON.parse(await stdin()).version; echo(v)'
+```
+
+### Installing dependencies via --install
+
+```js
+// script.mjs:
+import sh from 'tinysh'
+
+sh.say('Hello, world!')
+```
+
+Add `--install` flag to the `zx` command to install missing dependencies
+automatically.
+
+```bash
+zx --install script.mjs
+```
+
+You can also specify needed version by adding comment with `@` after
+the import.
+
+```js
+import sh from 'tinysh' // @^1
+```
+
+### Executing commands on remote hosts
+
+The `zx` uses [webpod](https://github.com/webpod/webpod) to execute commands on
+remote hosts.
+
+```js
+import { ssh } from 'zx'
+
+await ssh('user@host')`echo Hello, world!`
+```
+
+
+
+### Attaching a profile
+
+By default `child_process` does not include aliases and bash functions.
+But you are still able to do it by hand. Just attach necessary directives
+to the `$.prefix`.
+
+```js
+$.prefix += 'export NVM_DIR=$HOME/.nvm; source $NVM_DIR/nvm.sh; '
+await $`nvm -v`
+```
+
+### Using GitHub Actions
+
+The default GitHub Action runner comes with `npx` installed.
+
+```yaml
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+
+      - name: Build
+        env:
+          FORCE_COLOR: 3
+        run: |
+          npx zx <<'EOF'
+          await $`...`
+          EOF
+```
+
+### Canary / Beta / RC builds
+
+Impatient early adopters can try the experimental zx versions.
+But keep in mind: these builds are โš ๏ธ๏ธ__beta__ in every sense.
+
+```bash
+npm i zx@dev
+npx zx@dev --install --quiet <<< 'import _ from "lodash" /* 4.17.15 */; console.log(_.VERSION)'
+```
+
+## License
+
+[Apache-2.0](https://github.com/google/zx/blob/main/LICENSE)
+
+Disclaimer: _This is not an officially supported Google product._
index.md
@@ -0,0 +1,21 @@
+---
+# https://vitepress.dev/reference/default-theme-home-page
+layout: home
+titleTemplate: google/zx
+
+hero:
+  name: "zx"
+  text: "A tool for writing better scripts"
+  actions:
+    - theme: brand
+      text: Documentation
+      link: /getting-started
+
+features:
+  - title: Simple
+    details: Write your scripts in a familiar language.
+  - title: Powerful
+    details: Interact with the full ecosystem of JS libraries.
+  - title: Batteries included
+    details: Everything you need, right out of the box.
+---
known-issues.md
@@ -0,0 +1,27 @@
+# Known Issues
+
+## Output gets truncated
+
+This is a known issue with `console.log()` (see [nodejs/node#6379](https://github.com/nodejs/node/issues/6379)).
+It's caused by different behaviour of `console.log()` writing to the terminal vs
+to a file. If a process calls `process.exit()`, buffered output will be truncated.
+To prevent this, the process should use `process.exitCode = 1` and wait for the
+process to exit itself. Or use something like [exit](https://www.npmjs.com/package/exit) package.
+
+Workaround is to write to a temp file:
+```js
+let tmp = await $`mktemp` // Creates a temp file.
+let {stdout} = await $`cmd > ${tmp}; cat ${tmp}`
+```
+
+## Colors in subprocess
+
+You may see what tools invoked with `await $` don't show colors, compared to
+what you see in a terminal. This is because, the subprocess does not think it's
+a TTY and the subprocess turns off colors. Usually there is a way force
+the subprocess to add colors.
+
+```js
+process.env.FORCE_COLOR='1'
+await $`cmd`
+```
markdown-scripts.md
@@ -0,0 +1,42 @@
+# Markdown Scripts
+
+It's possible to write scripts using markdown. Only code blocks will be executed
+by zx.
+
+> You can run this markdown file:
+>
+> ```
+> zx docs/markdown.md
+> ```
+
+```js
+await $`whoami`
+await $`echo ${__dirname}`
+```
+
+The `__filename` will be pointed to **markdown.md**:
+
+```js
+console.log(chalk.yellowBright(__filename))
+```
+
+We can use imports here as well:
+
+```js
+await import('chalk')
+```
+
+A bash code (with `bash` or `sh` language tags) also will be executed:
+
+```bash
+VAR=$(date)
+echo "$VAR" | wc -c
+```
+
+Other code blocks are ignored:
+
+```css
+body .hero {
+    margin: 42px;
+}
+```
package-lock.json
@@ -0,0 +1,1252 @@
+{
+  "name": "zx-docs",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "devDependencies": {
+        "vitepress": "^1.0.0-rc.10"
+      }
+    },
+    "node_modules/@algolia/autocomplete-core": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz",
+      "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/autocomplete-plugin-algolia-insights": "1.9.3",
+        "@algolia/autocomplete-shared": "1.9.3"
+      }
+    },
+    "node_modules/@algolia/autocomplete-plugin-algolia-insights": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz",
+      "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/autocomplete-shared": "1.9.3"
+      },
+      "peerDependencies": {
+        "search-insights": ">= 1 < 3"
+      }
+    },
+    "node_modules/@algolia/autocomplete-preset-algolia": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz",
+      "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/autocomplete-shared": "1.9.3"
+      },
+      "peerDependencies": {
+        "@algolia/client-search": ">= 4.9.1 < 6",
+        "algoliasearch": ">= 4.9.1 < 6"
+      }
+    },
+    "node_modules/@algolia/autocomplete-shared": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz",
+      "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==",
+      "dev": true,
+      "peerDependencies": {
+        "@algolia/client-search": ">= 4.9.1 < 6",
+        "algoliasearch": ">= 4.9.1 < 6"
+      }
+    },
+    "node_modules/@algolia/cache-browser-local-storage": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.19.1.tgz",
+      "integrity": "sha512-FYAZWcGsFTTaSAwj9Std8UML3Bu8dyWDncM7Ls8g+58UOe4XYdlgzXWbrIgjaguP63pCCbMoExKr61B+ztK3tw==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/cache-common": "4.19.1"
+      }
+    },
+    "node_modules/@algolia/cache-common": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.19.1.tgz",
+      "integrity": "sha512-XGghi3l0qA38HiqdoUY+wvGyBsGvKZ6U3vTiMBT4hArhP3fOGLXpIINgMiiGjTe4FVlTa5a/7Zf2bwlIHfRqqg==",
+      "dev": true
+    },
+    "node_modules/@algolia/cache-in-memory": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.19.1.tgz",
+      "integrity": "sha512-+PDWL+XALGvIginigzu8oU6eWw+o76Z8zHbBovWYcrtWOEtinbl7a7UTt3x3lthv+wNuFr/YD1Gf+B+A9V8n5w==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/cache-common": "4.19.1"
+      }
+    },
+    "node_modules/@algolia/client-account": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.19.1.tgz",
+      "integrity": "sha512-Oy0ritA2k7AMxQ2JwNpfaEcgXEDgeyKu0V7E7xt/ZJRdXfEpZcwp9TOg4TJHC7Ia62gIeT2Y/ynzsxccPw92GA==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/client-common": "4.19.1",
+        "@algolia/client-search": "4.19.1",
+        "@algolia/transporter": "4.19.1"
+      }
+    },
+    "node_modules/@algolia/client-analytics": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.19.1.tgz",
+      "integrity": "sha512-5QCq2zmgdZLIQhHqwl55ZvKVpLM3DNWjFI4T+bHr3rGu23ew2bLO4YtyxaZeChmDb85jUdPDouDlCumGfk6wOg==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/client-common": "4.19.1",
+        "@algolia/client-search": "4.19.1",
+        "@algolia/requester-common": "4.19.1",
+        "@algolia/transporter": "4.19.1"
+      }
+    },
+    "node_modules/@algolia/client-common": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.19.1.tgz",
+      "integrity": "sha512-3kAIVqTcPrjfS389KQvKzliC559x+BDRxtWamVJt8IVp7LGnjq+aVAXg4Xogkur1MUrScTZ59/AaUd5EdpyXgA==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/requester-common": "4.19.1",
+        "@algolia/transporter": "4.19.1"
+      }
+    },
+    "node_modules/@algolia/client-personalization": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.19.1.tgz",
+      "integrity": "sha512-8CWz4/H5FA+krm9HMw2HUQenizC/DxUtsI5oYC0Jxxyce1vsr8cb1aEiSJArQT6IzMynrERif1RVWLac1m36xw==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/client-common": "4.19.1",
+        "@algolia/requester-common": "4.19.1",
+        "@algolia/transporter": "4.19.1"
+      }
+    },
+    "node_modules/@algolia/client-search": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.19.1.tgz",
+      "integrity": "sha512-mBecfMFS4N+yK/p0ZbK53vrZbL6OtWMk8YmnOv1i0LXx4pelY8TFhqKoTit3NPVPwoSNN0vdSN9dTu1xr1XOVw==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/client-common": "4.19.1",
+        "@algolia/requester-common": "4.19.1",
+        "@algolia/transporter": "4.19.1"
+      }
+    },
+    "node_modules/@algolia/logger-common": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.19.1.tgz",
+      "integrity": "sha512-i6pLPZW/+/YXKis8gpmSiNk1lOmYCmRI6+x6d2Qk1OdfvX051nRVdalRbEcVTpSQX6FQAoyeaui0cUfLYW5Elw==",
+      "dev": true
+    },
+    "node_modules/@algolia/logger-console": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.19.1.tgz",
+      "integrity": "sha512-jj72k9GKb9W0c7TyC3cuZtTr0CngLBLmc8trzZlXdfvQiigpUdvTi1KoWIb2ZMcRBG7Tl8hSb81zEY3zI2RlXg==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/logger-common": "4.19.1"
+      }
+    },
+    "node_modules/@algolia/requester-browser-xhr": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.19.1.tgz",
+      "integrity": "sha512-09K/+t7lptsweRTueHnSnmPqIxbHMowejAkn9XIcJMLdseS3zl8ObnS5GWea86mu3vy4+8H+ZBKkUN82Zsq/zg==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/requester-common": "4.19.1"
+      }
+    },
+    "node_modules/@algolia/requester-common": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.19.1.tgz",
+      "integrity": "sha512-BisRkcWVxrDzF1YPhAckmi2CFYK+jdMT60q10d7z3PX+w6fPPukxHRnZwooiTUrzFe50UBmLItGizWHP5bDzVQ==",
+      "dev": true
+    },
+    "node_modules/@algolia/requester-node-http": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.19.1.tgz",
+      "integrity": "sha512-6DK52DHviBHTG2BK/Vv2GIlEw7i+vxm7ypZW0Z7vybGCNDeWzADx+/TmxjkES2h15+FZOqVf/Ja677gePsVItA==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/requester-common": "4.19.1"
+      }
+    },
+    "node_modules/@algolia/transporter": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.19.1.tgz",
+      "integrity": "sha512-nkpvPWbpuzxo1flEYqNIbGz7xhfhGOKGAZS7tzC+TELgEmi7z99qRyTfNSUlW7LZmB3ACdnqAo+9A9KFBENviQ==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/cache-common": "4.19.1",
+        "@algolia/logger-common": "4.19.1",
+        "@algolia/requester-common": "4.19.1"
+      }
+    },
+    "node_modules/@babel/parser": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.15.tgz",
+      "integrity": "sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==",
+      "dev": true,
+      "bin": {
+        "parser": "bin/babel-parser.js"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@docsearch/css": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz",
+      "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==",
+      "dev": true
+    },
+    "node_modules/@docsearch/js": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.2.tgz",
+      "integrity": "sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==",
+      "dev": true,
+      "dependencies": {
+        "@docsearch/react": "3.5.2",
+        "preact": "^10.0.0"
+      }
+    },
+    "node_modules/@docsearch/react": {
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz",
+      "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/autocomplete-core": "1.9.3",
+        "@algolia/autocomplete-preset-algolia": "1.9.3",
+        "@docsearch/css": "3.5.2",
+        "algoliasearch": "^4.19.1"
+      },
+      "peerDependencies": {
+        "@types/react": ">= 16.8.0 < 19.0.0",
+        "react": ">= 16.8.0 < 19.0.0",
+        "react-dom": ">= 16.8.0 < 19.0.0",
+        "search-insights": ">= 1 < 3"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        },
+        "react": {
+          "optional": true
+        },
+        "react-dom": {
+          "optional": true
+        },
+        "search-insights": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@esbuild/android-arm": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz",
+      "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz",
+      "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/android-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz",
+      "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "android"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz",
+      "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/darwin-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz",
+      "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz",
+      "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/freebsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz",
+      "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "freebsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz",
+      "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==",
+      "cpu": [
+        "arm"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz",
+      "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz",
+      "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-loong64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz",
+      "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==",
+      "cpu": [
+        "loong64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-mips64el": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz",
+      "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==",
+      "cpu": [
+        "mips64el"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-ppc64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz",
+      "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==",
+      "cpu": [
+        "ppc64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-riscv64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz",
+      "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==",
+      "cpu": [
+        "riscv64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-s390x": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz",
+      "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==",
+      "cpu": [
+        "s390x"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/linux-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz",
+      "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/netbsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz",
+      "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "netbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/openbsd-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz",
+      "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "openbsd"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/sunos-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz",
+      "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "sunos"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-arm64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz",
+      "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-ia32": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz",
+      "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==",
+      "cpu": [
+        "ia32"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@esbuild/win32-x64": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz",
+      "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "optional": true,
+      "os": [
+        "win32"
+      ],
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/@jridgewell/sourcemap-codec": {
+      "version": "1.4.15",
+      "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+      "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+      "dev": true
+    },
+    "node_modules/@types/web-bluetooth": {
+      "version": "0.0.17",
+      "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz",
+      "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==",
+      "dev": true
+    },
+    "node_modules/@vue/compiler-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz",
+      "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.21.3",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz",
+      "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/compiler-sfc": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz",
+      "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/reactivity-transform": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0",
+        "postcss": "^8.1.10",
+        "source-map-js": "^1.0.2"
+      }
+    },
+    "node_modules/@vue/compiler-ssr": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz",
+      "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/devtools-api": {
+      "version": "6.5.0",
+      "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
+      "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==",
+      "dev": true
+    },
+    "node_modules/@vue/reactivity": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz",
+      "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==",
+      "dev": true,
+      "dependencies": {
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/reactivity-transform": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz",
+      "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==",
+      "dev": true,
+      "dependencies": {
+        "@babel/parser": "^7.20.15",
+        "@vue/compiler-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "estree-walker": "^2.0.2",
+        "magic-string": "^0.30.0"
+      }
+    },
+    "node_modules/@vue/runtime-core": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz",
+      "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==",
+      "dev": true,
+      "dependencies": {
+        "@vue/reactivity": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    },
+    "node_modules/@vue/runtime-dom": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz",
+      "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==",
+      "dev": true,
+      "dependencies": {
+        "@vue/runtime-core": "3.3.4",
+        "@vue/shared": "3.3.4",
+        "csstype": "^3.1.1"
+      }
+    },
+    "node_modules/@vue/server-renderer": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz",
+      "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-ssr": "3.3.4",
+        "@vue/shared": "3.3.4"
+      },
+      "peerDependencies": {
+        "vue": "3.3.4"
+      }
+    },
+    "node_modules/@vue/shared": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz",
+      "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==",
+      "dev": true
+    },
+    "node_modules/@vueuse/core": {
+      "version": "10.4.1",
+      "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.4.1.tgz",
+      "integrity": "sha512-DkHIfMIoSIBjMgRRvdIvxsyboRZQmImofLyOHADqiVbQVilP8VVHDhBX2ZqoItOgu7dWa8oXiNnScOdPLhdEXg==",
+      "dev": true,
+      "dependencies": {
+        "@types/web-bluetooth": "^0.0.17",
+        "@vueuse/metadata": "10.4.1",
+        "@vueuse/shared": "10.4.1",
+        "vue-demi": ">=0.14.5"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/core/node_modules/vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vueuse/integrations": {
+      "version": "10.4.1",
+      "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.4.1.tgz",
+      "integrity": "sha512-uRBPyG5Lxoh1A/J+boiioPT3ELEAPEo4t8W6Mr4yTKIQBeW/FcbsotZNPr4k9uz+3QEksMmflWloS9wCnypM7g==",
+      "dev": true,
+      "dependencies": {
+        "@vueuse/core": "10.4.1",
+        "@vueuse/shared": "10.4.1",
+        "vue-demi": ">=0.14.5"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "async-validator": "*",
+        "axios": "*",
+        "change-case": "*",
+        "drauu": "*",
+        "focus-trap": "*",
+        "fuse.js": "*",
+        "idb-keyval": "*",
+        "jwt-decode": "*",
+        "nprogress": "*",
+        "qrcode": "*",
+        "sortablejs": "*",
+        "universal-cookie": "*"
+      },
+      "peerDependenciesMeta": {
+        "async-validator": {
+          "optional": true
+        },
+        "axios": {
+          "optional": true
+        },
+        "change-case": {
+          "optional": true
+        },
+        "drauu": {
+          "optional": true
+        },
+        "focus-trap": {
+          "optional": true
+        },
+        "fuse.js": {
+          "optional": true
+        },
+        "idb-keyval": {
+          "optional": true
+        },
+        "jwt-decode": {
+          "optional": true
+        },
+        "nprogress": {
+          "optional": true
+        },
+        "qrcode": {
+          "optional": true
+        },
+        "sortablejs": {
+          "optional": true
+        },
+        "universal-cookie": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vueuse/integrations/node_modules/vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@vueuse/metadata": {
+      "version": "10.4.1",
+      "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.4.1.tgz",
+      "integrity": "sha512-2Sc8X+iVzeuMGHr6O2j4gv/zxvQGGOYETYXEc41h0iZXIRnRbJZGmY/QP8dvzqUelf8vg0p/yEA5VpCEu+WpZg==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/shared": {
+      "version": "10.4.1",
+      "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.4.1.tgz",
+      "integrity": "sha512-vz5hbAM4qA0lDKmcr2y3pPdU+2EVw/yzfRsBdu+6+USGa4PxqSQRYIUC9/NcT06y+ZgaTsyURw2I9qOFaaXHAg==",
+      "dev": true,
+      "dependencies": {
+        "vue-demi": ">=0.14.5"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      }
+    },
+    "node_modules/@vueuse/shared/node_modules/vue-demi": {
+      "version": "0.14.6",
+      "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz",
+      "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "vue-demi-fix": "bin/vue-demi-fix.js",
+        "vue-demi-switch": "bin/vue-demi-switch.js"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/antfu"
+      },
+      "peerDependencies": {
+        "@vue/composition-api": "^1.0.0-rc.1",
+        "vue": "^3.0.0-0 || ^2.6.0"
+      },
+      "peerDependenciesMeta": {
+        "@vue/composition-api": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/algoliasearch": {
+      "version": "4.19.1",
+      "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.19.1.tgz",
+      "integrity": "sha512-IJF5b93b2MgAzcE/tuzW0yOPnuUyRgGAtaPv5UUywXM8kzqfdwZTO4sPJBzoGz1eOy6H9uEchsJsBFTELZSu+g==",
+      "dev": true,
+      "dependencies": {
+        "@algolia/cache-browser-local-storage": "4.19.1",
+        "@algolia/cache-common": "4.19.1",
+        "@algolia/cache-in-memory": "4.19.1",
+        "@algolia/client-account": "4.19.1",
+        "@algolia/client-analytics": "4.19.1",
+        "@algolia/client-common": "4.19.1",
+        "@algolia/client-personalization": "4.19.1",
+        "@algolia/client-search": "4.19.1",
+        "@algolia/logger-common": "4.19.1",
+        "@algolia/logger-console": "4.19.1",
+        "@algolia/requester-browser-xhr": "4.19.1",
+        "@algolia/requester-common": "4.19.1",
+        "@algolia/requester-node-http": "4.19.1",
+        "@algolia/transporter": "4.19.1"
+      }
+    },
+    "node_modules/ansi-sequence-parser": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz",
+      "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==",
+      "dev": true
+    },
+    "node_modules/csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==",
+      "dev": true
+    },
+    "node_modules/esbuild": {
+      "version": "0.18.20",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz",
+      "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==",
+      "dev": true,
+      "hasInstallScript": true,
+      "bin": {
+        "esbuild": "bin/esbuild"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "optionalDependencies": {
+        "@esbuild/android-arm": "0.18.20",
+        "@esbuild/android-arm64": "0.18.20",
+        "@esbuild/android-x64": "0.18.20",
+        "@esbuild/darwin-arm64": "0.18.20",
+        "@esbuild/darwin-x64": "0.18.20",
+        "@esbuild/freebsd-arm64": "0.18.20",
+        "@esbuild/freebsd-x64": "0.18.20",
+        "@esbuild/linux-arm": "0.18.20",
+        "@esbuild/linux-arm64": "0.18.20",
+        "@esbuild/linux-ia32": "0.18.20",
+        "@esbuild/linux-loong64": "0.18.20",
+        "@esbuild/linux-mips64el": "0.18.20",
+        "@esbuild/linux-ppc64": "0.18.20",
+        "@esbuild/linux-riscv64": "0.18.20",
+        "@esbuild/linux-s390x": "0.18.20",
+        "@esbuild/linux-x64": "0.18.20",
+        "@esbuild/netbsd-x64": "0.18.20",
+        "@esbuild/openbsd-x64": "0.18.20",
+        "@esbuild/sunos-x64": "0.18.20",
+        "@esbuild/win32-arm64": "0.18.20",
+        "@esbuild/win32-ia32": "0.18.20",
+        "@esbuild/win32-x64": "0.18.20"
+      }
+    },
+    "node_modules/estree-walker": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
+      "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
+      "dev": true
+    },
+    "node_modules/focus-trap": {
+      "version": "7.5.2",
+      "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.2.tgz",
+      "integrity": "sha512-p6vGNNWLDGwJCiEjkSK6oERj/hEyI9ITsSwIUICBoKLlWiTWXJRfQibCwcoi50rTZdbi87qDtUlMCmQwsGSgPw==",
+      "dev": true,
+      "dependencies": {
+        "tabbable": "^6.2.0"
+      }
+    },
+    "node_modules/fsevents": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/jsonc-parser": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+      "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
+      "dev": true
+    },
+    "node_modules/magic-string": {
+      "version": "0.30.3",
+      "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz",
+      "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==",
+      "dev": true,
+      "dependencies": {
+        "@jridgewell/sourcemap-codec": "^1.4.15"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/mark.js": {
+      "version": "8.11.1",
+      "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz",
+      "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==",
+      "dev": true
+    },
+    "node_modules/minisearch": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.1.0.tgz",
+      "integrity": "sha512-PNxA/X8pWk+TiqPbsoIYH0GQ5Di7m6326/lwU/S4mlo4wGQddIcf/V//1f9TB0V4j59b57b+HZxt8h3iMROGvg==",
+      "dev": true
+    },
+    "node_modules/nanoid": {
+      "version": "3.3.6",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
+      "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "bin": {
+        "nanoid": "bin/nanoid.cjs"
+      },
+      "engines": {
+        "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+      }
+    },
+    "node_modules/picocolors": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
+      "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
+      "dev": true
+    },
+    "node_modules/postcss": {
+      "version": "8.4.29",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz",
+      "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "opencollective",
+          "url": "https://opencollective.com/postcss/"
+        },
+        {
+          "type": "tidelift",
+          "url": "https://tidelift.com/funding/github/npm/postcss"
+        },
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/ai"
+        }
+      ],
+      "dependencies": {
+        "nanoid": "^3.3.6",
+        "picocolors": "^1.0.0",
+        "source-map-js": "^1.0.2"
+      },
+      "engines": {
+        "node": "^10 || ^12 || >=14"
+      }
+    },
+    "node_modules/preact": {
+      "version": "10.17.1",
+      "resolved": "https://registry.npmjs.org/preact/-/preact-10.17.1.tgz",
+      "integrity": "sha512-X9BODrvQ4Ekwv9GURm9AKAGaomqXmip7NQTZgY7gcNmr7XE83adOMJvd3N42id1tMFU7ojiynRsYnY6/BRFxLA==",
+      "dev": true,
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/preact"
+      }
+    },
+    "node_modules/rollup": {
+      "version": "3.28.1",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.1.tgz",
+      "integrity": "sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==",
+      "dev": true,
+      "bin": {
+        "rollup": "dist/bin/rollup"
+      },
+      "engines": {
+        "node": ">=14.18.0",
+        "npm": ">=8.0.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      }
+    },
+    "node_modules/search-insights": {
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.8.1.tgz",
+      "integrity": "sha512-gxfqTdzjOxl/i5LtTvSFdolgnm3pUQD5Ae3V8N6tFQ2bsYeo4C3CmrQAsMt212ZV78P22XBUH/nM9IhcAI946Q==",
+      "dev": true,
+      "peer": true
+    },
+    "node_modules/shiki": {
+      "version": "0.14.4",
+      "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.4.tgz",
+      "integrity": "sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ==",
+      "dev": true,
+      "dependencies": {
+        "ansi-sequence-parser": "^1.1.0",
+        "jsonc-parser": "^3.2.0",
+        "vscode-oniguruma": "^1.7.0",
+        "vscode-textmate": "^8.0.0"
+      }
+    },
+    "node_modules/source-map-js": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
+      "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/tabbable": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz",
+      "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==",
+      "dev": true
+    },
+    "node_modules/vite": {
+      "version": "4.4.9",
+      "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz",
+      "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==",
+      "dev": true,
+      "dependencies": {
+        "esbuild": "^0.18.10",
+        "postcss": "^8.4.27",
+        "rollup": "^3.27.1"
+      },
+      "bin": {
+        "vite": "bin/vite.js"
+      },
+      "engines": {
+        "node": "^14.18.0 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/vitejs/vite?sponsor=1"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.3.2"
+      },
+      "peerDependencies": {
+        "@types/node": ">= 14",
+        "less": "*",
+        "lightningcss": "^1.21.0",
+        "sass": "*",
+        "stylus": "*",
+        "sugarss": "*",
+        "terser": "^5.4.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/node": {
+          "optional": true
+        },
+        "less": {
+          "optional": true
+        },
+        "lightningcss": {
+          "optional": true
+        },
+        "sass": {
+          "optional": true
+        },
+        "stylus": {
+          "optional": true
+        },
+        "sugarss": {
+          "optional": true
+        },
+        "terser": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/vitepress": {
+      "version": "1.0.0-rc.10",
+      "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.10.tgz",
+      "integrity": "sha512-+MsahIWqq5WUEmj6MR4obcKYbT7im07jZPCQPdNJExkeOSbOAJ4xypSLx88x7rvtzWHhHc5aXbOhCRvGEGjFrw==",
+      "dev": true,
+      "dependencies": {
+        "@docsearch/css": "^3.5.2",
+        "@docsearch/js": "^3.5.2",
+        "@vue/devtools-api": "^6.5.0",
+        "@vueuse/core": "^10.4.1",
+        "@vueuse/integrations": "^10.4.1",
+        "focus-trap": "^7.5.2",
+        "mark.js": "8.11.1",
+        "minisearch": "^6.1.0",
+        "shiki": "^0.14.3",
+        "vite": "^4.4.9",
+        "vue": "^3.3.4"
+      },
+      "bin": {
+        "vitepress": "bin/vitepress.js"
+      }
+    },
+    "node_modules/vscode-oniguruma": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz",
+      "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==",
+      "dev": true
+    },
+    "node_modules/vscode-textmate": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz",
+      "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==",
+      "dev": true
+    },
+    "node_modules/vue": {
+      "version": "3.3.4",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz",
+      "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==",
+      "dev": true,
+      "dependencies": {
+        "@vue/compiler-dom": "3.3.4",
+        "@vue/compiler-sfc": "3.3.4",
+        "@vue/runtime-dom": "3.3.4",
+        "@vue/server-renderer": "3.3.4",
+        "@vue/shared": "3.3.4"
+      }
+    }
+  }
+}
package.json
@@ -0,0 +1,11 @@
+{
+  "private": true,
+  "devDependencies": {
+    "vitepress": "^1.0.0-rc.10"
+  },
+  "scripts": {
+    "docs:dev": "vitepress dev",
+    "docs:build": "vitepress build",
+    "docs:preview": "vitepress preview"
+  }
+}
process-promise.md
@@ -0,0 +1,151 @@
+# ProcessPromise
+
+The `$` returns a `ProcessPromise` instance.
+
+```js
+let p = $`command`
+
+await p
+```
+
+## `stdin`
+
+Returns a writable stream of the stdin process. Accessing
+this getter will trigger execution of a subprocess with [`stdio('pipe')`](#stdio).
+
+Do not forget to end the stream.
+
+```js
+let p = $`while read; do echo $REPLY; done`
+p.stdin.write('Hello, World!\n')
+p.stdin.end()
+```
+
+By default, each process is created with stdin in _inherit_ mode.
+
+## `stdout`/`stderr`
+
+Returns a readable streams of stdout/stderr process.
+
+```js
+const p = $`npm init`
+for await (const chunk of p.stdout) {
+  echo(chunk)
+}
+```
+
+## `exitCode`
+
+Returns a promise which resolves to the exit code of the process.
+
+```js
+if (await $`[[ -d path ]]`.exitCode == 0) {
+  ...
+}
+```
+
+## `pipe()`
+
+Redirects the stdout of the process.
+
+```js
+await $`echo "Hello, stdout!"`
+  .pipe(fs.createWriteStream('/tmp/output.txt'))
+
+await $`cat /tmp/output.txt`
+```
+
+Pipes can be used to show a real-time output of the process:
+
+```js
+await $`echo 1; sleep 1; echo 2; sleep 1; echo 3;`
+  .pipe(process.stdout)
+```
+
+The `pipe()` method can combine `$` processes. Same as `|` in bash:
+
+```js
+let greeting = await $`printf "hello"`
+  .pipe($`awk '{printf $1", world!"}'`)
+  .pipe($`tr '[a-z]' '[A-Z]'`)
+
+echo(greeting)
+```
+
+Use combinations of `pipe()` and [`nothrow()`](#nothrow):
+
+```js
+await $`find ./examples -type f -print0`
+  .pipe($`xargs -0 grep ${'missing' + 'part'}`.nothrow())
+  .pipe($`wc -l`)
+```
+
+## `kill()`
+
+Kills the process and all children.
+
+By default, signal `SIGTERM` is sent. You can specify a signal via an argument.
+
+```js
+let p = $`sleep 999`
+setTimeout(() => p.kill('SIGINT'), 100)
+await p
+```
+
+## `stdio()`
+
+Specifies a stdio for the process.
+
+Default is `.stdio('inherit', 'pipe', 'pipe')`.
+
+```js
+let p = $`read`.stdio('pipe')
+```
+
+## `nothrow()`
+
+Changes behavior of `$` to not throw an exception on non-zero exit codes.
+
+```js
+await $`grep something from-file`.nothrow()
+
+// Inside a pipe():
+
+await $`find ./examples -type f -print0`
+  .pipe($`xargs -0 grep something`.nothrow())
+  .pipe($`wc -l`)
+```
+
+If only the `exitCode` is needed, you can use [`exitCode`](#exitcode) directly:
+
+```js
+if (await $`[[ -d path ]]`.exitCode == 0) {
+  ...
+}
+
+// Equivalent of:
+
+if ((await $`[[ -d path ]]`.nothrow()).exitCode == 0) {
+  ...
+}
+```
+
+## `quiet()`
+
+Changes behavior of `$` to disable verbose output.
+
+```js
+// Command and output will not be displayed.
+await $`grep something from-file`.quiet()
+```
+
+## `timeout()`
+
+Kills the process after a specified timeout.
+
+```js
+await $`sleep 999`.timeout('5s')
+
+// Or with a specific signal.
+await $`sleep 999`.timeout('5s', 'SIGKILL')
+```
quotes.md
@@ -0,0 +1,75 @@
+# Quotes
+
+When passing arguments to `${...}` there is no need to add quotes. **Quotes will
+be added automatically if needed.**
+
+```js
+let name = 'foo & bar'
+await $`mkdir ${name}`
+```
+
+For quotes **zx** uses special bash syntax (next commands are valid bash):
+
+```bash
+mkdir $'foo & bar'
+$'ls' $'-la'
+```
+
+If you add quotes `"${name}"`, it will produce a wrong command.
+
+If you need to add something extra, consider putting it inside curly brackets.
+
+```js
+await $`mkdir ${'path/to-dir/' + name}`
+```
+
+This will also work properly:
+
+```js
+await $`mkdir path/to-dir/${name}`
+```
+
+### Array of arguments
+
+The `zx` can also take an array or arguments in the `${...}`. Items of the array
+will be quoted separately and concatenated via a space.
+
+Do **not** add a `.join(' ')`.
+
+```js
+let flags = [
+  '--oneline',
+  '--decorate',
+  '--color',
+]
+await $`git log ${flags}`
+```
+
+If you already have a string with arrays, it's your responsibility
+to correctly parse it and distinguish separate arguments. For example like this:
+
+```js
+await $`git log ${'--oneline --decorate --color'.split(' ')}`
+```
+
+### globbing and `~`
+
+As everything passed through `${...}` will be escaped, you can't use `~` or glob
+syntax.
+
+In order for this to work the zx provides
+[globby package](getting-started.md#globby-package).
+
+For instead of this:
+
+```js
+let files = '~/dev/**/*.md' // wrong
+await $`ls ${files}`
+```
+
+Use `glob` function and `os` package:
+
+```js
+let files = await glob(os.homedir() + '/dev/**/*.md')
+await $`ls ${files}`
+```