[{"data":1,"prerenderedAt":586},["ShallowReactive",2],{"navigation_docs":3,"-reference-environment-variables":199,"-reference-environment-variables-surround":581},[4,23,65,87,133,159,177],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":22},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",false,{"title":24,"icon":25,"path":26,"stem":27,"children":28,"page":22},"Guides","i-lucide-compass","\u002Fguides","2.guides",[29,33,37,41,45,49,53,57,61],{"title":30,"path":31,"stem":32},"Authenticate","\u002Fguides\u002Fauthentication","2.guides\u002F1.authentication",{"title":34,"path":35,"stem":36},"Work with several forges","\u002Fguides\u002Fmultiple-forges","2.guides\u002F2.multiple-forges",{"title":38,"path":39,"stem":40},"Configure from the environment","\u002Fguides\u002Fenvironment","2.guides\u002F3.environment",{"title":42,"path":43,"stem":44},"Receive webhooks","\u002Fguides\u002Fwebhooks","2.guides\u002F4.webhooks",{"title":46,"path":47,"stem":48},"Check what a forge supports","\u002Fguides\u002Fcapabilities","2.guides\u002F5.capabilities",{"title":50,"path":51,"stem":52},"Handle errors and rate limits","\u002Fguides\u002Ferrors","2.guides\u002F6.errors",{"title":54,"path":55,"stem":56},"Page through results","\u002Fguides\u002Fpagination","2.guides\u002F7.pagination",{"title":58,"path":59,"stem":60},"Browser bundles","\u002Fguides\u002Fbundling","2.guides\u002F8.bundling",{"title":62,"path":63,"stem":64},"Test your code","\u002Fguides\u002Ftesting","2.guides\u002F9.testing",{"title":66,"icon":67,"path":68,"stem":69,"children":70,"page":22},"Concepts","i-lucide-lightbulb","\u002Fconcepts","3.concepts",[71,75,79,83],{"title":72,"path":73,"stem":74},"Data model","\u002Fconcepts\u002Fdata-model","3.concepts\u002F1.data-model",{"title":76,"path":77,"stem":78},"Capabilities","\u002Fconcepts\u002Fcapabilities","3.concepts\u002F2.capabilities",{"title":80,"path":81,"stem":82},"Providers and factories","\u002Fconcepts\u002Fproviders","3.concepts\u002F3.providers",{"title":84,"path":85,"stem":86},"Events","\u002Fconcepts\u002Fevents","3.concepts\u002F4.events",{"title":88,"icon":89,"path":90,"stem":91,"children":92,"page":22},"Providers","i-lucide-server","\u002Fproviders","4.providers",[93,97,101,105,109,113,117,121,125,129],{"title":94,"path":95,"stem":96},"Azure DevOps","\u002Fproviders\u002Fazure-devops","4.providers\u002Fazure-devops",{"title":98,"path":99,"stem":100},"Bitbucket Cloud","\u002Fproviders\u002Fbitbucket","4.providers\u002Fbitbucket",{"title":102,"path":103,"stem":104},"Cursor Origin","\u002Fproviders\u002Fcursor-origin","4.providers\u002Fcursor-origin",{"title":106,"path":107,"stem":108},"Forgejo and Codeberg","\u002Fproviders\u002Fforgejo","4.providers\u002Fforgejo",{"title":110,"path":111,"stem":112},"Gitea","\u002Fproviders\u002Fgitea","4.providers\u002Fgitea",{"title":114,"path":115,"stem":116},"Gitee","\u002Fproviders\u002Fgitee","4.providers\u002Fgitee",{"title":118,"path":119,"stem":120},"GitHub","\u002Fproviders\u002Fgithub","4.providers\u002Fgithub",{"title":122,"path":123,"stem":124},"GitLab","\u002Fproviders\u002Fgitlab","4.providers\u002Fgitlab",{"title":126,"path":127,"stem":128},"pushin.eu","\u002Fproviders\u002Fpushin","4.providers\u002Fpushin",{"title":130,"path":131,"stem":132},"Tangled","\u002Fproviders\u002Ftangled","4.providers\u002Ftangled",{"title":134,"icon":135,"path":136,"stem":137,"children":138,"page":22},"Reference","i-lucide-book-marked","\u002Freference","5.reference",[139,143,147,151,155],{"title":140,"path":141,"stem":142},"Provider API","\u002Freference\u002Fprovider-api","5.reference\u002F1.provider-api",{"title":144,"path":145,"stem":146},"Capability matrix","\u002Freference\u002Fcapability-matrix","5.reference\u002F2.capability-matrix",{"title":148,"path":149,"stem":150},"Errors","\u002Freference\u002Ferrors","5.reference\u002F3.errors",{"title":152,"path":153,"stem":154},"Environment variables","\u002Freference\u002Fenvironment-variables","5.reference\u002F4.environment-variables",{"title":156,"path":157,"stem":158},"JSON Schemas","\u002Freference\u002Fjson-schemas","5.reference\u002F5.json-schemas",{"title":160,"icon":161,"path":162,"stem":163,"children":164,"page":22},"Examples","i-lucide-boxes","\u002Fexamples","6.examples",[165,169,173],{"title":166,"path":167,"stem":168},"Inbox CLI","\u002Fexamples\u002Finbox-cli","6.examples\u002F1.inbox-cli",{"title":170,"path":171,"stem":172},"Label bot","\u002Fexamples\u002Flabel-bot","6.examples\u002F2.label-bot",{"title":174,"path":175,"stem":176},"Release digest","\u002Fexamples\u002Frelease-digest","6.examples\u002F3.release-digest",{"title":178,"icon":179,"path":180,"stem":181,"children":182,"page":22},"Contributing","i-lucide-git-pull-request","\u002Fcontributing","7.contributing",[183,187,191,195],{"title":184,"path":185,"stem":186},"Contribution guide","\u002Fcontributing\u002Fguidelines","7.contributing\u002F1.guidelines",{"title":188,"path":189,"stem":190},"Write a provider","\u002Fcontributing\u002Fwrite-a-provider","7.contributing\u002F2.write-a-provider",{"title":192,"path":193,"stem":194},"Record fixtures","\u002Fcontributing\u002Frecord-fixtures","7.contributing\u002F3.record-fixtures",{"title":196,"path":197,"stem":198},"Contributors","\u002Fcontributing\u002Fcontributors","7.contributing\u002F4.contributors",{"id":200,"title":152,"body":201,"description":573,"extension":574,"links":575,"meta":576,"navigation":578,"path":153,"seo":579,"stem":154,"__hash__":580},"docs\u002F5.reference\u002F4.environment-variables.md",{"type":202,"value":203,"toc":566},"minimark",[204,232,237,270,274,468,472,560],[205,206,207,211,212,215,216,219,220,223,224,227,228,231],"p",{},[208,209,210],"code",{},"providersFromEnv()"," and ",[208,213,214],{},"forgesFromEnv()"," from ",[208,217,218],{},"forges\u002Fenv"," read variables named ",[208,221,222],{},"FORGES_\u003CKIND>_\u003CFIELD>",". Add ",[208,225,226],{},"_\u003CSUFFIX>"," to a name to configure another instance of the same forge. See ",[229,230,38],"a",{"href":39},".",[233,234,236],"h2",{"id":235},"kinds","Kinds",[205,238,239,242,243,242,246,242,249,242,252,242,255,242,258,242,261,242,264,211,267,231],{},[208,240,241],{},"GITHUB",", ",[208,244,245],{},"GITLAB",[208,247,248],{},"BITBUCKET",[208,250,251],{},"FORGEJO",[208,253,254],{},"GITEA",[208,256,257],{},"GITEE",[208,259,260],{},"AZURE_DEVOPS",[208,262,263],{},"CURSOR_ORIGIN",[208,265,266],{},"TANGLED",[208,268,269],{},"PUSHIN",[233,271,273],{"id":272},"fields","Fields",[275,276,277,290],"table",{},[278,279,280],"thead",{},[281,282,283,287],"tr",{},[284,285,286],"th",{},"Field",[284,288,289],{},"Description",[291,292,293,304,317,339,354,364,374,387,400,410,430,451],"tbody",{},[281,294,295,301],{},[296,297,298],"td",{},[208,299,300],{},"TOKEN",[296,302,303],{},"A token credential",[281,305,306,314],{},[296,307,308,242,311],{},[208,309,310],{},"USERNAME",[208,312,313],{},"PASSWORD",[296,315,316],{},"Basic credentials for Bitbucket and Azure DevOps",[281,318,319,330],{},[296,320,321,242,324,242,327],{},[208,322,323],{},"APP_ID",[208,325,326],{},"PRIVATE_KEY",[208,328,329],{},"INSTALLATION_ID",[296,331,332,333,335,336],{},"App credentials. GitHub and Cursor Origin. Write line breaks in ",[208,334,326],{}," as ",[208,337,338],{},"\\n",[281,340,341,351],{},[296,342,343,242,346,242,348],{},[208,344,345],{},"IDENTIFIER",[208,347,313],{},[208,349,350],{},"PDS",[296,352,353],{},"Tangled app password credentials, and the PDS to use",[281,355,356,361],{},[296,357,358],{},[208,359,360],{},"ORGANIZATION",[296,362,363],{},"Azure DevOps organisation. Required for that forge",[281,365,366,371],{},[296,367,368],{},[208,369,370],{},"BASE_URL",[296,372,373],{},"The API base URL of the instance",[281,375,376,384],{},[296,377,378,242,381],{},[208,379,380],{},"INSTANCE",[208,382,383],{},"INSTANCE_VERSION",[296,385,386],{},"The host to use in refs, and the version of the instance",[281,388,389,397],{},[296,390,391,242,394],{},[208,392,393],{},"API_URL",[208,395,396],{},"NOTIFICATIONS_URL",[296,398,399],{},"Tangled service URLs",[281,401,402,407],{},[296,403,404],{},[208,405,406],{},"WEBHOOK_SECRET",[296,408,409],{},"The secret used to verify deliveries",[281,411,412,417],{},[296,413,414],{},[208,415,416],{},"READ_ONLY",[296,418,419,422,423,426,427],{},[208,420,421],{},"1"," or ",[208,424,425],{},"true"," creates the provider with ",[208,428,429],{},"readOnly: true",[281,431,432,437],{},[296,433,434],{},[208,435,436],{},"ENABLED",[296,438,439,422,441,443,444,422,447,450],{},[208,440,421],{},[208,442,425],{}," creates an anonymous provider when no credential is set. ",[208,445,446],{},"0",[208,448,449],{},"false"," skips the set",[281,452,453,458],{},[296,454,455],{},[208,456,457],{},"DEMO_REPO",[296,459,460,461,464,465,467],{},"A repository as ",[208,462,463],{},"owner\u002Fname",", for tools that need one to show. GitLab owners can contain slashes. A set with a ",[208,466,457],{}," is anonymous when it has no credential",[233,469,471],{"id":470},"what-each-forge-needs","What each forge needs",[275,473,474,484],{},[278,475,476],{},[281,477,478,481],{},[284,479,480],{},"Forge",[284,482,483],{},"Credentials",[291,485,486,499,508,521,536,548],{},[281,487,488,490],{},[296,489,118],{},[296,491,492,494,495,211,497],{},[208,493,300],{},", or ",[208,496,323],{},[208,498,326],{},[281,500,501,504],{},[296,502,503],{},"GitLab, Forgejo, Gitea, Gitee, pushin.eu",[296,505,506],{},[208,507,300],{},[281,509,510,513],{},[296,511,512],{},"Bitbucket",[296,514,515,494,517,211,519],{},[208,516,300],{},[208,518,310],{},[208,520,313],{},[281,522,523,525],{},[296,524,94],{},[296,526,527,529,530,494,532,211,534],{},[208,528,360],{},", and ",[208,531,300],{},[208,533,310],{},[208,535,313],{},[281,537,538,540],{},[296,539,102],{},[296,541,542,494,544,211,546],{},[208,543,300],{},[208,545,323],{},[208,547,326],{},[281,549,550,552],{},[296,551,130],{},[296,553,554,555,211,557,559],{},"None for reads. ",[208,556,345],{},[208,558,313],{}," for writes",[205,561,562,563,565],{},"Without a credential, a set is skipped unless ",[208,564,436],{}," is on. Cursor Origin cannot be anonymous, and Tangled has no skip condition.",{"title":567,"searchDepth":568,"depth":568,"links":569},"",2,[570,571,572],{"id":235,"depth":568,"text":236},{"id":272,"depth":568,"text":273},{"id":470,"depth":568,"text":471},"The variables that providersFromEnv() and forgesFromEnv() read.","md",null,{"icon":577},"i-lucide-terminal-square",true,{"title":152,"description":573},"mjNFDV9k1xHtB2CCsuw4oRl_Y7WYFIM7qPJJwGWPJ1U",[582,584],{"title":148,"path":149,"stem":150,"description":583,"children":-1},"Every error class that forges throws.",{"title":156,"path":157,"stem":158,"description":585,"children":-1},"Validate stored events, or generate types in another language.",1791296695076]