Copy disabled (too large)
Download .txt
Showing preview only (27,209K chars total). Download the full file to get everything.
Repository: vercel/vercel
Branch: main
Commit: a50d9615ea54
Files: 10664
Total size: 23.3 MB
Directory structure:
gitextract_9o1wyy8_/
├── .changeset/
│ ├── README.md
│ ├── config.json
│ ├── dirty-fans-suffer.md
│ ├── fix-cli-evals-setup.md
│ ├── node-security-2026-03-24.md
│ └── odd-bugs-approve.md
├── .claude/
│ └── skills/
│ └── vercel-runtime-implementation-guide.md
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── AFFECTED_TESTING.md
│ ├── CODEOWNERS
│ ├── CODE_OF_CONDUCT.md
│ ├── CONTRIBUTING.md
│ ├── DISCUSSION_TEMPLATE/
│ │ ├── general.yml
│ │ ├── help.yml
│ │ ├── ideas.yml
│ │ └── show-and-tell.yml
│ ├── EXAMPLE_README_TEMPLATE.md
│ ├── ISSUE_TEMPLATE/
│ │ ├── cli_bug_report.md
│ │ └── config.yml
│ ├── aw/
│ │ └── actions-lock.json
│ └── workflows/
│ ├── agentics-maintenance.yml
│ ├── ci-doctor.lock.yml
│ ├── ci-doctor.md
│ ├── cli-evals.yml
│ ├── comment-cli-tarball.yml
│ ├── cron-update-gatsby-fixtures.yml
│ ├── cron-update-next-canary.yml
│ ├── cron-update-next-latest.yml
│ ├── cron-update-turbo.yml
│ ├── discussions-auto-close.yml
│ ├── faster-template-prebuild-nextjs.yml
│ ├── release-crates.yml
│ ├── release-python-package.yml
│ ├── release.yml
│ ├── rollback-latest-tag.yml
│ ├── test-e2e.yml
│ ├── test-lint.yml
│ ├── test-python-packages.yml
│ ├── test.yml
│ └── update-remix-run-dev.yml
├── .gitignore
├── .husky/
│ ├── .gitignore
│ └── pre-commit
├── .node_version
├── .npmrc
├── .nvmrc
├── .prettierignore
├── .syncpackrc.json
├── .vercel.approvers
├── .vercelignore
├── AGENTS.md
├── Cargo.toml
├── DEVELOPING_A_RUNTIME.md
├── LICENSE
├── README.md
├── api/
│ ├── _lib/
│ │ ├── examples/
│ │ │ ├── example-list.ts
│ │ │ ├── github-repo-info.ts
│ │ │ ├── gitlab-repo-info.ts
│ │ │ ├── map-old-to-new.ts
│ │ │ └── summary.ts
│ │ ├── script/
│ │ │ └── build.ts
│ │ ├── types.ts
│ │ └── util/
│ │ ├── assert-env.ts
│ │ ├── error-handler.ts
│ │ └── with-api-handler.ts
│ ├── examples/
│ │ └── info.ts
│ ├── frameworks.ts
│ ├── package.json
│ └── tsconfig.json
├── biome.jsonc
├── crates/
│ └── vercel_runtime/
│ ├── Cargo.toml
│ └── src/
│ ├── axum/
│ │ └── mod.rs
│ ├── ipc/
│ │ ├── core.rs
│ │ ├── log.rs
│ │ ├── metric.rs
│ │ └── mod.rs
│ ├── ipc_utils.rs
│ ├── lib.rs
│ └── types.rs
├── errors/
│ ├── cant-solve-challenge.md
│ ├── deploy-invalid-dc.md
│ ├── deployment-error.md
│ ├── dns-configuration-error.md
│ ├── domain-verification.md
│ ├── env-value-invalid-type.md
│ ├── invalid-route-source.md
│ ├── invalid-token-value.md
│ ├── missing-env-file.md
│ ├── missing-env-key-value.md
│ ├── missing-scope-value.md
│ ├── missing-token-value.md
│ ├── next-functions-config-optimized-lambdas.md
│ ├── next-legacy-routes-optimized-lambdas.md
│ ├── no-credentials-found.md
│ ├── no-open-port-found.md
│ ├── no-single-file-deployments.md
│ ├── no-token-allowed.md
│ ├── now-dev-as-dev-script.md
│ ├── now-next-legacy-mode.md
│ ├── now-next-no-serverless-pages-built.md
│ ├── now-next-routes-manifest.md
│ ├── now-static-build-failed-to-detect-a-server.md
│ ├── path-not-deployable.md
│ ├── scope-not-accessible.md
│ ├── scope-not-existent.md
│ ├── solve-challenges-manually.md
│ └── unauthorized-domain.md
├── examples/
│ ├── CHANGELOG.md
│ ├── README.md
│ ├── __tests__/
│ │ ├── integration/
│ │ │ ├── angular.test.ts
│ │ │ ├── astro.test.ts
│ │ │ ├── axum.test.ts
│ │ │ ├── blitzjs.test.ts
│ │ │ ├── brunch.test.ts
│ │ │ ├── create-react-app.test.ts
│ │ │ ├── django.test.ts
│ │ │ ├── docusaurus-2.test.ts
│ │ │ ├── docusaurus.test.ts
│ │ │ ├── eleventy.test.ts
│ │ │ ├── elysia.test.ts
│ │ │ ├── ember.test.ts
│ │ │ ├── express.test.ts
│ │ │ ├── fastapi.test.ts
│ │ │ ├── fasthtml.test.ts
│ │ │ ├── fastify.test.ts
│ │ │ ├── flask.test.ts
│ │ │ ├── gatsby.test.ts
│ │ │ ├── gin.test.ts
│ │ │ ├── h3.test.ts
│ │ │ ├── hexo.test.ts
│ │ │ ├── hono.test.ts
│ │ │ ├── hugo.test.ts
│ │ │ ├── hydrogen-2.test.ts
│ │ │ ├── ionic-angular.test.ts
│ │ │ ├── ionic-react.test.ts
│ │ │ ├── jekyll.test.ts
│ │ │ ├── koa.test.ts
│ │ │ ├── middleman.test.ts
│ │ │ ├── nestjs.test.ts
│ │ │ ├── nextjs.test.ts
│ │ │ ├── nitro.test.ts
│ │ │ ├── node_modules.test.ts
│ │ │ ├── nuxtjs.test.ts
│ │ │ ├── parcel.test.ts
│ │ │ ├── polymer.test.ts
│ │ │ ├── preact.test.ts
│ │ │ ├── react-router.test.ts
│ │ │ ├── redwoodjs.test.ts
│ │ │ ├── remix.test.ts
│ │ │ ├── sanity.test.ts
│ │ │ ├── sapper.test.ts
│ │ │ ├── sinatra.test.ts
│ │ │ ├── solidstart-1.test.ts
│ │ │ ├── starlette.test.ts
│ │ │ ├── stencil.test.ts
│ │ │ ├── svelte.test.ts
│ │ │ ├── sveltekit-1.test.ts
│ │ │ ├── sveltekit.test.ts
│ │ │ ├── tanstack-start.test.ts
│ │ │ ├── umijs.test.ts
│ │ │ ├── vite-react.test.ts
│ │ │ ├── vite.test.ts
│ │ │ ├── vitepress.test.ts
│ │ │ ├── vue.test.ts
│ │ │ ├── vuepress.test.ts
│ │ │ ├── xmcp.test.ts
│ │ │ └── zola.test.ts
│ │ ├── test-utils.ts
│ │ └── unit/
│ │ └── index.test.ts
│ ├── angular/
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── angular.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app/
│ │ │ │ ├── app-routing.module.ts
│ │ │ │ ├── app.component.css
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ └── app.module.ts
│ │ │ ├── assets/
│ │ │ │ └── .gitkeep
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ └── styles.css
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ └── tsconfig.spec.json
│ ├── astro/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── README.md
│ │ ├── astro.config.ts
│ │ ├── package.json
│ │ └── src/
│ │ ├── components/
│ │ │ └── Card.astro
│ │ ├── env.d.ts
│ │ ├── layouts/
│ │ │ └── Layout.astro
│ │ └── pages/
│ │ ├── image.astro
│ │ ├── index.astro
│ │ ├── ssr-with-swr-caching.astro
│ │ └── ssr.astro
│ ├── axum/
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── public/
│ │ │ └── index.html
│ │ └── src/
│ │ └── main.rs
│ ├── blitzjs/
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .prettierignore
│ │ ├── README.md
│ │ ├── next-env.d.ts
│ │ ├── next.config.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── blitz-client.ts
│ │ │ ├── core/
│ │ │ │ └── layouts/
│ │ │ │ └── Layout.tsx
│ │ │ ├── pages/
│ │ │ │ ├── 404.tsx
│ │ │ │ ├── _app.tsx
│ │ │ │ ├── _document.tsx
│ │ │ │ └── index.tsx
│ │ │ └── styles/
│ │ │ ├── Home.module.css
│ │ │ └── globals.css
│ │ ├── test/
│ │ │ └── setup.ts
│ │ ├── tsconfig.json
│ │ └── vitest.config.ts
│ ├── brunch/
│ │ ├── .gitignore
│ │ ├── .vercelignore
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── assets/
│ │ │ │ └── index.html
│ │ │ ├── initialize.js
│ │ │ └── styles.css
│ │ ├── brunch-config.js
│ │ └── package.json
│ ├── create-react-app/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── public/
│ │ │ ├── index.html
│ │ │ ├── manifest.json
│ │ │ └── robots.txt
│ │ └── src/
│ │ ├── App.css
│ │ ├── App.js
│ │ ├── App.test.js
│ │ ├── index.css
│ │ ├── index.js
│ │ ├── reportWebVitals.js
│ │ ├── setupTests.js
│ │ └── vitals.js
│ ├── django/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── __init__.py
│ │ │ ├── settings.py
│ │ │ ├── static/
│ │ │ │ └── app/
│ │ │ │ └── style.css
│ │ │ ├── urls.py
│ │ │ ├── views.py
│ │ │ └── wsgi.py
│ │ ├── manage.py
│ │ └── pyproject.toml
│ ├── docusaurus/
│ │ ├── .dockerignore
│ │ ├── .gitignore
│ │ ├── .vercelignore
│ │ ├── README.md
│ │ ├── blog/
│ │ │ ├── 2016-03-11-blog-post.md
│ │ │ ├── 2017-04-10-blog-post-two.md
│ │ │ ├── 2017-09-25-testing-rss.md
│ │ │ ├── 2017-09-26-adding-rss.md
│ │ │ └── 2017-10-24-new-version-1.0.0.md
│ │ ├── core/
│ │ │ └── Footer.js
│ │ ├── docs/
│ │ │ ├── doc1.md
│ │ │ ├── doc2.md
│ │ │ ├── doc3.md
│ │ │ ├── exampledoc4.md
│ │ │ └── exampledoc5.md
│ │ ├── package.json
│ │ ├── pages/
│ │ │ └── en/
│ │ │ ├── help.js
│ │ │ ├── index.js
│ │ │ └── users.js
│ │ ├── sidebars.json
│ │ ├── siteConfig.js
│ │ └── static/
│ │ └── css/
│ │ └── custom.css
│ ├── docusaurus-2/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── babel.config.js
│ │ ├── blog/
│ │ │ ├── 2019-05-28-first-blog-post.md
│ │ │ ├── 2019-05-29-long-blog-post.md
│ │ │ ├── 2021-08-01-mdx-blog-post.mdx
│ │ │ ├── 2021-08-26-welcome/
│ │ │ │ └── index.md
│ │ │ └── authors.yml
│ │ ├── docs/
│ │ │ ├── intro.md
│ │ │ ├── tutorial-basics/
│ │ │ │ ├── _category_.json
│ │ │ │ ├── congratulations.md
│ │ │ │ ├── create-a-blog-post.md
│ │ │ │ ├── create-a-document.md
│ │ │ │ ├── create-a-page.md
│ │ │ │ ├── deploy-your-site.md
│ │ │ │ └── markdown-features.mdx
│ │ │ └── tutorial-extras/
│ │ │ ├── _category_.json
│ │ │ ├── manage-docs-versions.md
│ │ │ └── translate-your-site.md
│ │ ├── docusaurus.config.js
│ │ ├── package.json
│ │ ├── sidebars.js
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ └── HomepageFeatures/
│ │ │ │ ├── index.js
│ │ │ │ └── styles.module.css
│ │ │ ├── css/
│ │ │ │ └── custom.css
│ │ │ └── pages/
│ │ │ ├── index.js
│ │ │ ├── index.module.css
│ │ │ └── markdown-page.md
│ │ └── static/
│ │ └── .nojekyll
│ ├── eleventy/
│ │ ├── .eleventy.js
│ │ ├── .eleventyignore
│ │ ├── .gitignore
│ │ ├── .nvmrc
│ │ ├── 404.md
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── _data/
│ │ │ └── metadata.json
│ │ ├── _includes/
│ │ │ ├── layouts/
│ │ │ │ ├── base.njk
│ │ │ │ ├── home.njk
│ │ │ │ └── post.njk
│ │ │ └── postslist.njk
│ │ ├── about/
│ │ │ └── index.md
│ │ ├── archive.njk
│ │ ├── css/
│ │ │ ├── index.css
│ │ │ └── prism-base16-monokai.dark.css
│ │ ├── feed/
│ │ │ ├── feed.njk
│ │ │ ├── htaccess.njk
│ │ │ └── json.njk
│ │ ├── img/
│ │ │ └── .gitkeep
│ │ ├── index.njk
│ │ ├── package.json
│ │ ├── page-list.njk
│ │ ├── posts/
│ │ │ ├── firstpost.md
│ │ │ ├── fourthpost.md
│ │ │ ├── posts.json
│ │ │ ├── secondpost.md
│ │ │ └── thirdpost.md
│ │ ├── sitemap.xml.njk
│ │ ├── tags-list.njk
│ │ └── tags.njk
│ ├── elysia/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── index.ts
│ │ ├── tsconfig.json
│ │ └── vercel.json
│ ├── ember/
│ │ ├── .editorconfig
│ │ ├── .ember-cli
│ │ ├── .eslintignore
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .prettierignore
│ │ ├── .prettierrc.js
│ │ ├── .stylelintignore
│ │ ├── .stylelintrc.js
│ │ ├── .template-lintrc.js
│ │ ├── .watchmanconfig
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── app.js
│ │ │ ├── components/
│ │ │ │ └── .gitkeep
│ │ │ ├── controllers/
│ │ │ │ └── .gitkeep
│ │ │ ├── helpers/
│ │ │ │ └── .gitkeep
│ │ │ ├── index.html
│ │ │ ├── models/
│ │ │ │ └── .gitkeep
│ │ │ ├── router.js
│ │ │ ├── routes/
│ │ │ │ └── .gitkeep
│ │ │ ├── styles/
│ │ │ │ └── app.css
│ │ │ └── templates/
│ │ │ └── application.hbs
│ │ ├── config/
│ │ │ ├── ember-cli-update.json
│ │ │ ├── environment.js
│ │ │ ├── optional-features.json
│ │ │ └── targets.js
│ │ ├── ember-cli-build.js
│ │ ├── package.json
│ │ ├── public/
│ │ │ └── robots.txt
│ │ ├── testem.js
│ │ └── tests/
│ │ ├── helpers/
│ │ │ └── index.js
│ │ ├── index.html
│ │ ├── integration/
│ │ │ └── .gitkeep
│ │ ├── test-helper.js
│ │ └── unit/
│ │ └── .gitkeep
│ ├── express/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── fastapi/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── main.py
│ │ ├── pyproject.toml
│ │ └── requirements.txt
│ ├── fasthtml/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── main.py
│ │ └── requirements.txt
│ ├── fastify/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── server.ts
│ │ └── tsconfig.json
│ ├── flask/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── endpoints/
│ │ │ ├── __init__.py
│ │ │ └── routes.py
│ │ ├── main.py
│ │ └── pyproject.toml
│ ├── gatsby/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── gatsby-config.js
│ │ ├── package.json
│ │ └── src/
│ │ └── pages/
│ │ ├── 404.js
│ │ └── index.js
│ ├── h3/
│ │ ├── package.json
│ │ └── server.js
│ ├── hexo/
│ │ ├── .gitignore
│ │ ├── .vercelignore
│ │ ├── README.md
│ │ ├── _config.yml
│ │ ├── package.json
│ │ ├── scaffolds/
│ │ │ ├── draft.md
│ │ │ ├── page.md
│ │ │ └── post.md
│ │ ├── source/
│ │ │ └── _posts/
│ │ │ └── hello-world.md
│ │ └── themes/
│ │ └── landscape/
│ │ ├── .gitignore
│ │ ├── Gruntfile.js
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── _config.yml
│ │ ├── languages/
│ │ │ ├── de.yml
│ │ │ ├── default.yml
│ │ │ ├── es.yml
│ │ │ ├── fr.yml
│ │ │ ├── ja.yml
│ │ │ ├── ko.yml
│ │ │ ├── nl.yml
│ │ │ ├── no.yml
│ │ │ ├── pt.yml
│ │ │ ├── ru.yml
│ │ │ ├── zh-CN.yml
│ │ │ └── zh-TW.yml
│ │ ├── layout/
│ │ │ ├── _partial/
│ │ │ │ ├── after-footer.ejs
│ │ │ │ ├── archive-post.ejs
│ │ │ │ ├── archive.ejs
│ │ │ │ ├── article.ejs
│ │ │ │ ├── footer.ejs
│ │ │ │ ├── gauges-analytics.ejs
│ │ │ │ ├── google-analytics.ejs
│ │ │ │ ├── head.ejs
│ │ │ │ ├── header.ejs
│ │ │ │ ├── mobile-nav.ejs
│ │ │ │ ├── post/
│ │ │ │ │ ├── category.ejs
│ │ │ │ │ ├── date.ejs
│ │ │ │ │ ├── gallery.ejs
│ │ │ │ │ ├── nav.ejs
│ │ │ │ │ ├── tag.ejs
│ │ │ │ │ └── title.ejs
│ │ │ │ └── sidebar.ejs
│ │ │ ├── _widget/
│ │ │ │ ├── archive.ejs
│ │ │ │ ├── category.ejs
│ │ │ │ ├── recent_posts.ejs
│ │ │ │ ├── tag.ejs
│ │ │ │ └── tagcloud.ejs
│ │ │ ├── archive.ejs
│ │ │ ├── category.ejs
│ │ │ ├── index.ejs
│ │ │ ├── layout.ejs
│ │ │ ├── page.ejs
│ │ │ ├── post.ejs
│ │ │ └── tag.ejs
│ │ ├── package.json
│ │ ├── scripts/
│ │ │ └── fancybox.js
│ │ └── source/
│ │ ├── css/
│ │ │ ├── _extend.styl
│ │ │ ├── _partial/
│ │ │ │ ├── archive.styl
│ │ │ │ ├── article.styl
│ │ │ │ ├── comment.styl
│ │ │ │ ├── footer.styl
│ │ │ │ ├── header.styl
│ │ │ │ ├── highlight.styl
│ │ │ │ ├── mobile.styl
│ │ │ │ ├── sidebar-aside.styl
│ │ │ │ ├── sidebar-bottom.styl
│ │ │ │ └── sidebar.styl
│ │ │ ├── _util/
│ │ │ │ ├── grid.styl
│ │ │ │ └── mixin.styl
│ │ │ ├── _variables.styl
│ │ │ ├── fonts/
│ │ │ │ └── FontAwesome.otf
│ │ │ └── style.styl
│ │ ├── fancybox/
│ │ │ ├── helpers/
│ │ │ │ ├── jquery.fancybox-buttons.css
│ │ │ │ ├── jquery.fancybox-buttons.js
│ │ │ │ ├── jquery.fancybox-media.js
│ │ │ │ ├── jquery.fancybox-thumbs.css
│ │ │ │ └── jquery.fancybox-thumbs.js
│ │ │ ├── jquery.fancybox.css
│ │ │ ├── jquery.fancybox.js
│ │ │ └── jquery.fancybox.pack.js
│ │ └── js/
│ │ └── script.js
│ ├── hono/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── hugo/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── archetypes/
│ │ │ └── default.md
│ │ ├── config.toml
│ │ ├── content/
│ │ │ └── posts/
│ │ │ └── my-first-post.md
│ │ └── themes/
│ │ └── ananke/
│ │ ├── .gitignore
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── archetypes/
│ │ │ └── default.md
│ │ ├── data/
│ │ │ └── webpack_assets.json
│ │ ├── exampleSite/
│ │ │ ├── config.toml
│ │ │ └── content/
│ │ │ ├── _index.md
│ │ │ ├── about/
│ │ │ │ └── _index.md
│ │ │ ├── contact.md
│ │ │ └── post/
│ │ │ ├── _index.md
│ │ │ ├── chapter-1.md
│ │ │ ├── chapter-2.md
│ │ │ ├── chapter-3.md
│ │ │ ├── chapter-4.md
│ │ │ ├── chapter-5.md
│ │ │ └── chapter-6.md
│ │ ├── i18n/
│ │ │ ├── de.toml
│ │ │ ├── en.toml
│ │ │ ├── es.toml
│ │ │ ├── fr.toml
│ │ │ ├── nl.toml
│ │ │ ├── pt.toml
│ │ │ ├── ru.toml
│ │ │ └── zh.toml
│ │ ├── layouts/
│ │ │ ├── 404.html
│ │ │ ├── _default/
│ │ │ │ ├── baseof.html
│ │ │ │ ├── list.html
│ │ │ │ ├── single.html
│ │ │ │ ├── taxonomy.html
│ │ │ │ └── terms.html
│ │ │ ├── index.html
│ │ │ ├── page/
│ │ │ │ └── single.html
│ │ │ ├── partials/
│ │ │ │ ├── commento.html
│ │ │ │ ├── i18nlist.html
│ │ │ │ ├── menu-contextual.html
│ │ │ │ ├── new-window-icon.html
│ │ │ │ ├── page-header.html
│ │ │ │ ├── site-favicon.html
│ │ │ │ ├── site-footer.html
│ │ │ │ ├── site-header.html
│ │ │ │ ├── site-navigation.html
│ │ │ │ ├── site-scripts.html
│ │ │ │ ├── social-follow.html
│ │ │ │ ├── summary-with-image.html
│ │ │ │ ├── summary.html
│ │ │ │ └── tags.html
│ │ │ ├── post/
│ │ │ │ ├── list.html
│ │ │ │ ├── summary-with-image.html
│ │ │ │ └── summary.html
│ │ │ ├── robots.txt
│ │ │ └── shortcodes/
│ │ │ └── form-contact.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── css/
│ │ │ │ ├── _code.css
│ │ │ │ ├── _hugo-internal-templates.css
│ │ │ │ ├── _social-icons.css
│ │ │ │ ├── _styles.css
│ │ │ │ ├── _tachyons.css
│ │ │ │ ├── main.css
│ │ │ │ └── postcss.config.js
│ │ │ ├── js/
│ │ │ │ └── main.js
│ │ │ ├── package.json
│ │ │ ├── readme.md
│ │ │ └── webpack.config.js
│ │ ├── static/
│ │ │ └── dist/
│ │ │ ├── css/
│ │ │ │ └── app.d98f2eb6bcd1eaedb7edf166bd16af26.css
│ │ │ └── js/
│ │ │ └── app.3fc0f988d21662902933.js
│ │ └── theme.toml
│ ├── hydrogen-2/
│ │ ├── .eslintignore
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── .graphqlrc.yml
│ │ ├── .vercelignore
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── components/
│ │ │ │ ├── Aside.tsx
│ │ │ │ ├── Cart.tsx
│ │ │ │ ├── Footer.tsx
│ │ │ │ ├── Header.tsx
│ │ │ │ ├── Layout.tsx
│ │ │ │ └── Search.tsx
│ │ │ ├── entry.client.tsx
│ │ │ ├── entry.server.tsx
│ │ │ ├── root.tsx
│ │ │ ├── routes/
│ │ │ │ ├── $.tsx
│ │ │ │ ├── [robots.txt].tsx
│ │ │ │ ├── [sitemap.xml].tsx
│ │ │ │ ├── _index.tsx
│ │ │ │ ├── account.$.tsx
│ │ │ │ ├── account.addresses.tsx
│ │ │ │ ├── account.orders.$id.tsx
│ │ │ │ ├── account.orders._index.tsx
│ │ │ │ ├── account.profile.tsx
│ │ │ │ ├── account.tsx
│ │ │ │ ├── account_.activate.$id.$activationToken.tsx
│ │ │ │ ├── account_.login.tsx
│ │ │ │ ├── account_.logout.tsx
│ │ │ │ ├── account_.recover.tsx
│ │ │ │ ├── account_.register.tsx
│ │ │ │ ├── account_.reset.$id.$resetToken.tsx
│ │ │ │ ├── api.predictive-search.tsx
│ │ │ │ ├── blogs.$blogHandle.$articleHandle.tsx
│ │ │ │ ├── blogs.$blogHandle._index.tsx
│ │ │ │ ├── blogs._index.tsx
│ │ │ │ ├── cart.tsx
│ │ │ │ ├── collections.$handle.tsx
│ │ │ │ ├── collections._index.tsx
│ │ │ │ ├── pages.$handle.tsx
│ │ │ │ ├── policies.$handle.tsx
│ │ │ │ ├── policies._index.tsx
│ │ │ │ ├── products.$handle.tsx
│ │ │ │ └── search.tsx
│ │ │ ├── styles/
│ │ │ │ ├── app.css
│ │ │ │ ├── reset.css
│ │ │ │ └── tailwind.css
│ │ │ └── utils.ts
│ │ ├── package.json
│ │ ├── postcss.config.js
│ │ ├── remix.config.js
│ │ ├── remix.env.d.ts
│ │ ├── server.ts
│ │ ├── storefrontapi.generated.d.ts
│ │ ├── tailwind.config.js
│ │ ├── tsconfig.json
│ │ └── vercel.json
│ ├── ionic-angular/
│ │ ├── .browserslistrc
│ │ ├── .editorconfig
│ │ ├── .eslintrc.json
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── angular.json
│ │ ├── capacitor.config.ts
│ │ ├── ionic.config.json
│ │ ├── karma.conf.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app/
│ │ │ │ ├── app-routing.module.ts
│ │ │ │ ├── app.component.html
│ │ │ │ ├── app.component.scss
│ │ │ │ ├── app.component.spec.ts
│ │ │ │ ├── app.component.ts
│ │ │ │ ├── app.module.ts
│ │ │ │ ├── explore-container/
│ │ │ │ │ ├── explore-container.component.html
│ │ │ │ │ ├── explore-container.component.scss
│ │ │ │ │ ├── explore-container.component.spec.ts
│ │ │ │ │ ├── explore-container.component.ts
│ │ │ │ │ └── explore-container.module.ts
│ │ │ │ ├── tab1/
│ │ │ │ │ ├── tab1-routing.module.ts
│ │ │ │ │ ├── tab1.module.ts
│ │ │ │ │ ├── tab1.page.html
│ │ │ │ │ ├── tab1.page.scss
│ │ │ │ │ ├── tab1.page.spec.ts
│ │ │ │ │ └── tab1.page.ts
│ │ │ │ ├── tab2/
│ │ │ │ │ ├── tab2-routing.module.ts
│ │ │ │ │ ├── tab2.module.ts
│ │ │ │ │ ├── tab2.page.html
│ │ │ │ │ ├── tab2.page.scss
│ │ │ │ │ ├── tab2.page.spec.ts
│ │ │ │ │ └── tab2.page.ts
│ │ │ │ ├── tab3/
│ │ │ │ │ ├── tab3-routing.module.ts
│ │ │ │ │ ├── tab3.module.ts
│ │ │ │ │ ├── tab3.page.html
│ │ │ │ │ ├── tab3.page.scss
│ │ │ │ │ ├── tab3.page.spec.ts
│ │ │ │ │ └── tab3.page.ts
│ │ │ │ └── tabs/
│ │ │ │ ├── tabs-routing.module.ts
│ │ │ │ ├── tabs.module.ts
│ │ │ │ ├── tabs.page.html
│ │ │ │ ├── tabs.page.scss
│ │ │ │ ├── tabs.page.spec.ts
│ │ │ │ └── tabs.page.ts
│ │ │ ├── environments/
│ │ │ │ ├── environment.prod.ts
│ │ │ │ └── environment.ts
│ │ │ ├── global.scss
│ │ │ ├── index.html
│ │ │ ├── main.ts
│ │ │ ├── polyfills.ts
│ │ │ ├── test.ts
│ │ │ ├── theme/
│ │ │ │ └── variables.scss
│ │ │ └── zone-flags.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ └── tsconfig.spec.json
│ ├── ionic-react/
│ │ ├── .browserslistrc
│ │ ├── .eslintrc.js
│ │ ├── .gitignore
│ │ ├── capacitor.config.ts
│ │ ├── cypress/
│ │ │ ├── e2e/
│ │ │ │ └── test.cy.ts
│ │ │ ├── fixtures/
│ │ │ │ └── example.json
│ │ │ └── support/
│ │ │ ├── commands.ts
│ │ │ └── e2e.ts
│ │ ├── cypress.config.ts
│ │ ├── index.html
│ │ ├── ionic.config.json
│ │ ├── package.json
│ │ ├── public/
│ │ │ └── manifest.json
│ │ ├── readme.md
│ │ ├── src/
│ │ │ ├── App.test.tsx
│ │ │ ├── App.tsx
│ │ │ ├── components/
│ │ │ │ ├── ExploreContainer.css
│ │ │ │ └── ExploreContainer.tsx
│ │ │ ├── main.tsx
│ │ │ ├── pages/
│ │ │ │ ├── Tab1.css
│ │ │ │ ├── Tab1.tsx
│ │ │ │ ├── Tab2.css
│ │ │ │ ├── Tab2.tsx
│ │ │ │ ├── Tab3.css
│ │ │ │ └── Tab3.tsx
│ │ │ ├── setupTests.ts
│ │ │ ├── theme/
│ │ │ │ └── variables.css
│ │ │ └── vite-env.d.ts
│ │ ├── tsconfig.json
│ │ ├── tsconfig.node.json
│ │ └── vite.config.ts
│ ├── jekyll/
│ │ ├── .gitignore
│ │ ├── 404.html
│ │ ├── Gemfile
│ │ ├── README.md
│ │ ├── _config.yml
│ │ ├── _posts/
│ │ │ └── 2021-02-19-welcome-to-jekyll.md
│ │ ├── about.md
│ │ └── index.md
│ ├── jest.config.js
│ ├── koa/
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── middleman/
│ │ ├── .gitignore
│ │ ├── Gemfile
│ │ ├── README.md
│ │ ├── config.rb
│ │ └── source/
│ │ ├── images/
│ │ │ └── .keep
│ │ ├── index.html.erb
│ │ ├── javascripts/
│ │ │ └── site.js
│ │ ├── layouts/
│ │ │ └── layout.erb
│ │ └── stylesheets/
│ │ └── site.css.scss
│ ├── nestjs/
│ │ ├── .gitignore
│ │ ├── .prettierrc
│ │ ├── README.md
│ │ ├── eslint.config.mjs
│ │ ├── nest-cli.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app.controller.ts
│ │ │ ├── app.module.ts
│ │ │ ├── app.service.ts
│ │ │ └── main.ts
│ │ ├── test/
│ │ │ ├── app.e2e-spec.ts
│ │ │ └── jest-e2e.json
│ │ ├── tsconfig.build.json
│ │ └── tsconfig.json
│ ├── nextjs/
│ │ ├── .gitignore
│ │ ├── AGENTS.md
│ │ ├── CLAUDE.md
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── globals.css
│ │ │ ├── layout.tsx
│ │ │ └── page.tsx
│ │ ├── eslint.config.mjs
│ │ ├── next.config.ts
│ │ ├── package.json
│ │ ├── postcss.config.mjs
│ │ └── tsconfig.json
│ ├── nitro/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── README.md
│ │ ├── nitro.config.ts
│ │ ├── package.json
│ │ ├── server/
│ │ │ └── routes/
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── nuxtjs/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app.vue
│ │ ├── nuxt.config.ts
│ │ ├── package.json
│ │ ├── server/
│ │ │ └── tsconfig.json
│ │ └── tsconfig.json
│ ├── package.json
│ ├── parcel/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ └── src/
│ │ ├── app.js
│ │ ├── index.html
│ │ └── styles.css
│ ├── polymer/
│ │ ├── .gitignore
│ │ ├── .vercelignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── manifest.json
│ │ ├── package.json
│ │ ├── polymer.json
│ │ ├── service-worker.js
│ │ ├── src/
│ │ │ ├── my-app.js
│ │ │ ├── my-icons.js
│ │ │ ├── my-view1.js
│ │ │ ├── my-view2.js
│ │ │ ├── my-view3.js
│ │ │ ├── my-view404.js
│ │ │ └── shared-styles.js
│ │ ├── sw-precache-config.js
│ │ └── test/
│ │ ├── index.html
│ │ └── my-view1.html
│ ├── preact/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── size-plugin.json
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ ├── app.js
│ │ │ │ └── header/
│ │ │ │ ├── index.js
│ │ │ │ └── style.css
│ │ │ ├── index.js
│ │ │ ├── manifest.json
│ │ │ ├── routes/
│ │ │ │ ├── home/
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── style.css
│ │ │ │ └── profile/
│ │ │ │ ├── index.js
│ │ │ │ └── style.css
│ │ │ ├── style/
│ │ │ │ └── index.css
│ │ │ ├── sw.js
│ │ │ └── template.html
│ │ └── tests/
│ │ ├── __mocks__/
│ │ │ ├── browserMocks.js
│ │ │ ├── fileMocks.js
│ │ │ └── setupTests.js
│ │ └── header.test.js
│ ├── react-router/
│ │ ├── .dockerignore
│ │ ├── .gitignore
│ │ ├── Dockerfile
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── app.css
│ │ │ ├── root.tsx
│ │ │ ├── routes/
│ │ │ │ └── home.tsx
│ │ │ ├── routes.ts
│ │ │ └── welcome/
│ │ │ └── welcome.tsx
│ │ ├── package.json
│ │ ├── react-router.config.ts
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── redwoodjs/
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── api/
│ │ │ ├── .babelrc.js
│ │ │ ├── db/
│ │ │ │ ├── schema.prisma
│ │ │ │ └── seed.js
│ │ │ ├── jest.config.js
│ │ │ ├── jsconfig.json
│ │ │ ├── package.json
│ │ │ └── src/
│ │ │ ├── functions/
│ │ │ │ └── graphql.js
│ │ │ ├── graphql/
│ │ │ │ └── .keep
│ │ │ ├── lib/
│ │ │ │ └── db.js
│ │ │ └── services/
│ │ │ └── .keep
│ │ ├── babel.config.js
│ │ ├── graphql.config.js
│ │ ├── package.json
│ │ ├── prettier.config.js
│ │ ├── redwood.toml
│ │ └── web/
│ │ ├── .babelrc.js
│ │ ├── jest.config.js
│ │ ├── jsconfig.json
│ │ ├── package.json
│ │ ├── public/
│ │ │ ├── README.md
│ │ │ └── robots.txt
│ │ └── src/
│ │ ├── Routes.js
│ │ ├── components/
│ │ │ └── .keep
│ │ ├── index.css
│ │ ├── index.html
│ │ ├── index.js
│ │ ├── layouts/
│ │ │ └── .keep
│ │ └── pages/
│ │ ├── AboutPage/
│ │ │ └── AboutPage.js
│ │ ├── FatalErrorPage/
│ │ │ └── FatalErrorPage.js
│ │ ├── HomePage/
│ │ │ ├── HomePage.js
│ │ │ └── HomePage.stories.js
│ │ └── NotFoundPage/
│ │ └── NotFoundPage.js
│ ├── remix/
│ │ ├── .eslintrc.cjs
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app/
│ │ │ ├── root.tsx
│ │ │ └── routes/
│ │ │ ├── _index.tsx
│ │ │ └── edge.tsx
│ │ ├── package.json
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── sanity/
│ │ ├── .npmignore
│ │ ├── README.md
│ │ ├── config/
│ │ │ ├── .checksums
│ │ │ └── @sanity/
│ │ │ ├── data-aspects.json
│ │ │ ├── default-layout.json
│ │ │ ├── default-login.json
│ │ │ └── form-builder.json
│ │ ├── package.json
│ │ ├── plugins/
│ │ │ └── .gitkeep
│ │ ├── sanity.json
│ │ ├── schemas/
│ │ │ ├── author.js
│ │ │ ├── blockContent.js
│ │ │ ├── category.js
│ │ │ ├── post.js
│ │ │ └── schema.js
│ │ ├── static/
│ │ │ └── .gitkeep
│ │ └── tsconfig.json
│ ├── sapper/
│ │ ├── .gitignore
│ │ ├── .vercelignore
│ │ ├── README.md
│ │ ├── appveyor.yml
│ │ ├── cypress/
│ │ │ ├── fixtures/
│ │ │ │ └── example.json
│ │ │ ├── integration/
│ │ │ │ └── spec.js
│ │ │ ├── plugins/
│ │ │ │ └── index.js
│ │ │ └── support/
│ │ │ ├── commands.js
│ │ │ └── index.js
│ │ ├── cypress.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── client.js
│ │ │ ├── components/
│ │ │ │ └── Nav.svelte
│ │ │ ├── routes/
│ │ │ │ ├── _error.svelte
│ │ │ │ ├── _layout.svelte
│ │ │ │ ├── about.svelte
│ │ │ │ ├── blog/
│ │ │ │ │ ├── [slug].json.js
│ │ │ │ │ ├── [slug].svelte
│ │ │ │ │ ├── _posts.js
│ │ │ │ │ ├── index.json.js
│ │ │ │ │ └── index.svelte
│ │ │ │ └── index.svelte
│ │ │ ├── server.js
│ │ │ ├── service-worker.js
│ │ │ └── template.html
│ │ ├── static/
│ │ │ ├── global.css
│ │ │ └── manifest.json
│ │ └── webpack.config.js
│ ├── sinatra/
│ │ ├── .gitignore
│ │ ├── Gemfile
│ │ ├── README.md
│ │ ├── app.rb
│ │ └── config.ru
│ ├── solidstart-1/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── app.config.ts
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app.css
│ │ │ ├── app.tsx
│ │ │ ├── components/
│ │ │ │ ├── Counter.css
│ │ │ │ └── Counter.tsx
│ │ │ ├── entry-client.tsx
│ │ │ ├── entry-server.tsx
│ │ │ ├── global.d.ts
│ │ │ └── routes/
│ │ │ ├── [...404].tsx
│ │ │ ├── about.tsx
│ │ │ └── index.tsx
│ │ └── tsconfig.json
│ ├── starlette/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── api/
│ │ │ ├── __init__.py
│ │ │ └── routes.py
│ │ ├── main.py
│ │ └── pyproject.toml
│ ├── stencil/
│ │ ├── .editorconfig
│ │ ├── .gitignore
│ │ ├── LICENSE
│ │ ├── package.json
│ │ ├── readme.md
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ ├── app-home/
│ │ │ │ │ ├── app-home.css
│ │ │ │ │ ├── app-home.e2e.ts
│ │ │ │ │ ├── app-home.spec.ts
│ │ │ │ │ └── app-home.tsx
│ │ │ │ ├── app-profile/
│ │ │ │ │ ├── app-profile.css
│ │ │ │ │ ├── app-profile.e2e.ts
│ │ │ │ │ ├── app-profile.spec.ts
│ │ │ │ │ └── app-profile.tsx
│ │ │ │ └── app-root/
│ │ │ │ ├── app-root.css
│ │ │ │ ├── app-root.e2e.ts
│ │ │ │ ├── app-root.spec.ts
│ │ │ │ └── app-root.tsx
│ │ │ ├── components.d.ts
│ │ │ ├── global/
│ │ │ │ ├── app.css
│ │ │ │ └── app.ts
│ │ │ ├── index.html
│ │ │ ├── index.ts
│ │ │ └── manifest.json
│ │ ├── stencil.config.ts
│ │ └── tsconfig.json
│ ├── svelte/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.svelte
│ │ │ ├── app.css
│ │ │ ├── lib/
│ │ │ │ └── Counter.svelte
│ │ │ ├── main.ts
│ │ │ └── vite-env.d.ts
│ │ ├── svelte.config.js
│ │ ├── tsconfig.json
│ │ ├── tsconfig.node.json
│ │ └── vite.config.ts
│ ├── sveltekit/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .prettierignore
│ │ ├── .prettierrc
│ │ ├── README.md
│ │ ├── e2e/
│ │ │ └── demo.test.ts
│ │ ├── eslint.config.js
│ │ ├── package.json
│ │ ├── playwright.config.ts
│ │ ├── src/
│ │ │ ├── app.css
│ │ │ ├── app.d.ts
│ │ │ ├── app.html
│ │ │ ├── demo.spec.ts
│ │ │ ├── lib/
│ │ │ │ └── vitals.ts
│ │ │ └── routes/
│ │ │ ├── +layout.svelte
│ │ │ ├── +page.svelte
│ │ │ ├── +page.ts
│ │ │ ├── Counter.svelte
│ │ │ ├── Header.svelte
│ │ │ ├── about/
│ │ │ │ ├── +page.svelte
│ │ │ │ └── +page.ts
│ │ │ └── sverdle/
│ │ │ ├── +page.server.ts
│ │ │ ├── +page.svelte
│ │ │ ├── game.ts
│ │ │ ├── how-to-play/
│ │ │ │ ├── +page.svelte
│ │ │ │ └── +page.ts
│ │ │ ├── reduced-motion.ts
│ │ │ └── words.server.ts
│ │ ├── static/
│ │ │ └── robots.txt
│ │ ├── svelte.config.js
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── sveltekit-1/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .prettierignore
│ │ ├── .prettierrc
│ │ ├── README.md
│ │ ├── jsconfig.json
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── app.css
│ │ │ ├── app.d.ts
│ │ │ ├── app.html
│ │ │ ├── hooks.js
│ │ │ ├── lib/
│ │ │ │ ├── Counter.svelte
│ │ │ │ ├── form.js
│ │ │ │ ├── header/
│ │ │ │ │ └── Header.svelte
│ │ │ │ └── vitals.js
│ │ │ └── routes/
│ │ │ ├── +layout.svelte
│ │ │ ├── +page.js
│ │ │ ├── +page.svelte
│ │ │ ├── about/
│ │ │ │ ├── +page.js
│ │ │ │ └── +page.svelte
│ │ │ └── todos/
│ │ │ ├── +page.server.js
│ │ │ ├── +page.svelte
│ │ │ └── api.js
│ │ ├── static/
│ │ │ └── robots.txt
│ │ ├── svelte.config.js
│ │ └── vite.config.js
│ ├── tanstack-start/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── biome.json
│ │ ├── package.json
│ │ ├── public/
│ │ │ └── robots.txt
│ │ ├── src/
│ │ │ ├── components/
│ │ │ │ └── Header.tsx
│ │ │ ├── data/
│ │ │ │ └── demo.punk-songs.ts
│ │ │ ├── routeTree.gen.ts
│ │ │ ├── router.tsx
│ │ │ ├── routes/
│ │ │ │ ├── __root.tsx
│ │ │ │ ├── demo/
│ │ │ │ │ ├── api.names.ts
│ │ │ │ │ ├── start.api-request.tsx
│ │ │ │ │ ├── start.server-funcs.tsx
│ │ │ │ │ ├── start.ssr.data-only.tsx
│ │ │ │ │ ├── start.ssr.full-ssr.tsx
│ │ │ │ │ ├── start.ssr.index.tsx
│ │ │ │ │ └── start.ssr.spa-mode.tsx
│ │ │ │ └── index.tsx
│ │ │ └── styles.css
│ │ ├── tsconfig.json
│ │ └── vite.config.ts
│ ├── tsconfig.json
│ ├── umijs/
│ │ ├── .gitignore
│ │ ├── .npmrc
│ │ ├── .umirc.ts
│ │ ├── .vercelignore
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── layouts/
│ │ │ │ ├── index.less
│ │ │ │ └── index.tsx
│ │ │ └── pages/
│ │ │ ├── docs.tsx
│ │ │ └── index.tsx
│ │ ├── tsconfig.json
│ │ └── typings.d.ts
│ ├── vite/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.vue
│ │ │ ├── components/
│ │ │ │ └── HelloWorld.vue
│ │ │ ├── main.js
│ │ │ └── style.css
│ │ └── vite.config.js
│ ├── vite-react/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── eslint.config.js
│ │ ├── index.html
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── App.css
│ │ │ ├── App.tsx
│ │ │ ├── index.css
│ │ │ ├── main.tsx
│ │ │ └── vite-env.d.ts
│ │ ├── tsconfig.app.json
│ │ ├── tsconfig.json
│ │ ├── tsconfig.node.json
│ │ └── vite.config.ts
│ ├── vitepress/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── docs/
│ │ │ ├── about.md
│ │ │ └── index.md
│ │ └── package.json
│ ├── vue/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── babel.config.js
│ │ ├── package.json
│ │ ├── public/
│ │ │ └── index.html
│ │ └── src/
│ │ ├── App.vue
│ │ ├── components/
│ │ │ └── HelloWorld.vue
│ │ └── main.js
│ ├── vuepress/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ └── src/
│ │ ├── config/
│ │ │ └── README.md
│ │ ├── guide/
│ │ │ ├── README.md
│ │ │ └── using-vue.md
│ │ └── index.md
│ ├── xmcp/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── tools/
│ │ │ └── greet.ts
│ │ ├── tsconfig.json
│ │ └── xmcp.config.ts
│ └── zola/
│ ├── .gitignore
│ ├── README.md
│ ├── config.toml
│ ├── content/
│ │ └── blog/
│ │ ├── _index.md
│ │ ├── first.md
│ │ └── second.md
│ ├── templates/
│ │ ├── base.html
│ │ ├── blog-page.html
│ │ ├── blog.html
│ │ └── index.html
│ └── vercel.json
├── internals/
│ ├── constants/
│ │ ├── CHANGELOG.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── index.ts
│ │ └── tsconfig.json
│ ├── get-package-json/
│ │ ├── package.json
│ │ ├── src/
│ │ │ └── index.ts
│ │ ├── tests/
│ │ │ ├── tsconfig.json
│ │ │ └── unit/
│ │ │ ├── cache.test.ts
│ │ │ ├── deeply-nested/
│ │ │ │ ├── 1/
│ │ │ │ │ └── 2/
│ │ │ │ │ └── getPackageJSON-deeply-nested.test.ts
│ │ │ │ └── package.json
│ │ │ ├── getPackageJSON.test.ts
│ │ │ └── nested/
│ │ │ ├── getPackageJSON-nested.test.ts
│ │ │ └── package.json
│ │ └── tsconfig.json
│ ├── tsconfig/
│ │ ├── package.json
│ │ └── tsconfig.json
│ └── types/
│ ├── CHANGELOG.md
│ ├── index.d.ts
│ ├── package.json
│ └── tsconfig.json
├── package.json
├── packages/
│ ├── backends/
│ │ ├── .deploy
│ │ ├── CHANGELOG.md
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── build.ts
│ │ │ ├── cervel/
│ │ │ │ ├── index.ts
│ │ │ │ ├── node-file-trace.ts
│ │ │ │ ├── plugin.ts
│ │ │ │ ├── rolldown.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── typescript.ts
│ │ │ │ └── utils.ts
│ │ │ ├── find-entrypoint.ts
│ │ │ ├── index.ts
│ │ │ ├── introspection/
│ │ │ │ ├── express.ts
│ │ │ │ ├── hono.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── loaders/
│ │ │ │ ├── block-network.ts
│ │ │ │ ├── cjs.ts
│ │ │ │ ├── esm.ts
│ │ │ │ ├── hooks.ts
│ │ │ │ ├── rolldown-esm.ts
│ │ │ │ └── rolldown-hooks.ts
│ │ │ ├── rolldown/
│ │ │ │ ├── cjs-hooks.ts
│ │ │ │ ├── esm.ts
│ │ │ │ ├── find-entrypoint.ts
│ │ │ │ ├── hooks.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── introspection.ts
│ │ │ │ ├── loaders/
│ │ │ │ │ ├── block-network.ts
│ │ │ │ │ ├── cjs.ts
│ │ │ │ │ ├── esm.ts
│ │ │ │ │ ├── hooks.ts
│ │ │ │ │ ├── rolldown-esm.ts
│ │ │ │ │ └── rolldown-hooks.ts
│ │ │ │ ├── nft.ts
│ │ │ │ ├── resolve-format.ts
│ │ │ │ └── util.ts
│ │ │ ├── service-vc-init.ts
│ │ │ ├── typescript.ts
│ │ │ └── utils.ts
│ │ ├── test/
│ │ │ ├── .gitignore
│ │ │ ├── fixtures/
│ │ │ │ ├── 01-express-index-ts-esm/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── info.md
│ │ │ │ │ ├── lib/
│ │ │ │ │ │ ├── echo-2.cjs
│ │ │ │ │ │ └── echo.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 02-express-index-ts-cjs/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── info.md
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 03-express-views-pug/
│ │ │ │ │ ├── files.json
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── pug-views/
│ │ │ │ │ │ ├── index.pug
│ │ │ │ │ │ └── user.pug
│ │ │ │ │ ├── routes.json
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vercel.json
│ │ │ │ ├── 04-hono-index-ts-esm/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 05-hono-index-ts-cjs/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 06-hono-relative-import/
│ │ │ │ │ ├── echo.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vercel.json
│ │ │ │ ├── 07-hono-ts-paths-import/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── lib/
│ │ │ │ │ │ └── echo.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 08-elysia/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ └── vercel.json
│ │ │ │ ├── 09-nestjs-with-build-command/
│ │ │ │ │ ├── nest-cli.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.controller.ts
│ │ │ │ │ │ ├── app.module.ts
│ │ │ │ │ │ ├── app.service.ts
│ │ │ │ │ │ └── main.ts
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 10-nestjs-no-build-command/
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app.controller.ts
│ │ │ │ │ │ ├── app.module.ts
│ │ │ │ │ │ ├── app.service.ts
│ │ │ │ │ │ └── main.ts
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 11-express-v5-cjs/
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── src/
│ │ │ │ │ └── app.cjs
│ │ │ │ ├── 12-express-v5-mts/
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── src/
│ │ │ │ │ └── server.mts
│ │ │ │ ├── 12-hono-index-ts-esm-cjs-interop/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 13-hono-ts-esm-cjs-interop-2/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── lib/
│ │ │ │ │ │ └── sign.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 14-hono-esm-cjs-interop-3/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── lib/
│ │ │ │ │ │ └── my-cjs-file.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 15-hono-sharp-native-bindings/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 16-hono-node-rs-xxhash/
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── routes.json
│ │ │ │ │ └── tsconfig.json
│ │ │ │ ├── 17-turborepo-hono-monorepo/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── apps/
│ │ │ │ │ │ └── api/
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ ├── cjs-fs-read.ts
│ │ │ │ │ │ │ ├── cjs-requiring-cjs.ts
│ │ │ │ │ │ │ ├── esm-fs-read.ts
│ │ │ │ │ │ │ ├── esm-importing-cjs.ts
│ │ │ │ │ │ │ ├── info-for-cjs-read.txt
│ │ │ │ │ │ │ └── info-for-esm-read.txt
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── server.ts
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── files.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── packages/
│ │ │ │ │ │ ├── echo-with-dep/
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── src/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── shared-types/
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── src/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── ts-utils/
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── pnpm-workspace.yaml
│ │ │ │ │ ├── routes.json
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ ├── turbo.json
│ │ │ │ │ └── vercel.json
│ │ │ │ └── 18-include-exclude-files/
│ │ │ │ ├── excludeFiles.json
│ │ │ │ ├── files.json
│ │ │ │ ├── index.ts
│ │ │ │ ├── package.json
│ │ │ │ ├── routes.json
│ │ │ │ ├── secret.txt
│ │ │ │ ├── templates/
│ │ │ │ │ ├── hello.art
│ │ │ │ │ └── other.art
│ │ │ │ ├── tsconfig.json
│ │ │ │ └── vercel.json
│ │ │ └── unit.test.ts
│ │ ├── tsconfig.json
│ │ └── tsdown.config.ts
│ ├── build-utils/
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── CHANGELOG.md
│ │ ├── build.mjs
│ │ ├── file-blob.js
│ │ ├── file-fs-ref.js
│ │ ├── file-ref.js
│ │ ├── fs/
│ │ │ ├── download.js
│ │ │ ├── get-writable-directory.js
│ │ │ ├── glob.js
│ │ │ ├── rename.js
│ │ │ ├── run-user-scripts.js
│ │ │ └── stream-to-buffer.js
│ │ ├── jest.config.js
│ │ ├── lambda.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── clone-env.ts
│ │ │ ├── collect-build-result/
│ │ │ │ ├── get-build-result-metadata.ts
│ │ │ │ ├── get-lambda-by-output-path.ts
│ │ │ │ ├── get-prerender-chain.ts
│ │ │ │ ├── is-route-middleware.ts
│ │ │ │ └── stream-with-extended-payload.ts
│ │ │ ├── collect-uncompressed-size.ts
│ │ │ ├── debug.ts
│ │ │ ├── default-cache-path-glob.ts
│ │ │ ├── edge-function.ts
│ │ │ ├── errors.ts
│ │ │ ├── file-blob.ts
│ │ │ ├── file-fs-ref.ts
│ │ │ ├── file-ref.ts
│ │ │ ├── finalize-lambda.ts
│ │ │ ├── framework-helpers.ts
│ │ │ ├── fs/
│ │ │ │ ├── download.ts
│ │ │ │ ├── get-writable-directory.ts
│ │ │ │ ├── glob.ts
│ │ │ │ ├── node-version.ts
│ │ │ │ ├── normalize-path.ts
│ │ │ │ ├── read-config-file.ts
│ │ │ │ ├── rename.ts
│ │ │ │ ├── run-user-scripts.ts
│ │ │ │ ├── stream-to-buffer.ts
│ │ │ │ └── stream-to-digest-async.ts
│ │ │ ├── generate-node-builder-functions.ts
│ │ │ ├── get-ignore-filter.ts
│ │ │ ├── get-installed-package-version.ts
│ │ │ ├── get-platform-env.ts
│ │ │ ├── get-prefixed-env-vars.ts
│ │ │ ├── get-service-url-env-vars.ts
│ │ │ ├── hard-link-dir.ts
│ │ │ ├── index.ts
│ │ │ ├── lambda.ts
│ │ │ ├── nodejs-lambda.ts
│ │ │ ├── os.ts
│ │ │ ├── prerender.ts
│ │ │ ├── process-serverless/
│ │ │ │ ├── get-encrypted-env-file.ts
│ │ │ │ ├── get-lambda-environment.ts
│ │ │ │ ├── get-lambda-preload-scripts.ts
│ │ │ │ └── get-lambda-supports-streaming.ts
│ │ │ ├── python.ts
│ │ │ ├── schemas.ts
│ │ │ ├── should-serve.ts
│ │ │ ├── trace/
│ │ │ │ ├── constants.ts
│ │ │ │ ├── index.ts
│ │ │ │ └── trace.ts
│ │ │ ├── types.ts
│ │ │ ├── validate-lambda-size.ts
│ │ │ └── validate-npmrc.ts
│ │ ├── test/
│ │ │ ├── fixtures/
│ │ │ │ ├── 02-zero-config-api/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── api/
│ │ │ │ │ │ ├── date/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── date.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── 03-zero-config-angular/
│ │ │ │ │ ├── .editorconfig
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── angular.json
│ │ │ │ │ ├── browserslist
│ │ │ │ │ ├── e2e/
│ │ │ │ │ │ ├── protractor.conf.js
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.e2e-spec.ts
│ │ │ │ │ │ │ └── app.po.ts
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── karma.conf.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ ├── app.component.css
│ │ │ │ │ │ │ ├── app.component.html
│ │ │ │ │ │ │ ├── app.component.spec.ts
│ │ │ │ │ │ │ ├── app.component.ts
│ │ │ │ │ │ │ └── app.module.ts
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ │ ├── environments/
│ │ │ │ │ │ │ ├── environment.prod.ts
│ │ │ │ │ │ │ └── environment.ts
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── main.ts
│ │ │ │ │ │ ├── polyfills.ts
│ │ │ │ │ │ ├── styles.css
│ │ │ │ │ │ └── test.ts
│ │ │ │ │ ├── tsconfig.app.json
│ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ ├── tsconfig.spec.json
│ │ │ │ │ └── tslint.json
│ │ │ │ ├── 04-zero-config-brunch/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ ├── initialize.js
│ │ │ │ │ │ └── styles.css
│ │ │ │ │ ├── brunch-config.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── 05-zero-config-gatsby/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── .prettierignore
│ │ │ │ │ ├── .prettierrc
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── gatsby-browser.js
│ │ │ │ │ ├── gatsby-config.js
│ │ │ │ │ ├── gatsby-node.js
│ │ │ │ │ ├── gatsby-ssr.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── src/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── header.js
│ │ │ │ │ │ ├── image.js
│ │ │ │ │ │ ├── layout.css
│ │ │ │ │ │ ├── layout.js
│ │ │ │ │ │ └── seo.js
│ │ │ │ │ └── pages/
│ │ │ │ │ ├── 404.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── page-2.js
│ │ │ │ ├── 06-zero-config-hugo/
│ │ │ │ │ ├── archetypes/
│ │ │ │ │ │ └── default.md
│ │ │ │ │ └── config.toml
│ │ │ │ ├── 07-cross-install/
│ │ │ │ │ ├── api/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── lib/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── now.json
│ │ │ │ ├── 07-zero-config-jekyll/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── 404.html
│ │ │ │ │ ├── Gemfile
│ │ │ │ │ ├── _config.yml
│ │ │ │ │ ├── _posts/
│ │ │ │ │ │ └── 2019-11-06-welcome-to-jekyll.markdown
│ │ │ │ │ ├── about.markdown
│ │ │ │ │ └── index.markdown
│ │ │ │ ├── 08-yarn-npm/
│ │ │ │ │ ├── now.json
│ │ │ │ │ ├── with-npm/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── must-be-npm.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── with-yarn/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── must-be-yarn.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── with-yarn-and-npm/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── must-be-yarn.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── 08-zero-config-middleman/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── Gemfile
│ │ │ │ │ ├── config.rb
│ │ │ │ │ └── source/
│ │ │ │ │ ├── images/
│ │ │ │ │ │ └── .keep
│ │ │ │ │ ├── index.html.erb
│ │ │ │ │ ├── javascripts/
│ │ │ │ │ │ └── site.js
│ │ │ │ │ ├── layouts/
│ │ │ │ │ │ └── layout.erb
│ │ │ │ │ └── stylesheets/
│ │ │ │ │ └── site.css.scss
│ │ │ │ ├── 14-npm-6-legacy-peer-deps/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── probes.json
│ │ │ │ ├── 16-node-env-install/
│ │ │ │ │ ├── build.js
│ │ │ │ │ ├── now.json
│ │ │ │ │ └── package.json
│ │ │ │ ├── 17-node-env-build/
│ │ │ │ │ ├── now.json
│ │ │ │ │ └── package.json
│ │ │ │ ├── 18-install-only-production/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── now.json
│ │ │ │ │ ├── npm/
│ │ │ │ │ │ ├── build.js
│ │ │ │ │ │ ├── package-lock.json
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── yarn/
│ │ │ │ │ ├── build.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── 19-yarn-v2/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── .yarn/
│ │ │ │ │ │ └── releases/
│ │ │ │ │ │ └── yarn-berry.js
│ │ │ │ │ ├── .yarnrc.yml
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── api/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── public/
│ │ │ │ │ │ ├── global.css
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── rollup.config.js
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── App.svelte
│ │ │ │ │ │ └── main.js
│ │ │ │ │ └── vercel.json
│ │ │ │ ├── 20-npm-7/
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── vercel.json
│ │ │ │ ├── 21-npm-workspaces/
│ │ │ │ │ ├── a/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── b/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── package.json
│ │ │ │ ├── 22-pnpm/
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── vercel.json
│ │ │ │ ├── 23-pnpm-workspaces/
│ │ │ │ │ ├── c/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── d/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── pnpm-workspace.yaml
│ │ │ │ ├── 24-pnpm-hoisted/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── .npmrc
│ │ │ │ │ ├── a/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── b/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── vercel.json
│ │ │ │ ├── 25-multiple-lock-files-yarn/
│ │ │ │ │ ├── a/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── b/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── vercel.json
│ │ │ │ ├── 26-multiple-lock-files-pnpm/
│ │ │ │ │ ├── a/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── b/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── pnpm-workspace.yaml
│ │ │ │ │ └── vercel.json
│ │ │ │ ├── 27-pnpm-v7/
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── pnpm-workspace.yaml
│ │ │ │ │ └── probes.json
│ │ │ │ ├── 28-pnpm-v8/
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── pnpm-workspace.yaml
│ │ │ │ │ └── probes.json
│ │ │ │ ├── 29-npmrc/
│ │ │ │ │ ├── comment-use-node-version/
│ │ │ │ │ │ └── .npmrc
│ │ │ │ │ ├── good/
│ │ │ │ │ │ └── .npmrc
│ │ │ │ │ └── has-use-node-version/
│ │ │ │ │ └── .npmrc
│ │ │ │ ├── 30-bun-v1/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── build.js
│ │ │ │ │ ├── bun.lockb
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── probes.json
│ │ │ │ ├── 30-bun-v1-lockb/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── build.js
│ │ │ │ │ ├── bun.lockb
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── probes.json
│ │ │ │ ├── 31-bun-v1-with-yarn-lock/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── build.js
│ │ │ │ │ ├── bun.lockb
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── probes.json
│ │ │ │ ├── 32-bun-v1-lock/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── build.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── 40-no-lockfile/
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── probes.json
│ │ │ │ ├── 41-npm-workspaces-corepack/
│ │ │ │ │ ├── a/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── b/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── package.json
│ │ │ │ ├── 41-turborepo-supporting-corepack-home/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── .npmrc
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── apps/
│ │ │ │ │ │ ├── docs/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ │ ├── globals.css
│ │ │ │ │ │ │ │ ├── layout.tsx
│ │ │ │ │ │ │ │ ├── page.module.css
│ │ │ │ │ │ │ │ └── page.tsx
│ │ │ │ │ │ │ ├── next.config.mjs
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ └── web/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ ├── globals.css
│ │ │ │ │ │ │ ├── layout.tsx
│ │ │ │ │ │ │ ├── page.module.css
│ │ │ │ │ │ │ └── page.tsx
│ │ │ │ │ │ ├── next.config.mjs
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── packages/
│ │ │ │ │ │ ├── eslint-config/
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── library.js
│ │ │ │ │ │ │ ├── next.js
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── react-internal.js
│ │ │ │ │ │ ├── typescript-config/
│ │ │ │ │ │ │ ├── base.json
│ │ │ │ │ │ │ ├── nextjs.json
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── react-library.json
│ │ │ │ │ │ └── ui/
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── button.tsx
│ │ │ │ │ │ │ ├── card.tsx
│ │ │ │ │ │ │ └── code.tsx
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ ├── tsconfig.lint.json
│ │ │ │ │ │ └── turbo/
│ │ │ │ │ │ └── generators/
│ │ │ │ │ │ ├── config.ts
│ │ │ │ │ │ └── templates/
│ │ │ │ │ │ └── component.hbs
│ │ │ │ │ ├── pnpm-workspace.yaml
│ │ │ │ │ └── turbo.json
│ │ │ │ ├── 42-pnpm-workspaces-corepack/
│ │ │ │ │ ├── c/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── d/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── pnpm-workspace.yaml
│ │ │ │ ├── 42-turborepo-not-supporting-corepack-home/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── .npmrc
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── packages/
│ │ │ │ │ │ └── ui/
│ │ │ │ │ │ └── turbo/
│ │ │ │ │ │ └── generators/
│ │ │ │ │ │ ├── config.ts
│ │ │ │ │ │ └── templates/
│ │ │ │ │ │ └── component.hbs
│ │ │ │ │ └── turbo.json
│ │ │ │ ├── 43-turborepo-with-comments-in-turbo-json/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── .npmrc
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── packages/
│ │ │ │ │ │ └── ui/
│ │ │ │ │ │ └── turbo/
│ │ │ │ │ │ └── generators/
│ │ │ │ │ │ ├── config.ts
│ │ │ │ │ │ └── templates/
│ │ │ │ │ │ └── component.hbs
│ │ │ │ │ └── turbo.json
│ │ │ │ ├── 44-turborepo-with-turbo-jsonc/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── .npmrc
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── apps/
│ │ │ │ │ │ └── web/
│ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ ├── layout.tsx
│ │ │ │ │ │ │ └── page.tsx
│ │ │ │ │ │ ├── next-env.d.ts
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── packages/
│ │ │ │ │ │ └── ui/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── pnpm-workspace.yaml
│ │ │ │ │ └── turbo.jsonc
│ │ │ │ ├── 44-yarn-v4/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ └── package.json
│ │ │ │ ├── 45-yarn-v1/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ └── package.json
│ │ │ │ └── 46-yarn-dynamic-require/
│ │ │ │ ├── .gitignore
│ │ │ │ └── package.json
│ │ │ ├── integration.test.ts
│ │ │ ├── pkg-engine-node/
│ │ │ │ └── package.json
│ │ │ ├── pkg-engine-node-exact/
│ │ │ │ └── package.json
│ │ │ ├── pkg-engine-node-greaterthan/
│ │ │ │ └── package.json
│ │ │ ├── symlinks/
│ │ │ │ ├── a.txt
│ │ │ │ └── dir/
│ │ │ │ └── b.txt
│ │ │ ├── tsconfig.json
│ │ │ ├── unit.clone-env.test.ts
│ │ │ ├── unit.collect-build-result.test.ts
│ │ │ ├── unit.collect-uncompressed-size.test.ts
│ │ │ ├── unit.detect-package-manager.test.ts
│ │ │ ├── unit.download.test.ts
│ │ │ ├── unit.finalize-lambda.test.ts
│ │ │ ├── unit.get-env-for-package-manager.test.ts
│ │ │ ├── unit.get-lambda-environment.test.ts
│ │ │ ├── unit.get-lambda-options-from-function.test.ts
│ │ │ ├── unit.get-lambda-supports-streaming.test.ts
│ │ │ ├── unit.get-node-bin-path.test.ts
│ │ │ ├── unit.get-node-bin-paths.test.ts
│ │ │ ├── unit.get-os-release.test.ts
│ │ │ ├── unit.get-path-for-package-manager.test.ts
│ │ │ ├── unit.get-path-override-for-package-manager.test.ts
│ │ │ ├── unit.get-platform-env.test.ts
│ │ │ ├── unit.get-prefixed-env-vars.test.ts
│ │ │ ├── unit.get-script-name.test.ts
│ │ │ ├── unit.get-service-url-env-vars.test.ts
│ │ │ ├── unit.get-spawn-options.test.ts
│ │ │ ├── unit.glob.test.ts
│ │ │ ├── unit.lambda.test.ts
│ │ │ ├── unit.nodejs-lambda.test.ts
│ │ │ ├── unit.read-config-file.test.ts
│ │ │ ├── unit.run-npm-install.test.ts
│ │ │ ├── unit.spawn-async.test.ts
│ │ │ ├── unit.stream-to-buffer.test.ts
│ │ │ ├── unit.stream-to-digest-async.test.ts
│ │ │ ├── unit.test.ts
│ │ │ ├── unit.traverse-up-directories.test.ts
│ │ │ ├── unit.turbo-version-specifier-supports-corepack.test.ts
│ │ │ ├── unit.using-corepack.test.ts
│ │ │ ├── unit.validate-lambda-size.test.ts
│ │ │ ├── unit.validate-npmrc.test.ts
│ │ │ ├── unit.walk.test.ts
│ │ │ └── walk/
│ │ │ ├── every-directory/
│ │ │ │ ├── another.txt
│ │ │ │ ├── file.txt
│ │ │ │ └── two/
│ │ │ │ ├── another.txt
│ │ │ │ ├── file.txt
│ │ │ │ └── three/
│ │ │ │ ├── another.txt
│ │ │ │ └── file.txt
│ │ │ ├── not-found/
│ │ │ │ ├── another.txt
│ │ │ │ └── two/
│ │ │ │ ├── another.txt
│ │ │ │ └── three/
│ │ │ │ └── another.txt
│ │ │ ├── only-one/
│ │ │ │ ├── another.txt
│ │ │ │ ├── file.txt
│ │ │ │ └── two/
│ │ │ │ ├── another.txt
│ │ │ │ └── three/
│ │ │ │ └── another.txt
│ │ │ ├── only-three/
│ │ │ │ ├── another.txt
│ │ │ │ └── two/
│ │ │ │ ├── another.txt
│ │ │ │ └── three/
│ │ │ │ ├── another.txt
│ │ │ │ └── file.txt
│ │ │ └── only-two/
│ │ │ ├── another.txt
│ │ │ └── two/
│ │ │ ├── another.txt
│ │ │ ├── file.txt
│ │ │ └── three/
│ │ │ └── another.txt
│ │ └── tsconfig.json
│ ├── cervel/
│ │ ├── CHANGELOG.md
│ │ ├── bin/
│ │ │ └── cervel.mjs
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── cli.ts
│ │ │ └── index.ts
│ │ ├── tsconfig.json
│ │ └── tsdown.config.ts
│ ├── cli/
│ │ ├── .gitignore
│ │ ├── AGENTS.md
│ │ ├── CHANGELOG.md
│ │ ├── CLAUDE.md
│ │ ├── README.md
│ │ ├── docs/
│ │ │ └── non-interactive-mode.md
│ │ ├── evals/
│ │ │ ├── .gitignore
│ │ │ ├── .prettierrc.json
│ │ │ ├── README.md
│ │ │ ├── evals/
│ │ │ │ ├── _deploy/
│ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ ├── fixture/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ └── package.json
│ │ │ │ ├── _smoke/
│ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── package.json
│ │ │ │ ├── build/
│ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ ├── index.html
│ │ │ │ │ └── package.json
│ │ │ │ ├── curl/
│ │ │ │ │ ├── explicit/
│ │ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── implicit/
│ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ └── package.json
│ │ │ │ ├── env/
│ │ │ │ │ ├── add/
│ │ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── ls/
│ │ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── pull/
│ │ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── remove/
│ │ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── update/
│ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ └── package.json
│ │ │ │ ├── init/
│ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ └── package.json
│ │ │ │ ├── login-not-logged-in/
│ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── vitest.config.ts
│ │ │ │ ├── login-whoami/
│ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── vitest.config.ts
│ │ │ │ ├── marketplace/
│ │ │ │ │ ├── find-postgres-integration/
│ │ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── install-neon-postgres/
│ │ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── metadata-discovery/
│ │ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── multi-product-install/
│ │ │ │ │ ├── EVAL.ts
│ │ │ │ │ ├── PROMPT.md
│ │ │ │ │ └── package.json
│ │ │ │ └── non-interactive/
│ │ │ │ ├── EVAL.ts
│ │ │ │ ├── PROMPT.md
│ │ │ │ └── package.json
│ │ │ ├── experiments/
│ │ │ │ ├── cc.ts
│ │ │ │ ├── cli-with-skill.ts
│ │ │ │ ├── cli.ts
│ │ │ │ ├── smoke.ts
│ │ │ │ └── vercel-cli-cc.ts
│ │ │ ├── hooks.test.ts
│ │ │ ├── hooks.ts
│ │ │ ├── run.ts
│ │ │ ├── sandbox-project/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .vercel/
│ │ │ │ │ ├── README.txt
│ │ │ │ │ └── project.json
│ │ │ │ └── README.md
│ │ │ ├── scripts/
│ │ │ │ └── transform-agent-eval-to-canonical.js
│ │ │ ├── setup/
│ │ │ │ ├── auth-and-config.ts
│ │ │ │ └── install-cli.ts
│ │ │ └── tsconfig.json
│ │ ├── jest.config.cjs
│ │ ├── package.json
│ │ ├── scripts/
│ │ │ ├── Dockerfile.headless
│ │ │ ├── build.mjs
│ │ │ ├── compile-templates.mjs
│ │ │ ├── flag-audit.js
│ │ │ ├── start.js
│ │ │ └── test-headless.sh
│ │ ├── src/
│ │ │ ├── args.ts
│ │ │ ├── commands/
│ │ │ │ ├── activity/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── list.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── agent/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── init.ts
│ │ │ │ ├── alerts/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── list.ts
│ │ │ │ ├── alias/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── ls.ts
│ │ │ │ │ ├── rm.ts
│ │ │ │ │ └── set.ts
│ │ │ │ ├── api/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── format-utils.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── request-builder.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── bisect/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── blob/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── copy.ts
│ │ │ │ │ ├── del.ts
│ │ │ │ │ ├── get.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── list.ts
│ │ │ │ │ ├── put.ts
│ │ │ │ │ ├── store-add.ts
│ │ │ │ │ ├── store-get.ts
│ │ │ │ │ ├── store-remove.ts
│ │ │ │ │ └── store.ts
│ │ │ │ ├── build/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── buy/
│ │ │ │ │ ├── addon.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── credits.ts
│ │ │ │ │ ├── domain.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── pro.ts
│ │ │ │ │ └── v0.ts
│ │ │ │ ├── cache/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── dangerously-delete.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── invalidate.ts
│ │ │ │ │ └── purge.ts
│ │ │ │ ├── certs/
│ │ │ │ │ ├── add.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── issue.ts
│ │ │ │ │ ├── ls.ts
│ │ │ │ │ └── rm.ts
│ │ │ │ ├── contract/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── crons/
│ │ │ │ │ ├── add.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── ls.ts
│ │ │ │ │ ├── run.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── curl/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── bypass-token.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── deployment-url.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── shared.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── deploy/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── dev/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── dev.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── dns/
│ │ │ │ │ ├── add.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── import.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── ls.ts
│ │ │ │ │ └── rm.ts
│ │ │ │ ├── domains/
│ │ │ │ │ ├── add.ts
│ │ │ │ │ ├── buy.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── inspect.ts
│ │ │ │ │ ├── ls.ts
│ │ │ │ │ ├── move.ts
│ │ │ │ │ ├── rm.ts
│ │ │ │ │ └── transfer-in.ts
│ │ │ │ ├── env/
│ │ │ │ │ ├── add.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── ls.ts
│ │ │ │ │ ├── pull.ts
│ │ │ │ │ ├── rm.ts
│ │ │ │ │ ├── run.ts
│ │ │ │ │ └── update.ts
│ │ │ │ ├── flags/
│ │ │ │ │ ├── add.ts
│ │ │ │ │ ├── archive.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── disable.ts
│ │ │ │ │ ├── emit-datafiles.ts
│ │ │ │ │ ├── enable.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── inspect.ts
│ │ │ │ │ ├── ls.ts
│ │ │ │ │ ├── open.ts
│ │ │ │ │ ├── rm.ts
│ │ │ │ │ ├── sdk-keys-add.ts
│ │ │ │ │ ├── sdk-keys-ls.ts
│ │ │ │ │ ├── sdk-keys-rm.ts
│ │ │ │ │ ├── sdk-keys.ts
│ │ │ │ │ ├── set.ts
│ │ │ │ │ └── update.ts
│ │ │ │ ├── git/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── connect.ts
│ │ │ │ │ ├── disconnect.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── guidance/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── disable.ts
│ │ │ │ │ ├── enable.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── status.ts
│ │ │ │ ├── help.ts
│ │ │ │ ├── httpstat/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── init/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── init.ts
│ │ │ │ ├── inspect/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── install/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── integration/
│ │ │ │ │ ├── add-auto-provision.ts
│ │ │ │ │ ├── add-help.ts
│ │ │ │ │ ├── add.ts
│ │ │ │ │ ├── balance.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── discover.ts
│ │ │ │ │ ├── guide.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── list.ts
│ │ │ │ │ ├── open-integration.ts
│ │ │ │ │ ├── remove-integration.ts
│ │ │ │ │ └── wizard.ts
│ │ │ │ ├── integration-resource/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── create-threshold.ts
│ │ │ │ │ ├── disconnect.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── remove-resource.ts
│ │ │ │ ├── link/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── list/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── login/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── future.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── logout/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── future.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── logs/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── mcp/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── mcp.ts
│ │ │ │ ├── metrics/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── output.ts
│ │ │ │ │ ├── query.ts
│ │ │ │ │ ├── schema-api.ts
│ │ │ │ │ ├── schema.ts
│ │ │ │ │ ├── text-output.ts
│ │ │ │ │ ├── time-utils.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── validation.ts
│ │ │ │ ├── microfrontends/
│ │ │ │ │ ├── add-to-group.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── create-group.ts
│ │ │ │ │ ├── delete-group.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── inspect-group.ts
│ │ │ │ │ ├── pull.ts
│ │ │ │ │ ├── remove-from-group.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── utils.ts
│ │ │ │ ├── open/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── project/
│ │ │ │ │ ├── add.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── inspect.ts
│ │ │ │ │ ├── list.ts
│ │ │ │ │ ├── rm.ts
│ │ │ │ │ └── token.ts
│ │ │ │ ├── promote/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── request-promote.ts
│ │ │ │ │ └── status.ts
│ │ │ │ ├── pull/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── redeploy/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── redirects/
│ │ │ │ │ ├── add.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── list-versions.ts
│ │ │ │ │ ├── list.ts
│ │ │ │ │ ├── promote.ts
│ │ │ │ │ ├── remove.ts
│ │ │ │ │ ├── restore.ts
│ │ │ │ │ ├── shared.ts
│ │ │ │ │ ├── upload.ts
│ │ │ │ │ └── validate-redirects.ts
│ │ │ │ ├── remove/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── rollback/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── request-rollback.ts
│ │ │ │ │ └── status.ts
│ │ │ │ ├── rolling-release/
│ │ │ │ │ ├── abort-rolling-release.ts
│ │ │ │ │ ├── approve-rolling-release.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── complete-rolling-release.ts
│ │ │ │ │ ├── configure-rolling-release.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── request-rolling-release.ts
│ │ │ │ │ └── start-rolling-release.ts
│ │ │ │ ├── routes/
│ │ │ │ │ ├── add.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── delete.ts
│ │ │ │ │ ├── disable.ts
│ │ │ │ │ ├── discard.ts
│ │ │ │ │ ├── edit-interactive.ts
│ │ │ │ │ ├── edit.ts
│ │ │ │ │ ├── enable.ts
│ │ │ │ │ ├── export.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── inspect.ts
│ │ │ │ │ ├── list-versions.ts
│ │ │ │ │ ├── list.ts
│ │ │ │ │ ├── publish.ts
│ │ │ │ │ ├── reorder.ts
│ │ │ │ │ ├── restore.ts
│ │ │ │ │ └── shared.ts
│ │ │ │ ├── skills/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── target/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── list.ts
│ │ │ │ ├── teams/
│ │ │ │ │ ├── add.ts
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── invite.ts
│ │ │ │ │ ├── list.ts
│ │ │ │ │ ├── members.ts
│ │ │ │ │ └── switch.ts
│ │ │ │ ├── telemetry/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── disable.ts
│ │ │ │ │ ├── enable.ts
│ │ │ │ │ ├── flush.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ └── status.ts
│ │ │ │ ├── upgrade/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ └── index.ts
│ │ │ │ ├── usage/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── output-aggregated.ts
│ │ │ │ │ ├── output-breakdown.ts
│ │ │ │ │ ├── output-group-by.ts
│ │ │ │ │ ├── output-json.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── webhooks/
│ │ │ │ │ ├── command.ts
│ │ │ │ │ ├── create.ts
│ │ │ │ │ ├── get.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── ls.ts
│ │ │ │ │ └── rm.ts
│ │ │ │ └── whoami/
│ │ │ │ ├── command.ts
│ │ │ │ └── index.ts
│ │ │ ├── commands-bulk.ts
│ │ │ ├── help.ts
│ │ │ ├── index.ts
│ │ │ ├── output-manager.ts
│ │ │ ├── util/
│ │ │ │ ├── agent/
│ │ │ │ │ └── auto-install-agentic.ts
│ │ │ │ ├── agent-output-constants.ts
│ │ │ │ ├── agent-output.ts
│ │ │ │ ├── alias/
│ │ │ │ │ ├── assign-alias.ts
│ │ │ │ │ ├── create-alias.ts
│ │ │ │ │ ├── extract-domain.ts
│ │ │ │ │ ├── find-alias-by-alias-or-id.ts
│ │ │ │ │ ├── get-aliases.ts
│ │ │ │ │ ├── get-deployment-by-alias.ts
│ │ │ │ │ ├── get-domain-aliases.ts
│ │ │ │ │ ├── is-wildcard-alias.ts
│ │ │ │ │ ├── remove-alias-by-id.ts
│ │ │ │ │ └── render-alias-status.ts
│ │ │ │ ├── arg-common.ts
│ │ │ │ ├── billing/
│ │ │ │ │ ├── focus-charge.ts
│ │ │ │ │ ├── focus-contract-commitment.ts
│ │ │ │ │ ├── format.ts
│ │ │ │ │ ├── group-by-utils.ts
│ │ │ │ │ └── period-utils.ts
│ │ │ │ ├── bisect/
│ │ │ │ │ └── normalize-url.ts
│ │ │ │ ├── blob/
│ │ │ │ │ ├── access.ts
│ │ │ │ │ └── token.ts
│ │ │ │ ├── build/
│ │ │ │ │ ├── corepack.ts
│ │ │ │ │ ├── import-builders.ts
│ │ │ │ │ ├── install-builders.ts
│ │ │ │ │ ├── merge.ts
│ │ │ │ │ ├── monorepo.ts
│ │ │ │ │ ├── scrub-argv.ts
│ │ │ │ │ ├── service-route-ownership.ts
│ │ │ │ │ ├── sort-builders.ts
│ │ │ │ │ ├── static-builder.ts
│ │ │ │ │ ├── unzip.ts
│ │ │ │ │ └── write-build-result.ts
│ │ │ │ ├── build-state.ts
│ │ │ │ ├── buy/
│ │ │ │ │ ├── create-purchase.ts
│ │ │ │ │ ├── handle-purchase-error.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── certs/
│ │ │ │ │ ├── create-cert-for-alias.ts
│ │ │ │ │ ├── create-cert-for-cns.ts
│ │ │ │ │ ├── create-cert-from-file.ts
│ │ │ │ │ ├── delete-cert-by-id.ts
│ │ │ │ │ ├── finish-cert-order.ts
│ │ │ │ │ ├── get-cert-by-id.ts
│ │ │ │ │ ├── get-certs.ts
│ │ │ │ │ ├── get-cns-from-args.ts
│ │ │ │ │ ├── get-custom-certs-for-domain.ts
│ │ │ │ │ ├── get-wildcard-cns-for-alias.ts
│ │ │ │ │ ├── handle-cert-error.ts
│ │ │ │ │ ├── issue-cert.ts
│ │ │ │ │ ├── map-cert-error.ts
│ │ │ │ │ └── start-cert-order.ts
│ │ │ │ ├── client.ts
│ │ │ │ ├── command-validation.ts
│ │ │ │ ├── compile-vercel-config.ts
│ │ │ │ ├── config/
│ │ │ │ │ ├── files.ts
│ │ │ │ │ ├── get-default.ts
│ │ │ │ │ ├── global-path.ts
│ │ │ │ │ ├── local-path.ts
│ │ │ │ │ └── read-config.ts
│ │ │ │ ├── create-git-meta.ts
│ │ │ │ ├── deploy/
│ │ │ │ │ ├── create-deploy.ts
│ │ │ │ │ ├── generate-cert-for-deploy.ts
│ │ │ │ │ ├── get-deployment-by-id-or-url.ts
│ │ │ │ │ ├── get-deployment-checks.ts
│ │ │ │ │ ├── get-deployments-by-appname.ts
│ │ │ │ │ ├── get-deployments-by-project-id.ts
│ │ │ │ │ ├── get-prebuilt-json.ts
│ │ │ │ │ ├── is-deploying.ts
│ │ │ │ │ ├── print-deployment-status.ts
│ │ │ │ │ ├── process-deployment.ts
│ │ │ │ │ └── validate-archive-format.ts
│ │ │ │ ├── dev/
│ │ │ │ │ ├── builder-worker.cjs
│ │ │ │ │ ├── builder.ts
│ │ │ │ │ ├── cron.ts
│ │ │ │ │ ├── dev-lock.ts
│ │ │ │ │ ├── errors.ts
│ │ │ │ │ ├── headers.ts
│ │ │ │ │ ├── is-url.ts
│ │ │ │ │ ├── mime-type.ts
│ │ │ │ │ ├── parse-listen.ts
│ │ │ │ │ ├── parse-query-string.ts
│ │ │ │ │ ├── port-utils.ts
│ │ │ │ │ ├── queue-broker.ts
│ │ │ │ │ ├── router.ts
│ │ │ │ │ ├── server.ts
│ │ │ │ │ ├── services-orchestrator.ts
│ │ │ │ │ ├── templates/
│ │ │ │ │ │ ├── error.jst
│ │ │ │ │ │ ├── error.tsdef
│ │ │ │ │ │ ├── error_404.jst
│ │ │ │ │ │ ├── error_404.tsdef
│ │ │ │ │ │ ├── error_502.jst
│ │ │ │ │ │ ├── error_502.tsdef
│ │ │ │ │ │ ├── error_base.jst
│ │ │ │ │ │ ├── error_base.tsdef
│ │ │ │ │ │ ├── redirect.jst
│ │ │ │ │ │ └── redirect.tsdef
│ │ │ │ │ └── types.ts
│ │ │ │ ├── did-you-mean.ts
│ │ │ │ ├── dns/
│ │ │ │ │ ├── add-dns-record.ts
│ │ │ │ │ ├── delete-dns-record-by-id.ts
│ │ │ │ │ ├── get-dns-data.ts
│ │ │ │ │ ├── get-dns-record-by-id.ts
│ │ │ │ │ ├── get-dns-records.ts
│ │ │ │ │ ├── get-domain-dns-records.ts
│ │ │ │ │ ├── import-zonefile.ts
│ │ │ │ │ └── parse-add-dns-record-args.ts
│ │ │ │ ├── domains/
│ │ │ │ │ ├── add-domain.ts
│ │ │ │ │ ├── check-transfer.ts
│ │ │ │ │ ├── collect-contact-information.ts
│ │ │ │ │ ├── get-auth-code.ts
│ │ │ │ │ ├── get-domain-by-name.ts
│ │ │ │ │ ├── get-domain-config.ts
│ │ │ │ │ ├── get-domain-price.ts
│ │ │ │ │ ├── get-domain-registrar.ts
│ │ │ │ │ ├── get-domain-status.ts
│ │ │ │ │ ├── get-domain.ts
│ │ │ │ │ ├── get-domains.ts
│ │ │ │ │ ├── get-order.ts
│ │ │ │ │ ├── is-domain-external.ts
│ │ │ │ │ ├── is-public-suffix.ts
│ │ │ │ │ ├── maybe-get-domain-by-name.ts
│ │ │ │ │ ├── move-out-domain.ts
│ │ │ │ │ ├── purchase-domain-if-available.ts
│ │ │ │ │ ├── purchase-domain.ts
│ │ │ │ │ ├── remove-domain-by-name.ts
│ │ │ │ │ ├── set-custom-suffix.ts
│ │ │ │ │ ├── setup-domain.ts
│ │ │ │ │ └── transfer-in-domain.ts
│ │ │ │ ├── emoji.ts
│ │ │ │ ├── env/
│ │ │ │ │ ├── add-env-record.ts
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── diff-env-files.ts
│ │ │ │ │ ├── env-target.ts
│ │ │ │ │ ├── format-environments.ts
│ │ │ │ │ ├── get-env-records.ts
│ │ │ │ │ ├── known-error.ts
│ │ │ │ │ ├── refresh-oidc-token.ts
│ │ │ │ │ ├── remove-env-record.ts
│ │ │ │ │ ├── update-env-record.ts
│ │ │ │ │ └── validate-env.ts
│ │ │ │ ├── error.ts
│ │ │ │ ├── errors-ts.ts
│ │ │ │ ├── events.ts
│ │ │ │ ├── extension/
│ │ │ │ │ ├── exec.ts
│ │ │ │ │ └── proxy.ts
│ │ │ │ ├── flags/
│ │ │ │ │ ├── create-flag.ts
│ │ │ │ │ ├── dashboard-url.ts
│ │ │ │ │ ├── delete-flag.ts
│ │ │ │ │ ├── environment-variant.ts
│ │ │ │ │ ├── get-flags.ts
│ │ │ │ │ ├── log-non-boolean-guidance.ts
│ │ │ │ │ ├── normalize-optional-input.ts
│ │ │ │ │ ├── print-flag-details.ts
│ │ │ │ │ ├── resolve-variant.ts
│ │ │ │ │ ├── sdk-keys.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── update-flag.ts
│ │ │ │ ├── format-date.ts
│ │ │ │ ├── format-dns-table.ts
│ │ │ │ ├── format-ns-table.ts
│ │ │ │ ├── format-table.ts
│ │ │ │ ├── get-args.ts
│ │ │ │ ├── get-command-flags.ts
│ │ │ │ ├── get-config.ts
│ │ │ │ ├── get-deployment.ts
│ │ │ │ ├── get-files.ts
│ │ │ │ ├── get-flags-specification.ts
│ │ │ │ ├── get-invalid-subcommand.ts
│ │ │ │ ├── get-latest-version/
│ │ │ │ │ ├── get-latest-worker.cjs
│ │ │ │ │ └── index.ts
│ │ │ │ ├── get-pagination-opts.ts
│ │ │ │ ├── get-project-name.ts
│ │ │ │ ├── get-scope.ts
│ │ │ │ ├── get-sentry.ts
│ │ │ │ ├── get-subcommand.ts
│ │ │ │ ├── get-update-command.ts
│ │ │ │ ├── get-user.ts
│ │ │ │ ├── git/
│ │ │ │ │ ├── connect-git-provider.ts
│ │ │ │ │ └── repo-info-to-url.ts
│ │ │ │ ├── git-helpers.ts
│ │ │ │ ├── guidance/
│ │ │ │ │ └── check-status.ts
│ │ │ │ ├── handle-command-typo.ts
│ │ │ │ ├── humanize-path.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── input/
│ │ │ │ │ ├── display-services.ts
│ │ │ │ │ ├── edit-project-settings.ts
│ │ │ │ │ ├── input-project.ts
│ │ │ │ │ ├── input-root-directory.ts
│ │ │ │ │ ├── list.ts
│ │ │ │ │ ├── read-standard-input.ts
│ │ │ │ │ ├── regexes.ts
│ │ │ │ │ ├── select-org.ts
│ │ │ │ │ └── vercel-auth.ts
│ │ │ │ ├── integration/
│ │ │ │ │ ├── accept-terms-via-browser.ts
│ │ │ │ │ ├── auto-provision-resource.ts
│ │ │ │ │ ├── build-sso-link.ts
│ │ │ │ │ ├── create-authorization.ts
│ │ │ │ │ ├── fetch-authorization.ts
│ │ │ │ │ ├── fetch-billing-plans.ts
│ │ │ │ │ ├── fetch-installation-prepayment-info.ts
│ │ │ │ │ ├── fetch-installations.ts
│ │ │ │ │ ├── fetch-integration-categories.ts
│ │ │ │ │ ├── fetch-integration.ts
│ │ │ │ │ ├── fetch-marketplace-integrations-list.ts
│ │ │ │ │ ├── fetch-marketplace-integrations.ts
│ │ │ │ │ ├── format-billing-plans-help.ts
│ │ │ │ │ ├── format-dynamic-examples.ts
│ │ │ │ │ ├── format-product-help.ts
│ │ │ │ │ ├── format-schema-help.ts
│ │ │ │ │ ├── generate-resource-name.ts
│ │ │ │ │ ├── parse-metadata.ts
│ │ │ │ │ ├── post-provision-setup.ts
│ │ │ │ │ ├── prompt-for-terms.ts
│ │ │ │ │ ├── provision-store-resource.ts
│ │ │ │ │ ├── remove-integration.ts
│ │ │ │ │ ├── select-product.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── update-installation-threshold.ts
│ │ │ │ ├── integration-resource/
│ │ │ │ │ ├── connect-resource-to-project.ts
│ │ │ │ │ ├── delete-resource.ts
│ │ │ │ │ ├── disconnect-resource-from-project.ts
│ │ │ │ │ ├── get-resources.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── update-threshold.ts
│ │ │ │ ├── is-root-domain.ts
│ │ │ │ ├── is-setting-value.ts
│ │ │ │ ├── is-valid-name.ts
│ │ │ │ ├── link/
│ │ │ │ │ ├── add-to-gitignore.ts
│ │ │ │ │ ├── ensure-link.ts
│ │ │ │ │ ├── repo.ts
│ │ │ │ │ ├── services-setup.ts
│ │ │ │ │ └── setup-and-link.ts
│ │ │ │ ├── login/
│ │ │ │ │ ├── reauthenticate.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── update-current-team-after-login.ts
│ │ │ │ ├── logs-v2.ts
│ │ │ │ ├── logs.ts
│ │ │ │ ├── now-error.ts
│ │ │ │ ├── oauth.ts
│ │ │ │ ├── openapi/
│ │ │ │ │ ├── constants.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── openapi-cache.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── output/
│ │ │ │ │ ├── box.ts
│ │ │ │ │ ├── builds.ts
│ │ │ │ │ ├── chars.ts
│ │ │ │ │ ├── cmd.ts
│ │ │ │ │ ├── code.ts
│ │ │ │ │ ├── create-output.ts
│ │ │ │ │ ├── elapsed.ts
│ │ │ │ │ ├── ellipsis.ts
│ │ │ │ │ ├── erase-lines.ts
│ │ │ │ │ ├── error.ts
│ │ │ │ │ ├── highlight.ts
│ │ │ │ │ ├── indent.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── info.ts
│ │ │ │ │ ├── join-words.ts
│ │ │ │ │ ├── link.ts
│ │ │ │ │ ├── list-item.ts
│ │ │ │ │ ├── param.ts
│ │ │ │ │ ├── progress.ts
│ │ │ │ │ ├── routes.ts
│ │ │ │ │ ├── stamp.ts
│ │ │ │ │ ├── table.ts
│ │ │ │ │ └── wait.ts
│ │ │ │ ├── output-format.ts
│ │ │ │ ├── parse-env.ts
│ │ │ │ ├── parse-meta.ts
│ │ │ │ ├── parse-policy.ts
│ │ │ │ ├── parse-target.ts
│ │ │ │ ├── path-helpers.ts
│ │ │ │ ├── pkg-name.ts
│ │ │ │ ├── pkg.ts
│ │ │ │ ├── print-indications.ts
│ │ │ │ ├── projects/
│ │ │ │ │ ├── add-domain-to-project.ts
│ │ │ │ │ ├── create-project.ts
│ │ │ │ │ ├── detect-projects.ts
│ │ │ │ │ ├── detect-services.ts
│ │ │ │ │ ├── find-project-root.ts
│ │ │ │ │ ├── find-projects-for-domain.ts
│ │ │ │ │ ├── format-project.ts
│ │ │ │ │ ├── get-project-by-cwd-or-link.ts
│ │ │ │ │ ├── get-project-by-deployment.ts
│ │ │ │ │ ├── get-project-by-id-or-name.ts
│ │ │ │ │ ├── link.ts
│ │ │ │ │ ├── project-settings.ts
│ │ │ │ │ ├── remove-domain-from-project.ts
│ │ │ │ │ ├── remove-project.ts
│ │ │ │ │ └── search-project-across-teams.ts
│ │ │ │ ├── promise.ts
│ │ │ │ ├── read-json-file.ts
│ │ │ │ ├── redirects/
│ │ │ │ │ ├── delete-redirects.ts
│ │ │ │ │ ├── get-redirect-versions.ts
│ │ │ │ │ ├── get-redirects.ts
│ │ │ │ │ ├── put-redirects.ts
│ │ │ │ │ └── update-redirect-version.ts
│ │ │ │ ├── report-error.ts
│ │ │ │ ├── response-error.ts
│ │ │ │ ├── routes/
│ │ │ │ │ ├── add-route.ts
│ │ │ │ │ ├── ai-transform.ts
│ │ │ │ │ ├── delete-routes.ts
│ │ │ │ │ ├── edit-route.ts
│ │ │ │ │ ├── env.ts
│ │ │ │ │ ├── generate-route.ts
│ │ │ │ │ ├── get-route-versions.ts
│ │ │ │ │ ├── get-routes.ts
│ │ │ │ │ ├── interactive.ts
│ │ │ │ │ ├── parse-conditions.ts
│ │ │ │ │ ├── parse-transforms.ts
│ │ │ │ │ ├── stage-routes.ts
│ │ │ │ │ ├── types.ts
│ │ │ │ │ └── update-route-version.ts
│ │ │ │ ├── sleep.ts
│ │ │ │ ├── strlen.ts
│ │ │ │ ├── suggest-next-commands.ts
│ │ │ │ ├── teams/
│ │ │ │ │ ├── create-team.ts
│ │ │ │ │ ├── get-team-by-id.ts
│ │ │ │ │ ├── get-teams.ts
│ │ │ │ │ ├── invite-user-to-team.ts
│ │ │ │ │ └── patch-team.ts
│ │ │ │ ├── telemetry/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── check-status.ts
│ │ │ │ │ ├── commands/
│ │ │ │ │ │ ├── activity/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── agent/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── alerts/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── alias/
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── list.ts
│ │ │ │ │ │ │ ├── remove.ts
│ │ │ │ │ │ │ └── set.ts
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── bisect/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── blob/
│ │ │ │ │ │ │ ├── copy.ts
│ │ │ │ │ │ │ ├── del.ts
│ │ │ │ │ │ │ ├── get.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── list.ts
│ │ │ │ │ │ │ ├── put.ts
│ │ │ │ │ │ │ ├── store-add.ts
│ │ │ │ │ │ │ ├── store-get.ts
│ │ │ │ │ │ │ ├── store-remove.ts
│ │ │ │ │ │ │ └── store.ts
│ │ │ │ │ │ ├── build/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── buy/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── cache/
│ │ │ │ │ │ │ ├── dangerously-delete.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── invalidate.ts
│ │ │ │ │ │ │ └── purge.ts
│ │ │ │ │ │ ├── certs/
│ │ │ │ │ │ │ ├── add.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── issue.ts
│ │ │ │ │ │ │ ├── ls.ts
│ │ │ │ │ │ │ └── remove.ts
│ │ │ │ │ │ ├── contract/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── crons/
│ │ │ │ │ │ │ ├── add.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── ls.ts
│ │ │ │ │ │ │ └── run.ts
│ │ │ │ │ │ ├── curl/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── deploy/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── dev/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── dns/
│ │ │ │ │ │ │ ├── add.ts
│ │ │ │ │ │ │ ├── import.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── ls.ts
│ │ │ │ │ │ │ └── rm.ts
│ │ │ │ │ │ ├── domains/
│ │ │ │ │ │ │ ├── add.ts
│ │ │ │ │ │ │ ├── buy.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── inspect.ts
│ │ │ │ │ │ │ ├── ls.ts
│ │ │ │ │ │ │ ├── move.ts
│ │ │ │ │ │ │ ├── rm.ts
│ │ │ │ │ │ │ └── transfer-in.ts
│ │ │ │ │ │ ├── env/
│ │ │ │ │ │ │ ├── add.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── ls.ts
│ │ │ │ │ │ │ ├── pull.ts
│ │ │ │ │ │ │ ├── rm.ts
│ │ │ │ │ │ │ └── update.ts
│ │ │ │ │ │ ├── flags/
│ │ │ │ │ │ │ ├── add.ts
│ │ │ │ │ │ │ ├── archive.ts
│ │ │ │ │ │ │ ├── disable.ts
│ │ │ │ │ │ │ ├── enable.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── inspect.ts
│ │ │ │ │ │ │ ├── ls.ts
│ │ │ │ │ │ │ ├── open.ts
│ │ │ │ │ │ │ ├── rm.ts
│ │ │ │ │ │ │ ├── sdk-keys.ts
│ │ │ │ │ │ │ ├── set.ts
│ │ │ │ │ │ │ └── update.ts
│ │ │ │ │ │ ├── git/
│ │ │ │ │ │ │ ├── connect.ts
│ │ │ │ │ │ │ ├── disconnect.ts
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── guidance/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── httpstat/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── init/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── inspect/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── install/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── integration/
│ │ │ │ │ │ │ ├── add.ts
│ │ │ │ │ │ │ ├── balance.ts
│ │ │ │ │ │ │ ├── discover.ts
│ │ │ │ │ │ │ ├── guide.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── list.ts
│ │ │ │ │ │ │ ├── open.ts
│ │ │ │ │ │ │ └── remove.ts
│ │ │ │ │ │ ├── integration-resource/
│ │ │ │ │ │ │ ├── create-threshold.ts
│ │ │ │ │ │ │ ├── disconnect.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── remove.ts
│ │ │ │ │ │ ├── link/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── list/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── login/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── logout/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── logs/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── metrics/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── microfrontends/
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ └── pull.ts
│ │ │ │ │ │ ├── open/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── project/
│ │ │ │ │ │ │ ├── add.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── inspect.ts
│ │ │ │ │ │ │ ├── list.ts
│ │ │ │ │ │ │ └── rm.ts
│ │ │ │ │ │ ├── promote/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── pull/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── redeploy/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── redirects/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── remove/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── rollback/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── rolling-release/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── routes/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── skills/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── teams/
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── invite.ts
│ │ │ │ │ │ │ ├── list.ts
│ │ │ │ │ │ │ └── switch.ts
│ │ │ │ │ │ ├── telemetry/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── upgrade/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── usage/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ ├── webhooks/
│ │ │ │ │ │ │ ├── create.ts
│ │ │ │ │ │ │ ├── get.ts
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── ls.ts
│ │ │ │ │ │ │ └── rm.ts
│ │ │ │ │ │ └── whoami/
│ │ │ │ │ │ └── index.ts
│ │ │ │ │ ├── index.ts
│ │ │ │ │ ├── root.ts
│ │ │ │ │ └── types.ts
│ │ │ │ ├── time-utils.ts
│ │ │ │ ├── to-host.ts
│ │ │ │ ├── tree-kill.ts
│ │ │ │ ├── types.ts
│ │ │ │ ├── ua-browser.ts
│ │ │ │ ├── ua.ts
│ │ │ │ ├── unique-strings.ts
│ │ │ │ ├── upgrade.ts
│ │ │ │ ├── url.ts
│ │ │ │ ├── validate-config.ts
│ │ │ │ ├── validate-cron-secret.ts
│ │ │ │ ├── validate-ls-args.ts
│ │ │ │ ├── validate-package-manifest.ts
│ │ │ │ ├── validate-paths.ts
│ │ │ │ └── webhooks/
│ │ │ │ ├── create-webhook.ts
│ │ │ │ ├── delete-webhook.ts
│ │ │ │ ├── get-webhook-events.ts
│ │ │ │ ├── get-webhook.ts
│ │ │ │ ├── get-webhooks.ts
│ │ │ │ └── types.ts
│ │ │ └── vc.js
│ │ ├── test/
│ │ │ ├── dev/
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── 00-list-directory/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .well-known/
│ │ │ │ │ │ │ └── keybase.txt
│ │ │ │ │ │ ├── directory/
│ │ │ │ │ │ │ └── hello.md
│ │ │ │ │ │ ├── test1.txt
│ │ │ │ │ │ ├── test2.txt
│ │ │ │ │ │ └── test3.txt
│ │ │ │ │ ├── 01-node/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── date.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── vercel.json
│ │ │ │ │ │ └── www/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── style.css
│ │ │ │ │ ├── 02-angular-node/
│ │ │ │ │ │ ├── .editorconfig
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── angular.json
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── date.js
│ │ │ │ │ │ ├── browserslist
│ │ │ │ │ │ ├── e2e/
│ │ │ │ │ │ │ ├── protractor.conf.js
│ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ ├── app.e2e-spec.ts
│ │ │ │ │ │ │ │ └── app.po.ts
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ ├── karma.conf.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ │ ├── app.component.css
│ │ │ │ │ │ │ │ ├── app.component.html
│ │ │ │ │ │ │ │ ├── app.component.spec.ts
│ │ │ │ │ │ │ │ ├── app.component.ts
│ │ │ │ │ │ │ │ └── app.module.ts
│ │ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ │ │ ├── environments/
│ │ │ │ │ │ │ │ ├── environment.prod.ts
│ │ │ │ │ │ │ │ └── environment.ts
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ ├── main.ts
│ │ │ │ │ │ │ ├── polyfills.ts
│ │ │ │ │ │ │ ├── styles.css
│ │ │ │ │ │ │ └── test.ts
│ │ │ │ │ │ ├── tsconfig.app.json
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ ├── tsconfig.spec.json
│ │ │ │ │ │ └── tslint.json
│ │ │ │ │ ├── 03-aurelia/
│ │ │ │ │ │ ├── .babelrc.js
│ │ │ │ │ │ ├── .editorconfig
│ │ │ │ │ │ ├── .eslintrc.json
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── aurelia_project/
│ │ │ │ │ │ │ ├── aurelia.json
│ │ │ │ │ │ │ ├── environments/
│ │ │ │ │ │ │ │ ├── dev.js
│ │ │ │ │ │ │ │ ├── prod.js
│ │ │ │ │ │ │ │ ├── stage.js
│ │ │ │ │ │ │ │ └── test.js
│ │ │ │ │ │ │ ├── generators/
│ │ │ │ │ │ │ │ ├── attribute.js
│ │ │ │ │ │ │ │ ├── attribute.json
│ │ │ │ │ │ │ │ ├── binding-behavior.js
│ │ │ │ │ │ │ │ ├── binding-behavior.json
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ ├── component.json
│ │ │ │ │ │ │ │ ├── element.js
│ │ │ │ │ │ │ │ ├── element.json
│ │ │ │ │ │ │ │ ├── generator.js
│ │ │ │ │ │ │ │ ├── generator.json
│ │ │ │ │ │ │ │ ├── task.js
│ │ │ │ │ │ │ │ ├── task.json
│ │ │ │ │ │ │ │ ├── value-converter.js
│ │ │ │ │ │ │ │ └── value-converter.json
│ │ │ │ │ │ │ └── tasks/
│ │ │ │ │ │ │ ├── build.js
│ │ │ │ │ │ │ ├── build.json
│ │ │ │ │ │ │ ├── environment.js
│ │ │ │ │ │ │ ├── jest.js
│ │ │ │ │ │ │ ├── jest.json
│ │ │ │ │ │ │ ├── run.js
│ │ │ │ │ │ │ ├── run.json
│ │ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ │ └── test.json
│ │ │ │ │ │ ├── index.ejs
│ │ │ │ │ │ ├── jsconfig.json
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── app.html
│ │ │ │ │ │ │ ├── app.js
│ │ │ │ │ │ │ ├── environment.js
│ │ │ │ │ │ │ ├── main.js
│ │ │ │ │ │ │ └── resources/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── test/
│ │ │ │ │ │ │ ├── jest-pretest.js
│ │ │ │ │ │ │ └── unit/
│ │ │ │ │ │ │ ├── .eslintrc
│ │ │ │ │ │ │ └── app.spec.js
│ │ │ │ │ │ └── webpack.config.js
│ │ │ │ │ ├── 04-create-react-app/
│ │ │ │ │ │ ├── .env
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── App.css
│ │ │ │ │ │ ├── App.js
│ │ │ │ │ │ ├── App.test.js
│ │ │ │ │ │ ├── index.css
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── serviceWorker.js
│ │ │ │ │ ├── 07-hexo-node/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── _config.yml
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── date.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── scaffolds/
│ │ │ │ │ │ │ ├── draft.md
│ │ │ │ │ │ │ ├── page.md
│ │ │ │ │ │ │ └── post.md
│ │ │ │ │ │ ├── source/
│ │ │ │ │ │ │ ├── _posts/
│ │ │ │ │ │ │ │ └── hello-world.md
│ │ │ │ │ │ │ └── contact.html
│ │ │ │ │ │ ├── themes/
│ │ │ │ │ │ │ └── landscape/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── Gruntfile.js
│ │ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── _config.yml
│ │ │ │ │ │ │ ├── languages/
│ │ │ │ │ │ │ │ ├── de.yml
│ │ │ │ │ │ │ │ ├── default.yml
│ │ │ │ │ │ │ │ ├── es.yml
│ │ │ │ │ │ │ │ ├── fr.yml
│ │ │ │ │ │ │ │ ├── ja.yml
│ │ │ │ │ │ │ │ ├── ko.yml
│ │ │ │ │ │ │ │ ├── nl.yml
│ │ │ │ │ │ │ │ ├── no.yml
│ │ │ │ │ │ │ │ ├── pt.yml
│ │ │ │ │ │ │ │ ├── ru.yml
│ │ │ │ │ │ │ │ ├── zh-CN.yml
│ │ │ │ │ │ │ │ └── zh-TW.yml
│ │ │ │ │ │ │ ├── layout/
│ │ │ │ │ │ │ │ ├── _partial/
│ │ │ │ │ │ │ │ │ ├── after-footer.ejs
│ │ │ │ │ │ │ │ │ ├── archive-post.ejs
│ │ │ │ │ │ │ │ │ ├── archive.ejs
│ │ │ │ │ │ │ │ │ ├── article.ejs
│ │ │ │ │ │ │ │ │ ├── footer.ejs
│ │ │ │ │ │ │ │ │ ├── gauges-analytics.ejs
│ │ │ │ │ │ │ │ │ ├── google-analytics.ejs
│ │ │ │ │ │ │ │ │ ├── head.ejs
│ │ │ │ │ │ │ │ │ ├── header.ejs
│ │ │ │ │ │ │ │ │ ├── mobile-nav.ejs
│ │ │ │ │ │ │ │ │ ├── post/
│ │ │ │ │ │ │ │ │ │ ├── category.ejs
│ │ │ │ │ │ │ │ │ │ ├── date.ejs
│ │ │ │ │ │ │ │ │ │ ├── gallery.ejs
│ │ │ │ │ │ │ │ │ │ ├── nav.ejs
│ │ │ │ │ │ │ │ │ │ ├── tag.ejs
│ │ │ │ │ │ │ │ │ │ └── title.ejs
│ │ │ │ │ │ │ │ │ └── sidebar.ejs
│ │ │ │ │ │ │ │ ├── _widget/
│ │ │ │ │ │ │ │ │ ├── archive.ejs
│ │ │ │ │ │ │ │ │ ├── category.ejs
│ │ │ │ │ │ │ │ │ ├── recent_posts.ejs
│ │ │ │ │ │ │ │ │ ├── tag.ejs
│ │ │ │ │ │ │ │ │ └── tagcloud.ejs
│ │ │ │ │ │ │ │ ├── archive.ejs
│ │ │ │ │ │ │ │ ├── category.ejs
│ │ │ │ │ │ │ │ ├── index.ejs
│ │ │ │ │ │ │ │ ├── layout.ejs
│ │ │ │ │ │ │ │ ├── page.ejs
│ │ │ │ │ │ │ │ ├── post.ejs
│ │ │ │ │ │ │ │ └── tag.ejs
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ ├── scripts/
│ │ │ │ │ │ │ │ └── fancybox.js
│ │ │ │ │ │ │ └── source/
│ │ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ │ ├── _extend.styl
│ │ │ │ │ │ │ │ ├── _partial/
│ │ │ │ │ │ │ │ │ ├── archive.styl
│ │ │ │ │ │ │ │ │ ├── article.styl
│ │ │ │ │ │ │ │ │ ├── comment.styl
│ │ │ │ │ │ │ │ │ ├── footer.styl
│ │ │ │ │ │ │ │ │ ├── header.styl
│ │ │ │ │ │ │ │ │ ├── highlight.styl
│ │ │ │ │ │ │ │ │ ├── mobile.styl
│ │ │ │ │ │ │ │ │ ├── sidebar-aside.styl
│ │ │ │ │ │ │ │ │ ├── sidebar-bottom.styl
│ │ │ │ │ │ │ │ │ └── sidebar.styl
│ │ │ │ │ │ │ │ ├── _util/
│ │ │ │ │ │ │ │ │ ├── grid.styl
│ │ │ │ │ │ │ │ │ └── mixin.styl
│ │ │ │ │ │ │ │ ├── _variables.styl
│ │ │ │ │ │ │ │ ├── fonts/
│ │ │ │ │ │ │ │ │ └── FontAwesome.otf
│ │ │ │ │ │ │ │ └── style.styl
│ │ │ │ │ │ │ ├── fancybox/
│ │ │ │ │ │ │ │ ├── helpers/
│ │ │ │ │ │ │ │ │ ├── jquery.fancybox-buttons.css
│ │ │ │ │ │ │ │ │ ├── jquery.fancybox-buttons.js
│ │ │ │ │ │ │ │ │ ├── jquery.fancybox-media.js
│ │ │ │ │ │ │ │ │ ├── jquery.fancybox-thumbs.css
│ │ │ │ │ │ │ │ │ └── jquery.fancybox-thumbs.js
│ │ │ │ │ │ │ │ ├── jquery.fancybox.css
│ │ │ │ │ │ │ │ ├── jquery.fancybox.js
│ │ │ │ │ │ │ │ └── jquery.fancybox.pack.js
│ │ │ │ │ │ │ └── js/
│ │ │ │ │ │ │ └── script.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── 08-hugo/
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── archetypes/
│ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ ├── config.toml
│ │ │ │ │ │ ├── content/
│ │ │ │ │ │ │ └── posts/
│ │ │ │ │ │ │ └── my-first-post.md
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── themes/
│ │ │ │ │ │ │ └── ananke/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── CHANGELOG.md
│ │ │ │ │ │ │ ├── LICENSE.md
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── archetypes/
│ │ │ │ │ │ │ │ └── default.md
│ │ │ │ │ │ │ ├── data/
│ │ │ │ │ │ │ │ └── webpack_assets.json
│ │ │ │ │ │ │ ├── exampleSite/
│ │ │ │ │ │ │ │ ├── config.toml
│ │ │ │ │ │ │ │ └── content/
│ │ │ │ │ │ │ │ ├── _index.md
│ │ │ │ │ │ │ │ ├── about/
│ │ │ │ │ │ │ │ │ └── _index.md
│ │ │ │ │ │ │ │ ├── contact.md
│ │ │ │ │ │ │ │ └── post/
│ │ │ │ │ │ │ │ ├── _index.md
│ │ │ │ │ │ │ │ ├── chapter-1.md
│ │ │ │ │ │ │ │ ├── chapter-2.md
│ │ │ │ │ │ │ │ ├── chapter-3.md
│ │ │ │ │ │ │ │ ├── chapter-4.md
│ │ │ │ │ │ │ │ ├── chapter-5.md
│ │ │ │ │ │ │ │ └── chapter-6.md
│ │ │ │ │ │ │ ├── i18n/
│ │ │ │ │ │ │ │ ├── de.toml
│ │ │ │ │ │ │ │ ├── en.toml
│ │ │ │ │ │ │ │ ├── es.toml
│ │ │ │ │ │ │ │ ├── fr.toml
│ │ │ │ │ │ │ │ ├── nl.toml
│ │ │ │ │ │ │ │ ├── pt.toml
│ │ │ │ │ │ │ │ ├── ru.toml
│ │ │ │ │ │ │ │ └── zh.toml
│ │ │ │ │ │ │ ├── layouts/
│ │ │ │ │ │ │ │ ├── 404.html
│ │ │ │ │ │ │ │ ├── _default/
│ │ │ │ │ │ │ │ │ ├── baseof.html
│ │ │ │ │ │ │ │ │ ├── list.html
│ │ │ │ │ │ │ │ │ ├── single.html
│ │ │ │ │ │ │ │ │ ├── taxonomy.html
│ │ │ │ │ │ │ │ │ └── terms.html
│ │ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ │ ├── page/
│ │ │ │ │ │ │ │ │ └── single.html
│ │ │ │ │ │ │ │ ├── partials/
│ │ │ │ │ │ │ │ │ ├── commento.html
│ │ │ │ │ │ │ │ │ ├── i18nlist.html
│ │ │ │ │ │ │ │ │ ├── menu-contextual.html
│ │ │ │ │ │ │ │ │ ├── new-window-icon.html
│ │ │ │ │ │ │ │ │ ├── page-header.html
│ │ │ │ │ │ │ │ │ ├── site-favicon.html
│ │ │ │ │ │ │ │ │ ├── site-footer.html
│ │ │ │ │ │ │ │ │ ├── site-header.html
│ │ │ │ │ │ │ │ │ ├── site-navigation.html
│ │ │ │ │ │ │ │ │ ├── site-scripts.html
│ │ │ │ │ │ │ │ │ ├── social-follow.html
│ │ │ │ │ │ │ │ │ ├── summary-with-image.html
│ │ │ │ │ │ │ │ │ ├── summary.html
│ │ │ │ │ │ │ │ │ └── tags.html
│ │ │ │ │ │ │ │ ├── post/
│ │ │ │ │ │ │ │ │ ├── list.html
│ │ │ │ │ │ │ │ │ ├── summary-with-image.html
│ │ │ │ │ │ │ │ │ └── summary.html
│ │ │ │ │ │ │ │ ├── robots.txt
│ │ │ │ │ │ │ │ └── shortcodes/
│ │ │ │ │ │ │ │ └── form-contact.html
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ │ │ ├── _code.css
│ │ │ │ │ │ │ │ │ ├── _hugo-internal-templates.css
│ │ │ │ │ │ │ │ │ ├── _social-icons.css
│ │ │ │ │ │ │ │ │ ├── _styles.css
│ │ │ │ │ │ │ │ │ ├── _tachyons.css
│ │ │ │ │ │ │ │ │ ├── main.css
│ │ │ │ │ │ │ │ │ └── postcss.config.js
│ │ │ │ │ │ │ │ ├── js/
│ │ │ │ │ │ │ │ │ └── main.js
│ │ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ │ ├── readme.md
│ │ │ │ │ │ │ │ └── webpack.config.js
│ │ │ │ │ │ │ └── theme.toml
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── 10-nextjs-node/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── date.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ ├── 404.js
│ │ │ │ │ │ │ ├── contact.js
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── 10a-nextjs-routes/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── hello.js
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── 12-polymer-node/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── date.js
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── manifest.json
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── polymer.json
│ │ │ │ │ │ ├── service-worker.js
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── my-app.js
│ │ │ │ │ │ │ ├── my-icons.js
│ │ │ │ │ │ │ ├── my-view1.js
│ │ │ │ │ │ │ ├── my-view2.js
│ │ │ │ │ │ │ ├── my-view3.js
│ │ │ │ │ │ │ ├── my-view404.js
│ │ │ │ │ │ │ └── shared-styles.js
│ │ │ │ │ │ ├── sw-precache-config.js
│ │ │ │ │ │ └── test/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── my-view1.html
│ │ │ │ │ ├── 13-preact-node/
│ │ │ │ │ │ ├── .babelrc
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── date.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── manifest.json
│ │ │ │ │ │ ├── routes/
│ │ │ │ │ │ │ └── home/
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ └── style.css
│ │ │ │ │ │ └── style/
│ │ │ │ │ │ └── index.css
│ │ │ │ │ ├── 14-svelte-node/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── date.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── rollup.config.js
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── App.svelte
│ │ │ │ │ │ └── main.js
│ │ │ │ │ ├── 16-vue-node/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── date.js
│ │ │ │ │ │ ├── babel.config.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── App.vue
│ │ │ │ │ │ └── main.js
│ │ │ │ │ ├── 17-vuepress-node/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── date.js
│ │ │ │ │ │ ├── babel.config.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── App.vue
│ │ │ │ │ │ └── main.js
│ │ │ │ │ ├── 18-marko/
│ │ │ │ │ │ ├── .editorconfig
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── .prettierignore
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── project.js
│ │ │ │ │ │ ├── server.js
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── click-count/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── site-layout/
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── style.css
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── routes/
│ │ │ │ │ │ ├── hello/
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ └── stop-watch/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── route.js
│ │ │ │ │ │ └── layouts/
│ │ │ │ │ │ └── index.marko
│ │ │ │ │ ├── 19-mithril/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── 20-riot/
│ │ │ │ │ │ ├── .babelrc
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── logs.riot
│ │ │ │ │ │ │ ├── main.js
│ │ │ │ │ │ │ └── random.riot
│ │ │ │ │ │ └── webpack.config.js
│ │ │ │ │ ├── 22-brunch/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ ├── assets/
│ │ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ │ ├── initialize.js
│ │ │ │ │ │ │ └── styles.css
│ │ │ │ │ │ ├── brunch-config.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── 23-docusaurus/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── blog/
│ │ │ │ │ │ │ ├── 2019-05-28-hola.md
│ │ │ │ │ │ │ ├── 2019-05-29-hello-world.md
│ │ │ │ │ │ │ └── 2019-05-30-welcome.md
│ │ │ │ │ │ ├── docs/
│ │ │ │ │ │ │ ├── doc1.md
│ │ │ │ │ │ │ ├── doc2.md
│ │ │ │ │ │ │ ├── doc3.md
│ │ │ │ │ │ │ └── mdx.md
│ │ │ │ │ │ ├── docusaurus.config.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── sidebars.js
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ └── custom.css
│ │ │ │ │ │ └── pages/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── styles.module.css
│ │ │ │ │ ├── 24-ember/
│ │ │ │ │ │ ├── .editorconfig
│ │ │ │ │ │ ├── .ember-cli
│ │ │ │ │ │ ├── .eslintignore
│ │ │ │ │ │ ├── .eslintrc.js
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .template-lintrc.js
│ │ │ │ │ │ ├── .travis.yml
│ │ │ │ │ │ ├── .watchmanconfig
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ ├── app.js
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ │ │ ├── controllers/
│ │ │ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ │ │ ├── helpers/
│ │ │ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ ├── models/
│ │ │ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ │ │ ├── resolver.js
│ │ │ │ │ │ │ ├── router.js
│ │ │ │ │ │ │ ├── routes/
│ │ │ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ │ │ ├── styles/
│ │ │ │ │ │ │ │ └── app.css
│ │ │ │ │ │ │ └── templates/
│ │ │ │ │ │ │ ├── application.hbs
│ │ │ │ │ │ │ └── components/
│ │ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ ├── environment.js
│ │ │ │ │ │ │ ├── optional-features.json
│ │ │ │ │ │ │ └── targets.js
│ │ │ │ │ │ ├── ember-cli-build.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── testem.js
│ │ │ │ │ │ ├── tests/
│ │ │ │ │ │ │ ├── helpers/
│ │ │ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ ├── integration/
│ │ │ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ │ │ ├── test-helper.js
│ │ │ │ │ │ │ └── unit/
│ │ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ │ └── vendor/
│ │ │ │ │ │ └── .gitkeep
│ │ │ │ │ ├── 25-nextjs-src-dir/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── pages/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── 27-zero-config-env/
│ │ │ │ │ │ ├── .nowignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── print.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── 28-vercel-json-and-ignore/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .vercelignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── one.js
│ │ │ │ │ │ │ └── two.js
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── 30-next-image-optimization/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── public/
│ │ │ │ │ │ └── test.tiff
│ │ │ │ │ ├── 40-mixed-modules/
│ │ │ │ │ │ ├── entrypoint.js
│ │ │ │ │ │ ├── entrypoint.mjs
│ │ │ │ │ │ ├── entrypoint.ts
│ │ │ │ │ │ ├── js/
│ │ │ │ │ │ │ ├── commonjs-module.js
│ │ │ │ │ │ │ ├── ecmascript-module.js
│ │ │ │ │ │ │ ├── em-jay-ess.mjs
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── ts/
│ │ │ │ │ │ │ ├── commonjs-module.ts
│ │ │ │ │ │ │ ├── ecmascript-module.ts
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── type-module-package-json/
│ │ │ │ │ │ │ ├── auto.js
│ │ │ │ │ │ │ ├── nested/
│ │ │ │ │ │ │ │ └── also.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── 41-tsconfig-jsx/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── test.ts
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ ├── App.module.css
│ │ │ │ │ │ │ ├── App.tsx
│ │ │ │ │ │ │ ├── index.css
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ ├── tsconfig.json
│ │ │ │ │ │ └── vite.config.ts
│ │ │ │ │ ├── 42-dynamic-esm-ext/
│ │ │ │ │ │ └── api/
│ │ │ │ │ │ ├── cjs/
│ │ │ │ │ │ │ └── [id].js
│ │ │ │ │ │ └── esm/
│ │ │ │ │ │ └── [id].mjs
│ │ │ │ │ ├── 43-compress-encoding/
│ │ │ │ │ │ └── api/
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── api-with-public/
│ │ │ │ │ │ └── api/
│ │ │ │ │ │ └── [endpoint].js
│ │ │ │ │ ├── api-with-static/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── [endpoint].js
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── custom-404/
│ │ │ │ │ │ ├── error.html
│ │ │ │ │ │ ├── error.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── dev-server-and-routes/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── [endpoint]/
│ │ │ │ │ │ │ │ └── [id].js
│ │ │ │ │ │ │ ├── [endpoint].js
│ │ │ │ │ │ │ └── welcome.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── dev-server-query/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── directory-listing/
│ │ │ │ │ │ ├── file.txt
│ │ │ │ │ │ ├── lambda.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── edge-function/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── edge-500-response.js
│ │ │ │ │ │ │ ├── edge-import-browser.js
│ │ │ │ │ │ │ ├── edge-success.js
│ │ │ │ │ │ │ └── webassembly.js
│ │ │ │ │ │ ├── increment.wasm
│ │ │ │ │ │ ├── lib/
│ │ │ │ │ │ │ └── upper.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── vendor/
│ │ │ │ │ │ └── generate-uuid/
│ │ │ │ │ │ ├── index-browser.js
│ │ │ │ │ │ ├── index-node.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── edge-function-error/
│ │ │ │ │ │ └── api/
│ │ │ │ │ │ ├── edge-error-config.js
│ │ │ │ │ │ ├── edge-error-no-handler.js
│ │ │ │ │ │ ├── edge-error-runtime.js
│ │ │ │ │ │ ├── edge-error-startup.js
│ │ │ │ │ │ ├── edge-error-syntax.js
│ │ │ │ │ │ ├── edge-error-unknown-import.js
│ │ │ │ │ │ └── edge-no-response.js
│ │ │ │ │ ├── empty/
│ │ │ │ │ │ └── .gitignore
│ │ │ │ │ ├── esm-js-edge-module/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── data.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── esm-js-edge-no-module/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── data.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── esm-js-nodejs-module/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── data.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── esm-js-nodejs-no-module/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── data.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── esm-ts-edge-module/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── data.ts
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── esm-ts-edge-no-module/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── data.ts
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── esm-ts-nodejs-module/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── data.ts
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── esm-ts-nodejs-no-module/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── data.ts
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── express-no-export/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── public/
│ │ │ │ │ │ │ └── test.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── force-module-commonjs/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ └── ts.ts
│ │ │ │ │ │ ├── next-env.d.ts
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── go/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── [segement].go
│ │ │ │ │ │ │ ├── another.go
│ │ │ │ │ │ │ └── index.go
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── go-external-module/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── go.mod
│ │ │ │ │ │ │ ├── go.sum
│ │ │ │ │ │ │ └── index.go
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── go-work-with-shared/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── go.mod
│ │ │ │ │ │ │ └── index.go
│ │ │ │ │ │ ├── go.work
│ │ │ │ │ │ ├── mylib/
│ │ │ │ │ │ │ ├── go.mod
│ │ │ │ │ │ │ └── main.go
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── handle-filesystem-missing/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── handle-hit-after-dest/
│ │ │ │ │ │ ├── blog/
│ │ │ │ │ │ │ └── post.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── handle-hit-after-fs/
│ │ │ │ │ │ ├── blog.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── handle-hit-after-rewrite/
│ │ │ │ │ │ ├── blog/
│ │ │ │ │ │ │ └── post.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── handle-miss-after-rewrite/
│ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── blog/
│ │ │ │ │ │ │ └── post.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── handle-miss-after-route/
│ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── blog/
│ │ │ │ │ │ │ └── post.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── handle-miss-hide-dir-list/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── blog/
│ │ │ │ │ │ │ └── post/
│ │ │ │ │ │ │ └── one.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── handle-miss-querystring/
│ │ │ │ │ │ ├── functions/
│ │ │ │ │ │ │ └── echo.js
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── headers/
│ │ │ │ │ │ ├── foo.txt
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── hono-no-export/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── public/
│ │ │ │ │ │ │ └── test.json
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── invalid-builder-routes/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── invalid-builds/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── invalid-clean-urls/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── invalid-env-var-name/
│ │ │ │ │ │ ├── index.txt
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── invalid-headers/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── invalid-mixed-routes-rewrites/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── invalid-redirects/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── invalid-rewrites/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── invalid-routes/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── invalid-trailing-slash/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── invalidate-vercel-config/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── middleware-500-response/
│ │ │ │ │ │ └── middleware.js
│ │ │ │ │ ├── middleware-error-at-init/
│ │ │ │ │ │ └── middleware.js
│ │ │ │ │ ├── middleware-error-in-handler/
│ │ │ │ │ │ └── middleware.js
│ │ │ │ │ ├── middleware-matchers/
│ │ │ │ │ │ └── middleware.js
│ │ │ │ │ ├── middleware-matchers-invalid/
│ │ │ │ │ │ └── middleware.js
│ │ │ │ │ ├── middleware-no-response/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── hello.js
│ │ │ │ │ │ └── middleware.js
│ │ │ │ │ ├── middleware-redirect/
│ │ │ │ │ │ └── middleware.js
│ │ │ │ │ ├── middleware-request-headers-override/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── dump-headers.js
│ │ │ │ │ │ └── middleware.js
│ │ │ │ │ ├── middleware-response/
│ │ │ │ │ │ └── middleware.js
│ │ │ │ │ ├── middleware-rewrite/
│ │ │ │ │ │ ├── another.html
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── middleware.js
│ │ │ │ │ ├── middleware-rewrite-404/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── edge.ts
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── middleware.ts
│ │ │ │ │ ├── middleware-rewrite-query/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── fn.js
│ │ │ │ │ │ └── middleware.js
│ │ │ │ │ ├── missing-src-property/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── index.txt
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── nested-tsconfig/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── index.ts
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ ├── next-env.d.ts
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ └── index.tsx
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── no-api/
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── no-build-matches/
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── node-helpers/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── node-query-invoke/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── node-request-body/
│ │ │ │ │ │ └── api/
│ │ │ │ │ │ ├── data-events.js
│ │ │ │ │ │ └── req-body.js
│ │ │ │ │ ├── node-ts-node-target/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── array.js
│ │ │ │ │ │ │ ├── dump.js
│ │ │ │ │ │ │ └── subclass.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ ├── output-is-source/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── project-settings-override/
│ │ │ │ │ │ ├── original/
│ │ │ │ │ │ │ └── index.txt
│ │ │ │ │ │ ├── overridden/
│ │ │ │ │ │ │ └── index.txt
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── public-and-api/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── date.js
│ │ │ │ │ │ │ └── rand.js
│ │ │ │ │ │ └── public/
│ │ │ │ │ │ ├── .well-known/
│ │ │ │ │ │ │ └── humans.txt
│ │ │ │ │ │ ├── 404.html
│ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── python-fastapi/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── endpoints/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── users.py
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── requirements.txt
│ │ │ │ │ │ └── server.py
│ │ │ │ │ ├── python-flask/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── endpoints/
│ │ │ │ │ │ │ ├── __init__.py
│ │ │ │ │ │ │ └── users.py
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── requirements.txt
│ │ │ │ │ │ └── server.py
│ │ │ │ │ ├── query-proxy/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── routes-check-true/
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── blog
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── routes-check-true-status/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── post.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── routes-custom-404/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── hello.js
│ │ │ │ │ │ ├── exact-404.html
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── user-404.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── runtime-not-installed/
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── serverless-function/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── services-cron/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── cron/
│ │ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ │ └── task.py
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── services-explicit-config/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── service-fastapi/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ │ └── server.py
│ │ │ │ │ │ ├── service-flask/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ │ └── server.py
│ │ │ │ │ │ ├── service-next/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── pages/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── services-worker/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── vercel.json
│ │ │ │ │ │ ├── web/
│ │ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ │ └── server.py
│ │ │ │ │ │ ├── worker/
│ │ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ │ └── worker.py
│ │ │ │ │ │ └── worker-wildcard/
│ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ └── worker.py
│ │ │ │ │ ├── services-zc-apps-services/
│ │ │ │ │ │ ├── apps/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ └── web/
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ └── services/
│ │ │ │ │ │ ├── service-fastapi/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ │ └── server.py
│ │ │ │ │ │ └── service-flask/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ └── server.py
│ │ │ │ │ ├── services-zc-frontend-backend/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── backend/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ │ └── server.py
│ │ │ │ │ │ └── frontend/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── services-zc-frontend-services/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── frontend/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ └── services/
│ │ │ │ │ │ ├── service-fastapi/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ │ └── server.py
│ │ │ │ │ │ └── service-flask/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ └── server.py
│ │ │ │ │ ├── services-zc-root-backend/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── backend/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ │ └── server.py
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── services-zc-service-to-service/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── apps/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ └── web/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ └── services/
│ │ │ │ │ │ ├── service-a/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ │ └── server.py
│ │ │ │ │ │ └── service-b/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── pyproject.toml
│ │ │ │ │ │ └── server.py
│ │ │ │ │ ├── static-build-routing/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── date.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── static-routes/
│ │ │ │ │ │ ├── vercel.json
│ │ │ │ │ │ └── www/
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── temporary-directory-listing/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ └── .nowignore
│ │ │ │ │ ├── test-clean-urls/
│ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ ├── sub/
│ │ │ │ │ │ │ ├── another.html
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-clean-urls-custom-404/
│ │ │ │ │ │ ├── 404.html
│ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ ├── contact/
│ │ │ │ │ │ │ └── me.html
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-clean-urls-trailing-slash/
│ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ ├── sub/
│ │ │ │ │ │ │ ├── another.html
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-clean-urls-with-output-directory/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── public/
│ │ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ │ └── sub/
│ │ │ │ │ │ │ ├── another.html
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-cors-routes/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── status.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-external-rewrites-and-redirects/
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-rewrites/
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-rewrites-with-segments/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ ├── [username].js
│ │ │ │ │ │ │ ├── fourty-two.js
│ │ │ │ │ │ │ └── users/
│ │ │ │ │ │ │ └── [id].js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-routing-case-sensitive/
│ │ │ │ │ │ ├── lower.html
│ │ │ │ │ │ ├── upper.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-trailing-slash/
│ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ ├── sub/
│ │ │ │ │ │ │ ├── another.html
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-trailing-slash-custom-404/
│ │ │ │ │ │ ├── 404.html
│ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ ├── contact/
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-trailing-slash-false/
│ │ │ │ │ │ ├── about.html
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ ├── style.css
│ │ │ │ │ │ ├── sub/
│ │ │ │ │ │ │ ├── another.html
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── test-zero-config-rewrite/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── echo/
│ │ │ │ │ │ │ └── [id].js
│ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── trigger-static-build/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ └── index.txt
│ │ │ │ │ ├── vercel-ts-test/
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── test.ts
│ │ │ │ │ │ ├── backend/
│ │ │ │ │ │ │ └── app.ts
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── yarn.lock
│ │ │ │ │ └── vite-dev/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── src/
│ │ │ │ │ │ ├── App.vue
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── HelloWorld.vue
│ │ │ │ │ │ └── main.js
│ │ │ │ │ ├── vercel.json
│ │ │ │ │ └── vite.config.js
│ │ │ │ ├── integration-1.test.ts
│ │ │ │ ├── integration-2.test.ts
│ │ │ │ ├── integration-3.test.ts
│ │ │ │ ├── integration-4.test.ts
│ │ │ │ ├── integration-5.test.ts
│ │ │ │ └── utils.ts
│ │ │ ├── fixtures/
│ │ │ │ ├── e2e/
│ │ │ │ │ ├── cli-extension/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── cli-extension-exit-code/
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── cli-extension-fail/
│ │ │ │ │ │ ├── bin.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ └── cli-extension-whoami/
│ │ │ │ │ ├── bin.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── package.json
│ │ │ │ └── unit/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── build-output-api-failed-before-builds/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ └── .vercel/
│ │ │ │ │ ├── output/
│ │ │ │ │ │ └── builds.json
│ │ │ │ │ └── project.json
│ │ │ │ ├── build-output-api-failed-within-build/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ └── .vercel/
│ │ │ │ │ ├── output/
│ │ │ │ │ │ └── builds.json
│ │ │ │ │ └── project.json
│ │ │ │ ├── build-output-api-preview/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ └── .vercel/
│ │ │ │ │ ├── output/
│ │ │ │ │ │ └── builds.json
│ │ │ │ │ └── project.json
│ │ │ │ ├── build-output-api-production/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ └── .vercel/
│ │ │ │ │ ├── output/
│ │ │ │ │ │ └── builds.json
│ │ │ │ │ └── project.json
│ │ │ │ ├── commands/
│ │ │ │ │ ├── build/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── build-output-api-with-api-dir/
│ │ │ │ │ │ │ ├── .gitiignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ ├── build.mjs
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── discontinued-nodejs12.x/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── index.php
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── edge-function/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ ├── builders/
│ │ │ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ │ │ └── node_modules/
│ │ │ │ │ │ │ │ │ └── edge-function/
│ │ │ │ │ │ │ │ │ ├── builder.js
│ │ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── edge.js
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── env-from-vc-pull/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ ├── .env.preview.local
│ │ │ │ │ │ │ │ ├── .env.production.local
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── env.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── env-root-level/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── env.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── error-vercel-json-validation/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── express-with-routes-json/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ ├── project.json
│ │ │ │ │ │ │ │ └── routes.json
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── functions-symlink/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ ├── builders/
│ │ │ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ │ │ └── node_modules/
│ │ │ │ │ │ │ │ │ └── functions-symlink/
│ │ │ │ │ │ │ │ │ ├── main.js
│ │ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── images/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── import-from-main-keys/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ ├── prefer-browser.js
│ │ │ │ │ │ │ │ ├── prefer-main.js
│ │ │ │ │ │ │ │ ├── prefer-module.js
│ │ │ │ │ │ │ │ ├── use-browser.js
│ │ │ │ │ │ │ │ ├── use-classic.js
│ │ │ │ │ │ │ │ ├── use-main.js
│ │ │ │ │ │ │ │ └── use-module.js
│ │ │ │ │ │ │ └── packages/
│ │ │ │ │ │ │ ├── only-browser/
│ │ │ │ │ │ │ │ ├── dist-browser.js
│ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ ├── only-classic/
│ │ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ ├── only-main/
│ │ │ │ │ │ │ │ ├── dist-main.js
│ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ ├── only-module/
│ │ │ │ │ │ │ │ ├── dist-module.js
│ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ ├── prefer-browser/
│ │ │ │ │ │ │ │ ├── dist-browser.js
│ │ │ │ │ │ │ │ ├── dist-main.js
│ │ │ │ │ │ │ │ ├── dist-module.js
│ │ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ ├── prefer-main/
│ │ │ │ │ │ │ │ ├── dist-main.js
│ │ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ └── prefer-module/
│ │ │ │ │ │ │ ├── dist-main.js
│ │ │ │ │ │ │ ├── dist-module.js
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── invalid-rewrites/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── lambda-with-128-memory/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── memory.js
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── local-config/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── main.html
│ │ │ │ │ │ │ ├── test.html
│ │ │ │ │ │ │ ├── vercel-test.json
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── middleware/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── middleware.js
│ │ │ │ │ │ ├── middleware-root-directory/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── sub/
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── middleware.js
│ │ │ │ │ │ ├── middleware-with-matcher/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── middleware.js
│ │ │ │ │ │ ├── minimal-nextjs/
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── monorepo/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── apps/
│ │ │ │ │ │ │ │ └── nextjs/
│ │ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ │ ├── next.config.js
│ │ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ │ └── pages/
│ │ │ │ │ │ │ │ └── index.jsx
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── multi-build-output-config/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ ├── builders/
│ │ │ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ │ │ └── node_modules/
│ │ │ │ │ │ │ │ │ └── boa-builder/
│ │ │ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── first.txt
│ │ │ │ │ │ │ ├── second.txt
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── nextjs-with-speed-insights-package/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── next.config.js
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── nextjs-without-speed-insights-package/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── next.config.js
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── node/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── api/
│ │ │ │ │ │ │ ├── es6.js
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ ├── mjs.mjs
│ │ │ │ │ │ │ └── typescript.ts
│ │ │ │ │ │ ├── node-error/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── api/
│ │ │ │ │ │ │ ├── es6.js
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ ├── mjs.mjs
│ │ │ │ │ │ │ └── typescript.ts
│ │ │ │ │ │ ├── normalize-src/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── server.js
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── now-node-server/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── server.js
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── now-static/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── readme.md
│ │ │ │ │ │ │ ├── vercel.json
│ │ │ │ │ │ │ └── www/
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ ├── npmrc-use-node-version/
│ │ │ │ │ │ │ └── .npmrc
│ │ │ │ │ │ ├── project-settings-env-vars/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── build.cjs
│ │ │ │ │ │ ├── project-settings-override/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── static/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ ├── static-env/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ ├── static-pull/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ ├── static-symlink/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ ├── static-with-ignore/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── .vercelignore
│ │ │ │ │ │ │ ├── build.js
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── public/
│ │ │ │ │ │ │ ├── build.log
│ │ │ │ │ │ │ ├── foo.html
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── temp/
│ │ │ │ │ │ │ └── cache.tmp
│ │ │ │ │ │ ├── static-with-pkg/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── storybook-with-middleware/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .storybook/
│ │ │ │ │ │ │ │ ├── main.ts
│ │ │ │ │ │ │ │ └── preview.ts
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ │ │ └── route.ts
│ │ │ │ │ │ │ │ ├── globals.css
│ │ │ │ │ │ │ │ ├── layout.tsx
│ │ │ │ │ │ │ │ ├── page.module.css
│ │ │ │ │ │ │ │ └── page.tsx
│ │ │ │ │ │ │ ├── middleware.ts
│ │ │ │ │ │ │ ├── next.config.js
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ ├── stories/
│ │ │ │ │ │ │ │ ├── Button.stories.ts
│ │ │ │ │ │ │ │ ├── Button.tsx
│ │ │ │ │ │ │ │ ├── Header.stories.ts
│ │ │ │ │ │ │ │ ├── Header.tsx
│ │ │ │ │ │ │ │ ├── Introduction.mdx
│ │ │ │ │ │ │ │ ├── Page.stories.ts
│ │ │ │ │ │ │ │ ├── Page.tsx
│ │ │ │ │ │ │ │ ├── button.css
│ │ │ │ │ │ │ │ ├── header.css
│ │ │ │ │ │ │ │ └── page.css
│ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ ├── third-party-builder/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ ├── builders/
│ │ │ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ │ │ └── node_modules/
│ │ │ │ │ │ │ │ │ └── txt-builder/
│ │ │ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── foo.txt
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── turborepo-hono-monorepo/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── apps/
│ │ │ │ │ │ │ │ └── api/
│ │ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ ├── packages/
│ │ │ │ │ │ │ │ └── echo/
│ │ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ │ │ └── index.ts
│ │ │ │ │ │ │ │ └── tsconfig.json
│ │ │ │ │ │ │ ├── pnpm-workspace.yaml
│ │ │ │ │ │ │ └── turbo.json
│ │ │ │ │ │ ├── vercel-analytics-id/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── env.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── versionless-builder/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ ├── builders/
│ │ │ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ │ │ └── node_modules/
│ │ │ │ │ │ │ │ │ └── versionless-builder/
│ │ │ │ │ │ │ │ │ ├── main.js
│ │ │ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── with-cron/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── cron-job.js
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── with-cron-merge/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── cron-job.js
│ │ │ │ │ │ │ ├── build.js
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ ├── output/
│ │ │ │ │ │ │ │ └── config.json
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── with-flags/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── build.js
│ │ │ │ │ │ │ ├── config.json
│ │ │ │ │ │ │ ├── flags.json
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── with-invalid-opentelemetry-api/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── index.mjs
│ │ │ │ │ │ │ ├── env.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── with-invalid-opentelemetry-sdk/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── index.mjs
│ │ │ │ │ │ │ ├── env.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── with-invalid-vercel-otel/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── index.mjs
│ │ │ │ │ │ │ ├── env.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── with-services-cron/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── with-services-shared-source/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── vercel.json
│ │ │ │ │ │ │ └── worker.js
│ │ │ │ │ │ ├── with-valid-opentelemetry-api/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── index.mjs
│ │ │ │ │ │ │ ├── env.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── with-valid-opentelemetry-sdk/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── index.mjs
│ │ │ │ │ │ │ ├── env.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ └── with-valid-vercel-otel/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ └── index.mjs
│ │ │ │ │ │ ├── env.js
│ │ │ │ │ │ └── package.json
│ │ │ │ │ ├── deploy/
│ │ │ │ │ │ ├── legacy-builds/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ ├── monorepo-static/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── repo.json
│ │ │ │ │ │ │ └── app/
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── style.css
│ │ │ │ │ │ ├── node/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ ├── es6.js
│ │ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ │ ├── mjs.mjs
│ │ │ │ │ │ │ │ └── typescript.ts
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── node-low-starting-range/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── node-low-version/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── api/
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ └── package.json
│ │ │ │ │ │ ├── static/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── index.html
│ │ │ │ │ │ │ └── style.css
│ │ │ │ │ │ ├── static-with-build-output/
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ ├── output/
│ │ │ │ │ │ │ │ │ ├── builds.json
│ │ │ │ │ │ │ │ │ ├── config.json
│ │ │ │ │ │ │ │ │ ├── provision.json
│ │ │ │ │ │ │ │ │ └── static/
│ │ │ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── index.html
│ │ │ │ │ │ └── unlinked/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── env/
│ │ │ │ │ │ ├── vercel-env-ls/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ └── vercel.json
│ │ │ │ │ │ └── vercel-env-rm/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── flags/
│ │ │ │ │ │ └── vercel-flags-test/
│ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── git/
│ │ │ │ │ │ └── connect/
│ │ │ │ │ │ ├── bad-remote-url/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── git/
│ │ │ │ │ │ │ └── config
│ │ │ │ │ │ ├── existing-connection/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── git/
│ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ └── description
│ │ │ │ │ │ ├── invalid-repo/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── git/
│ │ │ │ │ │ │ └── config
│ │ │ │ │ │ ├── multiple-remotes/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── git/
│ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ └── description
│ │ │ │ │ │ ├── new-connection/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── git/
│ │ │ │ │ │ │ └── config
│ │ │ │ │ │ ├── no-git-config/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ └── .vercel/
│ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ ├── no-remote-url/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── git/
│ │ │ │ │ │ │ └── config
│ │ │ │ │ │ ├── same-repo-connection/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ │ └── git/
│ │ │ │ │ │ │ └── config
│ │ │ │ │ │ └── unlinked/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ └── git/
│ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ └── description
│ │ │ │ │ ├── integration/
│ │ │ │ │ │ ├── disconnect/
│ │ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ │ └── .vercel/
│ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ └── list/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ └── .vercel/
│ │ │ │ │ │ └── project.json
│ │ │ │ │ ├── list/
│ │ │ │ │ │ └── with-team/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ └── .vercel/
│ │ │ │ │ │ └── project.json
│ │ │ │ │ ├── logs/
│ │ │ │ │ │ └── linked-project/
│ │ │ │ │ │ └── .vercel/
│ │ │ │ │ │ └── project.json
│ │ │ │ │ ├── metrics/
│ │ │ │ │ │ └── linked-project/
│ │ │ │ │ │ └── .vercel/
│ │ │ │ │ │ └── project.json
│ │ │ │ │ ├── promote/
│ │ │ │ │ │ └── simple-next-site/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ ├── redeploy/
│ │ │ │ │ │ └── simple-static/
│ │ │ │ │ │ └── index.html
│ │ │ │ │ ├── redirects/
│ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── sample.csv
│ │ │ │ │ │ └── sample.json
│ │ │ │ │ ├── rollback/
│ │ │ │ │ │ └── simple-next-site/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ └── vercel.json
│ │ │ │ │ └── routes/
│ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ └── project.json
│ │ │ │ │ └── package.json
│ │ │ │ ├── create-git-meta/
│ │ │ │ │ ├── connected-repo/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── .vercel/
│ │ │ │ │ │ │ └── project.json
│ │ │ │ │ │ ├── git/
│ │ │ │ │ │ │ ├── COMMIT_EDITMSG
│ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── description
│ │ │ │ │ │ │ ├── objects/
│ │ │ │ │ │ │ │ ├── 45/
│ │ │ │ │ │ │ │ │ └── b983be36b73c0788dc9cbcb76cbb80fc7bb057
│ │ │ │ │ │ │ │ ├── 80/
│ │ │ │ │ │ │ │ │ └── 50816205303e5957b2909083c50677930d5b29
│ │ │ │ │ │ │ │ └── b2/
│ │ │ │ │ │ │ │ └── e4d98c09ed53967b0a8f67c293c04ca4173438
│ │ │ │ │ │ │ └── refs/
│ │ │ │ │ │ │ └── heads/
│ │ │ │ │ │ │ └── master
│ │ │ │ │ │ └── index.txt
│ │ │ │ │ ├── dirty/
│ │ │ │ │ │ ├── git/
│ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── description
│ │ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ │ ├── applypatch-msg.sample
│ │ │ │ │ │ │ │ ├── commit-msg.sample
│ │ │ │ │ │ │ │ ├── fsmonitor-watchman.sample
│ │ │ │ │ │ │ │ ├── post-update.sample
│ │ │ │ │ │ │ │ ├── pre-applypatch.sample
│ │ │ │ │ │ │ │ ├── pre-commit.sample
│ │ │ │ │ │ │ │ ├── pre-merge-commit.sample
│ │ │ │ │ │ │ │ ├── pre-push.sample
│ │ │ │ │ │ │ │ ├── pre-rebase.sample
│ │ │ │ │ │ │ │ ├── pre-receive.sample
│ │ │ │ │ │ │ │ ├── prepare-commit-msg.sample
│ │ │ │ │ │ │ │ ├── push-to-checkout.sample
│ │ │ │ │ │ │ │ └── update.sample
│ │ │ │ │ │ │ └── info/
│ │ │ │ │ │ │ └── exclude
│ │ │ │ │ │ └── uncommitted.txt
│ │ │ │ │ ├── git-corrupt/
│ │ │ │ │ │ └── git/
│ │ │ │ │ │ └── config
│ │ │ │ │ ├── multiple-remotes/
│ │ │ │ │ │ └── git/
│ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ └── description
│ │ │ │ │ ├── no-email/
│ │ │ │ │ │ └── git/
│ │ │ │ │ │ └── config
│ │ │ │ │ ├── no-origin/
│ │ │ │ │ │ └── git/
│ │ │ │ │ │ ├── COMMIT_EDITMSG
│ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ ├── description
│ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ ├── applypatch-msg.sample
│ │ │ │ │ │ │ ├── commit-msg.sample
│ │ │ │ │ │ │ ├── fsmonitor-watchman.sample
│ │ │ │ │ │ │ ├── post-update.sample
│ │ │ │ │ │ │ ├── pre-applypatch.sample
│ │ │ │ │ │ │ ├── pre-commit.sample
│ │ │ │ │ │ │ ├── pre-merge-commit.sample
│ │ │ │ │ │ │ ├── pre-push.sample
│ │ │ │ │ │ │ ├── pre-rebase.sample
│ │ │ │ │ │ │ ├── pre-receive.sample
│ │ │ │ │ │ │ ├── prepare-commit-msg.sample
│ │ │ │ │ │ │ ├── push-to-checkout.sample
│ │ │ │ │ │ │ └── update.sample
│ │ │ │ │ │ ├── index
│ │ │ │ │ │ ├── info/
│ │ │ │ │ │ │ └── exclude
│ │ │ │ │ │ ├── logs/
│ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ └── refs/
│ │ │ │ │ │ │ └── heads/
│ │ │ │ │ │ │ └── master
│ │ │ │ │ │ ├── objects/
│ │ │ │ │ │ │ ├── 04/
│ │ │ │ │ │ │ │ └── 99dbfa2f58cd8b3b3ce5b2c02a24200862ac97
│ │ │ │ │ │ │ └── 4b/
│ │ │ │ │ │ │ └── 825dc642cb6eb9a060e54bf8d69288fbee4904
│ │ │ │ │ │ └── refs/
│ │ │ │ │ │ └── heads/
│ │ │ │ │ │ └── master
│ │ │ │ │ ├── not-dirty/
│ │ │ │ │ │ ├── committed.txt
│ │ │ │ │ │ └── git/
│ │ │ │ │ │ ├── COMMIT_EDITMSG
│ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ ├── description
│ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ ├── applypatch-msg.sample
│ │ │ │ │ │ │ ├── commit-msg.sample
│ │ │ │ │ │ │ ├── fsmonitor-watchman.sample
│ │ │ │ │ │ │ ├── post-update.sample
│ │ │ │ │ │ │ ├── pre-applypatch.sample
│ │ │ │ │ │ │ ├── pre-commit.sample
│ │ │ │ │ │ │ ├── pre-merge-commit.sample
│ │ │ │ │ │ │ ├── pre-push.sample
│ │ │ │ │ │ │ ├── pre-rebase.sample
│ │ │ │ │ │ │ ├── pre-receive.sample
│ │ │ │ │ │ │ ├── prepare-commit-msg.sample
│ │ │ │ │ │ │ ├── push-to-checkout.sample
│ │ │ │ │ │ │ └── update.sample
│ │ │ │ │ │ ├── index
│ │ │ │ │ │ ├── info/
│ │ │ │ │ │ │ └── exclude
│ │ │ │ │ │ ├── logs/
│ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ └── refs/
│ │ │ │ │ │ │ └── heads/
│ │ │ │ │ │ │ └── master
│ │ │ │ │ │ ├── objects/
│ │ │ │ │ │ │ ├── 14/
│ │ │ │ │ │ │ │ └── 4ad307295b4476bb95684638d89245959ee6fd
│ │ │ │ │ │ │ ├── 32/
│ │ │ │ │ │ │ │ └── f95c0d1244a78b2be1bab8de17906fabb2c4a8
│ │ │ │ │ │ │ ├── 4b/
│ │ │ │ │ │ │ │ └── 825dc642cb6eb9a060e54bf8d69288fbee4904
│ │ │ │ │ │ │ └── dc/
│ │ │ │ │ │ │ └── 8a813395dda63
================================================
FILE CONTENTS
================================================
================================================
FILE: .changeset/README.md
================================================
# Changesets
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
================================================
FILE: .changeset/config.json
================================================
{
"$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json",
"changelog": [
"@svitejs/changesets-changelog-github-compact",
{
"repo": "vercel/vercel"
}
],
"commit": false,
"fixed": [],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": [
"api",
"examples",
"@vercel-internals/*"
],
"privatePackages": {
"version": true,
"tag": true
}
}
================================================
FILE: .changeset/dirty-fans-suffer.md
================================================
---
'@vercel/next': patch
---
Update to latest Next.js adapter
================================================
FILE: .changeset/fix-cli-evals-setup.md
================================================
---
---
fix(cli): fix eval sandbox setup and multi-product-install assertion
- Pre-write `.vercel/project.json` in Docker sandbox so agents don't need to manually link projects
- Fix `multi-product-install` eval to match actual CLI slug `upstash/upstash-kv`
- Change eval cron from hourly to weekly (Tuesday 9 AM UTC)
================================================
FILE: .changeset/node-security-2026-03-24.md
================================================
---
---
Bump CI and local Node.js pins to the 2026-03-24 security releases (20.20.2, 22.22.2, 24.14.1). `uv.lock` is unchanged: PyPI does not yet publish `nodejs-wheel-binaries` matching the patched Node 24.14.1 release; bump the lock when that wheel is available.
================================================
FILE: .changeset/odd-bugs-approve.md
================================================
---
'vercel': patch
---
Improve `vercel link` by searching matching project names across teams by default, with clearer linking choices when multiple matches are found.
================================================
FILE: .claude/skills/vercel-runtime-implementation-guide.md
================================================
# Vercel Runtime Implementation Guide
Guide for building Vercel runtimes that implement the Fluid IPC protocol.
**Reference implementations:**
- Node.js: `packages/node/` (interpreted, primary reference)
- Python: `packages/python/` (interpreted, WSGI/ASGI)
- Rust: `packages/rust/` + `crates/vercel_runtime/` (compiled)
**Documentation:** `DEVELOPING_A_RUNTIME.md`
## Fluid Compute Overview
Fluid compute enables HTTP streaming, request multiplexing, and efficient resource utilization via a secure TCP-based IPC protocol between Vercel's infrastructure and function instances.
The **Rust core** wraps language processes, communicating via HTTP locally and IPC to the Function Router for response streaming and health metrics.
## IPC Protocol
Connect to Unix socket at `VERCEL_IPC_PATH`. Messages are JSON terminated with `\0`.
### Message Types
**`server-started`** (required, once at startup):
```json
{
"type": "server-started",
"payload": { "initDuration": 150, "httpPort": 3000 }
}
```
**`handler-started`** (deprecated):
Replaced by the `/_vercel/ping` endpoint. Harmless if present.
**`end`** (required, per request):
```json
{
"type": "end",
"payload": {
"context": { "invocationId": "abc123", "requestId": 42 },
"error": null
}
}
```
**`log`** (optional, base64-encoded message):
```json
{
"type": "log",
"payload": {
"context": { "invocationId": "abc123", "requestId": 42 },
"message": "SGVsbG8=",
"level": "info"
}
}
```
Use `"stream": "stdout"` or `"stderr"` instead of `level` for raw output.
**`metric`** (optional, for fetch instrumentation):
```json
{"type": "metric", "payload": {"context": {...}, "type": "fetch-metric", "payload": {"pathname": "/api", "duration": 45, "host": "example.com", "statusCode": 200, "method": "GET", "id": 1}}}
```
### Request Context Headers
Extract and remove before passing to user code:
- `x-vercel-internal-invocation-id` → `invocationId` (string)
- `x-vercel-internal-request-id` → `requestId` (integer)
- `x-vercel-internal-span-id`, `x-vercel-internal-trace-id` → remove
### Health Check
Return HTTP 200 for `/_vercel/ping`. Do NOT send IPC messages.
Used for healthchecks and latency measurements.
## Implementation Checklist
### Runtime (Language-side)
- [ ] Connect to `VERCEL_IPC_PATH` Unix socket
- [ ] Send `server-started` after HTTP server binds
- [ ] Extract/remove `x-vercel-internal-*` headers per request
- [ ] Send `handler-started` at request start
- [ ] Set up request context storage (thread-local/context vars)
- [ ] Intercept stdout/stderr/logging → IPC with context
- [ ] Send `end` after each request (even on errors)
- [ ] Handle `/_vercel/ping` health checks
- [ ] Buffer logs before `server-started`, flush after or to stderr on exit
- [ ] Support concurrent requests
- [ ] Implement `waitUntil` API (wait for promises before exit with 30s timeout)
### Builder (TypeScript)
- [ ] Export `version = 3`
- [ ] Export `build()` → `{ output: Lambda }`
- [ ] Export `startDevServer()` for `vercel dev` (optional)
- [ ] Export `prepareCache()` for build caching (optional)
## Builder Implementation
See `DEVELOPING_A_RUNTIME.md` for full API documentation.
### Interpreted Languages
Reference: `packages/node/src/build.ts`, `packages/python/src/index.ts`
Use standard Lambda runtimes (`nodejs22.x`, `python3.12`, etc.).
### Compiled Languages
Reference: `packages/rust/src/index.ts`
Use `runtime: 'executable'` with `runtimeLanguage: 'rust' | 'go'` for IPC orchestration. The handler must be named `executable`.
### Key Lambda Options
| Property | Description |
| --------------------------- | ----------------------------------------------------------------- |
| `handler` | Entry point (`index.handler` for node, `executable` for compiled) |
| `runtime` | `nodejs22.x`, `python3.12`, or `executable` for compiled |
| `runtimeLanguage` | `'go'` or `'rust'` for executable runtime |
| `architecture` | `'x86_64'` or `'arm64'` |
| `supportsResponseStreaming` | Enable streaming responses |
## Common Pitfalls
1. Missing `\0` terminator on IPC messages
2. Forgetting base64 encoding for log messages
3. Not removing `x-vercel-internal-*` headers
4. Blocking on IPC during init (buffer logs first)
5. Missing `/_vercel/ping` handler
6. Not sending `end` on errors
7. Blocking concurrent requests (limits Fluid compute benefits)
8. Buffering entire responses (stream chunks instead)
## Publishing
- Use `peerDependencies` for `@vercel/build-utils`
- Reference via `"use": "@vercel/your-runtime"` in vercel.json
- Create changeset: `pnpm changeset`
================================================
FILE: .editorconfig
================================================
root = true
[*]
indent_style = space
indent_size = 2
tab_width = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[{*.json,*.json.example,*.gyp,*.yml,*.yaml}]
indent_style = space
indent_size = 2
[{*.py,*.asm}]
indent_style = space
[*.py]
indent_size = 4
[*.go]
indent_style = tab
indent_size = 4
tab_width = 4
[*.asm]
indent_size = 8
[*.md]
trim_trailing_whitespace = false
# Ideal settings - some plugins might support these.
[*.js]
quote_type = single
[{*.c,*.cc,*.h,*.hh,*.cpp,*.hpp,*.m,*.mm,*.mpp,*.js,*.java,*.go,*.rs,*.php,*.ng,*.jsx,*.ts,*.d,*.cs,*.swift}]
curly_bracket_next_line = false
spaces_around_operators = true
spaces_around_brackets = outside
# close enough to 1TB
indent_brace_style = K&R
================================================
FILE: .gitattributes
================================================
# Ignore test fixtures in GitHub Languages
# See https://github.com/github/linguist#vendored-code
examples/* linguist-vendored
utils/* linguist-vendored
test/* linguist-vendored
packages/*/test/* linguist-vendored
# Go build fails with Windows line endings.
*.go text eol=lf
go.mod text eol=lf
# Mark certain files as "binary" -- hide diffs
**/test/fixtures/**/git/**/* binary
**/test/fixtures/**/git/**/* linguist-generated
.github/workflows/*.lock.yml linguist-generated=true merge=ours
================================================
FILE: .github/AFFECTED_TESTING.md
================================================
# Affected Testing Strategy
This repository implements an affected testing strategy, which runs tests only on packages that have been changed or are affected by changes.
## How It Works
1. **Git Change Detection**: Uses turborepos's GraphQL query API to detect which packages have been modified since a base commit
2. **Affected Package Resolution**: Finds packages that:
- Have direct file changes
- Depend on packages that have changed
- Have test-related tasks (test, vitest, type-check)
3. **E2E Tests**: Analyzes changed files to determine when to run all e2e tests:
- Infrastructure changes (CI workflows, turbo.json, root package.json) trigger all e2e tests
- Build utility changes trigger all e2e tests
- Package-specific changes only trigger affected package e2e tests
4. **Selective Testing**: Only runs tests for affected packages using turbo's `--filter` functionality
## Key Files
- `utils/affected-query.gql` - GraphQL query for turbo to find affected packages
- `utils/get-affected-packages.js` - Script that queries turbo and filters affected packages
- `utils/chunk-tests.js` - Updated to use affected package detection
- `utils/test-affected.js` - Local testing script to preview affected packages
- `.github/workflows/test.yml` - Updated CI workflow
## Local Testing
To test the affected package detection locally:
```bash
# Test against a specific commit
node utils/test-affected.js main
# Test against current environment
TURBO_BASE_SHA=main node utils/test-affected.js
```
## CI Behavior
### Pull Requests
- Compares against the PR base branch to find affected packages
- Only runs tests for packages that have been modified or depend on modified packages
- Significantly reduces CI time for targeted changes
### Main Branch / Full Runs
- When no base SHA is available, falls back to testing all packages
- Ensures comprehensive testing when needed
## Environment Variables
- `TURBO_BASE_SHA`: Base commit SHA to compare changes against
- `GITHUB_BASE_REF`: Fallback for GitHub Actions environment
## E2E Test Handling
The system has special logic for e2e tests since they often test cross-package integration:
### Infrastructure Files That Trigger All E2E Tests
- `.github/workflows/` - CI workflow changes
- `turbo.json` - Turbo configuration changes
- `package.json` - Root dependency changes
- `pnpm-lock.yaml` - Lock file changes
- `utils/*.js` - Build/test utility changes
- `test/lib/` - Shared test utilities
- `packages/cli/scripts/start.js` - CLI entry point
- `packages/build-utils/src/` - Build utilities affecting all builders
## Implementation Details
The affected testing works by:
1. Using turbo's GraphQL API to query for packages affected by changes since the base commit
2. Filtering packages that have test-related tasks
3. Analyzing changed files for infrastructure changes that affect e2e tests globally
4. Generating turbo filters like `--filter=package-name...` (the `...` includes dependents)
5. Passing these filters to turbo commands to limit scope
This approach ensures that:
- If package A changes, package A and packages that depend on A are tested
- If infrastructure changes, all e2e tests run to catch integration issues
- Unit tests still only run for directly affected packages
================================================
FILE: .github/CODEOWNERS
================================================
# Documentation
# https://help.github.com/en/articles/about-code-owners
# Restricted Paths
* @vercel/ci-cd
/.github/workflows @vercel/ci-cd @ijjk
/packages/fs-detectors @vercel/ci-cd @vercel/team-python @agadzik
/packages/next @vercel/ci-cd @timneutkens @ijjk @ztanner @huozhi
/packages/routing-utils @vercel/ci-cd @ijjk
/packages/static-build @vercel/ci-cd
/packages/edge @vercel/ci-cd @vercel/compute
/packages/functions @vercel/ci-cd @vercel/compute @kldavis4
/packages/go @vercel/ci-cd @vercel/team-python
/packages/ruby @vercel/ci-cd @vercel/team-python
/packages/rust @vercel/ci-cd @vercel/team-python @vercel/compute @ecklf
/crates @vercel/ci-cd @vercel/compute @ecklf
/Cargo.* @vercel/ci-cd @vercel/compute @ecklf
/packages/firewall @vercel/ci-cd @cramforce @sueplex @quuu @ctgowrie
/packages/mcp-adapter @vercel/ci-cd @cramforce @quuu
/examples/create-react-app @vercel/ci-cd @Timer
/examples/nextjs @vercel/ci-cd @ijjk @ztanner @huozhi
/packages/node @vercel/ci-cd
/packages/related-projects @vercel/ci-cd @mknichel
/packages/oidc @vercel/ci-cd @vercel/identity-and-access-management
/packages/oidc-aws-credentials-provider @vercel/ci-cd @vercel/identity-and-access-management
/packages/config @vercel/ci-cd @MatthewStanciu
/packages/cli/ @vercel/ci-cd @vercel/vercel-cli-approvers
/packages/cli/test/unit/commands/build/emit-flags-definitions.test.ts @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/flags
/packages/cli/src/commands/install/ @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/marketplace
/packages/cli/src/commands/integration/ @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/marketplace
/packages/cli/src/commands/integration-resource/ @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/marketplace
/packages/cli/src/commands/flags @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/flags
/packages/cli/src/commands/login @vercel/ci-cd @vercel/identity-and-access-management
/packages/cli/src/commands/logout @vercel/ci-cd @vercel/identity-and-access-management
/packages/cli/src/commands/teams @vercel/ci-cd @vercel/identity-and-access-management
/packages/cli/src/util/login @vercel/ci-cd @vercel/identity-and-access-management
/packages/cli/src/util/teams @vercel/ci-cd @vercel/identity-and-access-management
/packages/cli/test/unit/util/login @vercel/ci-cd @vercel/identity-and-access-management
/packages/cli/src/util/integration/ @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/marketplace
/packages/cli/src/util/integration-resource/ @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/marketplace
/packages/cli/src/util/telemetry/commands/integration/ @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/marketplace
/packages/cli/test/mocks/integration.ts @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/marketplace
/packages/cli/test/unit/commands/install/ @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/marketplace
/packages/cli/test/unit/commands/integration/ @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/marketplace
/packages/cli/test/unit/commands/integration-resource/ @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/marketplace
/packages/cli/test/unit/util/integration/ @vercel/ci-cd @vercel/vercel-cli-approvers @vercel/marketplace
/packages/cli-auth/ @vercel/ci-cd @vercel/vercel-cli-approvers
/packages/client/ @vercel/ci-cd @vercel/vercel-cli-approvers
/packages/frameworks/ @vercel/ci-cd @vercel/vercel-cli-approvers
/packages/error-utils/ @vercel/ci-cd @vercel/vercel-cli-approvers
/packages/detect-agent/ @vercel/ci-cd @vercel/vercel-cli-approvers
/packages/python* @vercel/ci-cd @vercel/team-python
/python @vercel/ci-cd @vercel/team-python
/.github/workflows/*python*.yml @vercel/ci-cd @vercel/team-python
/.claude/skills/vercel-runtime-* @vercel/ci-cd @vercel/compute
# Unrestricted Paths
# These paths are updated by the changeset CLI for "Version Packages" pull requests
.changeset/
/packages/*/CHANGELOG.md
/packages/*/package.json
/pnpm-lock.yaml
================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
## Code of Conduct
### Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
### Our Standards
Examples of behavior that contributes to creating a positive environment
include:
- Using welcoming and inclusive language
- Being respectful of differing viewpoints and experiences
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
- The use of sexualized language or imagery and unwelcome sexual attention or
advances
- Trolling, insulting/derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or electronic
address, without explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting
### Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
### Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
### Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at [coc@vercel.com](mailto:coc@vercel.com). All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
### Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
================================================
FILE: .github/CONTRIBUTING.md
================================================
## Contributing
See the [Contributing Guidelines](../README.md#contributing) for more details.
================================================
FILE: .github/DISCUSSION_TEMPLATE/general.yml
================================================
body:
- type: markdown
attributes:
value: |
# Please go to Vercel Community
> [!IMPORTANT]
> **New Discussions in this repo are no longer actively monitored and will be automatically closed. Please go to the new [Vercel Community](https://community.vercel.com).**
- type: textarea
attributes:
label: Description
validations:
required: true
================================================
FILE: .github/DISCUSSION_TEMPLATE/help.yml
================================================
body:
- type: markdown
attributes:
value: |
# Please go to Vercel Community
> [!IMPORTANT]
> **New Discussions in this repo are no longer actively monitored and will be automatically closed. Please go to the new [Vercel Community](https://community.vercel.com).**
- type: textarea
attributes:
label: Question
validations:
required: true
================================================
FILE: .github/DISCUSSION_TEMPLATE/ideas.yml
================================================
body:
- type: markdown
attributes:
value: |
# Please go to Vercel Community
> [!IMPORTANT]
> **New Discussions in this repo are no longer actively monitored and will be automatically closed. Please go to the new [Vercel Community](https://community.vercel.com).**
- type: textarea
attributes:
label: Idea
validations:
required: true
================================================
FILE: .github/DISCUSSION_TEMPLATE/show-and-tell.yml
================================================
body:
- type: markdown
attributes:
value: |
# Please go to Vercel Community
> [!IMPORTANT]
> **New Discussions in this repo are no longer actively monitored and will be automatically closed. Please go to the new [Vercel Community](https://community.vercel.com).**
- type: textarea
attributes:
label: Description
validations:
required: true
================================================
FILE: .github/EXAMPLE_README_TEMPLATE.md
================================================
# [Name] Example
This directory is a brief example of a [Name](site-link) site that can be deployed to Vercel with zero configuration.
## Deploy Your Own
Deploy your own [Name] project with Vercel.
[](https://vercel.com/new/clone?repository-url=https://github.com/vercel/vercel/tree/main/example-directory)
### How We Created This Example
To get started with [Name] on Vercel, you can use the [CLI Tool Used](CLI-link) to initialize the project:
```shell
$ vercel init [Name]]
```
### Deploying From Your Terminal
Once initialized, you can deploy the [Name] example with just a single command:
```shell
$ vercel
```
================================================
FILE: .github/ISSUE_TEMPLATE/cli_bug_report.md
================================================
---
name: Vercel CLI Bug report
about: File a bug report for the `vercel` CLI
title: ''
---
**Thanks for reaching out!** We use this Issue tracker for issues with the Vercel CLI and related open source libraries. If you are experiencing an issue with the Vercel CLI please delete this text and describe your issue.
_For general platform help and feedback please open a new discussion at https://community.vercel.com._
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Vercel Platform Bug Report
url: https://vercel.com/help
about: Reach out to our support team
- name: Vercel Platform Feature Request
url: https://community.vercel.com
about: Share ideas for new features
- name: Ask a Question
url: https://community.vercel.com
about: Ask the community for help
================================================
FILE: .github/aw/actions-lock.json
================================================
{
"entries": {
"actions/github-script@v8": {
"repo": "actions/github-script",
"version": "v8",
"sha": "ed597411d8f924073f98dfc5c65a23a2325f34cd"
},
"github/gh-aw/actions/setup@v0.57.2": {
"repo": "github/gh-aw/actions/setup",
"version": "v0.57.2",
"sha": "32b3a711a9ee97d38e3989c90af0385aff0066a7"
}
}
}
================================================
FILE: .github/workflows/agentics-maintenance.yml
================================================
#
# ___ _ _
# / _ \ | | (_)
# | |_| | __ _ ___ _ __ | |_ _ ___
# | _ |/ _` |/ _ \ '_ \| __| |/ __|
# | | | | (_| | __/ | | | |_| | (__
# \_| |_/\__, |\___|_| |_|\__|_|\___|
# __/ |
# _ _ |___/
# | | | | / _| |
# | | | | ___ _ __ _ __| |_| | _____ ____
# | |/\| |/ _ \ '__| |/ /| _| |/ _ \ \ /\ / / ___|
# \ /\ / (_) | | | | ( | | | | (_) \ V V /\__ \
# \/ \/ \___/|_| |_|\_\|_| |_|\___/ \_/\_/ |___/
#
# This file was automatically generated by pkg/workflow/maintenance_workflow.go (v0.57.2). DO NOT EDIT.
#
# To regenerate this workflow, run:
# gh aw compile
# Not all edits will cause changes to this file.
#
# For more information: https://github.github.com/gh-aw/introduction/overview/
#
# Alternative regeneration methods:
# make recompile
#
# Or use the gh-aw CLI directly:
# ./gh-aw compile --validate --verbose
#
# The workflow is generated when any workflow uses the 'expires' field
# in create-discussions, create-issues, or create-pull-request safe-outputs configuration.
# Schedule frequency is automatically determined by the shortest expiration time.
#
name: Agentic Maintenance
on:
schedule:
- cron: "37 */2 * * *" # Every 2 hours (based on minimum expires: 1 days)
workflow_dispatch:
inputs:
operation:
description: 'Optional maintenance operation to run'
required: false
type: choice
default: ''
options:
- ''
- 'disable'
- 'enable'
- 'update'
- 'upgrade'
permissions: {}
jobs:
close-expired-entities:
if: ${{ !github.event.repository.fork && (github.event_name != 'workflow_dispatch' || github.event.inputs.operation == '') }}
runs-on: ubuntu-slim
permissions:
discussions: write
issues: write
pull-requests: write
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@32b3a711a9ee97d38e3989c90af0385aff0066a7 # v0.57.2
with:
destination: /opt/gh-aw/actions
- name: Close expired discussions
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/close_expired_discussions.cjs');
await main();
- name: Close expired issues
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/close_expired_issues.cjs');
await main();
- name: Close expired pull requests
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/close_expired_pull_requests.cjs');
await main();
run_operation:
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.operation != '' && !github.event.repository.fork }}
runs-on: ubuntu-slim
permissions:
actions: write
contents: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Setup Scripts
uses: github/gh-aw/actions/setup@32b3a711a9ee97d38e3989c90af0385aff0066a7 # v0.57.2
with:
destination: /opt/gh-aw/actions
- name: Check admin/maintainer permissions
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/check_team_member.cjs');
await main();
- name: Install gh-aw
uses: github/gh-aw/actions/setup-cli@v0.57.2
with:
version: v0.57.2
- name: Run operation
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GH_AW_OPERATION: ${{ github.event.inputs.operation }}
GH_AW_CMD_PREFIX: gh aw
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/run_operation_update_upgrade.cjs');
await main();
================================================
FILE: .github/workflows/ci-doctor.lock.yml
================================================
#
# ___ _ _
# / _ \ | | (_)
# | |_| | __ _ ___ _ __ | |_ _ ___
# | _ |/ _` |/ _ \ '_ \| __| |/ __|
# | | | | (_| | __/ | | | |_| | (__
# \_| |_/\__, |\___|_| |_|\__|_|\___|
# __/ |
# _ _ |___/
# | | | | / _| |
# | | | | ___ _ __ _ __| |_| | _____ ____
# | |/\| |/ _ \ '__| |/ /| _| |/ _ \ \ /\ / / ___|
# \ /\ / (_) | | | | ( | | | | (_) \ V V /\__ \
# \/ \/ \___/|_| |_|\_\|_| |_|\___/ \_/\_/ |___/
#
# This file was automatically generated by gh-aw (v0.57.2). DO NOT EDIT.
#
# To update this file, edit githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d and run:
# gh aw compile
# Not all edits will cause changes to this file.
#
# For more information: https://github.github.com/gh-aw/introduction/overview/
#
# Investigates failed CI workflows to identify root causes and patterns, creating issues with diagnostic information
#
# Source: githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d
#
# gh-aw-metadata: {"schema_version":"v2","frontmatter_hash":"58637893fadbecb8e1123bf2611feb4c7c137643a8c044f0f7ad603cc330a246","stop_time":"2026-04-11 23:18:25","compiler_version":"v0.57.2","strict":true}
#
# Effective stop-time: 2026-04-11 23:18:25
name: "CI Failure Doctor"
"on":
workflow_run:
# zizmor: ignore[dangerous-triggers] - workflow_run trigger is secured with role and fork validation
types:
- completed
workflows:
- E2E Tests
- Unit Tests
permissions: {}
concurrency:
group: "gh-aw-${{ github.workflow }}"
run-name: "CI Failure Doctor"
jobs:
activation:
needs: pre_activation
# zizmor: ignore[dangerous-triggers] - workflow_run trigger is secured with role and fork validation
if: >
((needs.pre_activation.outputs.activated == 'true') && (github.event.workflow_run.conclusion == 'failure')) &&
((github.event_name != 'workflow_run') || ((github.event.workflow_run.repository.id == github.repository_id) &&
(!(github.event.workflow_run.repository.fork))))
runs-on: ubuntu-slim
permissions:
contents: read
outputs:
comment_id: ""
comment_repo: ""
model: ${{ steps.generate_aw_info.outputs.model }}
secret_verification_result: ${{ steps.validate-secret.outputs.verification_result }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@32b3a711a9ee97d38e3989c90af0385aff0066a7 # v0.57.2
with:
destination: /opt/gh-aw/actions
- name: Generate agentic run info
id: generate_aw_info
env:
GH_AW_INFO_ENGINE_ID: "copilot"
GH_AW_INFO_ENGINE_NAME: "GitHub Copilot CLI"
GH_AW_INFO_MODEL: "gpt-5.1-codex-mini"
GH_AW_INFO_VERSION: ""
GH_AW_INFO_AGENT_VERSION: "latest"
GH_AW_INFO_CLI_VERSION: "v0.57.2"
GH_AW_INFO_WORKFLOW_NAME: "CI Failure Doctor"
GH_AW_INFO_EXPERIMENTAL: "false"
GH_AW_INFO_SUPPORTS_TOOLS_ALLOWLIST: "true"
GH_AW_INFO_STAGED: "false"
GH_AW_INFO_ALLOWED_DOMAINS: '["defaults"]'
GH_AW_INFO_FIREWALL_ENABLED: "true"
GH_AW_INFO_AWF_VERSION: "v0.23.0"
GH_AW_INFO_AWMG_VERSION: ""
GH_AW_INFO_FIREWALL_TYPE: "squid"
GH_AW_COMPILED_STRICT: "true"
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { main } = require('/opt/gh-aw/actions/generate_aw_info.cjs');
await main(core, context);
- name: Validate COPILOT_GITHUB_TOKEN secret
id: validate-secret
run: /opt/gh-aw/actions/validate_multi_secret.sh COPILOT_GITHUB_TOKEN 'GitHub Copilot CLI' https://github.github.com/gh-aw/reference/engines/#github-copilot-default
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
- name: Checkout .github and .agents folders
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
sparse-checkout: |
.github
.agents
sparse-checkout-cone-mode: true
fetch-depth: 1
- name: Check workflow file timestamps
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_FILE: "ci-doctor.lock.yml"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/check_workflow_timestamp_api.cjs');
await main();
- name: Create prompt with built-in context
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_EVENT: ${{ github.event.workflow_run.event }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_HTML_URL: ${{ github.event.workflow_run.html_url }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_ID: ${{ github.event.workflow_run.id }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_RUN_NUMBER: ${{ github.event.workflow_run.run_number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
run: |
bash /opt/gh-aw/actions/create_prompt_first.sh
{
cat << 'GH_AW_PROMPT_EOF'
<system>
GH_AW_PROMPT_EOF
cat "/opt/gh-aw/prompts/xpia.md"
cat "/opt/gh-aw/prompts/temp_folder_prompt.md"
cat "/opt/gh-aw/prompts/markdown.md"
cat "/opt/gh-aw/prompts/cache_memory_prompt.md"
cat "/opt/gh-aw/prompts/safe_outputs_prompt.md"
cat << 'GH_AW_PROMPT_EOF'
<safe-output-tools>
Tools: add_comment, create_issue, update_issue, missing_tool, missing_data, noop
</safe-output-tools>
<github-context>
The following GitHub context information is available for this workflow:
{{#if __GH_AW_GITHUB_ACTOR__ }}
- **actor**: __GH_AW_GITHUB_ACTOR__
{{/if}}
{{#if __GH_AW_GITHUB_REPOSITORY__ }}
- **repository**: __GH_AW_GITHUB_REPOSITORY__
{{/if}}
{{#if __GH_AW_GITHUB_WORKSPACE__ }}
- **workspace**: __GH_AW_GITHUB_WORKSPACE__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_ISSUE_NUMBER__ }}
- **issue-number**: #__GH_AW_GITHUB_EVENT_ISSUE_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__ }}
- **discussion-number**: #__GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__ }}
- **pull-request-number**: #__GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_COMMENT_ID__ }}
- **comment-id**: __GH_AW_GITHUB_EVENT_COMMENT_ID__
{{/if}}
{{#if __GH_AW_GITHUB_RUN_ID__ }}
- **workflow-run-id**: __GH_AW_GITHUB_RUN_ID__
{{/if}}
</github-context>
GH_AW_PROMPT_EOF
cat << 'GH_AW_PROMPT_EOF'
</system>
GH_AW_PROMPT_EOF
cat << 'GH_AW_PROMPT_EOF'
{{#runtime-import .github/workflows/ci-doctor.md}}
GH_AW_PROMPT_EOF
} > "$GH_AW_PROMPT"
- name: Interpolate variables and render templates
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_EVENT: ${{ github.event.workflow_run.event }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_HTML_URL: ${{ github.event.workflow_run.html_url }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_ID: ${{ github.event.workflow_run.id }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_RUN_NUMBER: ${{ github.event.workflow_run.run_number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/interpolate_prompt.cjs');
await main();
- name: Substitute placeholders
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_ALLOWED_EXTENSIONS: ''
GH_AW_CACHE_DESCRIPTION: ''
GH_AW_CACHE_DIR: '/tmp/gh-aw/cache-memory/'
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_CONCLUSION: ${{ github.event.workflow_run.conclusion }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_EVENT: ${{ github.event.workflow_run.event }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_HTML_URL: ${{ github.event.workflow_run.html_url }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_ID: ${{ github.event.workflow_run.id }}
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_RUN_NUMBER: ${{ github.event.workflow_run.run_number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED: ${{ needs.pre_activation.outputs.activated }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const substitutePlaceholders = require('/opt/gh-aw/actions/substitute_placeholders.cjs');
// Call the substitution function
return await substitutePlaceholders({
file: process.env.GH_AW_PROMPT,
substitutions: {
GH_AW_ALLOWED_EXTENSIONS: process.env.GH_AW_ALLOWED_EXTENSIONS,
GH_AW_CACHE_DESCRIPTION: process.env.GH_AW_CACHE_DESCRIPTION,
GH_AW_CACHE_DIR: process.env.GH_AW_CACHE_DIR,
GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR,
GH_AW_GITHUB_EVENT_COMMENT_ID: process.env.GH_AW_GITHUB_EVENT_COMMENT_ID,
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: process.env.GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER,
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: process.env.GH_AW_GITHUB_EVENT_ISSUE_NUMBER,
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: process.env.GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER,
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_CONCLUSION: process.env.GH_AW_GITHUB_EVENT_WORKFLOW_RUN_CONCLUSION,
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_EVENT: process.env.GH_AW_GITHUB_EVENT_WORKFLOW_RUN_EVENT,
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_HEAD_SHA: process.env.GH_AW_GITHUB_EVENT_WORKFLOW_RUN_HEAD_SHA,
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_HTML_URL: process.env.GH_AW_GITHUB_EVENT_WORKFLOW_RUN_HTML_URL,
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_ID: process.env.GH_AW_GITHUB_EVENT_WORKFLOW_RUN_ID,
GH_AW_GITHUB_EVENT_WORKFLOW_RUN_RUN_NUMBER: process.env.GH_AW_GITHUB_EVENT_WORKFLOW_RUN_RUN_NUMBER,
GH_AW_GITHUB_REPOSITORY: process.env.GH_AW_GITHUB_REPOSITORY,
GH_AW_GITHUB_RUN_ID: process.env.GH_AW_GITHUB_RUN_ID,
GH_AW_GITHUB_WORKSPACE: process.env.GH_AW_GITHUB_WORKSPACE,
GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED: process.env.GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED
}
});
- name: Validate prompt placeholders
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
run: bash /opt/gh-aw/actions/validate_prompt_placeholders.sh
- name: Print prompt
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
run: bash /opt/gh-aw/actions/print_prompt_summary.sh
- name: Upload activation artifact
if: success()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: activation
path: |
/tmp/gh-aw/aw_info.json
/tmp/gh-aw/aw-prompts/prompt.txt
retention-days: 1
agent:
needs: activation
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
issues: read
pull-requests: read
concurrency:
group: "gh-aw-copilot-${{ github.workflow }}"
env:
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
GH_AW_ASSETS_ALLOWED_EXTS: ""
GH_AW_ASSETS_BRANCH: ""
GH_AW_ASSETS_MAX_SIZE_KB: 0
GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs
GH_AW_SAFE_OUTPUTS: /opt/gh-aw/safeoutputs/outputs.jsonl
GH_AW_SAFE_OUTPUTS_CONFIG_PATH: /opt/gh-aw/safeoutputs/config.json
GH_AW_SAFE_OUTPUTS_TOOLS_PATH: /opt/gh-aw/safeoutputs/tools.json
GH_AW_WORKFLOW_ID_SANITIZED: cidoctor
outputs:
checkout_pr_success: ${{ steps.checkout-pr.outputs.checkout_pr_success || 'true' }}
detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }}
detection_success: ${{ steps.detection_conclusion.outputs.success }}
has_patch: ${{ steps.collect_output.outputs.has_patch }}
inference_access_error: ${{ steps.detect-inference-error.outputs.inference_access_error || 'false' }}
model: ${{ needs.activation.outputs.model }}
output: ${{ steps.collect_output.outputs.output }}
output_types: ${{ steps.collect_output.outputs.output_types }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@32b3a711a9ee97d38e3989c90af0385aff0066a7 # v0.57.2
with:
destination: /opt/gh-aw/actions
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Create gh-aw temp directory
run: bash /opt/gh-aw/actions/create_gh_aw_tmp_dir.sh
# Cache memory file share configuration from frontmatter processed below
- name: Create cache-memory directory
run: bash /opt/gh-aw/actions/create_cache_memory_dir.sh
- name: Restore cache-memory file share data
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
key: memory-${{ env.GH_AW_WORKFLOW_ID_SANITIZED }}-${{ github.run_id }}
path: /tmp/gh-aw/cache-memory
restore-keys: |
memory-${{ env.GH_AW_WORKFLOW_ID_SANITIZED }}-
- name: Configure Git credentials
env:
REPO_NAME: ${{ github.repository }}
SERVER_URL: ${{ github.server_url }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git config --global am.keepcr true
# Re-authenticate git with GitHub token
SERVER_URL_STRIPPED="${SERVER_URL#https://}"
git remote set-url origin "https://x-access-token:${{ github.token }}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git"
echo "Git configured with standard GitHub Actions identity"
- name: Checkout PR branch
id: checkout-pr
if: |
(github.event.pull_request) || (github.event.issue.pull_request)
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
with:
github-token: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/checkout_pr_branch.cjs');
await main();
- name: Install GitHub Copilot CLI
run: /opt/gh-aw/actions/install_copilot_cli.sh latest
- name: Install awf binary
run: bash /opt/gh-aw/actions/install_awf_binary.sh v0.23.0
- name: Determine automatic lockdown mode for GitHub MCP Server
id: determine-automatic-lockdown
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }}
GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }}
with:
script: |
const determineAutomaticLockdown = require('/opt/gh-aw/actions/determine_automatic_lockdown.cjs');
await determineAutomaticLockdown(github, context, core);
- name: Download container images
run: bash /opt/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-firewall/agent:0.23.0 ghcr.io/github/gh-aw-firewall/api-proxy:0.23.0 ghcr.io/github/gh-aw-firewall/squid:0.23.0 ghcr.io/github/gh-aw-mcpg:v0.1.8 ghcr.io/github/github-mcp-server:v0.32.0 node:lts-alpine
- name: Write Safe Outputs Config
run: |
mkdir -p /opt/gh-aw/safeoutputs
mkdir -p /tmp/gh-aw/safeoutputs
mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs
cat > /opt/gh-aw/safeoutputs/config.json << 'GH_AW_SAFE_OUTPUTS_CONFIG_EOF'
{"add_comment":{"max":1},"create_issue":{"expires":24,"max":1},"missing_data":{},"missing_tool":{},"noop":{"max":1},"update_issue":{"max":1}}
GH_AW_SAFE_OUTPUTS_CONFIG_EOF
cat > /opt/gh-aw/safeoutputs/tools.json << 'GH_AW_SAFE_OUTPUTS_TOOLS_EOF'
[
{
"description": "Create a new GitHub issue for tracking bugs, feature requests, or tasks. Use this for actionable work items that need assignment, labeling, and status tracking. For reports, announcements, or status updates that don't require task tracking, use create_discussion instead. CONSTRAINTS: Maximum 1 issue(s) can be created. Title will be prefixed with \"[CI Failure Doctor] \". Labels [\"cookie\"] will be automatically added.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "Detailed issue description in Markdown. Do NOT repeat the title as a heading since it already appears as the issue's h1. Include context, reproduction steps, or acceptance criteria as appropriate.",
"type": "string"
},
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"labels": {
"description": "Labels to categorize the issue (e.g., 'bug', 'enhancement'). Labels must exist in the repository.",
"items": {
"type": "string"
},
"type": "array"
},
"parent": {
"description": "Parent issue number for creating sub-issues. This is the numeric ID from the GitHub URL (e.g., 42 in github.com/owner/repo/issues/42). Can also be a temporary_id (e.g., 'aw_abc123', 'aw_Test123') from a previously created issue in the same workflow run.",
"type": [
"number",
"string"
]
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
},
"temporary_id": {
"description": "Unique temporary identifier for referencing this issue before it's created. Format: 'aw_' followed by 3 to 12 alphanumeric characters (e.g., 'aw_abc1', 'aw_Test123'). Use '#aw_ID' in body text to reference other issues by their temporary_id; these are replaced with actual issue numbers after creation.",
"pattern": "^aw_[A-Za-z0-9]{3,12}$",
"type": "string"
},
"title": {
"description": "Concise issue title summarizing the bug, feature, or task. The title appears as the main heading, so keep it brief and descriptive.",
"type": "string"
}
},
"required": [
"title",
"body"
],
"type": "object"
},
"name": "create_issue"
},
{
"description": "Add a comment to an existing GitHub issue, pull request, or discussion. Use this to provide feedback, answer questions, or add information to an existing conversation. For creating new items, use create_issue, create_discussion, or create_pull_request instead. IMPORTANT: Comments are subject to validation constraints enforced by the MCP server - maximum 65536 characters for the complete comment (including footer which is added automatically), 10 mentions (@username), and 50 links. Exceeding these limits will result in an immediate error with specific guidance. NOTE: By default, this tool requires discussions:write permission. If your GitHub App lacks Discussions permission, set 'discussions: false' in the workflow's safe-outputs.add-comment configuration to exclude this permission. CONSTRAINTS: Maximum 1 comment(s) can be added.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"body": {
"description": "The comment text in Markdown format. This is the 'body' field - do not use 'comment_body' or other variations. Provide helpful, relevant information that adds value to the conversation. CONSTRAINTS: The complete comment (your body text + automatically added footer) must not exceed 65536 characters total. Maximum 10 mentions (@username), maximum 50 links (http/https URLs). A footer (~200-500 characters) is automatically appended with workflow attribution, so leave adequate space. If these limits are exceeded, the tool call will fail with a detailed error message indicating which constraint was violated.",
"type": "string"
},
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"item_number": {
"description": "The issue, pull request, or discussion number to comment on. This is the numeric ID from the GitHub URL (e.g., 123 in github.com/owner/repo/issues/123). Can also be a temporary_id (e.g., 'aw_abc123') from a previously created issue in the same workflow run. If omitted, the tool auto-targets the issue, PR, or discussion that triggered this workflow. Auto-targeting only works for issue, pull_request, discussion, and comment event triggers — it does NOT work for schedule, workflow_dispatch, push, or workflow_run triggers. For those trigger types, always provide item_number explicitly, or the tool call will fail with an error.",
"type": [
"number",
"string"
]
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
},
"temporary_id": {
"description": "Unique temporary identifier for this comment. Format: 'aw_' followed by 3 to 12 alphanumeric characters (e.g., 'aw_abc1', 'aw_Test123'). Auto-generated if not provided. The temporary ID is returned in the tool response so you can reference this comment later.",
"pattern": "^aw_[A-Za-z0-9]{3,12}$",
"type": "string"
}
},
"required": [
"body"
],
"type": "object"
},
"name": "add_comment"
},
{
"description": "Update an existing GitHub issue's title, body, labels, assignees, or milestone WITHOUT closing it. This tool is primarily for editing issue metadata and content. While it supports changing status between 'open' and 'closed', use close_issue instead when you want to close an issue with a closing comment. Body updates support replacing, appending to, prepending content, or updating a per-run \"island\" section. CONSTRAINTS: Maximum 1 issue(s) can be updated.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"assignees": {
"description": "Replace the issue assignees with this list of GitHub usernames (e.g., ['octocat', 'mona']).",
"items": {
"type": "string"
},
"type": "array"
},
"body": {
"description": "Issue body content in Markdown. For 'replace', this becomes the entire body. For 'append'/'prepend', this content is added with a separator and an attribution footer. For 'replace-island', only the run-specific section is updated.",
"type": "string"
},
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"issue_number": {
"description": "Issue number to update. This is the numeric ID from the GitHub URL (e.g., 789 in github.com/owner/repo/issues/789). Required when the workflow target is '*' (any issue).",
"type": [
"number",
"string"
]
},
"labels": {
"description": "Replace the issue labels with this list (e.g., ['bug', 'tracking:foo']). Labels must exist in the repository.",
"items": {
"type": "string"
},
"type": "array"
},
"milestone": {
"description": "Milestone number to assign (e.g., 1). Use null to clear.",
"type": [
"number",
"string"
]
},
"operation": {
"description": "How to update the issue body: 'append' (default - add to end with separator), 'prepend' (add to start with separator), 'replace' (overwrite entire body), or 'replace-island' (update a run-specific section).",
"enum": [
"replace",
"append",
"prepend",
"replace-island"
],
"type": "string"
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
},
"status": {
"description": "New issue status: 'open' to reopen a closed issue, 'closed' to close an open issue.",
"enum": [
"open",
"closed"
],
"type": "string"
},
"title": {
"description": "New issue title to replace the existing title.",
"type": "string"
}
},
"type": "object"
},
"name": "update_issue"
},
{
"description": "Report that a tool or capability needed to complete the task is not available, or share any information you deem important about missing functionality or limitations. Use this when you cannot accomplish what was requested because the required functionality is missing or access is restricted.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"alternatives": {
"description": "Any workarounds, manual steps, or alternative approaches the user could take (max 256 characters).",
"type": "string"
},
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"reason": {
"description": "Explanation of why this tool is needed or what information you want to share about the limitation (max 256 characters).",
"type": "string"
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
},
"tool": {
"description": "Optional: Name or description of the missing tool or capability (max 128 characters). Be specific about what functionality is needed.",
"type": "string"
}
},
"required": [
"reason"
],
"type": "object"
},
"name": "missing_tool"
},
{
"description": "Log a transparency message when no significant actions are needed. Use this to confirm workflow completion and provide visibility when analysis is complete but no changes or outputs are required (e.g., 'No issues found', 'All checks passed'). This ensures the workflow produces human-visible output even when no other actions are taken.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"message": {
"description": "Status or completion message to log. Should explain what was analyzed and the outcome (e.g., 'Code review complete - no issues found', 'Analysis complete - all tests passing').",
"type": "string"
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
}
},
"required": [
"message"
],
"type": "object"
},
"name": "noop"
},
{
"description": "Report that data or information needed to complete the task is not available. Use this when you cannot accomplish what was requested because required data, context, or information is missing.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"alternatives": {
"description": "Any workarounds, manual steps, or alternative approaches the user could take (max 256 characters).",
"type": "string"
},
"context": {
"description": "Additional context about the missing data or where it should come from (max 256 characters).",
"type": "string"
},
"data_type": {
"description": "Type or description of the missing data or information (max 128 characters). Be specific about what data is needed.",
"type": "string"
},
"integrity": {
"description": "Trustworthiness level of the message source (e.g., \"low\", \"medium\", \"high\").",
"type": "string"
},
"reason": {
"description": "Explanation of why this data is needed to complete the task (max 256 characters).",
"type": "string"
},
"secrecy": {
"description": "Confidentiality level of the message content (e.g., \"public\", \"internal\", \"private\").",
"type": "string"
}
},
"required": [],
"type": "object"
},
"name": "missing_data"
}
]
GH_AW_SAFE_OUTPUTS_TOOLS_EOF
cat > /opt/gh-aw/safeoutputs/validation.json << 'GH_AW_SAFE_OUTPUTS_VALIDATION_EOF'
{
"add_comment": {
"defaultMax": 1,
"fields": {
"body": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 65000
},
"item_number": {
"issueOrPRNumber": true
},
"repo": {
"type": "string",
"maxLength": 256
}
}
},
"create_issue": {
"defaultMax": 1,
"fields": {
"body": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 65000
},
"labels": {
"type": "array",
"itemType": "string",
"itemSanitize": true,
"itemMaxLength": 128
},
"parent": {
"issueOrPRNumber": true
},
"repo": {
"type": "string",
"maxLength": 256
},
"temporary_id": {
"type": "string"
},
"title": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 128
}
}
},
"missing_data": {
"defaultMax": 20,
"fields": {
"alternatives": {
"type": "string",
"sanitize": true,
"maxLength": 256
},
"context": {
"type": "string",
"sanitize": true,
"maxLength": 256
},
"data_type": {
"type": "string",
"sanitize": true,
"maxLength": 128
},
"reason": {
"type": "string",
"sanitize": true,
"maxLength": 256
}
}
},
"missing_tool": {
"defaultMax": 20,
"fields": {
"alternatives": {
"type": "string",
"sanitize": true,
"maxLength": 512
},
"reason": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 256
},
"tool": {
"type": "string",
"sanitize": true,
"maxLength": 128
}
}
},
"noop": {
"defaultMax": 1,
"fields": {
"message": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 65000
}
}
},
"update_issue": {
"defaultMax": 1,
"fields": {
"assignees": {
"type": "array",
"itemType": "string",
"itemSanitize": true,
"itemMaxLength": 39
},
"body": {
"type": "string",
"sanitize": true,
"maxLength": 65000
},
"issue_number": {
"issueOrPRNumber": true
},
"labels": {
"type": "array",
"itemType": "string",
"itemSanitize": true,
"itemMaxLength": 128
},
"milestone": {
"optionalPositiveInteger": true
},
"operation": {
"type": "string",
"enum": [
"replace",
"append",
"prepend",
"replace-island"
]
},
"repo": {
"type": "string",
"maxLength": 256
},
"status": {
"type": "string",
"enum": [
"open",
"closed"
]
},
"title": {
"type": "string",
"sanitize": true,
"maxLength": 128
}
},
"customValidation": "requiresOneOf:status,title,body"
}
}
GH_AW_SAFE_OUTPUTS_VALIDATION_EOF
- name: Generate Safe Outputs MCP Server Config
id: safe-outputs-config
run: |
# Generate a secure random API key (360 bits of entropy, 40+ chars)
# Mask immediately to prevent timing vulnerabilities
API_KEY=$(openssl rand -base64 45 | tr -d '/+=')
echo "::add-mask::${API_KEY}"
PORT=3001
# Set outputs for next steps
{
echo "safe_outputs_api_key=${API_KEY}"
echo "safe_outputs_port=${PORT}"
} >> "$GITHUB_OUTPUT"
echo "Safe Outputs MCP server will run on port ${PORT}"
- name: Start Safe Outputs MCP HTTP Server
id: safe-outputs-start
env:
DEBUG: '*'
GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-config.outputs.safe_outputs_port }}
GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-config.outputs.safe_outputs_api_key }}
GH_AW_SAFE_OUTPUTS_TOOLS_PATH: /opt/gh-aw/safeoutputs/tools.json
GH_AW_SAFE_OUTPUTS_CONFIG_PATH: /opt/gh-aw/safeoutputs/config.json
GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs
run: |
# Environment variables are set above to prevent template injection
export DEBUG
export GH_AW_SAFE_OUTPUTS_PORT
export GH_AW_SAFE_OUTPUTS_API_KEY
export GH_AW_SAFE_OUTPUTS_TOOLS_PATH
export GH_AW_SAFE_OUTPUTS_CONFIG_PATH
export GH_AW_MCP_LOG_DIR
bash /opt/gh-aw/actions/start_safe_outputs_server.sh
- name: Start MCP Gateway
id: start-mcp-gateway
env:
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-start.outputs.api_key }}
GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-start.outputs.port }}
GITHUB_MCP_LOCKDOWN: ${{ steps.determine-automatic-lockdown.outputs.lockdown == 'true' && '1' || '0' }}
GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
run: |
set -eo pipefail
mkdir -p /tmp/gh-aw/mcp-config
# Export gateway environment variables for MCP config and gateway script
export MCP_GATEWAY_PORT="80"
export MCP_GATEWAY_DOMAIN="host.docker.internal"
MCP_GATEWAY_API_KEY=$(openssl rand -base64 45 | tr -d '/+=')
echo "::add-mask::${MCP_GATEWAY_API_KEY}"
export MCP_GATEWAY_API_KEY
export MCP_GATEWAY_PAYLOAD_DIR="/tmp/gh-aw/mcp-payloads"
mkdir -p "${MCP_GATEWAY_PAYLOAD_DIR}"
export MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD="524288"
export DEBUG="*"
export GH_AW_ENGINE="copilot"
export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host -v /var/run/docker.sock:/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_LOCKDOWN -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GH_AW_SAFE_OUTPUTS_PORT -e GH_AW_SAFE_OUTPUTS_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw ghcr.io/github/gh-aw-mcpg:v0.1.8'
mkdir -p /home/runner/.copilot
cat << GH_AW_MCP_CONFIG_EOF | bash /opt/gh-aw/actions/start_mcp_gateway.sh
{
"mcpServers": {
"github": {
"type": "stdio",
"container": "ghcr.io/github/github-mcp-server:v0.32.0",
"env": {
"GITHUB_LOCKDOWN_MODE": "$GITHUB_MCP_LOCKDOWN",
"GITHUB_PERSONAL_ACCESS_TOKEN": "\${GITHUB_MCP_SERVER_TOKEN}",
"GITHUB_READ_ONLY": "1",
"GITHUB_TOOLSETS": "context,repos,issues,pull_requests,actions"
}
},
"safeoutputs": {
"type": "http",
"url": "http://host.docker.internal:$GH_AW_SAFE_OUTPUTS_PORT",
"headers": {
"Authorization": "\${GH_AW_SAFE_OUTPUTS_API_KEY}"
}
}
},
"gateway": {
"port": $MCP_GATEWAY_PORT,
"domain": "${MCP_GATEWAY_DOMAIN}",
"apiKey": "${MCP_GATEWAY_API_KEY}",
"payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}"
}
}
GH_AW_MCP_CONFIG_EOF
- name: Download activation artifact
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
with:
name: activation
path: /tmp/gh-aw
- name: Clean git credentials
run: bash /opt/gh-aw/actions/clean_git_credentials.sh
- name: Execute GitHub Copilot CLI
id: agentic_execution
# Copilot CLI tool arguments (sorted):
timeout-minutes: 20
run: |
set -o pipefail
touch /tmp/gh-aw/agent-step-summary.md
# shellcheck disable=SC1003
sudo -E awf --env-all --container-workdir "${GITHUB_WORKSPACE}" --allow-domains "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com" --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.23.0 --skip-pull --enable-api-proxy \
-- /bin/bash -c '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-all-tools --add-dir /tmp/gh-aw/cache-memory/ --allow-all-paths --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"' 2>&1 | tee -a /tmp/gh-aw/agent-stdio.log
env:
COPILOT_AGENT_RUNNER_TYPE: STANDALONE
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
COPILOT_MODEL: gpt-5.1-codex-mini
GH_AW_MCP_CONFIG: /home/runner/.copilot/mcp-config.json
GH_AW_PHASE: agent
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_VERSION: v0.57.2
GITHUB_API_URL: ${{ github.api_url }}
GITHUB_AW: true
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GITHUB_REF_NAME: ${{ github.ref_name }}
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md
GITHUB_WORKSPACE: ${{ github.workspace }}
GIT_AUTHOR_EMAIL: github-actions[bot]@users.noreply.github.com
GIT_AUTHOR_NAME: github-actions[bot]
GIT_COMMITTER_EMAIL: github-actions[bot]@users.noreply.github.com
GIT_COMMITTER_NAME: github-actions[bot]
XDG_CONFIG_HOME: /home/runner
- name: Detect inference access error
id: detect-inference-error
if: always()
continue-on-error: true
run: bash /opt/gh-aw/actions/detect_inference_access_error.sh
- name: Configure Git credentials
env:
REPO_NAME: ${{ github.repository }}
SERVER_URL: ${{ github.server_url }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git config --global am.keepcr true
# Re-authenticate git with GitHub token
SERVER_URL_STRIPPED="${SERVER_URL#https://}"
git remote set-url origin "https://x-access-token:${{ github.token }}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git"
echo "Git configured with standard GitHub Actions identity"
- name: Copy Copilot session state files to logs
if: always()
continue-on-error: true
run: |
# Copy Copilot session state files to logs folder for artifact collection
# This ensures they are in /tmp/gh-aw/ where secret redaction can scan them
SESSION_STATE_DIR="$HOME/.copilot/session-state"
LOGS_DIR="/tmp/gh-aw/sandbox/agent/logs"
if [ -d "$SESSION_STATE_DIR" ]; then
echo "Copying Copilot session state files from $SESSION_STATE_DIR to $LOGS_DIR"
mkdir -p "$LOGS_DIR"
cp -v "$SESSION_STATE_DIR"/*.jsonl "$LOGS_DIR/" 2>/dev/null || true
echo "Session state files copied successfully"
else
echo "No session-state directory found at $SESSION_STATE_DIR"
fi
- name: Stop MCP Gateway
if: always()
continue-on-error: true
env:
MCP_GATEWAY_PORT: ${{ steps.start-mcp-gateway.outputs.gateway-port }}
MCP_GATEWAY_API_KEY: ${{ steps.start-mcp-gateway.outputs.gateway-api-key }}
GATEWAY_PID: ${{ steps.start-mcp-gateway.outputs.gateway-pid }}
run: |
bash /opt/gh-aw/actions/stop_mcp_gateway.sh "$GATEWAY_PID"
- name: Redact secrets in logs
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/redact_secrets.cjs');
await main();
env:
GH_AW_SECRET_NAMES: 'COPILOT_GITHUB_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN'
SECRET_COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }}
SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }}
SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Append agent step summary
if: always()
run: bash /opt/gh-aw/actions/append_agent_step_summary.sh
- name: Upload Safe Outputs
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: safe-output
path: ${{ env.GH_AW_SAFE_OUTPUTS }}
if-no-files-found: warn
- name: Ingest agent output
id: collect_output
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_ALLOWED_DOMAINS: "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com"
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_API_URL: ${{ github.api_url }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/collect_ndjson_output.cjs');
await main();
- name: Upload sanitized agent output
if: always() && env.GH_AW_AGENT_OUTPUT
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: agent-output
path: ${{ env.GH_AW_AGENT_OUTPUT }}
if-no-files-found: warn
- name: Upload engine output files
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: agent_outputs
path: |
/tmp/gh-aw/sandbox/agent/logs/
/tmp/gh-aw/redacted-urls.log
if-no-files-found: ignore
- name: Parse agent logs for step summary
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: /tmp/gh-aw/sandbox/agent/logs/
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/parse_copilot_log.cjs');
await main();
- name: Parse MCP Gateway logs for step summary
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/parse_mcp_gateway_log.cjs');
await main();
- name: Print firewall logs
if: always()
continue-on-error: true
env:
AWF_LOGS_DIR: /tmp/gh-aw/sandbox/firewall/logs
run: |
# Fix permissions on firewall logs so they can be uploaded as artifacts
# AWF runs with sudo, creating files owned by root
sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true
# Only run awf logs summary if awf command exists (it may not be installed if workflow failed before install step)
if command -v awf &> /dev/null; then
awf logs summary | tee -a "$GITHUB_STEP_SUMMARY"
else
echo 'AWF binary not installed, skipping firewall log summary'
fi
- name: Upload cache-memory data as artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
if: always()
with:
name: cache-memory
path: /tmp/gh-aw/cache-memory
- name: Upload agent artifacts
if: always()
continue-on-error: true
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: agent-artifacts
path: |
/tmp/gh-aw/aw-prompts/prompt.txt
/tmp/gh-aw/mcp-logs/
/tmp/gh-aw/sandbox/firewall/logs/
/tmp/gh-aw/agent-stdio.log
/tmp/gh-aw/agent/
if-no-files-found: ignore
# --- Threat Detection (inline) ---
- name: Check if detection needed
id: detection_guard
if: always()
env:
OUTPUT_TYPES: ${{ steps.collect_output.outputs.output_types }}
HAS_PATCH: ${{ steps.collect_output.outputs.has_patch }}
run: |
if [[ -n "$OUTPUT_TYPES" || "$HAS_PATCH" == "true" ]]; then
echo "run_detection=true" >> "$GITHUB_OUTPUT"
echo "Detection will run: output_types=$OUTPUT_TYPES, has_patch=$HAS_PATCH"
else
echo "run_detection=false" >> "$GITHUB_OUTPUT"
echo "Detection skipped: no agent outputs or patches to analyze"
fi
- name: Clear MCP configuration for detection
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
rm -f /tmp/gh-aw/mcp-config/mcp-servers.json
rm -f /home/runner/.copilot/mcp-config.json
rm -f "$GITHUB_WORKSPACE/.gemini/settings.json"
- name: Prepare threat detection files
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
mkdir -p /tmp/gh-aw/threat-detection/aw-prompts
cp /tmp/gh-aw/aw-prompts/prompt.txt /tmp/gh-aw/threat-detection/aw-prompts/prompt.txt 2>/dev/null || true
cp /tmp/gh-aw/agent_output.json /tmp/gh-aw/threat-detection/agent_output.json 2>/dev/null || true
for f in /tmp/gh-aw/aw-*.patch; do
[ -f "$f" ] && cp "$f" /tmp/gh-aw/threat-detection/ 2>/dev/null || true
done
echo "Prepared threat detection files:"
ls -la /tmp/gh-aw/threat-detection/ 2>/dev/null || true
- name: Setup threat detection
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
WORKFLOW_NAME: "CI Failure Doctor"
WORKFLOW_DESCRIPTION: "Investigates failed CI workflows to identify root causes and patterns, creating issues with diagnostic information"
HAS_PATCH: ${{ steps.collect_output.outputs.has_patch }}
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/setup_threat_detection.cjs');
await main();
- name: Ensure threat-detection directory and log
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
mkdir -p /tmp/gh-aw/threat-detection
touch /tmp/gh-aw/threat-detection/detection.log
- name: Execute GitHub Copilot CLI
if: always() && steps.detection_guard.outputs.run_detection == 'true'
id: detection_agentic_execution
# Copilot CLI tool arguments (sorted):
# --allow-tool shell(cat)
# --allow-tool shell(grep)
# --allow-tool shell(head)
# --allow-tool shell(jq)
# --allow-tool shell(ls)
# --allow-tool shell(tail)
# --allow-tool shell(wc)
timeout-minutes: 20
run: |
set -o pipefail
touch /tmp/gh-aw/agent-step-summary.md
# shellcheck disable=SC1003
sudo -E awf --env-all --container-workdir "${GITHUB_WORKSPACE}" --allow-domains "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,github.com,host.docker.internal,raw.githubusercontent.com,registry.npmjs.org,telemetry.enterprise.githubcopilot.com" --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.23.0 --skip-pull --enable-api-proxy \
-- /bin/bash -c '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-tool '\''shell(cat)'\'' --allow-tool '\''shell(grep)'\'' --allow-tool '\''shell(head)'\'' --allow-tool '\''shell(jq)'\'' --allow-tool '\''shell(ls)'\'' --allow-tool '\''shell(tail)'\'' --allow-tool '\''shell(wc)'\'' --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"' 2>&1 | tee -a /tmp/gh-aw/threat-detection/detection.log
env:
COPILOT_AGENT_RUNNER_TYPE: STANDALONE
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
COPILOT_MODEL: gpt-5.1-codex-mini
GH_AW_PHASE: detection
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_VERSION: v0.57.2
GITHUB_API_URL: ${{ github.api_url }}
GITHUB_AW: true
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_REF_NAME: ${{ github.ref_name }}
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md
GITHUB_WORKSPACE: ${{ github.workspace }}
GIT_AUTHOR_EMAIL: github-actions[bot]@users.noreply.github.com
GIT_AUTHOR_NAME: github-actions[bot]
GIT_COMMITTER_EMAIL: github-actions[bot]@users.noreply.github.com
GIT_COMMITTER_NAME: github-actions[bot]
XDG_CONFIG_HOME: /home/runner
- name: Parse threat detection results
id: parse_detection_results
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/parse_threat_detection_results.cjs');
await main();
- name: Upload threat detection log
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: threat-detection.log
path: /tmp/gh-aw/threat-detection/detection.log
if-no-files-found: ignore
- name: Set detection conclusion
id: detection_conclusion
if: always()
env:
RUN_DETECTION: ${{ steps.detection_guard.outputs.run_detection }}
DETECTION_SUCCESS: ${{ steps.parse_detection_results.outputs.success }}
run: |
if [[ "$RUN_DETECTION" != "true" ]]; then
echo "conclusion=skipped" >> "$GITHUB_OUTPUT"
echo "success=true" >> "$GITHUB_OUTPUT"
echo "Detection was not needed, marking as skipped"
elif [[ "$DETECTION_SUCCESS" == "true" ]]; then
echo "conclusion=success" >> "$GITHUB_OUTPUT"
echo "success=true" >> "$GITHUB_OUTPUT"
echo "Detection passed successfully"
else
echo "conclusion=failure" >> "$GITHUB_OUTPUT"
echo "success=false" >> "$GITHUB_OUTPUT"
echo "Detection found issues"
fi
conclusion:
needs:
- activation
- agent
- safe_outputs
- update_cache_memory
if: (always()) && (needs.agent.result != 'skipped')
runs-on: ubuntu-slim
permissions:
contents: read
discussions: write
issues: write
pull-requests: write
concurrency:
group: "gh-aw-conclusion-ci-doctor"
cancel-in-progress: false
outputs:
noop_message: ${{ steps.noop.outputs.noop_message }}
tools_reported: ${{ steps.missing_tool.outputs.tools_reported }}
total_count: ${{ steps.missing_tool.outputs.total_count }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@32b3a711a9ee97d38e3989c90af0385aff0066a7 # v0.57.2
with:
destination: /opt/gh-aw/actions
- name: Download agent output artifact
id: download-agent-output
continue-on-error: true
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
with:
name: agent-output
path: /tmp/gh-aw/safeoutputs/
- name: Setup agent output environment variable
if: steps.download-agent-output.outcome == 'success'
run: |
mkdir -p /tmp/gh-aw/safeoutputs/
find "/tmp/gh-aw/safeoutputs/" -type f -print
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/safeoutputs/agent_output.json" >> "$GITHUB_ENV"
- name: Process No-Op Messages
id: noop
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_NOOP_MAX: "1"
GH_AW_WORKFLOW_NAME: "CI Failure Doctor"
GH_AW_WORKFLOW_SOURCE: "githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/githubnext/agentics/tree/ea350161ad5dcc9624cf510f134c6a9e39a6f94d/workflows/ci-doctor.md"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/noop.cjs');
await main();
- name: Record Missing Tool
id: missing_tool
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "CI Failure Doctor"
GH_AW_WORKFLOW_SOURCE: "githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/githubnext/agentics/tree/ea350161ad5dcc9624cf510f134c6a9e39a6f94d/workflows/ci-doctor.md"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/missing_tool.cjs');
await main();
- name: Handle Agent Failure
id: handle_agent_failure
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "CI Failure Doctor"
GH_AW_WORKFLOW_SOURCE: "githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/githubnext/agentics/tree/ea350161ad5dcc9624cf510f134c6a9e39a6f94d/workflows/ci-doctor.md"
GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_WORKFLOW_ID: "ci-doctor"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_INFERENCE_ACCESS_ERROR: ${{ needs.agent.outputs.inference_access_error }}
GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🩺 *Diagnosis provided by [{workflow_name}]({run_url})*\",\"runStarted\":\"🏥 CI Doctor reporting for duty! [{workflow_name}]({run_url}) is examining the patient on this {event_type}...\",\"runSuccess\":\"🩺 Examination complete! [{workflow_name}]({run_url}) has delivered the diagnosis. Prescription issued! 💊\",\"runFailure\":\"🏥 Medical emergency! [{workflow_name}]({run_url}) {status}. Doctor needs assistance...\"}"
GH_AW_GROUP_REPORTS: "false"
GH_AW_FAILURE_REPORT_AS_ISSUE: "true"
GH_AW_TIMEOUT_MINUTES: "20"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/handle_agent_failure.cjs');
await main();
- name: Handle No-Op Message
id: handle_noop_message
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "CI Failure Doctor"
GH_AW_WORKFLOW_SOURCE: "githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/githubnext/agentics/tree/ea350161ad5dcc9624cf510f134c6a9e39a6f94d/workflows/ci-doctor.md"
GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_NOOP_MESSAGE: ${{ steps.noop.outputs.noop_message }}
GH_AW_NOOP_REPORT_AS_ISSUE: "true"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/handle_noop_message.cjs');
await main();
pre_activation:
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
runs-on: ubuntu-slim
outputs:
activated: ${{ (steps.check_membership.outputs.is_team_member == 'true') && (steps.check_stop_time.outputs.stop_time_ok == 'true') }}
matched_command: ''
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@32b3a711a9ee97d38e3989c90af0385aff0066a7 # v0.57.2
with:
destination: /opt/gh-aw/actions
- name: Check team membership for workflow
id: check_membership
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_REQUIRED_ROLES: admin,maintainer,write
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/check_membership.cjs');
await main();
- name: Check stop-time limit
id: check_stop_time
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_STOP_TIME: 2026-04-11 23:18:25
GH_AW_WORKFLOW_NAME: "CI Failure Doctor"
with:
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/check_stop_time.cjs');
await main();
safe_outputs:
needs: agent
if: ((!cancelled()) && (needs.agent.result != 'skipped')) && (needs.agent.outputs.detection_success == 'true')
runs-on: ubuntu-slim
permissions:
contents: read
discussions: write
issues: write
pull-requests: write
timeout-minutes: 15
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/ci-doctor"
GH_AW_ENGINE_ID: "copilot"
GH_AW_ENGINE_MODEL: "gpt-5.1-codex-mini"
GH_AW_SAFE_OUTPUT_MESSAGES: "{\"footer\":\"\\u003e 🩺 *Diagnosis provided by [{workflow_name}]({run_url})*\",\"runStarted\":\"🏥 CI Doctor reporting for duty! [{workflow_name}]({run_url}) is examining the patient on this {event_type}...\",\"runSuccess\":\"🩺 Examination complete! [{workflow_name}]({run_url}) has delivered the diagnosis. Prescription issued! 💊\",\"runFailure\":\"🏥 Medical emergency! [{workflow_name}]({run_url}) {status}. Doctor needs assistance...\"}"
GH_AW_WORKFLOW_ID: "ci-doctor"
GH_AW_WORKFLOW_NAME: "CI Failure Doctor"
GH_AW_WORKFLOW_SOURCE: "githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d"
GH_AW_WORKFLOW_SOURCE_URL: "${{ github.server_url }}/githubnext/agentics/tree/ea350161ad5dcc9624cf510f134c6a9e39a6f94d/workflows/ci-doctor.md"
outputs:
code_push_failure_count: ${{ steps.process_safe_outputs.outputs.code_push_failure_count }}
code_push_failure_errors: ${{ steps.process_safe_outputs.outputs.code_push_failure_errors }}
comment_id: ${{ steps.process_safe_outputs.outputs.comment_id }}
comment_url: ${{ steps.process_safe_outputs.outputs.comment_url }}
create_discussion_error_count: ${{ steps.process_safe_outputs.outputs.create_discussion_error_count }}
create_discussion_errors: ${{ steps.process_safe_outputs.outputs.create_discussion_errors }}
created_issue_number: ${{ steps.process_safe_outputs.outputs.created_issue_number }}
created_issue_url: ${{ steps.process_safe_outputs.outputs.created_issue_url }}
process_safe_outputs_processed_count: ${{ steps.process_safe_outputs.outputs.processed_count }}
process_safe_outputs_temporary_id_map: ${{ steps.process_safe_outputs.outputs.temporary_id_map }}
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@32b3a711a9ee97d38e3989c90af0385aff0066a7 # v0.57.2
with:
destination: /opt/gh-aw/actions
- name: Download agent output artifact
id: download-agent-output
continue-on-error: true
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
with:
name: agent-output
path: /tmp/gh-aw/safeoutputs/
- name: Setup agent output environment variable
if: steps.download-agent-output.outcome == 'success'
run: |
mkdir -p /tmp/gh-aw/safeoutputs/
find "/tmp/gh-aw/safeoutputs/" -type f -print
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/safeoutputs/agent_output.json" >> "$GITHUB_ENV"
- name: Process Safe Outputs
id: process_safe_outputs
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_ALLOWED_DOMAINS: "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com"
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_API_URL: ${{ github.api_url }}
GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"add_comment\":{\"max\":1},\"create_issue\":{\"close_older_issues\":true,\"expires\":24,\"labels\":[\"cookie\"],\"max\":1,\"title_prefix\":\"[CI Failure Doctor] \"},\"missing_data\":{},\"missing_tool\":{},\"update_issue\":{\"allow_body\":true,\"max\":1}}"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('/opt/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('/opt/gh-aw/actions/safe_output_handler_manager.cjs');
await main();
- name: Upload safe output items manifest
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
with:
name: safe-output-items
path: /tmp/safe-output-items.jsonl
if-no-files-found: warn
update_cache_memory:
needs: agent
if: always() && needs.agent.outputs.detection_success == 'true'
runs-on: ubuntu-latest
permissions: {}
env:
GH_AW_WORKFLOW_ID_SANITIZED: cidoctor
steps:
- name: Setup Scripts
uses: github/gh-aw/actions/setup@32b3a711a9ee97d38e3989c90af0385aff0066a7 # v0.57.2
with:
destination: /opt/gh-aw/actions
- name: Download cache-memory artifact (default)
id: download_cache_default
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8
continue-on-error: true
with:
name: cache-memory
path: /tmp/gh-aw/cache-memory
- name: Check if cache-memory folder has content (default)
id: check_cache_default
shell: bash
run: |
if [ -d "/tmp/gh-aw/cache-memory" ] && [ "$(ls -A /tmp/gh-aw/cache-memory 2>/dev/null)" ]; then
echo "has_content=true" >> "$GITHUB_OUTPUT"
else
echo "has_content=false" >> "$GITHUB_OUTPUT"
fi
- name: Save cache-memory to cache (default)
if: steps.check_cache_default.outputs.has_content == 'true'
uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
key: memory-${{ env.GH_AW_WORKFLOW_ID_SANITIZED }}-${{ github.run_id }}
path: /tmp/gh-aw/cache-memory
================================================
FILE: .github/workflows/ci-doctor.md
================================================
---
description: Investigates failed CI workflows to identify root causes and patterns, creating issues with diagnostic information
on:
workflow_run:
workflows: ['E2E Tests', 'Unit Tests'] # Monitor the CI workflow specifically
types:
- completed
# This will trigger only when the CI workflow completes with failure
# The condition is handled in the workflow body
stop-after: +1mo
# Only trigger for failures - check in the workflow body
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
permissions:
actions: read # To query workflow runs, jobs, and logs
contents: read # To read repository files
issues: read # To search and analyze issues
pull-requests: read # To analyze pull request context
network: defaults
engine:
id: copilot
model: gpt-5.1-codex-mini
safe-outputs:
create-issue:
expires: 1d
title-prefix: '[CI Failure Doctor] '
labels: [cookie]
close-older-issues: true
add-comment:
update-issue:
noop:
messages:
footer: '> 🩺 *Diagnosis provided by [{workflow_name}]({run_url})*'
run-started: '🏥 CI Doctor reporting for duty! [{workflow_name}]({run_url}) is examining the patient on this {event_type}...'
run-success: '🩺 Examination complete! [{workflow_name}]({run_url}) has delivered the diagnosis. Prescription issued! 💊'
run-failure: '🏥 Medical emergency! [{workflow_name}]({run_url}) {status}. Doctor needs assistance...'
tools:
cache-memory: true
web-fetch:
web-search:
github:
toolsets: [default, actions] # default: context, repos, issues, pull_requests; actions: workflow logs and artifacts
timeout-minutes: 20
source: githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d
---
# CI Failure Doctor
You are the CI Failure Doctor, an expert investigative agent that analyzes failed GitHub Actions workflows to identify root causes and patterns. Your mission is to conduct a deep investigation when the CI workflow fails.
## Current Context
- **Repository**: ${{ github.repository }}
- **Workflow Run**: ${{ github.event.workflow_run.id }}
- **Conclusion**: ${{ github.event.workflow_run.conclusion }}
- **Run URL**: ${{ github.event.workflow_run.html_url }}
- **Head SHA**: ${{ github.event.workflow_run.head_sha }}
## Investigation Protocol
**ONLY proceed if the workflow conclusion is 'failure' or 'cancelled'**. If the workflow was successful, **call the `noop` tool** immediately and exit.
### Phase 1: Initial Triage
1. **Verify Failure**: Check that `${{ github.event.workflow_run.conclusion }}` is `failure` or `cancelled`
- **If the workflow was successful**: Call the `noop` tool with message "CI workflow completed successfully - no investigation needed" and **stop immediately**. Do not proceed with any further analysis.
- **If the workflow failed or was cancelled**: Proceed with the investigation steps below.
2. **Get Workflow Details**: Use `get_workflow_run` to get full details of the failed run
3. **List Jobs**: Use `list_workflow_jobs` to identify which specific jobs failed
4. **Quick Assessment**: Determine if this is a new type of failure or a recurring pattern
### Phase 2: Deep Log Analysis
1. **Retrieve Logs**: Use `get_job_logs` with `failed_only=true` to get logs from all failed jobs
2. **Pattern Recognition**: Analyze logs for:
- Error messages and stack traces
- Dependency installation failures
- Test failures with specific patterns
- Infrastructure or runner issues
- Timeout patterns
- Memory or resource constraints
3. **Extract Key Information**:
- Primary error messages
- File paths and line numbers where failures occurred
- Test names that failed
- Dependency versions involved
- Timing patterns
### Phase 3: Historical Context Analysis
1. **Search Investigation History**: Use file-based storage to search for similar failures:
- Read from cached investigation files in `/tmp/memory/investigations/`
- Parse previous failure patterns and solutions
- Look for recurring error signatures
2. **Issue History**: Search existing issues for related problems
3. **Commit Analysis**: Examine the commit that triggered the failure
4. **PR Context**: If triggered by a PR, analyze the changed files
### Phase 4: Root Cause Investigation
1. **Categorize Failure Type**:
- **Code Issues**: Syntax errors, logic bugs, test failures
- **Infrastructure**: Runner issues, network problems, resource constraints
- **Dependencies**: Version conflicts, missing packages, outdated libraries
- **Configuration**: Workflow configuration, environment variables
- **Flaky Tests**: Intermittent failures, timing issues
- **External Services**: Third-party API failures, downstream dependencies
2. **Deep Dive Analysis**:
- For test failures: Identify specific test methods and assertions
- For build failures: Analyze compilation errors and missing dependencies
- For infrastructure issues: Check runner logs and resource usage
- For timeout issues: Identify slow operations and bottlenecks
### Phase 5: Pattern Storage and Knowledge Building
1. **Store Investigation**: Save structured investigation data to files:
- Write investigation report to `/tmp/memory/investigations/<timestamp>-<run-id>.json`
- **Important**: Use filesystem-safe timestamp format `YYYY-MM-DD-HH-MM-SS-sss` (e.g., `2026-02-12-11-20-45-458`)
- **Do NOT use** ISO 8601 format with colons (e.g., `2026-02-12T11:20:45.458Z`) - colons are not allowed in artifact filenames
- Store error patterns in `/tmp/memory/patterns/`
- Maintain an index file of all investigations for fast searching
2. **Update Pattern Database**: Enhance knowledge with new findings by updating pattern files
3. **Save Artifacts**: Store detailed logs and analysis in the cached directories
### Phase 6: Looking for existing issues and closing older ones
1. **Search for existing CI failure doctor issues**
- Use GitHub Issues search to find issues with label "cookie" and title prefix "[CI Failure Doctor]"
- Look for both open and recently closed issues (within the last 7 days)
- Search for keywords, error messages, and patterns from the current failure
2. **Judge each match for relevance**
- Analyze the content of found issues to determine if they are similar to the current failure
- Check if they describe the same root cause, error pattern, or affected components
- Identify truly duplicate issues vs. unrelated failures
3. **Close older duplicate issues**
- If you find older open issues that are duplicates of the current failure:
- Add a comment explaining this is a duplicate of the new investigation
- Use the `update-issue` tool with `state: "closed"` and `state_reason: "not_planned"` to close them
- Include a link to the new issue in the comment
- If older issues describe resolved problems that are recurring:
- Keep them open but add a comment linking to the new occurrence
4. **Handle duplicate detection**
- If you find a very recent duplicate issue (opened within the last hour):
- Add a comment with your findings to the existing issue
- Do NOT open a new issue (skip next phases)
- Exit the workflow
- Otherwise, continue to create a new issue with fresh investigation data
### Phase 7: Reporting and Recommendations
1. **Create Investigation Report**: Generate a comprehensive analysis including:
- **Executive Summary**: Quick overview of the failure
- **Root Cause**: Detailed explanation of what went wrong
- **Reproduction Steps**: How to reproduce the issue locally
- **Recommended Actions**: Specific steps to fix the issue
- **Prevention Strategies**: How to avoid similar failures
- **AI Team Self-Improvement**: Give a short set of additional prompting instructions to copy-and-paste into instructions.md for AI coding agents to help prevent this type of failure in future
- **Historical Context**: Similar past failures and their resolutions
2. **Actionable Deliverables**:
- Create an issue with investigation results (if warranted)
- Comment on related PR with analysis (if PR-triggered)
- Provide specific file locations and line numbers for fixes
- Suggest code changes or configuration updates
## Output Requirements
### Investigation Issue Template
When creating an investigation issue, use this structure:
```markdown
# 🏥 CI Failure Investigation - Run #${{ github.event.workflow_run.run_number }}
## Summary
[Brief description of the failure]
## Failure Details
- **Run**: [${{ github.event.workflow_run.id }}](${{ github.event.workflow_run.html_url }})
- **Commit**: ${{ github.event.workflow_run.head_sha }}
- **Trigger**: ${{ github.event.workflow_run.event }}
## Root Cause Analysis
[Detailed analysis of what went wrong]
## Failed Jobs and Errors
[List of failed jobs with key error messages]
## Investigation Findings
[Deep analysis results]
## Recommended Actions
- [ ] [Specific actionable steps]
## Prevention Strategies
[How to prevent similar failures]
## AI Team Self-Improvement
[Short set of additional prompting instructions to copy-and-paste into instructions.md for a AI coding agents to help prevent this type of failure in future]
## Historical Context
[Similar past failures and patterns]
```
## Important Guidelines
- **Be Thorough**: Don't just report the error - investigate the underlying cause
- **Use Memory**: Always check for similar past failures and learn from them
- **Be Specific**: Provide exact file paths, line numbers, and error messages
- **Action-Oriented**: Focus on actionable recommendations, not just analysis
- **Pattern Building**: Contribute to the knowledge base for future investigations
- **Resource Efficient**: Use caching to avoid re-downloading large logs
- **Security Conscious**: Never execute untrusted code from logs or external sources
## Cache Usage Strategy
- Store investigation database and knowledge patterns in `/tmp/memory/investigations/` and `/tmp/memory/patterns/`
- Cache detailed log analysis and artifacts in `/tmp/investigation/logs/` and `/tmp/investigation/reports/`
- Persist findings across workflow runs using GitHub Actions cache
- Build cumulative knowledge about failure patterns and solutions using structured JSON files
- Use file-based indexing for fast pattern matching and similarity detection
- **Filename Requirements**: Use filesystem-safe characters only (no colons, quotes, or special characters)
- ✅ Good: `2026-02-12-11-20-45-458-12345.json`
- ❌ Bad: `2026-02-12T11:20:45.458Z-12345.json` (contains colons)
================================================
FILE: .github/workflows/cli-evals.yml
================================================
name: CLI Evals
# Runs on PRs only when evals change (to limit AI gateway cost). Also runnable manually via "Run workflow".
on:
workflow_dispatch:
pull_request:
paths:
- 'packages/cli/evals/**'
schedule:
# Run weekly on Tuesday at 9:00 AM UTC.
- cron: '0 9 * * 2'
jobs:
evals:
runs-on: ubuntu-latest
timeout-minutes: 45
# TODO: Remove continue-on-error when evals should block PR merge.
continue-on-error: true
# Evals use separate secrets (EVAL_*) so you can point to a dedicated evals team.
# Same pattern as test.yml / test-e2e.yml: VERCEL_TOKEN + team/project IDs; add EVAL_AI_GATEWAY_API_KEY for the agent.
steps:
- name: Checkout
uses: actions/checkout@v4
with:
# Check out the PR commit directly instead of a merge commit.
# Empty on schedule/workflow_dispatch, which falls back to the default ref.
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20.x
- name: Install pnpm
run: npm i -g pnpm@8.3.1
- name: Install dependencies
run: pnpm install --no-frozen-lockfile
- name: Build CLI
if: false # skip for now; enable when monorepo build works in CI
run: cd packages/cli && pnpm build
- name: Run CLI evals
id: evals
run: cd packages/cli && pnpm test:evals
env:
AI_GATEWAY_API_KEY: ${{ secrets.EVAL_AI_GATEWAY_API_KEY }}
VERCEL_TOKEN: ${{ secrets.EVAL_TOKEN }}
VERCEL_TEAM_ID: ${{ secrets.EVAL_TEAM_ID }}
VERCEL_PROJECT_ID: ${{ secrets.EVAL_PROJECT_ID }}
CLI_EVAL_TEAM_ID: ${{ secrets.EVAL_TEAM_ID }}
CLI_EVAL_PROJECT_ID: ${{ secrets.EVAL_PROJECT_ID }}
# Run each eval with and without the CLI skills directory
CLI_EVAL_SKILLS_MODES: with-skills,without-skills
# Limit memory pressure from concurrent Docker + Node (reduce OOM exit 137)
NODE_OPTIONS: --max-old-space-size=4096
- name: Upload results folder to centralized evals app
if: always()
env:
BATCH_ID: daily-${{ github.repository }}-${{ github.run_id }}
EXPERIMENTS: vercel-cli
run: |
cd packages/cli && node ./evals/scripts/transform-agent-eval-to-canonical.js \
--results-dir ./evals/results \
--product evals \
--repo ${{ github.repository }} \
--branch ${{ github.ref_name }} \
--commit-sha ${{ github.sha }} \
--run-type "${{ github.event_name == 'schedule' && 'cron' || 'manual' }}" \
--runner agent-eval \
--batch-id "$BATCH_ID" \
--ingest-url "${{ secrets.EVALS_INGEST_URL }}" \
--token "${{ secrets.EVALS_INGEST_TOKEN }}" \
--protection-bypass-secret "${{ secrets.VERCEL_AUTOMATION_BYPASS_SECRET }}" \
--bypass-via header
================================================
FILE: .github/workflows/comment-cli-tarball.yml
================================================
name: Comment CLI Tarball Instructions
on:
pull_request:
env:
VERCEL_TELEMETRY_DISABLED: '1'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
comment-cli-tarball:
name: Comment CLI Tarball Instructions
runs-on: ubuntu-latest
if: github.event_name == 'pull_request' && github.event.pull_request.title != 'Version Packages'
steps:
- name: Wait for Vercel deployment
uses: patrickedqvist/wait-for-vercel-preview@bfdff514ff78a669f2536e9f4dd4ef5813a704a2
id: waitForDeployment
continue-on-error: true
with:
token: ${{ secrets.GITHUB_TOKEN }}
max_timeout: 360
check_interval: 5
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Discover Python packages
id: discoverPythonPackages
run: |
PACKAGES="$(node utils/get-python-packages.js)"
echo "packages=$PACKAGES" >> "$GITHUB_OUTPUT"
echo "Discovered Python packages: $PACKAGES"
- name: Comment PR with CLI tarball instructions
uses: actions/github-script@v7
env:
PYTHON_PACKAGES: ${{ steps.discoverPythonPackages.outputs.packages }}
with:
script: |
const deploymentUrl = '${{ steps.waitForDeployment.outputs.url }}';
const prNumber = context.issue.number;
// Validate deployment URL before posting
if (!deploymentUrl || deploymentUrl === '') {
console.log('No deployment URL available, skipping comment');
return;
}
const owner = context.repo.owner;
const repo = context.repo.repo;
const pythonPackages = JSON.parse(process.env.PYTHON_PACKAGES || '[]');
if (!Array.isArray(pythonPackages)) {
throw new Error('PYTHON_PACKAGES must be a JSON array');
}
for (const pkg of pythonPackages) {
if (
!pkg ||
typeof pkg.packageDir !== 'string' ||
typeof pkg.packageName !== 'string' ||
typeof pkg.title !== 'string'
) {
throw new Error(
`Invalid PYTHON_PACKAGES entry: ${JSON.stringify(pkg)}`
);
}
}
function toPythonEnvVar(packageName) {
return `${packageName.replace(/[^a-zA-Z0-9]/g, '_').toUpperCase()}_PYTHON`;
}
let message = '## 📦 CLI Tarball Ready\n\n';
message += 'The Vercel CLI tarball for this PR is now available!\n\n';
message += '### Quick Test\n\n';
message += 'You can test this PR\'s CLI directly by running:\n\n';
message += '```bash\n';
message += `npx ${deploymentUrl}/tarballs/vercel.tgz --help\n`;
message += '```\n\n';
message += '### Use in vercel.json\n\n';
message += 'To use this CLI version in your project builds, add to your `vercel.json`:\n\n';
message += '```json\n';
message += '{\n';
message += ' "build": {\n';
message += ' "env": {\n';
message += ` "VERCEL_CLI_VERSION": "vercel@${deploymentUrl}/tarballs/vercel.tgz"\n`;
message += ' }\n';
message += ' }\n';
message += '}\n';
message += '```\n';
for (const { packageDir, packageName, title } of pythonPackages) {
try {
const resp = await fetch(
`${deploymentUrl}/tarballs/${packageDir}-wheel.json`
);
if (!resp.ok) {
continue;
}
const { filename } = await resp.json();
if (!filename) {
continue;
}
const wheelUrl = `${deploymentUrl}/tarballs/${filename}`;
const envVar = toPythonEnvVar(packageName);
message += `\n### Python ${title} Wheel\n\n`;
message += `A \`${packageName}\` wheel was also built for this PR.\n`;
message += 'To use in your Python project builds, also set this environment variable:\n\n';
message += '```\n';
message += `${envVar}="${packageName} @ ${wheelUrl}"\n`;
message += '```\n';
} catch {
// No wheel available for this package, skip.
}
}
// Find existing comment to update
const { data: comments } = await github.rest.issues.listComments({
owner,
repo,
issue_number: prNumber,
});
const existingComment = comments.find(comment =>
comment.user.login === 'github-actions[bot]' &&
comment.body.includes('## 📦 CLI Tarball Ready')
);
if (existingComment) {
await github.rest.issues.updateComment({
owner,
repo,
comment_id: existingComment.id,
body: message
});
} else {
await github.rest.issues.createComment({
owner,
repo,
issue_number: prNumber,
body: message
});
}
================================================
FILE: .github/workflows/cron-update-gatsby-fixtures.yml
================================================
name: Cron Update Gatsby Fixtures
on:
# Allow manual runs
workflow_dispatch:
# Run once a week https://crontab.guru/once-a-week
schedule:
- cron: '0 0 * * 0'
jobs:
update-gatsby-fixtures:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# 0 means fetch all commits so we can commit and push in the script below
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Enable corepack
run: corepack enable pnpm
- name: Update Gatsby Fixtures
uses: actions/github-script@v7
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
# See https://github.com/actions/github-script#run-a-separate-file-with-an-async-function
with:
github-token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
script: |
const script = require('./utils/update-gatsby-fixtures.js')
await script({ github, context })
================================================
FILE: .github/workflows/cron-update-next-canary.yml
================================================
name: Cron Update Next
on:
# Allow manual runs
workflow_dispatch:
# Run every 10 minutes https://crontab.guru/every-10-minutes
schedule:
- cron: '*/10 * * * *'
jobs:
create-pull-request:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# 0 means fetch all commits so we can commit and push in the script below
with:
fetch-depth: 0
- name: Install latest corepack
run: npm install -g corepack@latest
- name: Enable corepack
run: corepack enable pnpm
- name: Create Pull Request
uses: actions/github-script@v7
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
# See https://github.com/actions/github-script#run-a-separate-file-with-an-async-function
with:
github-token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
script: |
const script = require('./utils/update-next.js')
await script({ github, context, tag: 'canary' })
================================================
FILE: .github/workflows/cron-update-next-latest.yml
================================================
name: Cron Update Next
on:
# Allow manual runs
workflow_dispatch:
# Run every 4 hours https://crontab.guru/every-4-hours
schedule:
- cron: '0 */4 * * *'
jobs:
create-pull-request:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# 0 means fetch all commits so we can commit and push in the script below
with:
fetch-depth: 0
- name: Enable corepack
run: corepack enable pnpm
- name: Create Pull Request
uses: actions/github-script@v7
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
# See https://github.com/actions/github-script#run-a-separate-file-with-an-async-function
with:
github-token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
script: |
const script = require('./utils/update-next.js')
await script({ github, context, tag: 'latest' })
================================================
FILE: .github/workflows/cron-update-turbo.yml
================================================
name: Cron Update Turbo
on:
# Allow manual runs
workflow_dispatch:
# Run every week https://crontab.guru/every-week
schedule:
- cron: '0 0 * * 0'
jobs:
create-pull-request:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
# 0 means fetch all commits so we can commit and push in the script below
with:
fetch-depth: 0
- name: Enable corepack
run: corepack enable pnpm
- name: Create Pull Request
uses: actions/github-script@v7
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
# See https://github.com/actions/github-script#run-a-separate-file-with-an-async-function
with:
github-token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
script: |
const script = require('./utils/update-turbo.js')
await script({ github, context })
================================================
FILE: .github/workflows/discussions-auto-close.yml
================================================
name: New Discussion Auto-lock
# automatically lock and close new discussion posts
on:
discussion:
types: [created]
jobs:
lock_discussion:
runs-on: ubuntu-latest
steps:
- name: Close and lock discussion
run: |
lockSucceeded="$(gh api graphql -F discussionId=$DISCUSSION_ID -f query='
mutation lock($discussionId:ID!) {
addDiscussionComment(input:{discussionId:$discussionId, body:"This discussion was automatically closed because the community moved to [community.vercel.com](https://community.vercel.com)"}) {
comment{
url
}
}
closeDiscussion(input: {discussionId:$discussionId, reason: OUTDATED}) {
discussion {
url
stateReason
}
}
lockLockable(input: {lockableId:$discussionId}) {
actor {
login
}
lockedRecord {
activeLockReason
locked
}
}
}
' --jq '.data.lockLockable.lockedRecord.locked')"
echo "LOCKED =" $lockSucceeded
echo '${{ github.event.discussion.number }}' | jq -r '"https://github.com/vercel/vercel/discussions/\(.)"'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DISCUSSION_ID: ${{ github.event.discussion.node_id }}
================================================
FILE: .github/workflows/faster-template-prebuild-nextjs.yml
================================================
name: Prebuild Next.js Example
on:
push:
branches:
- main
workflow_dispatch:
inputs:
jobs:
clone-build-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
- uses: actions/setup-node@v4
with:
node-version: 'lts/*'
- run: |
node --version
npm --version
- run: |
npm install -g vercel@latest
vc --version
- working-directory: ./examples/nextjs
run: |
npm ci
env:
NPM_CONFIG_LOGLEVEL: http
- working-directory: ./examples/nextjs
run: |
vc build --debug --token $VERCEL_TOKEN --yes --prod
env:
VERCEL_PROJECT_ID: prj_qav3SWw0ZQDfehj7w47xPaBESx8P
VERCEL_TOKEN: ${{ secrets.NOW_EXAMPLES_VERCEL_TOKEN }}
VERCEL_ORG_ID: ${{ secrets.NOW_EXAMPLES_VERCEL_ORG_ID }}
- working-directory: ./examples/nextjs
run: |
vc deploy --debug --token $VERCEL_TOKEN --yes --prod --prebuilt --archive=tgz
env:
VERCEL_PROJECT_ID: prj_qav3SWw0ZQDfehj7w47xPaBESx8P
VERCEL_TOKEN: ${{ secrets.NOW_EXAMPLES_VERCEL_TOKEN }}
VERCEL_ORG_ID: ${{ secrets.NOW_EXAMPLES_VERCEL_ORG_ID }}
================================================
FILE: .github/workflows/release-crates.yml
================================================
name: Release Rust Crates
on:
push:
branches: [main]
paths:
- 'crates/vercel_runtime/**'
- 'Cargo.toml'
- 'Cargo.lock'
workflow_dispatch:
jobs:
publish:
runs-on: ubuntu-latest
environment: release
permissions:
id-token: write
steps:
- uses: actions/checkout@v5
- uses: rust-lang/crates-io-auth-action@v1
id: auth
- run: cargo publish
working-directory: crates/vercel_runtime
env:
CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}
================================================
FILE: .github/workflows/release-python-package.yml
================================================
name: Release Python Package
on:
workflow_dispatch:
inputs:
package:
description: 'Python package to publish ("all" or package name)'
required: true
default: all
type: string
force:
description: 'Force publish even if version has not changed'
required: false
default: false
type: boolean
jobs:
publish:
runs-on: ubuntu-latest
environment:
name: release
permissions:
id-token: write
contents: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 2
persist-credentials: false
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version-file: 'pyproject.toml'
- name: Install uv
uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
with:
version: '0.10.11'
- name: Publish
env:
PACKAGE: ${{ inputs.package }}
FORCE: ${{ inputs.force }}
run: |
args=(--package="$PACKAGE")
if [ "$FORCE" = "true" ]; then
args+=(--force)
fi
node python/publish.mjs "${args[@]}"
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
push:
branches:
- main
env:
TURBO_REMOTE_ONLY: 'true'
TURBO_TEAM: 'vercel'
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
concurrency: ${{ github.workflow }}-${{ github.ref }}
jobs:
release:
name: Release
runs-on: ubuntu-latest
environment: release # Must be kept for trusted publishing on PyPI
permissions:
contents: write
id-token: write
steps:
- name: Checkout Repo
uses: actions/checkout@v4
with:
token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
# Necessary for the publish step to work since it uses HEAD^ to determine if the version has changed
fetch-depth: 2
- name: Fetch git tags
run: git fetch origin 'refs/tags/*:refs/tags/*'
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # 2025-12-16
with:
toolchain: stable
targets: wasm32-wasip2
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version-file: 'pyproject.toml'
- name: Install uv
uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
with:
version: '0.10.11'
- name: install npm@9
run: npm i -g npm@9
- name: install pnpm@8.3.1
run: npm i -g pnpm@8.3.1
- name: Install Dependencies
run: pnpm install --frozen-lockfile
- name: Build Packages
run: pnpm build
env:
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
- name: Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@v1
with:
version: pnpm ci:version
publish: pnpm ci:publish
env:
GITHUB_TOKEN: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
NPM_CONFIG_PROVENANCE: 'true'
NPM_TOKEN: ${{ secrets.NPM_TOKEN_ELEVATED }}
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
- name: Trigger Update (if a Publish Happened)
if: steps.changesets.outputs.published == 'true'
uses: actions/github-script@v7
with:
github-token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
script: |
const script = require('./utils/trigger-update-workflow.js')
await script({ github, context })
- name: Set latest Release to `vercel` (if a Publish Happened)
if: steps.changesets.outputs.published == 'true'
uses: actions/github-script@v7
with:
github-token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
script: |
const script = require('./utils/update-latest-release.js')
await script({ github, context })
summary:
name: Summary (release)
runs-on: ubuntu-latest
timeout-minutes: 5
needs:
- release
steps:
- name: Check All
run: echo OK
================================================
FILE: .github/workflows/rollback-latest-tag.yml
================================================
name: Rollback Latest Tag
on:
workflow_dispatch:
inputs:
version:
description: 'CLI version to set as latest on NPM (e.g., 39.2.4)'
required: true
type: string
jobs:
rollback:
name: Rollback Latest Tag on NPM
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: Checkout Repo
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
- name: Validate version format
run: |
if ! [[ "${{ inputs.version }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Error: Version must be in format X.Y.Z (e.g., 39.2.4)"
exit 1
fi
- name: Verify version exists on NPM
run: |
if ! npm view vercel@${{ inputs.version }} version &>/dev/null; then
echo "Error: vercel@${{ inputs.version }} does not exist on NPM"
npm view vercel versions --json | tail -20
exit 1
fi
echo "✓ Verified vercel@${{ inputs.version }} exists on NPM"
- name: Set NPM dist-tag latest to ${{ inputs.version }}
run: npm dist-tag add vercel@${{ inputs.version }} latest
env:
NPM_CONFIG_PROVENANCE: 'true'
NPM_TOKEN: ${{ secrets.NPM_TOKEN_ELEVATED }}
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN_ELEVATED }}
- name: Verify tag update
run: |
echo "Current NPM dist-tags for vercel:"
npm dist-tag ls vercel
- name: Summary
run: |
echo "✅ Rollback complete: vercel@${{ inputs.version }} is now tagged as latest on NPM"
================================================
FILE: .github/workflows/test-e2e.yml
================================================
name: E2E Tests
# any files changing in .github/workflows will ensure
# that all e2e tests run. One easy way of doing this
# is to increment the counter below.
# cache buster: 2
on:
pull_request:
env:
VERCEL_TELEMETRY_DISABLED: '1'
TURBO_REMOTE_ONLY: 'true'
TURBO_TEAM: 'vercel'
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
setup:
name: Find Changes
runs-on: ubuntu-latest
outputs:
tests: ${{ steps['set-tests'].outputs['tests'] }}
dplUrl: ${{ steps.resolveTarball.outputs.url }}
affectedPackages: ${{ steps['affected-packages'].outputs['packages'] }}
testStrategy: ${{ steps['affected-packages'].outputs['strategy'] }}
affectedCount: ${{ steps['affected-packages'].outputs['count'] }}
totalCount: ${{ steps['affected-packages'].outputs['total'] }}
allPackages: ${{ steps['affected-packages'].outputs['allPackages'] }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Check out the PR commit directly instead of a merge commit.
ref: ${{ github.event.pull_request.head.sha }}
token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # 2025-12-16
with:
toolchain: stable
targets: wasm32-wasip2
- name: install pnpm@8.3.1
run: npm i -g pnpm@8.3.1
- run: pnpm install
- id: affected-packages
run: |
export TURBO_BASE_SHA="${{ github.event.pull_request.base.sha }}"
AFFECTED_OUTPUT=$(node utils/test-affected.js "${{ github.event.pull_request.base.sha }}" 2>&1)
PACKAGE_COUNT=$(echo "$AFFECTED_OUTPUT" | grep -o "Found [0-9]* affected packages" | grep -o "[0-9]*" | head -1 || echo "0")
TOTAL_COUNT=$(echo "$AFFECTED_OUTPUT" | grep -o "Total packages with tests: [0-9]*" | grep -o "[0-9]*" | head -1 || echo "0")
if echo "$AFFECTED_OUTPUT" | grep -q "config or workflow changes detected"; then
STRATEGY="all-e2e"
elif echo "$AFFECTED_OUTPUT" | grep -q "test-all result detected"; then
STRATEGY="test-all"
elif [ "$PACKAGE_COUNT" -gt "0" ]; then
STRATEGY="affected-only"
else
STRATEGY="no-tests"
fi
PACKAGES=$(echo "$AFFECTED_OUTPUT" | sed -n '/Affected packages that would be tested:/,/This would result in the following turbo filters:/p' | grep " - " | sed 's/ - //' | tr '\n' ',' | sed 's/,$//')
ALL_PACKAGES=$(echo "$AFFECTED_OUTPUT" | grep "All packages with tests:" | sed 's/All packages with tests: //' | head -1 | xargs)
echo "PACKAGE_COUNT=$PACKAGE_COUNT"
echo "TOTAL_COUNT=$TOTAL_COUNT"
echo "STRATEGY=$STRATEGY"
echo "strategy=$STRATEGY" >> $GITHUB_OUTPUT
echo "packages=$PACKAGES" >> $GITHUB_OUTPUT
echo "count=$PACKAGE_COUNT" >> $GITHUB_OUTPUT
echo "total=$TOTAL_COUNT" >> $GITHUB_OUTPUT
echo "allPackages=$ALL_PACKAGES" >> $GITHUB_OUTPUT
- id: set-tests
run: |
TESTS_ARRAY=$(node utils/chunk-tests.js)
echo "E2E tests to run:"
echo "$TESTS_ARRAY"
echo "tests=$TESTS_ARRAY" >> $GITHUB_OUTPUT
env:
TURBO_BASE_SHA: ${{ github.event.pull_request.base.sha }}
TEST_TYPE: e2e
- uses: patrickedqvist/wait-for-vercel-preview@bfdff514ff78a669f2536e9f4dd4ef5813a704a2
id: waitForTarball
continue-on-error: true
with:
token: ${{ secrets.GITHUB_TOKEN }}
max_timeout: 360
check_interval: 5
- name: Resolve Vercel tarball URL
id: resolveTarball
uses: actions/github-script@v7
env:
WAIT_URL: ${{ steps.waitForTarball.outputs.url }}
with:
script: |
const owner = context.repo.owner;
const repo = context.repo.repo;
const prNumber =
context.payload.pull_request?.number ?? context.issue.number;
const waitUrl = process.env.WAIT_URL || '';
if (waitUrl) {
core.info(`Using deployment URL from wait step: ${waitUrl}`);
core.setOutput('url', waitUrl);
return;
}
core.info(
'No deployment found for the current HEAD commit. Falling back to the most recent successful Vercel preview deployment for this PR.'
);
const { data: commits } = await github.rest.pulls.listCommits({
owner,
repo,
pull_number: prNumber,
per_page: 100,
});
const shas = commits.map(c => c.sha).reverse();
for (const sha of shas) {
core.info(`Checking deployments for ${sha}...`);
const { data: deployments } =
await github.rest.repos.listDeployments({
owner,
repo,
sha,
environment: 'Preview',
per_page: 5,
});
for (const deployment of deployments) {
if (deployment.creator?.login !== 'vercel[bot]') {
continue;
}
const { data: statuses } =
await github.rest.repos.listDeploymentStatuses({
owner,
repo,
deployment_id: deployment.id,
per_page: 10,
});
const success = statuses.find(
s => s.state === 'success' && s.environment_url
);
if (success?.environment_url) {
core.info(`Resolved deployment URL: ${success.environment_url}`);
core.setOutput('url', success.environment_url);
return;
}
}
}
core.setFailed(
'No Vercel preview deployment found for any commit in this PR.'
);
test:
timeout-minutes: 120
runs-on: ${{ matrix.runner }}
name: ${{matrix.scriptName}} (${{matrix.packageName}}, ${{matrix.chunkNumber}}, ${{ matrix.runner }}, Node v${{ matrix.nodeVersion }})
if: ${{ needs.setup.outputs['tests'] != '[]' }}
needs:
- setup
strategy:
fail-fast: false
max-parallel: 75
matrix:
include: ${{ fromJson(needs.setup.outputs['tests']) }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
# Check out the PR commit directly instead of a merge commit.
ref: ${{ github.event.pull_request.head.sha }}
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.nodeVersion }}
- name: install yarn@1.22.19
run: npm i -g yarn@1.22.19
- name: install pnpm@8.3.1
run: npm i -g pnpm@8.3.1
- name: Install uv
uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
with:
version: '0.10.11'
- run: pnpm install
- name: Build ${{matrix.packageName}} and all its dependencies
run: node utils/gen.js && node_modules/.bin/turbo run build --cache-dir=".turbo" --log-order=stream --filter=${{matrix.packageName}}...
env:
FORCE_COLOR: '1'
- name: Resolve Python wheel URLs
shell: bash
run: |
DEPLOYMENT_URL="${{ needs.setup.outputs.dplUrl }}"
PACKAGES_JSON="$(node utils/get-python-packages.js)"
if [ -z "$PACKAGES_JSON" ] || [ "$PACKAGES_JSON" = "[]" ]; then
echo "No Python packages discovered; skipping wheel URL resolution."
exit 0
fi
echo "$PACKAGES_JSON" | jq -c '.[]' | while IFS= read -r package; do
package_slug="$(echo "$package" | jq -r '.packageDir')"
package_name="$(echo "$package" | jq -r '.packageName')"
wheel_name="$(curl -sf "$DEPLOYMENT_URL/tarballs/$package_slug-wheel.json" | jq -r '.filename' || echo "")"
if [ -z "$wheel_name" ]; then
continue
fi
env_var="$(printf '%s' "$package_name" | tr -c '[:alnum:]' '_' | tr '[:lower:]' '[:upper:]')_PYTHON"
echo "$env_var=$package_name @ $DEPLOYMENT_URL/tarballs/$wheel_name" >> "$GITHUB_ENV"
done
- name: Test ${{matrix.packageName}}
run: |
attempt=1
max_attempts=2
while [ "$attempt" -le "$max_attempts" ]; do
echo "Running tests (attempt $attempt/$max_attempts): ${{matrix.testScript}} ${{matrix.packageName}}"
if node utils/gen.js && node_modules/.bin/turbo run ${{matrix.testScript}} --summarize --cache-dir=".turbo" --log-order=stream --filter=${{matrix.packageName}} -- ${{ join(matrix.testPaths, ' ') }}; then
exit 0
fi
if [ "$attempt" -eq "$max_attempts" ]; then
echo "Tests failed after $max_attempts attempts."
exit 1
fi
echo "Tests failed; retrying once..."
attempt=$((attempt+1))
done
shell: bash
env:
# Per-package pip install specs (e.g. VERCEL_RUNTIME_PYTHON,
# VERCEL_WORKERS_PYTHON) are also available here, injected into
# $GITHUB_ENV by the "Resolve Python wheel URLs" step above.
JEST_JUNIT_OUTPUT_FILE: ${{github.workspace}}/.junit-reports/${{matrix.scriptName}}-${{matrix.packageName}}-${{matrix.chunkNumber}}-${{ matrix.runner }}.xml
VERCEL_CLI_VERSION: ${{ needs.setup.outputs.dplUrl }}/tarballs/vercel.tgz
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
VERCEL_TEAM_ID: ${{ secrets.VERCEL_TEAM_ID }}
TURBO_BASE_SHA: ${{ github.event.pull_request.base.sha }}
FORCE_COLOR: '1'
- name: 'Determine Turbo HIT or MISS'
if: ${{ !cancelled() }}
id: turbo-summary
shell: bash
run: |
TURBO_MISS_COUNT=`node utils/determine-turbo-hit-or-miss.js`
echo "MISS COUNT: $TURBO_MISS_COUNT"
echo "misses=$TURBO_MISS_COUNT" >> $GITHUB_OUTPUT
- name: 'Upload Test Report to Datadog'
if: ${{ steps['turbo-summary'].outputs.misses != '0' && !cancelled() }}
run: 'pnpm dlx @datadog/datadog-ci@4.2.2 junit upload --service vercel-cli .junit-reports'
env:
DATADOG_API_KEY: ${{secrets.DATADOG_API_KEY_CLI}}
DD_ENV: ci
summary:
name: Summary (e2e)
runs-on: ubuntu-latest
timeout-minutes: 5
if: always()
needs:
- setup
- test
steps:
- name: Check All
run: |-
for status in ${{ join(needs.*.result, ' ') }}
do
if [ "$status" != "success" ] && [ "$status" != "skipped" ]
then
echo "Some checks failed"
exit 1
fi
done
================================================
FILE: .github/workflows/test-lint.yml
================================================
name: Lint
on:
pull_request:
env:
TURBO_REMOTE_ONLY: 'true'
TURBO_TEAM: 'vercel'
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
NODE_VERSION: '22'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
enforce-changeset:
name: Enforce Changeset
runs-on: ubuntu-latest
if: github.event_name == 'pull_request' && github.event.pull_request.title != 'Version Packages'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
ref: main
token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
- run: git fetch origin ${{ github.event.pull_request.head.sha }}:pr-${{ github.event.pull_request.number }}
- run: git checkout pr-${{ github.event.pull_request.number }}
- name: install pnpm@8.3.1
run: npm i -g pnpm@8.3.1
- run: pnpm install
# Enforce a changeset file to be present
- run: pnpm exec changeset status --since=main
lint:
name: Lint
timeout-minutes: 10
runs-on: ubuntu-latest
if: github.event_name == 'pull_request' && github.event.pull_request.title != 'Version Packages'
steps:
- uses: actions/checkout@v4
with:
# Check out the PR commit directly instead of a merge commit.
ref: ${{ github.event.pull_request.head.sha }}
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # 2025-12-16
with:
toolchain: stable
targets: wasm32-wasip2
- name: install pnpm@8.3.1
run: npm i -g pnpm@8.3.1
- run: pnpm install
- name: Biome lint
run: pnpm run lint
- name: Biome format check
run: pnpm run format:check
- name: Check dependency versions
run: pnpm exec syncpack lint
- run: pnpm run build
- run: pnpm run type-check
- name: Ensure clean git workspace
run: git diff --name-only --exit-code
lint-actions:
name: Lint GitHub Actions
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- uses: actions/checkout@v4
with:
# Deliberately run against merge commit *here* because
# github actions are sourced from the merge commits and I
# don't think we can override that.
ref:
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- run: pip install pyyaml
- name: Enforce actions/checkout ref
shell: python
run: |
import glob, sys, yaml
errors = []
for path in sorted(glob.glob(".github/workflows/*.yml")):
with open(path) as f:
workflow = yaml.safe_load(f)
if not isinstance(workflow, dict):
continue
triggers = workflow.get(True) or {} # 'on' parses as True in YAML
if isinstance(triggers, list):
if "pull_request" not in triggers:
continue
elif isinstance(triggers, dict):
if "pull_request" not in triggers:
continue
else:
continue
for job_name, job in workflow.get("jobs", {}).items():
for i, step in enumerate(job.get("steps") or []):
uses = step.get("uses", "")
if not uses.startswith("actions/checkout"):
continue
with_block = step.get("with") or {}
if "ref" not in with_block:
errors.append(
f" {path}: job '{job_name}', step {i + 1} "
f"uses {uses} without a 'ref'"
)
if errors:
print("actions/checkout steps missing 'ref':")
print("\n".join(errors))
sys.exit(1)
print("All actions/checkout steps have a 'ref' specified.")
summary:
name: Summary (lint)
runs-on: ubuntu-latest
timeout-minutes: 1
if: always()
needs:
- enforce-changeset
- lint
- lint-actions
steps:
- name: Check All
run: |-
for status in ${{ join(needs.*.result, ' ') }}
do
if [ "$status" != "success" ] && [ "$status" != "skipped" ]
then
echo "Some checks failed"
exit 1
fi
done
================================================
FILE: .github/workflows/test-python-packages.yml
================================================
name: Python Packages Tests
on:
pull_request:
paths:
- 'python/**'
- 'pyproject.toml'
- 'uv.lock'
- 'utils/get-python-packages.js'
- '.github/workflows/test-python-packages.yml'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
setup:
name: Discover Python Packages
runs-on: ubuntu-latest
outputs:
packages: ${{ steps.discover.outputs.packages }}
steps:
- uses: actions/checkout@v4
with:
# Check out the PR commit directly instead of a merge commit.
ref: ${{ github.event.pull_request.head.sha }}
- id: discover
run: |
PACKAGES="$(node utils/get-python-packages.js)"
echo "packages=$PACKAGES" >> "$GITHUB_OUTPUT"
echo "Discovered Python packages: $PACKAGES"
test:
name: Test (${{ matrix.package.label }}, Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
timeout-minutes: 10
needs:
- setup
strategy:
fail-fast: false
matrix:
python-version: ['3.12', '3.13', '3.14']
package: ${{ fromJson(needs.setup.outputs.packages) }}
steps:
- uses: actions/checkout@v4
with:
# Check out the PR commit directly instead of a merge commit.
ref: ${{ github.event.pull_request.head.sha }}
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- uses: astral-sh/setup-uv@eac588ad8def6316056a12d4907a9d4d84ff7a3b # v7.3.0
with:
version: '0.10.11'
- run: uv run --group=test --locked --project=${{ matrix.package.project }} pytest -v --tb=short ${{ matrix.package.project }}/tests
summary:
name: Summary (python-packages)
runs-on: ubuntu-latest
timeout-minutes: 1
if: always()
needs:
- setup
- test
steps:
- name: Check All
run: |-
for status in ${{ join(needs.*.result, ' ') }}
do
if [ "$status" != "success" ] && [ "$status" != "skipped" ]
then
echo "Some checks failed"
exit 1
fi
done
================================================
FILE: .github/workflows/test.yml
================================================
name: Unit Tests
on:
pull_request:
env:
VERCEL_TELEMETRY_DISABLED: '1'
TURBO_REMOTE_ONLY: 'true'
TURBO_TEAM: 'vercel'
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
setup:
name: Find Changes
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
outputs:
tests: ${{ steps['set-tests'].outputs['tests'] }}
dplUrl: ${{ steps.resolveTarball.outputs.url }}
affectedPackages: ${{ steps['affected-packages'].outputs['packages'] }}
testStrategy: ${{ steps['affected-packages'].outputs['strategy'] }}
affectedCount: ${{ steps['affected-packages'].outputs['count'] }}
totalCount: ${{ steps['affected-packages'].outputs['total'] }}
allPackages: ${{ steps['affected-packages'].outputs['allPackages'] }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Need full history for turbo query to work
# Check out the PR commit directly instead of a merge commit.
ref: ${{ github.event.pull_request.head.sha }}
token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
- uses: actions/setup-node@v4
with:
node-version: 22
- name: install pnpm@8.3.1
run: npm i -g pnpm@8.3.1
- run: pnpm install
- id: affected-packages
run: |
# Set base SHA for affected package detection
export TURBO_BASE_SHA="${{ github.event.pull_request.base.sha }}"
# Get affected packages info for PR comment
AFFECTED_OUTPUT=$(node utils/test-affected.js "${{ github.event.pull_request.base.sha }}" 2>&1)
# Extract affected packages count and total packages count
PACKAGE_COUNT=$(echo "$AFFECTED_OUTPUT" | grep -o "Found [0-9]* affected packages" | grep -o "[0-9]*" | head -1 || echo "0")
TOTAL_COUNT=$(echo "$AFFECTED_OUTPUT" | grep -o "Total packages with tests: [0-9]*" | grep -o "[0-9]*" | head -1 || echo "0")
if echo "$AFFECTED_OUTPUT" | grep -q "config or workflow changes detected"; then
STRATEGY="all-e2e"
elif echo "$AFFECTED_OUTPUT" | grep -q "test-all result detected"; then
STRATEGY="test-all"
elif [ "$PACKAGE_COUNT" -gt "0" ]; then
STRATEGY="affected-only"
else
STRATEGY="no-tests"
fi
# Get the list of affected packages
PACKAGES=$(echo "$AFFECTED_OUTPUT" | sed -n '/Affected packages that would be tested:/,/This would result in the following turbo filters:/p' | grep " - " | sed 's/ - //' | tr '\n' ',' | sed 's/,$//')
# Get all packages (trim whitespace and newlines)
ALL_PACKAGES=$(echo "$AFFECTED_OUTPUT" | grep "All packages with tests:" | sed 's/All packages with tests: //' | head -1 | xargs)
# Debug output
echo "PACKAGE_COUNT=$PACKAGE_COUNT"
echo "TOTAL_COUNT=$TOTAL_COUNT"
echo "STRATEGY=$STRATEGY"
echo "strategy=$STRATEGY" >> $GITHUB_OUTPUT
echo "packages=$PACKAGES" >> $GITHUB_OUTPUT
echo "count=$PACKAGE_COUNT" >> $GITHUB_OUTPUT
echo "total=$TOTAL_COUNT" >> $GITHUB_OUTPUT
echo "allPackages=$ALL_PACKAGES" >> $GITHUB_OUTPUT
- id: set-tests
run: |
TESTS_ARRAY=$(node utils/chunk-tests.js)
echo "Unit tests to run:"
echo "$TESTS_ARRAY"
echo "tests=$TESTS_ARRAY" >> $GITHUB_OUTPUT
env:
TURBO_BASE_SHA: ${{ github.event.pull_request.base.sha }}
TEST_TYPE: unit
- uses: patrickedqvist/wait-for-vercel-preview@bfdff514ff78a669f2536e9f4dd4ef5813a704a2
id: waitForTarball
continue-on-error: true
with:
token: ${{ secrets.GITHUB_TOKEN }}
max_timeout: 360
check_interval: 5
- name: Resolve Vercel tarball URL
id: resolveTarball
uses: actions/github-script@v7
env:
WAIT_URL: ${{ steps.waitForTarball.outputs.url }}
with:
script: |
const owner = context.repo.owner;
const repo = context.repo.repo;
const prNumber =
context.payload.pull_request?.number ?? context.issue.number;
const waitUrl = process.env.WAIT_URL || '';
if (waitUrl) {
core.info(`Using deployment URL from wait step: ${waitUrl}`);
core.setOutput('url', waitUrl);
return;
}
core.info(
'No deployment found for the current HEAD commit. Falling back to the most recent successful Vercel preview deployment for this PR.'
);
const { data: commits } = await github.rest.pulls.listCommits({
owner,
repo,
pull_number: prNumber,
per_page: 100,
});
// API returns commits oldest->newest; prefer newest first.
const shas = commits.map(c => c.sha).reverse();
for (const sha of shas) {
core.info(`Checking deployments for ${sha}...`);
const { data: deployments } =
await github.rest.repos.listDeployments({
owner,
repo,
sha,
environment: 'Preview',
per_page: 5,
});
for (const deployment of deployments) {
if (deployment.creator?.login !== 'vercel[bot]') {
continue;
}
const { data: statuses } =
await github.rest.repos.listDeploymentStatuses({
owner,
repo,
deployment_id: deployment.id,
per_page: 10,
});
const success = statuses.find(
s => s.state === 'success' && s.environment_url
);
if (success?.environment_url) {
core.info(`Resolved deployment URL: ${success.environment_url}`);
core.setOutput('url', success.environment_url);
return;
}
}
}
core.setFailed(
'No Vercel preview deployment found for any commit in this PR.'
);
comment-test-strategy:
name: Comment Test Strategy
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
needs:
- setup
steps:
- name: Comment PR with test strategy
uses: actions/github-script@v7
with:
script: |
const strategy = '${{ needs.setup.outputs.testStrategy }}';
const packages = '${{ needs.setup.outputs.affectedPackages }}';
const allPackages = '${{ needs.setup.outputs.allPackages }}';
const affectedCount = parseInt('${{ needs.setup.outputs.affectedCount }}') || 0;
const totalCount = parseInt('${{ needs.setup.outputs.totalCount }}') || 0;
const baseSha = '${{ github.event.pull_request.base.sha }}';
const headSha = '${{ github.event.pull_request.head.sha }}';
// Calculate percentage and unaffected packages
const percentage = totalCount > 0 ? Math.round((affectedCount / totalCount) * 100) : 0;
const unaffectedCount = totalCount - affectedCount;
const unaffectedPercentage = totalCount > 0 ? Math.round((unaffectedCount / totalCount) * 100) : 0;
// Calculate unaffected package list
const affectedSet = packages ? new Set(packages.split(',').map(p => p.trim())) : new Set();
const allPackagesList = allPackages ? allPackages.split(',').map(p => p.trim()) : [];
const unaffectedPackages = allPackagesList.filter(pkg => !affectedSet.has(pkg));
const unaffectedList = unaffectedPackages.map(p => `1. \`${p}\``).join('\n');
let message = '## 🧪 Unit Test Strategy\n\n';
message += `**Comparing**: [\`${baseSha.substring(0, 7)}\`](https://github.com/${context.repo.owner}/${context.repo.repo}/commit/${baseSha}) → [\`${headSha.substring(0, 7)}\`](https://github.com/${context.repo.owner}/${context.repo.repo}/commit/${headSha}) ([view diff](https://github.com/${context.repo.owner}/${context.repo.repo}/compare/${baseSha}...${headSha}))\n\n`;
if (strategy === 'all-e2e') {
message += '**Strategy**: Code changed outside of a package - running all unit tests\n\n';
message += '⚠️ All unit tests will run because global code changes could impact all packages.\n\n';
if (packages) {
const packageList = packages.split(',').map(p => `1. \`${p.trim()}\``).join('\n');
message += `<details>\n<summary>Affected packages - ${affectedCount} (${percentage}%)</summary>\n\n${packageList}\n\n</details>\n\n`;
}
if (unaffectedCount > 0) {
message += `<details>\n<summary>Unaffected packages - ${unaffectedCount} (${unaffectedPercentage}%)</summary>\n\n${unaffectedList || '_No unaffected packages_'}\n\n</details>\n\n`;
}
message += '### Results\n\n';
message += '- **Unit tests**: All affected packages will run unit tests\n';
message += '- **E2E tests**: Running in parallel via E2E Tests workflow\n';
message += '- **Type checks**: All affected packages will run type checks';
} else if (strategy === 'affected-only') {
message += '**Strategy**: Affected packages only\n\n';
message += '✅ Only testing packages that have been modified or depend on modified packages.\n\n';
if (packages) {
const packageList = packages.split(',').map(p => `1. \`${p.trim()}\``).join('\n');
message += `<details>\n<summary>Affected packages - ${affectedCount} (${percentage}%)</summary>\n\n${packageList}\n\n</details>\n\n`;
}
if (unaffectedCount > 0) {
message += `<details>\n<summary>Unaffected packages - ${unaffectedCount} (${unaffectedPercentage}%)</summary>\n\n${unaffectedList || '_No unaffected packages_'}\n\n</details>\n\n`;
}
message += '### Results\n\n';
message += '- **Unit tests**: Only affected packages will run unit tests\n';
message += '- **E2E tests**: Running in parallel via E2E Tests workflow\n';
message += '- **Type checks**: Only affected packages will run type checks';
} else if (strategy === 'no-tests') {
message += '**Strategy**: No tests needed\n\n';
message += '✨ No packages affected - skipping tests\n\n';
message += '### Results\n\n';
message += '- **Unit tests**: None\n';
message += '- **E2E tests**: Running in parallel via E2E Tests workflow\n';
message += '- **Type checks**: None';
} else if (strategy === 'test-all') {
message += '**Strategy**: Full unit test suite\n\n';
message += '🔄 Running all unit tests (unable to determine affected packages)\n\n';
if (packages) {
const packageList = packages.split(',').map(p => `1. \`${p.trim()}\``).join('\n');
message += `<details>\n<summary>Affected packages - ${affectedCount} (${percentage}%)</summary>\n\n${packageList}\n\n</details>\n\n`;
}
if (unaffectedCount > 0) {
message += `<details>\n<summary>Unaffected packages - ${unaffectedCount} (${unaffectedPercentage}%)</summary>\n\n${unaffectedList || '_No unaffected packages_'}\n\n</details>\n\n`;
}
message += '### Results\n\n';
message += '- **Unit tests**: All packages will run unit tests\n';
message += '- **E2E tests**: Running in parallel via E2E Tests workflow\n';
message += '- **Type checks**: All packages will run type checks';
} else {
message += '**Strategy**: Unknown\n\n';
message += `⚠️ Unknown strategy: ${strategy}\n\n`;
message += '### Results\n\n';
message += '- **Unit tests**: Unknown\n';
message += '- **E2E tests**: Running in parallel via E2E Tests workflow\n';
message += '- **Type checks**: Unknown';
}
message += '\n\n---\n*This comment is automatically generated based on the [affected testing strategy](.github/AFFECTED_TESTING.md)*';
// Find existing comment to update
const { data: comments } = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
});
const existingComment = comments.find(comment =>
comment.user.login === 'github-actions[bot]' &&
(comment.body.includes('## 🧪 Unit Test Strategy') || comment.body.includes('## 🧪 Test Strategy'))
);
if (existingComment) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: existingComment.id,
body: message
});
} else {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: message
});
}
test:
timeout-minutes: 120
runs-on: ${{ matrix.runner }}
name: ${{matrix.scriptName}} (${{matrix.packageName}}, ${{matrix.chunkNumber}}, ${{ matrix.runner }}, Node v${{ matrix.nodeVersion }})
if: ${{ needs.setup.outputs['tests'] != '[]' }}
needs:
- setup
strategy:
fail-fast: false
max-parallel: 75
matrix:
include: ${{ fromJson(needs.setup.outputs['tests']) }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0 # Need full history for turbo query to work
# Check out the PR commit directly instead of a merge commit.
ref: ${{ github.event.pull_request.head.sha }}
- uses: actions/setup-node@v4
with:
node-version: ${{ matrix.nodeVersion }}
- name: Setup Rust toolchain
uses: dtolnay/rust-toolchain@f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 # 2025-12-16
with:
toolchain: stable
targets: wasm32-wasip2
# yarn 1.22.21 introduced a Corepack bug when running tests.
# this can be removed once https://github.com/yarnpkg/yarn/issues/9015 is resolved
- name: install yarn@1.22.19
run: npm i -g yarn@1.22.19
- name: install pnpm@8.3.1
run: npm i -g pnpm@8.3.1
- run: pnpm install
- name: Build ${{matrix.packageName}} and all its dependencies
run: node utils/gen.js && node_modules/.bin/turbo run build --cache-dir=".turbo" --log-order=stream --filter=${{matrix.packageName}}...
env:
FORCE_COLOR: '1'
- name: Resolve Python wheel URLs
shell: bash
run: |
DEPLOYMENT_URL="${{ needs.setup.outputs.dplUrl }}"
PACKAGES_JSON="$(node utils/get-python-packages.js)"
if [ -z "$PACKAGES_JSON" ] || [ "$PACKAGES_JSON" = "[]" ]; then
echo "No Python packages discovered; skipping wheel URL resolution."
exit 0
fi
echo "$PACKAGES_JSON" | jq -c '.[]' | while IFS= read -r package; do
package_slug="$(echo "$package" | jq -r '.packageDir')"
package_name="$(echo "$package" | jq -r '.packageName')"
wheel_name="$(curl -sf "$DEPLOYMENT_URL/tarballs/$package_slug-wheel.json" | jq -r '.filename' || echo "")"
if [ -z "$wheel_name" ]; then
continue
fi
env_var="$(printf '%s' "$package_name" | tr -c '[:alnum:]' '_' | tr '[:lower:]' '[:upper:]')_PYTHON"
echo "$env_var=$package_name @ $DEPLOYMENT_URL/tarballs/$wheel_name" >> "$GITHUB_ENV"
done
- name: Test ${{matrix.packageName}}
run: |
attempt=1
max_attempts=2
while [ "$attempt" -le "$max_attempts" ]; do
echo "Running tests (attempt $attempt/$max_attempts): ${{matrix.testScript}} ${{matrix.packageName}}"
if node utils/gen.js && node_modules/.bin/turbo run ${{matrix.testScript}} --summarize --cache-dir=".turbo" --log-order=stream --filter=${{matrix.packageName}} -- ${{ join(matrix.testPaths, ' ') }}; then
exit 0
fi
if [ "$attempt" -eq "$max_attempts" ]; then
echo "Tests failed after $max_attempts attempts."
exit 1
fi
echo "Tests failed; retrying once..."
attempt=$((attempt+1))
done
shell: bash
env:
# Per-package pip install specs (e.g. VERCEL_RUNTIME_PYTHON,
# VERCEL_WORKERS_PYTHON) are also available here, injected into
# $GITHUB_ENV by the "Resolve Python wheel URLs" step above.
JEST_JUNIT_OUTPUT_FILE: ${{github.workspace}}/.junit-reports/${{matrix.scriptName}}-${{matrix.packageName}}-${{matrix.chunkNumber}}-${{ matrix.runner }}.xml
VERCEL_CLI_VERSION: ${{ needs.setup.outputs.dplUrl }}/tarballs/vercel.tgz
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
VERCEL_TEAM_ID: ${{ secrets.VERCEL_TEAM_ID }}
TURBO_BASE_SHA: ${{ github.event.pull_request.base.sha }}
FORCE_COLOR: '1'
- name: 'Determine Turbo HIT or MISS'
if: ${{ !cancelled() }}
id: turbo-summary
shell: bash
run: |
TURBO_MISS_COUNT=`node utils/determine-turbo-hit-or-miss.js`
echo "MISS COUNT: $TURBO_MISS_COUNT"
echo "misses=$TURBO_MISS_COUNT" >> $GITHUB_OUTPUT
- name: 'Upload Test Report to Datadog'
if: ${{ steps['turbo-summary'].outputs.misses != '0' && !cancelled() }}
run: 'pnpm dlx @datadog/datadog-ci@4.2.2 junit upload --service vercel-cli .junit-reports'
env:
DATADOG_API_KEY: ${{secrets.DATADOG_API_KEY_CLI}}
DD_ENV: ci
summary:
name: Summary
runs-on: ubuntu-latest
timeout-minutes: 5
if: always()
needs:
- setup
- test
steps:
- name: Check All
run: |-
for status in ${{ join(needs.*.result, ' ') }}
do
if [ "$status" != "success" ] && [ "$status" != "skipped" ]
then
echo "Some checks failed"
exit 1
fi
done
================================================
FILE: .github/workflows/update-remix-run-dev.yml
================================================
name: Update @remix-run/dev
on:
workflow_dispatch:
inputs:
new-version:
type: string
description: 'Optional version to update @remix-run/dev to inside of @vercel/remix-builder'
jobs:
update-remix-run-dev:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup node
uses: actions/setup-node@v4
with:
node-version: 16
- name: Enable corepack
run: corepack enable pnpm
- name: Update @remix-run/dev
uses: actions/github-script@v7
with:
github-token: ${{ secrets.VERCEL_CLI_RELEASE_BOT_TOKEN }}
script: |
const script = require('./utils/update-remix-run-dev.js')
await script({ github, context }, "${{ inputs.new-version }}")
================================================
FILE: .gitignore
================================================
node_modules
dist
.vscode
.zed
npm-debug.log
yarn-error.log
.nyc_output
coverage
coverage.lcov
*.swp
*~
*.bak
*.tgz
packages/cli/src/util/dev/templates/*.ts
packages/cli/src/util/constants.ts
packages/cli/test/**/yarn.lock
!packages/cli/test/dev/**/yarn.lock
packages/cli/test/**/node_modules
packages/cli/test/dev/fixtures/08-hugo/hugo
packages/cli/test/dev/fixtures/**/dist
packages/cli/test/dev/fixtures/**/public
packages/cli/test/dev/fixtures/**/.now
packages/cli/test/dev/fixtures/**/.vercel
!packages/cli/test/fixtures/unit/commands/build/monorepo-detection/**/yarn.lock
packages/cli/test/fixtures/integration
test/lib/deployment/failed-page.txt
.DS_Store
.next
/.env
/.venv*/
/public
__pycache__
.vercel
.turbo
.eslintcache
turbo-cache-key.json
junit.xml
**/target/
.env*.local
# CLI "target" subcommand (e.g. vercel target list) is source, not build output
!packages/cli/src/commands/target/
!packages/cli/src/commands/target/**
# CLI target command tests
!packages/cli/test/unit/commands/target/
!packages/cli/test/unit/commands/target/**
================================================
FILE: .husky/.gitignore
================================================
_
================================================
FILE: .husky/pre-commit
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
pnpm pre-commit
================================================
FILE: .node_version
================================================
22.19.0
================================================
FILE: .npmrc
================================================
provenance=true
save-exact=true
hoist-pattern[]=!"**/@types/**"
hoist-pattern[]=!"**/typedoc"
hoist-pattern[]=!"**/typedoc-plugin-markdown"
hoist-pattern[]=!"**/typedoc-plugin-mdn-links"
================================================
FILE: .nvmrc
================================================
22
================================================
FILE: .prettierignore
================================================
# https://prettier.io/docs/en/ignore.html
# ignore these files with an intentional syntax error
packages/cli/test/dev/fixtures/edge-function-error/api/edge-error-syntax.js
packages/cli/test/fixtures/unit/commands/build/node-error/api/typescript.ts
examples/sveltekit-1
# gatsby-plugin-vercel-analytics
packages/gatsby-plugin-vercel-analytics
# ignore directories that are not source code
node_modules
dist
pnpm-lock.yaml
.changeset
.vscode
.DS_Store
.next
.vercel
.turbo
.eslintcache
.output
.vercel_build_output
.vercel
coverage
turbo-cache-key.json
open-api.yaml
/examples
/public
packages/*/dist
packages/*/node_modules
packages/**/test/fixtures
packages/**/test/fixtures-*
packages/**/test/dev/fixtures
packages/**/test/build-fixtures
packages/**/test/cache-fixtures
packages/cli/src/util/dev/templates/*.ts
# python
/python
================================================
FILE: .syncpackrc.json
================================================
{
"$schema": "node_modules/syncpack/dist/schema.json",
"lintFormatting": false,
"source": [
"package.json",
"packages/*/package.json",
"internals/*/package.json",
"api/package.json",
"!**/test/**",
"!**/fixtures/**",
"!**/failing-fixtures/**",
"!examples/**"
],
"versionGroups": [
{
"label": "@types/node should be 20.11.0",
"packages": ["**"],
"dependencies": ["@types/node"],
"pinVersion": "20.11.0"
},
{
"label": "Ignore all other dependencies",
"packages": ["**"],
"dependencies": ["**"],
"isIgnored": true
}
]
}
================================================
FILE: .vercel.approvers
================================================
# Migrated CODEOWNERS rule: * @vercel/ci-cd
@vercel/ci-cd:team:optional
================================================
FILE: .vercelignore
================================================
packages/*/test/**
================================================
FILE: AGENTS.md
================================================
# AGENTS.md
Guidelines for AI agents working on the Vercel monorepo.
## Repository Structure
This is a pnpm monorepo containing 44+ packages for the Vercel CLI and runtimes:
- `/packages/*` - Public npm packages (@vercel scope)
- `/internals/*` - Internal shared packages (@vercel-internals scope)
- `/crates` - Rust workspace
- `/examples` - Framework examples for testing
- `/utils` - Build and test utilities
## Essential Commands
```bash
pnpm install # Install dependencies
pnpm build # Build all packages
pnpm type-check # TypeScript validation
pnpm lint # ESLint check
pnpm test-unit # Run unit tests
pnpm test-e2e # Run e2e tests
```
Run tests for a specific package:
```bash
cd packages/<name>
pnpm test-unit
```
## Changesets
**Always create a changeset for all PRs.**
```bash
pnpm changeset
```
A changeset is a markdown file in `.changeset/` with YAML frontmatter listing affected packages and their bump type (patch/minor/major).
### Changeset Rules
1. Every PR must include a changeset (use empty frontmatter for non-package changes).
2. If your change modifies a package in `/packages/*`, include it in the changeset frontmatter
3. If your change only affects non-package files (docs, config, examples, internal tooling), create a changeset with **empty frontmatter** - just the description
4. Packages in `/internals/*`, `/api`, and `/examples` are ignored by changesets (see `.changeset/config.json`)
Example changeset for a package change:
```md
---
'@vercel/node': patch
---
Fixed edge case in serverless function bundling.
```
Example changeset for non-package changes:
```md
---
---
Updated CI workflow configuration.
```
## Code Style
- **Formatting**: Prettier with single quotes, trailing commas (es5), no parens for single arrow params
- **Linting**: ESLint with TypeScript rules
- **No unused variables**: `@typescript-eslint/no-unused-vars` is enforced
- **No focused/disabled tests**: `jest/no-focused-tests` and `jest/no-disabled-tests` are errors
- **Use `slice()` over `substr()`**: substr is deprecated
Run before committing:
```bash
pnpm prettier --write .
pnpm lint
```
## Testing Patterns
- **Unit tests**: Jest or Vitest, located in `packages/<name>/test/unit/`
- **E2E tests**: Fixture-based, test real deployments
- **Affected testing**: CI only runs tests for changed packages and dependents
When adding tests:
```typescript
// Vitest style
import { describe, test, expect } from 'vitest';
describe('feature', () => {
test('should work', () => {
expect(true).toBe(true);
});
});
```
## Package Development
Each package follows this structure:
```
packages/<name>/
├── src/
│ └── index.ts # Main entry
├── test/
├── package.json
├── tsconfig.json # Extends ../../tsconfig.base.json
└── build.mjs # esbuild config (if applicable)
```
Workspace dependencies use `workspace:*`:
```json
{
"dependencies": {
"@vercel/build-utils": "workspace:*"
}
}
```
### New Package Setup
When creating a new package, configure it for public npm access:
```json
{
"name": "@vercel/new-package",
"publishConfig": {
"access": "public"
}
}
```
## Runtime Packages
Runtime packages (node, python, go, ruby, rust) implement the Builder API:
```typescript
export const version = 3;
export async function build(options: BuildOptions): Promise<BuildResult> {
// Build implementation
}
// Optional exports
export async function prepareCache(
options: PrepareCacheOptions
): Promise<Files> {}
export async function startDevServer(
options: StartDevServerOptions
): Promise<StartDevServerResult> {}
```
## CLI Development
Test the CLI against an external repository:
```bash
cd packages/cli
pnpm vercel --cwd /path/to/external/repo
```
This runs your local CLI build against any project without needing to install it globally.
## Common Pitfalls
1. **Don't use `console.log` in CLI package** - `no-console` rule is enforced there
2. **Don't skip CI hooks** - Lint and type checks run in pre-commit
3. **Don't forget type-check** - Run `pnpm type-check` before pushing
4. **Don't modify examples for testing** - They're used for integration tests
================================================
FILE: Cargo.toml
================================================
[workspace]
resolver = "3"
members = [
"crates/vercel_runtime",
]
================================================
FILE: DEVELOPING_A_RUNTIME.md
================================================
# Runtime Developer Reference
The following page is a reference for how to create a Runtime by implementing
the Runtime API interface. It's a way to add support for a new programming language to Vercel.
> Note: If you're the author of a web framework, please use the [Build Output API](https://vercel.com/docs/build-output-api/v3) instead to make your framework compatible with Vercel.
> **See also:** The agent skill at [`.claude/skills/vercel-runtime-implementation-guide.md`](.claude/skills/vercel-runtime-implementation-guide.md) for Fluid protocol documentation and implementation checklists.
A Runtime is an npm module that implements the following interface:
```typescript
interface Runtime {
version: number;
build: (options: BuildOptions) => Promise<BuildResult>;
prepareCache?: (options: PrepareCacheOptions) => Promise<CacheOutputs>;
shouldServe?: (options: ShouldServeOptions) => Promise<boolean>;
startDevServer?: (
options: StartDevServerOptions
) => Promise<StartDevServerResult>;
}
```
The `version` property and the `build()` function are the only _required_ fields.
The rest are optional extensions that a Runtime _may_ implement in order to
enhance functionality. These functions are documented in more detail below.
Official Runtimes are published to [the npm registry](https://npmjs.com) as a package and referenced in the `use` property of the `vercel.json` configuration file.
> **Note:** The `use` property in the `builds` array will work with any [npm
> install argument](https://docs.npmjs.com/cli/install) such as a git repo URL,
> which is useful for testing your Runtime. Alternatively, the `functions` property
> requires that you specify a specific tag published to npm, for stability purposes.
See the [Runtimes Documentation](https://vercel.com/docs/runtimes) to view example usage.
## Runtime Exports
### `version`
A **required** exported constant that decides which version of the Runtime API to use.
The latest and suggested version is `3`.
**Example:**
```typescript
export const version = 3;
```
### `build()`
A **required** exported function that returns a Serverless Function.
> What's a Serverless Function? Read about [Serverless Functions](https://vercel.com/docs/concepts/functions/serverless-functions) to learn more.
**Example:**
```typescript
import { BuildOptions, createLambda } from '@vercel/build-utils';
export async function build(options: BuildOptions) {
// Build the code here…
const lambda = createLambda(/* … */);
return {
output: lambda,
routes: [
// If your Runtime needs to define additional routing, define it here…
],
};
}
```
### `prepareCache()`
An **optional** exported function that is executed after [`build()`](#build) is
completed. The implementation should return an object of `File`s that will be
pre-populated in the working directory for the next build run in the user's
project. An example use-case is that `@vercel/node` uses this function to cache
the `node_modules` directory, making it faster to install npm dependencies for
future builds.
> Note: Only files within the repo root directory can be cached.
**Example:**
```typescript
import { relative } from 'path';
import { glob, PrepareCache } from '@vercel/build-utils';
export const prepareCache: PrepareCache = async ({
workPath,
repoRootPath,
}) => {
// Create a mapping of file names and `File` object instances to cache here…
const rootDirectory = relative(repoRootPath, workPath);
const cache = await glob(`${rootDirectory}/some/dir/**`, repoRootPath);
return cache;
};
```
### `shouldServe()`
An **optional** exported function that is only used by `vercel dev` in [Vercel
CLI](https://vercel.com/download) and indicates whether a
[Runtime](https://vercel.com/docs/runtimes) wants to be responsible for responding
to a certain request path.
**Example:**
```typescript
import { ShouldServeOptions } from '@vercel/build-utils';
export async function shouldServe(options: ShouldServeOptions) {
// Determine whether or not the Runtime should respond to the request path here…
return options.requestPath === options.entrypoint;
}
```
If this function is not defined, Vercel CLI will use the [default
implementation](https://github.com/vercel/vercel/blob/52994bfe26c5f4f179bdb49783ee57ce19334631/packages/now-build-utils/src/should-serve.ts).
### `startDevServer()`
An **optional** exported function that is only used by `vercel dev` in [Vercel
CLI](https://vercel.com/download). If this function is defined, Vercel CLI will
**not** invoke the `build()` function, and instead invoke this function for every
HTTP request. It is an opportunity to provide an optimized development experience
rather than going through the entire `build()` process that is used in production.
This function is invoked _once per HTTP request_ and is expected to spawn a child
process which creates an HTTP server that will execute the entrypoint code when
an HTTP request is received. This child process is _single-serve_ (only used for
a single HTTP request). After the HTTP response is complete, `vercel dev` sends
a shut down signal to the child process.
The `startDevServer()` function returns an object with the `port` number that the
child process' HTTP server is listening on (which should be an [ephemeral
port](https://stackoverflow.com/a/28050404/376773)) as well as the child process'
Process ID, which `vercel dev` uses to send the shut down signal to.
> **Hint:** To determine which ephemeral port the child process is listening on,
> some form of [IPC](https://en.wikipedia.org/wiki/Inter-process_communication) is
> required. For example, in `@vercel/go` the child process writes the port number
> to [_file descriptor 3_](https://en.wikipedia.org/wiki/File_descriptor), which is read by the `startDevServer()` function
> implementation.
It may also return `null` to opt-out of this behavior for a particular request
path or entrypoint.
**Example:**
```typescript
import { spawn } from 'child_process';
import { StartDevServerOptions } from '@vercel/build-utils';
export async function startDevServer(options: StartDevServerOptions) {
// Create a child process which will create an HTTP server.
//
// Note: `my-runtime-dev-server` is an example dev server program name.
// Your implementation will spawn a different program specific to your runtime.
const child = spawn('my-runtime-dev-server', [options.entrypoint], {
stdio: ['ignore', 'inherit', 'inherit', 'pipe'],
});
// In this example, the child process will write the port number to FD 3…
const portPipe = child.stdio[3];
const childPort = await new Promise(resolve => {
portPipe.setEncoding('utf8');
portPipe.once('data', data => {
resolve(Number(data));
});
});
return { pid: child.pid, port: childPort };
}
```
### Execution Context
- Runtimes are executed in a Linux container that closely matches the Serverless Function runtime environment.
- The Runtime code is executed using Node.js version **12.x**.
- A brand new sandbox is created for each deployment, for security reasons.
- The sandbox is cleaned up between executions to ensure no lingering temporary files are shared from build to build.
All the APIs you export ([`analyze()`](#analyze), [`build()`](#build),
[`prepareCache()`](#preparecache), etc.) are not guaranteed to be run in the
same process, but the filesystem we expose (e.g.: `workPath` and the results
of calling [`getWritableDirectory`](#getWritableDirectory) ) is retained.
If you need to share state between those steps, use the filesystem.
### Directory and Cache Lifecycle
When a new build is created, we pre-populate the `workPath` supplied to `analyze` with the results of the `prepareCache` step of the
previous build.
The `analyze` step can modify that directory, and it will not be re-created when it's supplied to `build` and `prepareCache`.
### Accessing Environment and Secrets
The env and secrets specified by the user as `build.env` are passed to the Runtime process. This means you can access user env via `process.env` in Node.js.
### Supporting Large Environment
We provide the ability to support more than 4KB of environment (up to 64KB) by way of
a Lambda runtime wrapper that is added to every Lambda function we create. These are
supported by many of the existing Lambda runtimes, but custom runtimes may require
additional work.
The following Lambda runtime families have built-in support for the runtime wrapper:
- `nodejs`
- `python` (>= 3.8)
- `ruby`
- `java11`
- `java8.al2` (not `java8`)
- `dotnetcore`
If a custom runtime is based on one of these Lambda runtimes, large environment
support will be available without further configuration. Custom runtimes based on
other Lambda runtimes, including those that provide the runtime via `provided` and
`provided.al2`, must implement runtime wrapper support and indicate it via the
`supportsWrapper` flag when calling [`createLambda`](<#createlambda()>).
To add support for runtime wrappers to a custom runtime, first check the value of the
`AWS_LAMBDA_EXEC_WRAPPER` environment variable in the bootstrap script. Its value is
the path to the wrapper executable.
The wrapper must be passed the path to the runtime as well as any parameters that the
runtime requires. This is most easily done in a small `bootstrap` script.
In this simple `bash` example, the runtime is called directly if
`AWS_LAMBDA_EXEC_WRAPPER` has no value, otherwise the wrapper is called with the
runtime command as parameters.
```bash
#!/bin/bash
exec $AWS_LAMBDA_EXEC_WRAPPER path/to/runtime param1 param2
```
If the `bootstrap` file is not a launcher script, b
Showing preview only (826K chars total). Download the full file or copy to clipboard to get everything.
gitextract_9o1wyy8_/ ├── .changeset/ │ ├── README.md │ ├── config.json │ ├── dirty-fans-suffer.md │ ├── fix-cli-evals-setup.md │ ├── node-security-2026-03-24.md │ └── odd-bugs-approve.md ├── .claude/ │ └── skills/ │ └── vercel-runtime-implementation-guide.md ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── AFFECTED_TESTING.md │ ├── CODEOWNERS │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── DISCUSSION_TEMPLATE/ │ │ ├── general.yml │ │ ├── help.yml │ │ ├── ideas.yml │ │ └── show-and-tell.yml │ ├── EXAMPLE_README_TEMPLATE.md │ ├── ISSUE_TEMPLATE/ │ │ ├── cli_bug_report.md │ │ └── config.yml │ ├── aw/ │ │ └── actions-lock.json │ └── workflows/ │ ├── agentics-maintenance.yml │ ├── ci-doctor.lock.yml │ ├── ci-doctor.md │ ├── cli-evals.yml │ ├── comment-cli-tarball.yml │ ├── cron-update-gatsby-fixtures.yml │ ├── cron-update-next-canary.yml │ ├── cron-update-next-latest.yml │ ├── cron-update-turbo.yml │ ├── discussions-auto-close.yml │ ├── faster-template-prebuild-nextjs.yml │ ├── release-crates.yml │ ├── release-python-package.yml │ ├── release.yml │ ├── rollback-latest-tag.yml │ ├── test-e2e.yml │ ├── test-lint.yml │ ├── test-python-packages.yml │ ├── test.yml │ └── update-remix-run-dev.yml ├── .gitignore ├── .husky/ │ ├── .gitignore │ └── pre-commit ├── .node_version ├── .npmrc ├── .nvmrc ├── .prettierignore ├── .syncpackrc.json ├── .vercel.approvers ├── .vercelignore ├── AGENTS.md ├── Cargo.toml ├── DEVELOPING_A_RUNTIME.md ├── LICENSE ├── README.md ├── api/ │ ├── _lib/ │ │ ├── examples/ │ │ │ ├── example-list.ts │ │ │ ├── github-repo-info.ts │ │ │ ├── gitlab-repo-info.ts │ │ │ ├── map-old-to-new.ts │ │ │ └── summary.ts │ │ ├── script/ │ │ │ └── build.ts │ │ ├── types.ts │ │ └── util/ │ │ ├── assert-env.ts │ │ ├── error-handler.ts │ │ └── with-api-handler.ts │ ├── examples/ │ │ └── info.ts │ ├── frameworks.ts │ ├── package.json │ └── tsconfig.json ├── biome.jsonc ├── crates/ │ └── vercel_runtime/ │ ├── Cargo.toml │ └── src/ │ ├── axum/ │ │ └── mod.rs │ ├── ipc/ │ │ ├── core.rs │ │ ├── log.rs │ │ ├── metric.rs │ │ └── mod.rs │ ├── ipc_utils.rs │ ├── lib.rs │ └── types.rs ├── errors/ │ ├── cant-solve-challenge.md │ ├── deploy-invalid-dc.md │ ├── deployment-error.md │ ├── dns-configuration-error.md │ ├── domain-verification.md │ ├── env-value-invalid-type.md │ ├── invalid-route-source.md │ ├── invalid-token-value.md │ ├── missing-env-file.md │ ├── missing-env-key-value.md │ ├── missing-scope-value.md │ ├── missing-token-value.md │ ├── next-functions-config-optimized-lambdas.md │ ├── next-legacy-routes-optimized-lambdas.md │ ├── no-credentials-found.md │ ├── no-open-port-found.md │ ├── no-single-file-deployments.md │ ├── no-token-allowed.md │ ├── now-dev-as-dev-script.md │ ├── now-next-legacy-mode.md │ ├── now-next-no-serverless-pages-built.md │ ├── now-next-routes-manifest.md │ ├── now-static-build-failed-to-detect-a-server.md │ ├── path-not-deployable.md │ ├── scope-not-accessible.md │ ├── scope-not-existent.md │ ├── solve-challenges-manually.md │ └── unauthorized-domain.md ├── examples/ │ ├── CHANGELOG.md │ ├── README.md │ ├── __tests__/ │ │ ├── integration/ │ │ │ ├── angular.test.ts │ │ │ ├── astro.test.ts │ │ │ ├── axum.test.ts │ │ │ ├── blitzjs.test.ts │ │ │ ├── brunch.test.ts │ │ │ ├── create-react-app.test.ts │ │ │ ├── django.test.ts │ │ │ ├── docusaurus-2.test.ts │ │ │ ├── docusaurus.test.ts │ │ │ ├── eleventy.test.ts │ │ │ ├── elysia.test.ts │ │ │ ├── ember.test.ts │ │ │ ├── express.test.ts │ │ │ ├── fastapi.test.ts │ │ │ ├── fasthtml.test.ts │ │ │ ├── fastify.test.ts │ │ │ ├── flask.test.ts │ │ │ ├── gatsby.test.ts │ │ │ ├── gin.test.ts │ │ │ ├── h3.test.ts │ │ │ ├── hexo.test.ts │ │ │ ├── hono.test.ts │ │ │ ├── hugo.test.ts │ │ │ ├── hydrogen-2.test.ts │ │ │ ├── ionic-angular.test.ts │ │ │ ├── ionic-react.test.ts │ │ │ ├── jekyll.test.ts │ │ │ ├── koa.test.ts │ │ │ ├── middleman.test.ts │ │ │ ├── nestjs.test.ts │ │ │ ├── nextjs.test.ts │ │ │ ├── nitro.test.ts │ │ │ ├── node_modules.test.ts │ │ │ ├── nuxtjs.test.ts │ │ │ ├── parcel.test.ts │ │ │ ├── polymer.test.ts │ │ │ ├── preact.test.ts │ │ │ ├── react-router.test.ts │ │ │ ├── redwoodjs.test.ts │ │ │ ├── remix.test.ts │ │ │ ├── sanity.test.ts │ │ │ ├── sapper.test.ts │ │ │ ├── sinatra.test.ts │ │ │ ├── solidstart-1.test.ts │ │ │ ├── starlette.test.ts │ │ │ ├── stencil.test.ts │ │ │ ├── svelte.test.ts │ │ │ ├── sveltekit-1.test.ts │ │ │ ├── sveltekit.test.ts │ │ │ ├── tanstack-start.test.ts │ │ │ ├── umijs.test.ts │ │ │ ├── vite-react.test.ts │ │ │ ├── vite.test.ts │ │ │ ├── vitepress.test.ts │ │ │ ├── vue.test.ts │ │ │ ├── vuepress.test.ts │ │ │ ├── xmcp.test.ts │ │ │ └── zola.test.ts │ │ ├── test-utils.ts │ │ └── unit/ │ │ └── index.test.ts │ ├── angular/ │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.css │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ └── app.module.ts │ │ │ ├── assets/ │ │ │ │ └── .gitkeep │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ └── styles.css │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── astro/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── README.md │ │ ├── astro.config.ts │ │ ├── package.json │ │ └── src/ │ │ ├── components/ │ │ │ └── Card.astro │ │ ├── env.d.ts │ │ ├── layouts/ │ │ │ └── Layout.astro │ │ └── pages/ │ │ ├── image.astro │ │ ├── index.astro │ │ ├── ssr-with-swr-caching.astro │ │ └── ssr.astro │ ├── axum/ │ │ ├── .gitignore │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── public/ │ │ │ └── index.html │ │ └── src/ │ │ └── main.rs │ ├── blitzjs/ │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .prettierignore │ │ ├── README.md │ │ ├── next-env.d.ts │ │ ├── next.config.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── blitz-client.ts │ │ │ ├── core/ │ │ │ │ └── layouts/ │ │ │ │ └── Layout.tsx │ │ │ ├── pages/ │ │ │ │ ├── 404.tsx │ │ │ │ ├── _app.tsx │ │ │ │ ├── _document.tsx │ │ │ │ └── index.tsx │ │ │ └── styles/ │ │ │ ├── Home.module.css │ │ │ └── globals.css │ │ ├── test/ │ │ │ └── setup.ts │ │ ├── tsconfig.json │ │ └── vitest.config.ts │ ├── brunch/ │ │ ├── .gitignore │ │ ├── .vercelignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── assets/ │ │ │ │ └── index.html │ │ │ ├── initialize.js │ │ │ └── styles.css │ │ ├── brunch-config.js │ │ └── package.json │ ├── create-react-app/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── public/ │ │ │ ├── index.html │ │ │ ├── manifest.json │ │ │ └── robots.txt │ │ └── src/ │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── index.css │ │ ├── index.js │ │ ├── reportWebVitals.js │ │ ├── setupTests.js │ │ └── vitals.js │ ├── django/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── __init__.py │ │ │ ├── settings.py │ │ │ ├── static/ │ │ │ │ └── app/ │ │ │ │ └── style.css │ │ │ ├── urls.py │ │ │ ├── views.py │ │ │ └── wsgi.py │ │ ├── manage.py │ │ └── pyproject.toml │ ├── docusaurus/ │ │ ├── .dockerignore │ │ ├── .gitignore │ │ ├── .vercelignore │ │ ├── README.md │ │ ├── blog/ │ │ │ ├── 2016-03-11-blog-post.md │ │ │ ├── 2017-04-10-blog-post-two.md │ │ │ ├── 2017-09-25-testing-rss.md │ │ │ ├── 2017-09-26-adding-rss.md │ │ │ └── 2017-10-24-new-version-1.0.0.md │ │ ├── core/ │ │ │ └── Footer.js │ │ ├── docs/ │ │ │ ├── doc1.md │ │ │ ├── doc2.md │ │ │ ├── doc3.md │ │ │ ├── exampledoc4.md │ │ │ └── exampledoc5.md │ │ ├── package.json │ │ ├── pages/ │ │ │ └── en/ │ │ │ ├── help.js │ │ │ ├── index.js │ │ │ └── users.js │ │ ├── sidebars.json │ │ ├── siteConfig.js │ │ └── static/ │ │ └── css/ │ │ └── custom.css │ ├── docusaurus-2/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── blog/ │ │ │ ├── 2019-05-28-first-blog-post.md │ │ │ ├── 2019-05-29-long-blog-post.md │ │ │ ├── 2021-08-01-mdx-blog-post.mdx │ │ │ ├── 2021-08-26-welcome/ │ │ │ │ └── index.md │ │ │ └── authors.yml │ │ ├── docs/ │ │ │ ├── intro.md │ │ │ ├── tutorial-basics/ │ │ │ │ ├── _category_.json │ │ │ │ ├── congratulations.md │ │ │ │ ├── create-a-blog-post.md │ │ │ │ ├── create-a-document.md │ │ │ │ ├── create-a-page.md │ │ │ │ ├── deploy-your-site.md │ │ │ │ └── markdown-features.mdx │ │ │ └── tutorial-extras/ │ │ │ ├── _category_.json │ │ │ ├── manage-docs-versions.md │ │ │ └── translate-your-site.md │ │ ├── docusaurus.config.js │ │ ├── package.json │ │ ├── sidebars.js │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ └── HomepageFeatures/ │ │ │ │ ├── index.js │ │ │ │ └── styles.module.css │ │ │ ├── css/ │ │ │ │ └── custom.css │ │ │ └── pages/ │ │ │ ├── index.js │ │ │ ├── index.module.css │ │ │ └── markdown-page.md │ │ └── static/ │ │ └── .nojekyll │ ├── eleventy/ │ │ ├── .eleventy.js │ │ ├── .eleventyignore │ │ ├── .gitignore │ │ ├── .nvmrc │ │ ├── 404.md │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── _data/ │ │ │ └── metadata.json │ │ ├── _includes/ │ │ │ ├── layouts/ │ │ │ │ ├── base.njk │ │ │ │ ├── home.njk │ │ │ │ └── post.njk │ │ │ └── postslist.njk │ │ ├── about/ │ │ │ └── index.md │ │ ├── archive.njk │ │ ├── css/ │ │ │ ├── index.css │ │ │ └── prism-base16-monokai.dark.css │ │ ├── feed/ │ │ │ ├── feed.njk │ │ │ ├── htaccess.njk │ │ │ └── json.njk │ │ ├── img/ │ │ │ └── .gitkeep │ │ ├── index.njk │ │ ├── package.json │ │ ├── page-list.njk │ │ ├── posts/ │ │ │ ├── firstpost.md │ │ │ ├── fourthpost.md │ │ │ ├── posts.json │ │ │ ├── secondpost.md │ │ │ └── thirdpost.md │ │ ├── sitemap.xml.njk │ │ ├── tags-list.njk │ │ └── tags.njk │ ├── elysia/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── vercel.json │ ├── ember/ │ │ ├── .editorconfig │ │ ├── .ember-cli │ │ ├── .eslintignore │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── .prettierignore │ │ ├── .prettierrc.js │ │ ├── .stylelintignore │ │ ├── .stylelintrc.js │ │ ├── .template-lintrc.js │ │ ├── .watchmanconfig │ │ ├── README.md │ │ ├── app/ │ │ │ ├── app.js │ │ │ ├── components/ │ │ │ │ └── .gitkeep │ │ │ ├── controllers/ │ │ │ │ └── .gitkeep │ │ │ ├── helpers/ │ │ │ │ └── .gitkeep │ │ │ ├── index.html │ │ │ ├── models/ │ │ │ │ └── .gitkeep │ │ │ ├── router.js │ │ │ ├── routes/ │ │ │ │ └── .gitkeep │ │ │ ├── styles/ │ │ │ │ └── app.css │ │ │ └── templates/ │ │ │ └── application.hbs │ │ ├── config/ │ │ │ ├── ember-cli-update.json │ │ │ ├── environment.js │ │ │ ├── optional-features.json │ │ │ └── targets.js │ │ ├── ember-cli-build.js │ │ ├── package.json │ │ ├── public/ │ │ │ └── robots.txt │ │ ├── testem.js │ │ └── tests/ │ │ ├── helpers/ │ │ │ └── index.js │ │ ├── index.html │ │ ├── integration/ │ │ │ └── .gitkeep │ │ ├── test-helper.js │ │ └── unit/ │ │ └── .gitkeep │ ├── express/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── fastapi/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── main.py │ │ ├── pyproject.toml │ │ └── requirements.txt │ ├── fasthtml/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── main.py │ │ └── requirements.txt │ ├── fastify/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── server.ts │ │ └── tsconfig.json │ ├── flask/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── endpoints/ │ │ │ ├── __init__.py │ │ │ └── routes.py │ │ ├── main.py │ │ └── pyproject.toml │ ├── gatsby/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── gatsby-config.js │ │ ├── package.json │ │ └── src/ │ │ └── pages/ │ │ ├── 404.js │ │ └── index.js │ ├── h3/ │ │ ├── package.json │ │ └── server.js │ ├── hexo/ │ │ ├── .gitignore │ │ ├── .vercelignore │ │ ├── README.md │ │ ├── _config.yml │ │ ├── package.json │ │ ├── scaffolds/ │ │ │ ├── draft.md │ │ │ ├── page.md │ │ │ └── post.md │ │ ├── source/ │ │ │ └── _posts/ │ │ │ └── hello-world.md │ │ └── themes/ │ │ └── landscape/ │ │ ├── .gitignore │ │ ├── Gruntfile.js │ │ ├── LICENSE │ │ ├── README.md │ │ ├── _config.yml │ │ ├── languages/ │ │ │ ├── de.yml │ │ │ ├── default.yml │ │ │ ├── es.yml │ │ │ ├── fr.yml │ │ │ ├── ja.yml │ │ │ ├── ko.yml │ │ │ ├── nl.yml │ │ │ ├── no.yml │ │ │ ├── pt.yml │ │ │ ├── ru.yml │ │ │ ├── zh-CN.yml │ │ │ └── zh-TW.yml │ │ ├── layout/ │ │ │ ├── _partial/ │ │ │ │ ├── after-footer.ejs │ │ │ │ ├── archive-post.ejs │ │ │ │ ├── archive.ejs │ │ │ │ ├── article.ejs │ │ │ │ ├── footer.ejs │ │ │ │ ├── gauges-analytics.ejs │ │ │ │ ├── google-analytics.ejs │ │ │ │ ├── head.ejs │ │ │ │ ├── header.ejs │ │ │ │ ├── mobile-nav.ejs │ │ │ │ ├── post/ │ │ │ │ │ ├── category.ejs │ │ │ │ │ ├── date.ejs │ │ │ │ │ ├── gallery.ejs │ │ │ │ │ ├── nav.ejs │ │ │ │ │ ├── tag.ejs │ │ │ │ │ └── title.ejs │ │ │ │ └── sidebar.ejs │ │ │ ├── _widget/ │ │ │ │ ├── archive.ejs │ │ │ │ ├── category.ejs │ │ │ │ ├── recent_posts.ejs │ │ │ │ ├── tag.ejs │ │ │ │ └── tagcloud.ejs │ │ │ ├── archive.ejs │ │ │ ├── category.ejs │ │ │ ├── index.ejs │ │ │ ├── layout.ejs │ │ │ ├── page.ejs │ │ │ ├── post.ejs │ │ │ └── tag.ejs │ │ ├── package.json │ │ ├── scripts/ │ │ │ └── fancybox.js │ │ └── source/ │ │ ├── css/ │ │ │ ├── _extend.styl │ │ │ ├── _partial/ │ │ │ │ ├── archive.styl │ │ │ │ ├── article.styl │ │ │ │ ├── comment.styl │ │ │ │ ├── footer.styl │ │ │ │ ├── header.styl │ │ │ │ ├── highlight.styl │ │ │ │ ├── mobile.styl │ │ │ │ ├── sidebar-aside.styl │ │ │ │ ├── sidebar-bottom.styl │ │ │ │ └── sidebar.styl │ │ │ ├── _util/ │ │ │ │ ├── grid.styl │ │ │ │ └── mixin.styl │ │ │ ├── _variables.styl │ │ │ ├── fonts/ │ │ │ │ └── FontAwesome.otf │ │ │ └── style.styl │ │ ├── fancybox/ │ │ │ ├── helpers/ │ │ │ │ ├── jquery.fancybox-buttons.css │ │ │ │ ├── jquery.fancybox-buttons.js │ │ │ │ ├── jquery.fancybox-media.js │ │ │ │ ├── jquery.fancybox-thumbs.css │ │ │ │ └── jquery.fancybox-thumbs.js │ │ │ ├── jquery.fancybox.css │ │ │ ├── jquery.fancybox.js │ │ │ └── jquery.fancybox.pack.js │ │ └── js/ │ │ └── script.js │ ├── hono/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── hugo/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── archetypes/ │ │ │ └── default.md │ │ ├── config.toml │ │ ├── content/ │ │ │ └── posts/ │ │ │ └── my-first-post.md │ │ └── themes/ │ │ └── ananke/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── archetypes/ │ │ │ └── default.md │ │ ├── data/ │ │ │ └── webpack_assets.json │ │ ├── exampleSite/ │ │ │ ├── config.toml │ │ │ └── content/ │ │ │ ├── _index.md │ │ │ ├── about/ │ │ │ │ └── _index.md │ │ │ ├── contact.md │ │ │ └── post/ │ │ │ ├── _index.md │ │ │ ├── chapter-1.md │ │ │ ├── chapter-2.md │ │ │ ├── chapter-3.md │ │ │ ├── chapter-4.md │ │ │ ├── chapter-5.md │ │ │ └── chapter-6.md │ │ ├── i18n/ │ │ │ ├── de.toml │ │ │ ├── en.toml │ │ │ ├── es.toml │ │ │ ├── fr.toml │ │ │ ├── nl.toml │ │ │ ├── pt.toml │ │ │ ├── ru.toml │ │ │ └── zh.toml │ │ ├── layouts/ │ │ │ ├── 404.html │ │ │ ├── _default/ │ │ │ │ ├── baseof.html │ │ │ │ ├── list.html │ │ │ │ ├── single.html │ │ │ │ ├── taxonomy.html │ │ │ │ └── terms.html │ │ │ ├── index.html │ │ │ ├── page/ │ │ │ │ └── single.html │ │ │ ├── partials/ │ │ │ │ ├── commento.html │ │ │ │ ├── i18nlist.html │ │ │ │ ├── menu-contextual.html │ │ │ │ ├── new-window-icon.html │ │ │ │ ├── page-header.html │ │ │ │ ├── site-favicon.html │ │ │ │ ├── site-footer.html │ │ │ │ ├── site-header.html │ │ │ │ ├── site-navigation.html │ │ │ │ ├── site-scripts.html │ │ │ │ ├── social-follow.html │ │ │ │ ├── summary-with-image.html │ │ │ │ ├── summary.html │ │ │ │ └── tags.html │ │ │ ├── post/ │ │ │ │ ├── list.html │ │ │ │ ├── summary-with-image.html │ │ │ │ └── summary.html │ │ │ ├── robots.txt │ │ │ └── shortcodes/ │ │ │ └── form-contact.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── css/ │ │ │ │ ├── _code.css │ │ │ │ ├── _hugo-internal-templates.css │ │ │ │ ├── _social-icons.css │ │ │ │ ├── _styles.css │ │ │ │ ├── _tachyons.css │ │ │ │ ├── main.css │ │ │ │ └── postcss.config.js │ │ │ ├── js/ │ │ │ │ └── main.js │ │ │ ├── package.json │ │ │ ├── readme.md │ │ │ └── webpack.config.js │ │ ├── static/ │ │ │ └── dist/ │ │ │ ├── css/ │ │ │ │ └── app.d98f2eb6bcd1eaedb7edf166bd16af26.css │ │ │ └── js/ │ │ │ └── app.3fc0f988d21662902933.js │ │ └── theme.toml │ ├── hydrogen-2/ │ │ ├── .eslintignore │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── .graphqlrc.yml │ │ ├── .vercelignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── components/ │ │ │ │ ├── Aside.tsx │ │ │ │ ├── Cart.tsx │ │ │ │ ├── Footer.tsx │ │ │ │ ├── Header.tsx │ │ │ │ ├── Layout.tsx │ │ │ │ └── Search.tsx │ │ │ ├── entry.client.tsx │ │ │ ├── entry.server.tsx │ │ │ ├── root.tsx │ │ │ ├── routes/ │ │ │ │ ├── $.tsx │ │ │ │ ├── [robots.txt].tsx │ │ │ │ ├── [sitemap.xml].tsx │ │ │ │ ├── _index.tsx │ │ │ │ ├── account.$.tsx │ │ │ │ ├── account.addresses.tsx │ │ │ │ ├── account.orders.$id.tsx │ │ │ │ ├── account.orders._index.tsx │ │ │ │ ├── account.profile.tsx │ │ │ │ ├── account.tsx │ │ │ │ ├── account_.activate.$id.$activationToken.tsx │ │ │ │ ├── account_.login.tsx │ │ │ │ ├── account_.logout.tsx │ │ │ │ ├── account_.recover.tsx │ │ │ │ ├── account_.register.tsx │ │ │ │ ├── account_.reset.$id.$resetToken.tsx │ │ │ │ ├── api.predictive-search.tsx │ │ │ │ ├── blogs.$blogHandle.$articleHandle.tsx │ │ │ │ ├── blogs.$blogHandle._index.tsx │ │ │ │ ├── blogs._index.tsx │ │ │ │ ├── cart.tsx │ │ │ │ ├── collections.$handle.tsx │ │ │ │ ├── collections._index.tsx │ │ │ │ ├── pages.$handle.tsx │ │ │ │ ├── policies.$handle.tsx │ │ │ │ ├── policies._index.tsx │ │ │ │ ├── products.$handle.tsx │ │ │ │ └── search.tsx │ │ │ ├── styles/ │ │ │ │ ├── app.css │ │ │ │ ├── reset.css │ │ │ │ └── tailwind.css │ │ │ └── utils.ts │ │ ├── package.json │ │ ├── postcss.config.js │ │ ├── remix.config.js │ │ ├── remix.env.d.ts │ │ ├── server.ts │ │ ├── storefrontapi.generated.d.ts │ │ ├── tailwind.config.js │ │ ├── tsconfig.json │ │ └── vercel.json │ ├── ionic-angular/ │ │ ├── .browserslistrc │ │ ├── .editorconfig │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── README.md │ │ ├── angular.json │ │ ├── capacitor.config.ts │ │ ├── ionic.config.json │ │ ├── karma.conf.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app/ │ │ │ │ ├── app-routing.module.ts │ │ │ │ ├── app.component.html │ │ │ │ ├── app.component.scss │ │ │ │ ├── app.component.spec.ts │ │ │ │ ├── app.component.ts │ │ │ │ ├── app.module.ts │ │ │ │ ├── explore-container/ │ │ │ │ │ ├── explore-container.component.html │ │ │ │ │ ├── explore-container.component.scss │ │ │ │ │ ├── explore-container.component.spec.ts │ │ │ │ │ ├── explore-container.component.ts │ │ │ │ │ └── explore-container.module.ts │ │ │ │ ├── tab1/ │ │ │ │ │ ├── tab1-routing.module.ts │ │ │ │ │ ├── tab1.module.ts │ │ │ │ │ ├── tab1.page.html │ │ │ │ │ ├── tab1.page.scss │ │ │ │ │ ├── tab1.page.spec.ts │ │ │ │ │ └── tab1.page.ts │ │ │ │ ├── tab2/ │ │ │ │ │ ├── tab2-routing.module.ts │ │ │ │ │ ├── tab2.module.ts │ │ │ │ │ ├── tab2.page.html │ │ │ │ │ ├── tab2.page.scss │ │ │ │ │ ├── tab2.page.spec.ts │ │ │ │ │ └── tab2.page.ts │ │ │ │ ├── tab3/ │ │ │ │ │ ├── tab3-routing.module.ts │ │ │ │ │ ├── tab3.module.ts │ │ │ │ │ ├── tab3.page.html │ │ │ │ │ ├── tab3.page.scss │ │ │ │ │ ├── tab3.page.spec.ts │ │ │ │ │ └── tab3.page.ts │ │ │ │ └── tabs/ │ │ │ │ ├── tabs-routing.module.ts │ │ │ │ ├── tabs.module.ts │ │ │ │ ├── tabs.page.html │ │ │ │ ├── tabs.page.scss │ │ │ │ ├── tabs.page.spec.ts │ │ │ │ └── tabs.page.ts │ │ │ ├── environments/ │ │ │ │ ├── environment.prod.ts │ │ │ │ └── environment.ts │ │ │ ├── global.scss │ │ │ ├── index.html │ │ │ ├── main.ts │ │ │ ├── polyfills.ts │ │ │ ├── test.ts │ │ │ ├── theme/ │ │ │ │ └── variables.scss │ │ │ └── zone-flags.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ └── tsconfig.spec.json │ ├── ionic-react/ │ │ ├── .browserslistrc │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── capacitor.config.ts │ │ ├── cypress/ │ │ │ ├── e2e/ │ │ │ │ └── test.cy.ts │ │ │ ├── fixtures/ │ │ │ │ └── example.json │ │ │ └── support/ │ │ │ ├── commands.ts │ │ │ └── e2e.ts │ │ ├── cypress.config.ts │ │ ├── index.html │ │ ├── ionic.config.json │ │ ├── package.json │ │ ├── public/ │ │ │ └── manifest.json │ │ ├── readme.md │ │ ├── src/ │ │ │ ├── App.test.tsx │ │ │ ├── App.tsx │ │ │ ├── components/ │ │ │ │ ├── ExploreContainer.css │ │ │ │ └── ExploreContainer.tsx │ │ │ ├── main.tsx │ │ │ ├── pages/ │ │ │ │ ├── Tab1.css │ │ │ │ ├── Tab1.tsx │ │ │ │ ├── Tab2.css │ │ │ │ ├── Tab2.tsx │ │ │ │ ├── Tab3.css │ │ │ │ └── Tab3.tsx │ │ │ ├── setupTests.ts │ │ │ ├── theme/ │ │ │ │ └── variables.css │ │ │ └── vite-env.d.ts │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ ├── jekyll/ │ │ ├── .gitignore │ │ ├── 404.html │ │ ├── Gemfile │ │ ├── README.md │ │ ├── _config.yml │ │ ├── _posts/ │ │ │ └── 2021-02-19-welcome-to-jekyll.md │ │ ├── about.md │ │ └── index.md │ ├── jest.config.js │ ├── koa/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── middleman/ │ │ ├── .gitignore │ │ ├── Gemfile │ │ ├── README.md │ │ ├── config.rb │ │ └── source/ │ │ ├── images/ │ │ │ └── .keep │ │ ├── index.html.erb │ │ ├── javascripts/ │ │ │ └── site.js │ │ ├── layouts/ │ │ │ └── layout.erb │ │ └── stylesheets/ │ │ └── site.css.scss │ ├── nestjs/ │ │ ├── .gitignore │ │ ├── .prettierrc │ │ ├── README.md │ │ ├── eslint.config.mjs │ │ ├── nest-cli.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.controller.ts │ │ │ ├── app.module.ts │ │ │ ├── app.service.ts │ │ │ └── main.ts │ │ ├── test/ │ │ │ ├── app.e2e-spec.ts │ │ │ └── jest-e2e.json │ │ ├── tsconfig.build.json │ │ └── tsconfig.json │ ├── nextjs/ │ │ ├── .gitignore │ │ ├── AGENTS.md │ │ ├── CLAUDE.md │ │ ├── README.md │ │ ├── app/ │ │ │ ├── globals.css │ │ │ ├── layout.tsx │ │ │ └── page.tsx │ │ ├── eslint.config.mjs │ │ ├── next.config.ts │ │ ├── package.json │ │ ├── postcss.config.mjs │ │ └── tsconfig.json │ ├── nitro/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── README.md │ │ ├── nitro.config.ts │ │ ├── package.json │ │ ├── server/ │ │ │ └── routes/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── nuxtjs/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app.vue │ │ ├── nuxt.config.ts │ │ ├── package.json │ │ ├── server/ │ │ │ └── tsconfig.json │ │ └── tsconfig.json │ ├── package.json │ ├── parcel/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ └── src/ │ │ ├── app.js │ │ ├── index.html │ │ └── styles.css │ ├── polymer/ │ │ ├── .gitignore │ │ ├── .vercelignore │ │ ├── README.md │ │ ├── index.html │ │ ├── manifest.json │ │ ├── package.json │ │ ├── polymer.json │ │ ├── service-worker.js │ │ ├── src/ │ │ │ ├── my-app.js │ │ │ ├── my-icons.js │ │ │ ├── my-view1.js │ │ │ ├── my-view2.js │ │ │ ├── my-view3.js │ │ │ ├── my-view404.js │ │ │ └── shared-styles.js │ │ ├── sw-precache-config.js │ │ └── test/ │ │ ├── index.html │ │ └── my-view1.html │ ├── preact/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── size-plugin.json │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── app.js │ │ │ │ └── header/ │ │ │ │ ├── index.js │ │ │ │ └── style.css │ │ │ ├── index.js │ │ │ ├── manifest.json │ │ │ ├── routes/ │ │ │ │ ├── home/ │ │ │ │ │ ├── index.js │ │ │ │ │ └── style.css │ │ │ │ └── profile/ │ │ │ │ ├── index.js │ │ │ │ └── style.css │ │ │ ├── style/ │ │ │ │ └── index.css │ │ │ ├── sw.js │ │ │ └── template.html │ │ └── tests/ │ │ ├── __mocks__/ │ │ │ ├── browserMocks.js │ │ │ ├── fileMocks.js │ │ │ └── setupTests.js │ │ └── header.test.js │ ├── react-router/ │ │ ├── .dockerignore │ │ ├── .gitignore │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── app/ │ │ │ ├── app.css │ │ │ ├── root.tsx │ │ │ ├── routes/ │ │ │ │ └── home.tsx │ │ │ ├── routes.ts │ │ │ └── welcome/ │ │ │ └── welcome.tsx │ │ ├── package.json │ │ ├── react-router.config.ts │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── redwoodjs/ │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── api/ │ │ │ ├── .babelrc.js │ │ │ ├── db/ │ │ │ │ ├── schema.prisma │ │ │ │ └── seed.js │ │ │ ├── jest.config.js │ │ │ ├── jsconfig.json │ │ │ ├── package.json │ │ │ └── src/ │ │ │ ├── functions/ │ │ │ │ └── graphql.js │ │ │ ├── graphql/ │ │ │ │ └── .keep │ │ │ ├── lib/ │ │ │ │ └── db.js │ │ │ └── services/ │ │ │ └── .keep │ │ ├── babel.config.js │ │ ├── graphql.config.js │ │ ├── package.json │ │ ├── prettier.config.js │ │ ├── redwood.toml │ │ └── web/ │ │ ├── .babelrc.js │ │ ├── jest.config.js │ │ ├── jsconfig.json │ │ ├── package.json │ │ ├── public/ │ │ │ ├── README.md │ │ │ └── robots.txt │ │ └── src/ │ │ ├── Routes.js │ │ ├── components/ │ │ │ └── .keep │ │ ├── index.css │ │ ├── index.html │ │ ├── index.js │ │ ├── layouts/ │ │ │ └── .keep │ │ └── pages/ │ │ ├── AboutPage/ │ │ │ └── AboutPage.js │ │ ├── FatalErrorPage/ │ │ │ └── FatalErrorPage.js │ │ ├── HomePage/ │ │ │ ├── HomePage.js │ │ │ └── HomePage.stories.js │ │ └── NotFoundPage/ │ │ └── NotFoundPage.js │ ├── remix/ │ │ ├── .eslintrc.cjs │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app/ │ │ │ ├── root.tsx │ │ │ └── routes/ │ │ │ ├── _index.tsx │ │ │ └── edge.tsx │ │ ├── package.json │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── sanity/ │ │ ├── .npmignore │ │ ├── README.md │ │ ├── config/ │ │ │ ├── .checksums │ │ │ └── @sanity/ │ │ │ ├── data-aspects.json │ │ │ ├── default-layout.json │ │ │ ├── default-login.json │ │ │ └── form-builder.json │ │ ├── package.json │ │ ├── plugins/ │ │ │ └── .gitkeep │ │ ├── sanity.json │ │ ├── schemas/ │ │ │ ├── author.js │ │ │ ├── blockContent.js │ │ │ ├── category.js │ │ │ ├── post.js │ │ │ └── schema.js │ │ ├── static/ │ │ │ └── .gitkeep │ │ └── tsconfig.json │ ├── sapper/ │ │ ├── .gitignore │ │ ├── .vercelignore │ │ ├── README.md │ │ ├── appveyor.yml │ │ ├── cypress/ │ │ │ ├── fixtures/ │ │ │ │ └── example.json │ │ │ ├── integration/ │ │ │ │ └── spec.js │ │ │ ├── plugins/ │ │ │ │ └── index.js │ │ │ └── support/ │ │ │ ├── commands.js │ │ │ └── index.js │ │ ├── cypress.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── client.js │ │ │ ├── components/ │ │ │ │ └── Nav.svelte │ │ │ ├── routes/ │ │ │ │ ├── _error.svelte │ │ │ │ ├── _layout.svelte │ │ │ │ ├── about.svelte │ │ │ │ ├── blog/ │ │ │ │ │ ├── [slug].json.js │ │ │ │ │ ├── [slug].svelte │ │ │ │ │ ├── _posts.js │ │ │ │ │ ├── index.json.js │ │ │ │ │ └── index.svelte │ │ │ │ └── index.svelte │ │ │ ├── server.js │ │ │ ├── service-worker.js │ │ │ └── template.html │ │ ├── static/ │ │ │ ├── global.css │ │ │ └── manifest.json │ │ └── webpack.config.js │ ├── sinatra/ │ │ ├── .gitignore │ │ ├── Gemfile │ │ ├── README.md │ │ ├── app.rb │ │ └── config.ru │ ├── solidstart-1/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── app.config.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.css │ │ │ ├── app.tsx │ │ │ ├── components/ │ │ │ │ ├── Counter.css │ │ │ │ └── Counter.tsx │ │ │ ├── entry-client.tsx │ │ │ ├── entry-server.tsx │ │ │ ├── global.d.ts │ │ │ └── routes/ │ │ │ ├── [...404].tsx │ │ │ ├── about.tsx │ │ │ └── index.tsx │ │ └── tsconfig.json │ ├── starlette/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── api/ │ │ │ ├── __init__.py │ │ │ └── routes.py │ │ ├── main.py │ │ └── pyproject.toml │ ├── stencil/ │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── package.json │ │ ├── readme.md │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── app-home/ │ │ │ │ │ ├── app-home.css │ │ │ │ │ ├── app-home.e2e.ts │ │ │ │ │ ├── app-home.spec.ts │ │ │ │ │ └── app-home.tsx │ │ │ │ ├── app-profile/ │ │ │ │ │ ├── app-profile.css │ │ │ │ │ ├── app-profile.e2e.ts │ │ │ │ │ ├── app-profile.spec.ts │ │ │ │ │ └── app-profile.tsx │ │ │ │ └── app-root/ │ │ │ │ ├── app-root.css │ │ │ │ ├── app-root.e2e.ts │ │ │ │ ├── app-root.spec.ts │ │ │ │ └── app-root.tsx │ │ │ ├── components.d.ts │ │ │ ├── global/ │ │ │ │ ├── app.css │ │ │ │ └── app.ts │ │ │ ├── index.html │ │ │ ├── index.ts │ │ │ └── manifest.json │ │ ├── stencil.config.ts │ │ └── tsconfig.json │ ├── svelte/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.svelte │ │ │ ├── app.css │ │ │ ├── lib/ │ │ │ │ └── Counter.svelte │ │ │ ├── main.ts │ │ │ └── vite-env.d.ts │ │ ├── svelte.config.js │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ ├── sveltekit/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .prettierignore │ │ ├── .prettierrc │ │ ├── README.md │ │ ├── e2e/ │ │ │ └── demo.test.ts │ │ ├── eslint.config.js │ │ ├── package.json │ │ ├── playwright.config.ts │ │ ├── src/ │ │ │ ├── app.css │ │ │ ├── app.d.ts │ │ │ ├── app.html │ │ │ ├── demo.spec.ts │ │ │ ├── lib/ │ │ │ │ └── vitals.ts │ │ │ └── routes/ │ │ │ ├── +layout.svelte │ │ │ ├── +page.svelte │ │ │ ├── +page.ts │ │ │ ├── Counter.svelte │ │ │ ├── Header.svelte │ │ │ ├── about/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ └── sverdle/ │ │ │ ├── +page.server.ts │ │ │ ├── +page.svelte │ │ │ ├── game.ts │ │ │ ├── how-to-play/ │ │ │ │ ├── +page.svelte │ │ │ │ └── +page.ts │ │ │ ├── reduced-motion.ts │ │ │ └── words.server.ts │ │ ├── static/ │ │ │ └── robots.txt │ │ ├── svelte.config.js │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── sveltekit-1/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .prettierignore │ │ ├── .prettierrc │ │ ├── README.md │ │ ├── jsconfig.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── app.css │ │ │ ├── app.d.ts │ │ │ ├── app.html │ │ │ ├── hooks.js │ │ │ ├── lib/ │ │ │ │ ├── Counter.svelte │ │ │ │ ├── form.js │ │ │ │ ├── header/ │ │ │ │ │ └── Header.svelte │ │ │ │ └── vitals.js │ │ │ └── routes/ │ │ │ ├── +layout.svelte │ │ │ ├── +page.js │ │ │ ├── +page.svelte │ │ │ ├── about/ │ │ │ │ ├── +page.js │ │ │ │ └── +page.svelte │ │ │ └── todos/ │ │ │ ├── +page.server.js │ │ │ ├── +page.svelte │ │ │ └── api.js │ │ ├── static/ │ │ │ └── robots.txt │ │ ├── svelte.config.js │ │ └── vite.config.js │ ├── tanstack-start/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── biome.json │ │ ├── package.json │ │ ├── public/ │ │ │ └── robots.txt │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ └── Header.tsx │ │ │ ├── data/ │ │ │ │ └── demo.punk-songs.ts │ │ │ ├── routeTree.gen.ts │ │ │ ├── router.tsx │ │ │ ├── routes/ │ │ │ │ ├── __root.tsx │ │ │ │ ├── demo/ │ │ │ │ │ ├── api.names.ts │ │ │ │ │ ├── start.api-request.tsx │ │ │ │ │ ├── start.server-funcs.tsx │ │ │ │ │ ├── start.ssr.data-only.tsx │ │ │ │ │ ├── start.ssr.full-ssr.tsx │ │ │ │ │ ├── start.ssr.index.tsx │ │ │ │ │ └── start.ssr.spa-mode.tsx │ │ │ │ └── index.tsx │ │ │ └── styles.css │ │ ├── tsconfig.json │ │ └── vite.config.ts │ ├── tsconfig.json │ ├── umijs/ │ │ ├── .gitignore │ │ ├── .npmrc │ │ ├── .umirc.ts │ │ ├── .vercelignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── layouts/ │ │ │ │ ├── index.less │ │ │ │ └── index.tsx │ │ │ └── pages/ │ │ │ ├── docs.tsx │ │ │ └── index.tsx │ │ ├── tsconfig.json │ │ └── typings.d.ts │ ├── vite/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.vue │ │ │ ├── components/ │ │ │ │ └── HelloWorld.vue │ │ │ ├── main.js │ │ │ └── style.css │ │ └── vite.config.js │ ├── vite-react/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── src/ │ │ │ ├── App.css │ │ │ ├── App.tsx │ │ │ ├── index.css │ │ │ ├── main.tsx │ │ │ └── vite-env.d.ts │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ ├── vitepress/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── docs/ │ │ │ ├── about.md │ │ │ └── index.md │ │ └── package.json │ ├── vue/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── package.json │ │ ├── public/ │ │ │ └── index.html │ │ └── src/ │ │ ├── App.vue │ │ ├── components/ │ │ │ └── HelloWorld.vue │ │ └── main.js │ ├── vuepress/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ └── src/ │ │ ├── config/ │ │ │ └── README.md │ │ ├── guide/ │ │ │ ├── README.md │ │ │ └── using-vue.md │ │ └── index.md │ ├── xmcp/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── tools/ │ │ │ └── greet.ts │ │ ├── tsconfig.json │ │ └── xmcp.config.ts │ └── zola/ │ ├── .gitignore │ ├── README.md │ ├── config.toml │ ├── content/ │ │ └── blog/ │ │ ├── _index.md │ │ ├── first.md │ │ └── second.md │ ├── templates/ │ │ ├── base.html │ │ ├── blog-page.html │ │ ├── blog.html │ │ └── index.html │ └── vercel.json ├── internals/ │ ├── constants/ │ │ ├── CHANGELOG.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── get-package-json/ │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ ├── tests/ │ │ │ ├── tsconfig.json │ │ │ └── unit/ │ │ │ ├── cache.test.ts │ │ │ ├── deeply-nested/ │ │ │ │ ├── 1/ │ │ │ │ │ └── 2/ │ │ │ │ │ └── getPackageJSON-deeply-nested.test.ts │ │ │ │ └── package.json │ │ │ ├── getPackageJSON.test.ts │ │ │ └── nested/ │ │ │ ├── getPackageJSON-nested.test.ts │ │ │ └── package.json │ │ └── tsconfig.json │ ├── tsconfig/ │ │ ├── package.json │ │ └── tsconfig.json │ └── types/ │ ├── CHANGELOG.md │ ├── index.d.ts │ ├── package.json │ └── tsconfig.json ├── package.json ├── packages/ │ ├── backends/ │ │ ├── .deploy │ │ ├── CHANGELOG.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── build.ts │ │ │ ├── cervel/ │ │ │ │ ├── index.ts │ │ │ │ ├── node-file-trace.ts │ │ │ │ ├── plugin.ts │ │ │ │ ├── rolldown.ts │ │ │ │ ├── types.ts │ │ │ │ ├── typescript.ts │ │ │ │ └── utils.ts │ │ │ ├── find-entrypoint.ts │ │ │ ├── index.ts │ │ │ ├── introspection/ │ │ │ │ ├── express.ts │ │ │ │ ├── hono.ts │ │ │ │ ├── index.ts │ │ │ │ └── loaders/ │ │ │ │ ├── block-network.ts │ │ │ │ ├── cjs.ts │ │ │ │ ├── esm.ts │ │ │ │ ├── hooks.ts │ │ │ │ ├── rolldown-esm.ts │ │ │ │ └── rolldown-hooks.ts │ │ │ ├── rolldown/ │ │ │ │ ├── cjs-hooks.ts │ │ │ │ ├── esm.ts │ │ │ │ ├── find-entrypoint.ts │ │ │ │ ├── hooks.ts │ │ │ │ ├── index.ts │ │ │ │ ├── introspection.ts │ │ │ │ ├── loaders/ │ │ │ │ │ ├── block-network.ts │ │ │ │ │ ├── cjs.ts │ │ │ │ │ ├── esm.ts │ │ │ │ │ ├── hooks.ts │ │ │ │ │ ├── rolldown-esm.ts │ │ │ │ │ └── rolldown-hooks.ts │ │ │ │ ├── nft.ts │ │ │ │ ├── resolve-format.ts │ │ │ │ └── util.ts │ │ │ ├── service-vc-init.ts │ │ │ ├── typescript.ts │ │ │ └── utils.ts │ │ ├── test/ │ │ │ ├── .gitignore │ │ │ ├── fixtures/ │ │ │ │ ├── 01-express-index-ts-esm/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── info.md │ │ │ │ │ ├── lib/ │ │ │ │ │ │ ├── echo-2.cjs │ │ │ │ │ │ └── echo.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 02-express-index-ts-cjs/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── info.md │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 03-express-views-pug/ │ │ │ │ │ ├── files.json │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── pug-views/ │ │ │ │ │ │ ├── index.pug │ │ │ │ │ │ └── user.pug │ │ │ │ │ ├── routes.json │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vercel.json │ │ │ │ ├── 04-hono-index-ts-esm/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 05-hono-index-ts-cjs/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 06-hono-relative-import/ │ │ │ │ │ ├── echo.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vercel.json │ │ │ │ ├── 07-hono-ts-paths-import/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── echo.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 08-elysia/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vercel.json │ │ │ │ ├── 09-nestjs-with-build-command/ │ │ │ │ │ ├── nest-cli.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.controller.ts │ │ │ │ │ │ ├── app.module.ts │ │ │ │ │ │ ├── app.service.ts │ │ │ │ │ │ └── main.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 10-nestjs-no-build-command/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app.controller.ts │ │ │ │ │ │ ├── app.module.ts │ │ │ │ │ │ ├── app.service.ts │ │ │ │ │ │ └── main.ts │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 11-express-v5-cjs/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── src/ │ │ │ │ │ └── app.cjs │ │ │ │ ├── 12-express-v5-mts/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── src/ │ │ │ │ │ └── server.mts │ │ │ │ ├── 12-hono-index-ts-esm-cjs-interop/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 13-hono-ts-esm-cjs-interop-2/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── sign.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 14-hono-esm-cjs-interop-3/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── my-cjs-file.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 15-hono-sharp-native-bindings/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 16-hono-node-rs-xxhash/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── package.json │ │ │ │ │ ├── routes.json │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── 17-turborepo-hono-monorepo/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── apps/ │ │ │ │ │ │ └── api/ │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ ├── cjs-fs-read.ts │ │ │ │ │ │ │ ├── cjs-requiring-cjs.ts │ │ │ │ │ │ │ ├── esm-fs-read.ts │ │ │ │ │ │ │ ├── esm-importing-cjs.ts │ │ │ │ │ │ │ ├── info-for-cjs-read.txt │ │ │ │ │ │ │ └── info-for-esm-read.txt │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── server.ts │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── files.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── packages/ │ │ │ │ │ │ ├── echo-with-dep/ │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── src/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── shared-types/ │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── src/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── ts-utils/ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── src/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── pnpm-workspace.yaml │ │ │ │ │ ├── routes.json │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ ├── turbo.json │ │ │ │ │ └── vercel.json │ │ │ │ └── 18-include-exclude-files/ │ │ │ │ ├── excludeFiles.json │ │ │ │ ├── files.json │ │ │ │ ├── index.ts │ │ │ │ ├── package.json │ │ │ │ ├── routes.json │ │ │ │ ├── secret.txt │ │ │ │ ├── templates/ │ │ │ │ │ ├── hello.art │ │ │ │ │ └── other.art │ │ │ │ ├── tsconfig.json │ │ │ │ └── vercel.json │ │ │ └── unit.test.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── build-utils/ │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── CHANGELOG.md │ │ ├── build.mjs │ │ ├── file-blob.js │ │ ├── file-fs-ref.js │ │ ├── file-ref.js │ │ ├── fs/ │ │ │ ├── download.js │ │ │ ├── get-writable-directory.js │ │ │ ├── glob.js │ │ │ ├── rename.js │ │ │ ├── run-user-scripts.js │ │ │ └── stream-to-buffer.js │ │ ├── jest.config.js │ │ ├── lambda.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── clone-env.ts │ │ │ ├── collect-build-result/ │ │ │ │ ├── get-build-result-metadata.ts │ │ │ │ ├── get-lambda-by-output-path.ts │ │ │ │ ├── get-prerender-chain.ts │ │ │ │ ├── is-route-middleware.ts │ │ │ │ └── stream-with-extended-payload.ts │ │ │ ├── collect-uncompressed-size.ts │ │ │ ├── debug.ts │ │ │ ├── default-cache-path-glob.ts │ │ │ ├── edge-function.ts │ │ │ ├── errors.ts │ │ │ ├── file-blob.ts │ │ │ ├── file-fs-ref.ts │ │ │ ├── file-ref.ts │ │ │ ├── finalize-lambda.ts │ │ │ ├── framework-helpers.ts │ │ │ ├── fs/ │ │ │ │ ├── download.ts │ │ │ │ ├── get-writable-directory.ts │ │ │ │ ├── glob.ts │ │ │ │ ├── node-version.ts │ │ │ │ ├── normalize-path.ts │ │ │ │ ├── read-config-file.ts │ │ │ │ ├── rename.ts │ │ │ │ ├── run-user-scripts.ts │ │ │ │ ├── stream-to-buffer.ts │ │ │ │ └── stream-to-digest-async.ts │ │ │ ├── generate-node-builder-functions.ts │ │ │ ├── get-ignore-filter.ts │ │ │ ├── get-installed-package-version.ts │ │ │ ├── get-platform-env.ts │ │ │ ├── get-prefixed-env-vars.ts │ │ │ ├── get-service-url-env-vars.ts │ │ │ ├── hard-link-dir.ts │ │ │ ├── index.ts │ │ │ ├── lambda.ts │ │ │ ├── nodejs-lambda.ts │ │ │ ├── os.ts │ │ │ ├── prerender.ts │ │ │ ├── process-serverless/ │ │ │ │ ├── get-encrypted-env-file.ts │ │ │ │ ├── get-lambda-environment.ts │ │ │ │ ├── get-lambda-preload-scripts.ts │ │ │ │ └── get-lambda-supports-streaming.ts │ │ │ ├── python.ts │ │ │ ├── schemas.ts │ │ │ ├── should-serve.ts │ │ │ ├── trace/ │ │ │ │ ├── constants.ts │ │ │ │ ├── index.ts │ │ │ │ └── trace.ts │ │ │ ├── types.ts │ │ │ ├── validate-lambda-size.ts │ │ │ └── validate-npmrc.ts │ │ ├── test/ │ │ │ ├── fixtures/ │ │ │ │ ├── 02-zero-config-api/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── api/ │ │ │ │ │ │ ├── date/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── date.js │ │ │ │ │ │ └── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── 03-zero-config-angular/ │ │ │ │ │ ├── .editorconfig │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── README.md │ │ │ │ │ ├── angular.json │ │ │ │ │ ├── browserslist │ │ │ │ │ ├── e2e/ │ │ │ │ │ │ ├── protractor.conf.js │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.e2e-spec.ts │ │ │ │ │ │ │ └── app.po.ts │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── karma.conf.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── app.component.css │ │ │ │ │ │ │ ├── app.component.html │ │ │ │ │ │ │ ├── app.component.spec.ts │ │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ │ └── app.module.ts │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ ├── environments/ │ │ │ │ │ │ │ ├── environment.prod.ts │ │ │ │ │ │ │ └── environment.ts │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── main.ts │ │ │ │ │ │ ├── polyfills.ts │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ └── test.ts │ │ │ │ │ ├── tsconfig.app.json │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ ├── tsconfig.spec.json │ │ │ │ │ └── tslint.json │ │ │ │ ├── 04-zero-config-brunch/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── README.md │ │ │ │ │ ├── app/ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── initialize.js │ │ │ │ │ │ └── styles.css │ │ │ │ │ ├── brunch-config.js │ │ │ │ │ └── package.json │ │ │ │ ├── 05-zero-config-gatsby/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .prettierignore │ │ │ │ │ ├── .prettierrc │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── gatsby-browser.js │ │ │ │ │ ├── gatsby-config.js │ │ │ │ │ ├── gatsby-node.js │ │ │ │ │ ├── gatsby-ssr.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── src/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── header.js │ │ │ │ │ │ ├── image.js │ │ │ │ │ │ ├── layout.css │ │ │ │ │ │ ├── layout.js │ │ │ │ │ │ └── seo.js │ │ │ │ │ └── pages/ │ │ │ │ │ ├── 404.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── page-2.js │ │ │ │ ├── 06-zero-config-hugo/ │ │ │ │ │ ├── archetypes/ │ │ │ │ │ │ └── default.md │ │ │ │ │ └── config.toml │ │ │ │ ├── 07-cross-install/ │ │ │ │ │ ├── api/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── lib/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── now.json │ │ │ │ ├── 07-zero-config-jekyll/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── 404.html │ │ │ │ │ ├── Gemfile │ │ │ │ │ ├── _config.yml │ │ │ │ │ ├── _posts/ │ │ │ │ │ │ └── 2019-11-06-welcome-to-jekyll.markdown │ │ │ │ │ ├── about.markdown │ │ │ │ │ └── index.markdown │ │ │ │ ├── 08-yarn-npm/ │ │ │ │ │ ├── now.json │ │ │ │ │ ├── with-npm/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── must-be-npm.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── with-yarn/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── must-be-yarn.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── with-yarn-and-npm/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── must-be-yarn.js │ │ │ │ │ └── package.json │ │ │ │ ├── 08-zero-config-middleman/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── Gemfile │ │ │ │ │ ├── config.rb │ │ │ │ │ └── source/ │ │ │ │ │ ├── images/ │ │ │ │ │ │ └── .keep │ │ │ │ │ ├── index.html.erb │ │ │ │ │ ├── javascripts/ │ │ │ │ │ │ └── site.js │ │ │ │ │ ├── layouts/ │ │ │ │ │ │ └── layout.erb │ │ │ │ │ └── stylesheets/ │ │ │ │ │ └── site.css.scss │ │ │ │ ├── 14-npm-6-legacy-peer-deps/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── package.json │ │ │ │ │ └── probes.json │ │ │ │ ├── 16-node-env-install/ │ │ │ │ │ ├── build.js │ │ │ │ │ ├── now.json │ │ │ │ │ └── package.json │ │ │ │ ├── 17-node-env-build/ │ │ │ │ │ ├── now.json │ │ │ │ │ └── package.json │ │ │ │ ├── 18-install-only-production/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── now.json │ │ │ │ │ ├── npm/ │ │ │ │ │ │ ├── build.js │ │ │ │ │ │ ├── package-lock.json │ │ │ │ │ │ └── package.json │ │ │ │ │ └── yarn/ │ │ │ │ │ ├── build.js │ │ │ │ │ └── package.json │ │ │ │ ├── 19-yarn-v2/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .yarn/ │ │ │ │ │ │ └── releases/ │ │ │ │ │ │ └── yarn-berry.js │ │ │ │ │ ├── .yarnrc.yml │ │ │ │ │ ├── README.md │ │ │ │ │ ├── api/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── public/ │ │ │ │ │ │ ├── global.css │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── rollup.config.js │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── App.svelte │ │ │ │ │ │ └── main.js │ │ │ │ │ └── vercel.json │ │ │ │ ├── 20-npm-7/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── vercel.json │ │ │ │ ├── 21-npm-workspaces/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── 22-pnpm/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── vercel.json │ │ │ │ ├── 23-pnpm-workspaces/ │ │ │ │ │ ├── c/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── d/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── package.json │ │ │ │ │ └── pnpm-workspace.yaml │ │ │ │ ├── 24-pnpm-hoisted/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .npmrc │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ └── vercel.json │ │ │ │ ├── 25-multiple-lock-files-yarn/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── package.json │ │ │ │ │ └── vercel.json │ │ │ │ ├── 26-multiple-lock-files-pnpm/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── pnpm-workspace.yaml │ │ │ │ │ └── vercel.json │ │ │ │ ├── 27-pnpm-v7/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── pnpm-workspace.yaml │ │ │ │ │ └── probes.json │ │ │ │ ├── 28-pnpm-v8/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── pnpm-workspace.yaml │ │ │ │ │ └── probes.json │ │ │ │ ├── 29-npmrc/ │ │ │ │ │ ├── comment-use-node-version/ │ │ │ │ │ │ └── .npmrc │ │ │ │ │ ├── good/ │ │ │ │ │ │ └── .npmrc │ │ │ │ │ └── has-use-node-version/ │ │ │ │ │ └── .npmrc │ │ │ │ ├── 30-bun-v1/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── build.js │ │ │ │ │ ├── bun.lockb │ │ │ │ │ ├── package.json │ │ │ │ │ └── probes.json │ │ │ │ ├── 30-bun-v1-lockb/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── build.js │ │ │ │ │ ├── bun.lockb │ │ │ │ │ ├── package.json │ │ │ │ │ └── probes.json │ │ │ │ ├── 31-bun-v1-with-yarn-lock/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── build.js │ │ │ │ │ ├── bun.lockb │ │ │ │ │ ├── package.json │ │ │ │ │ └── probes.json │ │ │ │ ├── 32-bun-v1-lock/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── build.js │ │ │ │ │ └── package.json │ │ │ │ ├── 40-no-lockfile/ │ │ │ │ │ ├── package.json │ │ │ │ │ └── probes.json │ │ │ │ ├── 41-npm-workspaces-corepack/ │ │ │ │ │ ├── a/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── b/ │ │ │ │ │ │ └── package.json │ │ │ │ │ └── package.json │ │ │ │ ├── 41-turborepo-supporting-corepack-home/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .npmrc │ │ │ │ │ ├── README.md │ │ │ │ │ ├── apps/ │ │ │ │ │ │ ├── docs/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ ├── globals.css │ │ │ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ │ │ │ ├── page.module.css │ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ │ ├── next.config.mjs │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ └── web/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── globals.css │ │ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ │ │ ├── page.module.css │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── next.config.mjs │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── packages/ │ │ │ │ │ │ ├── eslint-config/ │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── library.js │ │ │ │ │ │ │ ├── next.js │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── react-internal.js │ │ │ │ │ │ ├── typescript-config/ │ │ │ │ │ │ │ ├── base.json │ │ │ │ │ │ │ ├── nextjs.json │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── react-library.json │ │ │ │ │ │ └── ui/ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── button.tsx │ │ │ │ │ │ │ ├── card.tsx │ │ │ │ │ │ │ └── code.tsx │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ ├── tsconfig.lint.json │ │ │ │ │ │ └── turbo/ │ │ │ │ │ │ └── generators/ │ │ │ │ │ │ ├── config.ts │ │ │ │ │ │ └── templates/ │ │ │ │ │ │ └── component.hbs │ │ │ │ │ ├── pnpm-workspace.yaml │ │ │ │ │ └── turbo.json │ │ │ │ ├── 42-pnpm-workspaces-corepack/ │ │ │ │ │ ├── c/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── d/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── package.json │ │ │ │ │ └── pnpm-workspace.yaml │ │ │ │ ├── 42-turborepo-not-supporting-corepack-home/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .npmrc │ │ │ │ │ ├── README.md │ │ │ │ │ ├── package.json │ │ │ │ │ ├── packages/ │ │ │ │ │ │ └── ui/ │ │ │ │ │ │ └── turbo/ │ │ │ │ │ │ └── generators/ │ │ │ │ │ │ ├── config.ts │ │ │ │ │ │ └── templates/ │ │ │ │ │ │ └── component.hbs │ │ │ │ │ └── turbo.json │ │ │ │ ├── 43-turborepo-with-comments-in-turbo-json/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .npmrc │ │ │ │ │ ├── README.md │ │ │ │ │ ├── package.json │ │ │ │ │ ├── packages/ │ │ │ │ │ │ └── ui/ │ │ │ │ │ │ └── turbo/ │ │ │ │ │ │ └── generators/ │ │ │ │ │ │ ├── config.ts │ │ │ │ │ │ └── templates/ │ │ │ │ │ │ └── component.hbs │ │ │ │ │ └── turbo.json │ │ │ │ ├── 44-turborepo-with-turbo-jsonc/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── .npmrc │ │ │ │ │ ├── README.md │ │ │ │ │ ├── apps/ │ │ │ │ │ │ └── web/ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ ├── next-env.d.ts │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── packages/ │ │ │ │ │ │ └── ui/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── pnpm-workspace.yaml │ │ │ │ │ └── turbo.jsonc │ │ │ │ ├── 44-yarn-v4/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ └── package.json │ │ │ │ ├── 45-yarn-v1/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ └── package.json │ │ │ │ └── 46-yarn-dynamic-require/ │ │ │ │ ├── .gitignore │ │ │ │ └── package.json │ │ │ ├── integration.test.ts │ │ │ ├── pkg-engine-node/ │ │ │ │ └── package.json │ │ │ ├── pkg-engine-node-exact/ │ │ │ │ └── package.json │ │ │ ├── pkg-engine-node-greaterthan/ │ │ │ │ └── package.json │ │ │ ├── symlinks/ │ │ │ │ ├── a.txt │ │ │ │ └── dir/ │ │ │ │ └── b.txt │ │ │ ├── tsconfig.json │ │ │ ├── unit.clone-env.test.ts │ │ │ ├── unit.collect-build-result.test.ts │ │ │ ├── unit.collect-uncompressed-size.test.ts │ │ │ ├── unit.detect-package-manager.test.ts │ │ │ ├── unit.download.test.ts │ │ │ ├── unit.finalize-lambda.test.ts │ │ │ ├── unit.get-env-for-package-manager.test.ts │ │ │ ├── unit.get-lambda-environment.test.ts │ │ │ ├── unit.get-lambda-options-from-function.test.ts │ │ │ ├── unit.get-lambda-supports-streaming.test.ts │ │ │ ├── unit.get-node-bin-path.test.ts │ │ │ ├── unit.get-node-bin-paths.test.ts │ │ │ ├── unit.get-os-release.test.ts │ │ │ ├── unit.get-path-for-package-manager.test.ts │ │ │ ├── unit.get-path-override-for-package-manager.test.ts │ │ │ ├── unit.get-platform-env.test.ts │ │ │ ├── unit.get-prefixed-env-vars.test.ts │ │ │ ├── unit.get-script-name.test.ts │ │ │ ├── unit.get-service-url-env-vars.test.ts │ │ │ ├── unit.get-spawn-options.test.ts │ │ │ ├── unit.glob.test.ts │ │ │ ├── unit.lambda.test.ts │ │ │ ├── unit.nodejs-lambda.test.ts │ │ │ ├── unit.read-config-file.test.ts │ │ │ ├── unit.run-npm-install.test.ts │ │ │ ├── unit.spawn-async.test.ts │ │ │ ├── unit.stream-to-buffer.test.ts │ │ │ ├── unit.stream-to-digest-async.test.ts │ │ │ ├── unit.test.ts │ │ │ ├── unit.traverse-up-directories.test.ts │ │ │ ├── unit.turbo-version-specifier-supports-corepack.test.ts │ │ │ ├── unit.using-corepack.test.ts │ │ │ ├── unit.validate-lambda-size.test.ts │ │ │ ├── unit.validate-npmrc.test.ts │ │ │ ├── unit.walk.test.ts │ │ │ └── walk/ │ │ │ ├── every-directory/ │ │ │ │ ├── another.txt │ │ │ │ ├── file.txt │ │ │ │ └── two/ │ │ │ │ ├── another.txt │ │ │ │ ├── file.txt │ │ │ │ └── three/ │ │ │ │ ├── another.txt │ │ │ │ └── file.txt │ │ │ ├── not-found/ │ │ │ │ ├── another.txt │ │ │ │ └── two/ │ │ │ │ ├── another.txt │ │ │ │ └── three/ │ │ │ │ └── another.txt │ │ │ ├── only-one/ │ │ │ │ ├── another.txt │ │ │ │ ├── file.txt │ │ │ │ └── two/ │ │ │ │ ├── another.txt │ │ │ │ └── three/ │ │ │ │ └── another.txt │ │ │ ├── only-three/ │ │ │ │ ├── another.txt │ │ │ │ └── two/ │ │ │ │ ├── another.txt │ │ │ │ └── three/ │ │ │ │ ├── another.txt │ │ │ │ └── file.txt │ │ │ └── only-two/ │ │ │ ├── another.txt │ │ │ └── two/ │ │ │ ├── another.txt │ │ │ ├── file.txt │ │ │ └── three/ │ │ │ └── another.txt │ │ └── tsconfig.json │ ├── cervel/ │ │ ├── CHANGELOG.md │ │ ├── bin/ │ │ │ └── cervel.mjs │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cli.ts │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── tsdown.config.ts │ ├── cli/ │ │ ├── .gitignore │ │ ├── AGENTS.md │ │ ├── CHANGELOG.md │ │ ├── CLAUDE.md │ │ ├── README.md │ │ ├── docs/ │ │ │ └── non-interactive-mode.md │ │ ├── evals/ │ │ │ ├── .gitignore │ │ │ ├── .prettierrc.json │ │ │ ├── README.md │ │ │ ├── evals/ │ │ │ │ ├── _deploy/ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ ├── fixture/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ └── package.json │ │ │ │ ├── _smoke/ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ ├── index.html │ │ │ │ │ └── package.json │ │ │ │ ├── build/ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ ├── index.html │ │ │ │ │ └── package.json │ │ │ │ ├── curl/ │ │ │ │ │ ├── explicit/ │ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ │ └── package.json │ │ │ │ │ └── implicit/ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ └── package.json │ │ │ │ ├── env/ │ │ │ │ │ ├── add/ │ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── ls/ │ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── pull/ │ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── remove/ │ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ │ └── package.json │ │ │ │ │ └── update/ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ └── package.json │ │ │ │ ├── init/ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ └── package.json │ │ │ │ ├── login-not-logged-in/ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ ├── package.json │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── login-whoami/ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ ├── package.json │ │ │ │ │ └── vitest.config.ts │ │ │ │ ├── marketplace/ │ │ │ │ │ ├── find-postgres-integration/ │ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── install-neon-postgres/ │ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── metadata-discovery/ │ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ │ └── package.json │ │ │ │ │ └── multi-product-install/ │ │ │ │ │ ├── EVAL.ts │ │ │ │ │ ├── PROMPT.md │ │ │ │ │ └── package.json │ │ │ │ └── non-interactive/ │ │ │ │ ├── EVAL.ts │ │ │ │ ├── PROMPT.md │ │ │ │ └── package.json │ │ │ ├── experiments/ │ │ │ │ ├── cc.ts │ │ │ │ ├── cli-with-skill.ts │ │ │ │ ├── cli.ts │ │ │ │ ├── smoke.ts │ │ │ │ └── vercel-cli-cc.ts │ │ │ ├── hooks.test.ts │ │ │ ├── hooks.ts │ │ │ ├── run.ts │ │ │ ├── sandbox-project/ │ │ │ │ ├── .gitignore │ │ │ │ ├── .vercel/ │ │ │ │ │ ├── README.txt │ │ │ │ │ └── project.json │ │ │ │ └── README.md │ │ │ ├── scripts/ │ │ │ │ └── transform-agent-eval-to-canonical.js │ │ │ ├── setup/ │ │ │ │ ├── auth-and-config.ts │ │ │ │ └── install-cli.ts │ │ │ └── tsconfig.json │ │ ├── jest.config.cjs │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── Dockerfile.headless │ │ │ ├── build.mjs │ │ │ ├── compile-templates.mjs │ │ │ ├── flag-audit.js │ │ │ ├── start.js │ │ │ └── test-headless.sh │ │ ├── src/ │ │ │ ├── args.ts │ │ │ ├── commands/ │ │ │ │ ├── activity/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── agent/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── init.ts │ │ │ │ ├── alerts/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── list.ts │ │ │ │ ├── alias/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ls.ts │ │ │ │ │ ├── rm.ts │ │ │ │ │ └── set.ts │ │ │ │ ├── api/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── format-utils.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── request-builder.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── bisect/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── blob/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── copy.ts │ │ │ │ │ ├── del.ts │ │ │ │ │ ├── get.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── put.ts │ │ │ │ │ ├── store-add.ts │ │ │ │ │ ├── store-get.ts │ │ │ │ │ ├── store-remove.ts │ │ │ │ │ └── store.ts │ │ │ │ ├── build/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── buy/ │ │ │ │ │ ├── addon.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── credits.ts │ │ │ │ │ ├── domain.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── pro.ts │ │ │ │ │ └── v0.ts │ │ │ │ ├── cache/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── dangerously-delete.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── invalidate.ts │ │ │ │ │ └── purge.ts │ │ │ │ ├── certs/ │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── issue.ts │ │ │ │ │ ├── ls.ts │ │ │ │ │ └── rm.ts │ │ │ │ ├── contract/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── crons/ │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ls.ts │ │ │ │ │ ├── run.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── curl/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── bypass-token.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── deployment-url.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shared.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── deploy/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── dev/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── dev.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── dns/ │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── import.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ls.ts │ │ │ │ │ └── rm.ts │ │ │ │ ├── domains/ │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── buy.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inspect.ts │ │ │ │ │ ├── ls.ts │ │ │ │ │ ├── move.ts │ │ │ │ │ ├── rm.ts │ │ │ │ │ └── transfer-in.ts │ │ │ │ ├── env/ │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ls.ts │ │ │ │ │ ├── pull.ts │ │ │ │ │ ├── rm.ts │ │ │ │ │ ├── run.ts │ │ │ │ │ └── update.ts │ │ │ │ ├── flags/ │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── archive.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── disable.ts │ │ │ │ │ ├── emit-datafiles.ts │ │ │ │ │ ├── enable.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inspect.ts │ │ │ │ │ ├── ls.ts │ │ │ │ │ ├── open.ts │ │ │ │ │ ├── rm.ts │ │ │ │ │ ├── sdk-keys-add.ts │ │ │ │ │ ├── sdk-keys-ls.ts │ │ │ │ │ ├── sdk-keys-rm.ts │ │ │ │ │ ├── sdk-keys.ts │ │ │ │ │ ├── set.ts │ │ │ │ │ └── update.ts │ │ │ │ ├── git/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── connect.ts │ │ │ │ │ ├── disconnect.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── guidance/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── disable.ts │ │ │ │ │ ├── enable.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── status.ts │ │ │ │ ├── help.ts │ │ │ │ ├── httpstat/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── init/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── init.ts │ │ │ │ ├── inspect/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── install/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── integration/ │ │ │ │ │ ├── add-auto-provision.ts │ │ │ │ │ ├── add-help.ts │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── balance.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── discover.ts │ │ │ │ │ ├── guide.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── open-integration.ts │ │ │ │ │ ├── remove-integration.ts │ │ │ │ │ └── wizard.ts │ │ │ │ ├── integration-resource/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── create-threshold.ts │ │ │ │ │ ├── disconnect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── remove-resource.ts │ │ │ │ ├── link/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── list/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── login/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── future.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── logout/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── future.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── logs/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── mcp/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── mcp.ts │ │ │ │ ├── metrics/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── output.ts │ │ │ │ │ ├── query.ts │ │ │ │ │ ├── schema-api.ts │ │ │ │ │ ├── schema.ts │ │ │ │ │ ├── text-output.ts │ │ │ │ │ ├── time-utils.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── validation.ts │ │ │ │ ├── microfrontends/ │ │ │ │ │ ├── add-to-group.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── create-group.ts │ │ │ │ │ ├── delete-group.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inspect-group.ts │ │ │ │ │ ├── pull.ts │ │ │ │ │ ├── remove-from-group.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── open/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── project/ │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inspect.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── rm.ts │ │ │ │ │ └── token.ts │ │ │ │ ├── promote/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── request-promote.ts │ │ │ │ │ └── status.ts │ │ │ │ ├── pull/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── redeploy/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── redirects/ │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── list-versions.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── promote.ts │ │ │ │ │ ├── remove.ts │ │ │ │ │ ├── restore.ts │ │ │ │ │ ├── shared.ts │ │ │ │ │ ├── upload.ts │ │ │ │ │ └── validate-redirects.ts │ │ │ │ ├── remove/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── rollback/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── request-rollback.ts │ │ │ │ │ └── status.ts │ │ │ │ ├── rolling-release/ │ │ │ │ │ ├── abort-rolling-release.ts │ │ │ │ │ ├── approve-rolling-release.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── complete-rolling-release.ts │ │ │ │ │ ├── configure-rolling-release.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── request-rolling-release.ts │ │ │ │ │ └── start-rolling-release.ts │ │ │ │ ├── routes/ │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── delete.ts │ │ │ │ │ ├── disable.ts │ │ │ │ │ ├── discard.ts │ │ │ │ │ ├── edit-interactive.ts │ │ │ │ │ ├── edit.ts │ │ │ │ │ ├── enable.ts │ │ │ │ │ ├── export.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── inspect.ts │ │ │ │ │ ├── list-versions.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── publish.ts │ │ │ │ │ ├── reorder.ts │ │ │ │ │ ├── restore.ts │ │ │ │ │ └── shared.ts │ │ │ │ ├── skills/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── target/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── list.ts │ │ │ │ ├── teams/ │ │ │ │ │ ├── add.ts │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── invite.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── members.ts │ │ │ │ │ └── switch.ts │ │ │ │ ├── telemetry/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── disable.ts │ │ │ │ │ ├── enable.ts │ │ │ │ │ ├── flush.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── status.ts │ │ │ │ ├── upgrade/ │ │ │ │ │ ├── command.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── usage/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── output-aggregated.ts │ │ │ │ │ ├── output-breakdown.ts │ │ │ │ │ ├── output-group-by.ts │ │ │ │ │ ├── output-json.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── webhooks/ │ │ │ │ │ ├── command.ts │ │ │ │ │ ├── create.ts │ │ │ │ │ ├── get.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── ls.ts │ │ │ │ │ └── rm.ts │ │ │ │ └── whoami/ │ │ │ │ ├── command.ts │ │ │ │ └── index.ts │ │ │ ├── commands-bulk.ts │ │ │ ├── help.ts │ │ │ ├── index.ts │ │ │ ├── output-manager.ts │ │ │ ├── util/ │ │ │ │ ├── agent/ │ │ │ │ │ └── auto-install-agentic.ts │ │ │ │ ├── agent-output-constants.ts │ │ │ │ ├── agent-output.ts │ │ │ │ ├── alias/ │ │ │ │ │ ├── assign-alias.ts │ │ │ │ │ ├── create-alias.ts │ │ │ │ │ ├── extract-domain.ts │ │ │ │ │ ├── find-alias-by-alias-or-id.ts │ │ │ │ │ ├── get-aliases.ts │ │ │ │ │ ├── get-deployment-by-alias.ts │ │ │ │ │ ├── get-domain-aliases.ts │ │ │ │ │ ├── is-wildcard-alias.ts │ │ │ │ │ ├── remove-alias-by-id.ts │ │ │ │ │ └── render-alias-status.ts │ │ │ │ ├── arg-common.ts │ │ │ │ ├── billing/ │ │ │ │ │ ├── focus-charge.ts │ │ │ │ │ ├── focus-contract-commitment.ts │ │ │ │ │ ├── format.ts │ │ │ │ │ ├── group-by-utils.ts │ │ │ │ │ └── period-utils.ts │ │ │ │ ├── bisect/ │ │ │ │ │ └── normalize-url.ts │ │ │ │ ├── blob/ │ │ │ │ │ ├── access.ts │ │ │ │ │ └── token.ts │ │ │ │ ├── build/ │ │ │ │ │ ├── corepack.ts │ │ │ │ │ ├── import-builders.ts │ │ │ │ │ ├── install-builders.ts │ │ │ │ │ ├── merge.ts │ │ │ │ │ ├── monorepo.ts │ │ │ │ │ ├── scrub-argv.ts │ │ │ │ │ ├── service-route-ownership.ts │ │ │ │ │ ├── sort-builders.ts │ │ │ │ │ ├── static-builder.ts │ │ │ │ │ ├── unzip.ts │ │ │ │ │ └── write-build-result.ts │ │ │ │ ├── build-state.ts │ │ │ │ ├── buy/ │ │ │ │ │ ├── create-purchase.ts │ │ │ │ │ ├── handle-purchase-error.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── certs/ │ │ │ │ │ ├── create-cert-for-alias.ts │ │ │ │ │ ├── create-cert-for-cns.ts │ │ │ │ │ ├── create-cert-from-file.ts │ │ │ │ │ ├── delete-cert-by-id.ts │ │ │ │ │ ├── finish-cert-order.ts │ │ │ │ │ ├── get-cert-by-id.ts │ │ │ │ │ ├── get-certs.ts │ │ │ │ │ ├── get-cns-from-args.ts │ │ │ │ │ ├── get-custom-certs-for-domain.ts │ │ │ │ │ ├── get-wildcard-cns-for-alias.ts │ │ │ │ │ ├── handle-cert-error.ts │ │ │ │ │ ├── issue-cert.ts │ │ │ │ │ ├── map-cert-error.ts │ │ │ │ │ └── start-cert-order.ts │ │ │ │ ├── client.ts │ │ │ │ ├── command-validation.ts │ │ │ │ ├── compile-vercel-config.ts │ │ │ │ ├── config/ │ │ │ │ │ ├── files.ts │ │ │ │ │ ├── get-default.ts │ │ │ │ │ ├── global-path.ts │ │ │ │ │ ├── local-path.ts │ │ │ │ │ └── read-config.ts │ │ │ │ ├── create-git-meta.ts │ │ │ │ ├── deploy/ │ │ │ │ │ ├── create-deploy.ts │ │ │ │ │ ├── generate-cert-for-deploy.ts │ │ │ │ │ ├── get-deployment-by-id-or-url.ts │ │ │ │ │ ├── get-deployment-checks.ts │ │ │ │ │ ├── get-deployments-by-appname.ts │ │ │ │ │ ├── get-deployments-by-project-id.ts │ │ │ │ │ ├── get-prebuilt-json.ts │ │ │ │ │ ├── is-deploying.ts │ │ │ │ │ ├── print-deployment-status.ts │ │ │ │ │ ├── process-deployment.ts │ │ │ │ │ └── validate-archive-format.ts │ │ │ │ ├── dev/ │ │ │ │ │ ├── builder-worker.cjs │ │ │ │ │ ├── builder.ts │ │ │ │ │ ├── cron.ts │ │ │ │ │ ├── dev-lock.ts │ │ │ │ │ ├── errors.ts │ │ │ │ │ ├── headers.ts │ │ │ │ │ ├── is-url.ts │ │ │ │ │ ├── mime-type.ts │ │ │ │ │ ├── parse-listen.ts │ │ │ │ │ ├── parse-query-string.ts │ │ │ │ │ ├── port-utils.ts │ │ │ │ │ ├── queue-broker.ts │ │ │ │ │ ├── router.ts │ │ │ │ │ ├── server.ts │ │ │ │ │ ├── services-orchestrator.ts │ │ │ │ │ ├── templates/ │ │ │ │ │ │ ├── error.jst │ │ │ │ │ │ ├── error.tsdef │ │ │ │ │ │ ├── error_404.jst │ │ │ │ │ │ ├── error_404.tsdef │ │ │ │ │ │ ├── error_502.jst │ │ │ │ │ │ ├── error_502.tsdef │ │ │ │ │ │ ├── error_base.jst │ │ │ │ │ │ ├── error_base.tsdef │ │ │ │ │ │ ├── redirect.jst │ │ │ │ │ │ └── redirect.tsdef │ │ │ │ │ └── types.ts │ │ │ │ ├── did-you-mean.ts │ │ │ │ ├── dns/ │ │ │ │ │ ├── add-dns-record.ts │ │ │ │ │ ├── delete-dns-record-by-id.ts │ │ │ │ │ ├── get-dns-data.ts │ │ │ │ │ ├── get-dns-record-by-id.ts │ │ │ │ │ ├── get-dns-records.ts │ │ │ │ │ ├── get-domain-dns-records.ts │ │ │ │ │ ├── import-zonefile.ts │ │ │ │ │ └── parse-add-dns-record-args.ts │ │ │ │ ├── domains/ │ │ │ │ │ ├── add-domain.ts │ │ │ │ │ ├── check-transfer.ts │ │ │ │ │ ├── collect-contact-information.ts │ │ │ │ │ ├── get-auth-code.ts │ │ │ │ │ ├── get-domain-by-name.ts │ │ │ │ │ ├── get-domain-config.ts │ │ │ │ │ ├── get-domain-price.ts │ │ │ │ │ ├── get-domain-registrar.ts │ │ │ │ │ ├── get-domain-status.ts │ │ │ │ │ ├── get-domain.ts │ │ │ │ │ ├── get-domains.ts │ │ │ │ │ ├── get-order.ts │ │ │ │ │ ├── is-domain-external.ts │ │ │ │ │ ├── is-public-suffix.ts │ │ │ │ │ ├── maybe-get-domain-by-name.ts │ │ │ │ │ ├── move-out-domain.ts │ │ │ │ │ ├── purchase-domain-if-available.ts │ │ │ │ │ ├── purchase-domain.ts │ │ │ │ │ ├── remove-domain-by-name.ts │ │ │ │ │ ├── set-custom-suffix.ts │ │ │ │ │ ├── setup-domain.ts │ │ │ │ │ └── transfer-in-domain.ts │ │ │ │ ├── emoji.ts │ │ │ │ ├── env/ │ │ │ │ │ ├── add-env-record.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── diff-env-files.ts │ │ │ │ │ ├── env-target.ts │ │ │ │ │ ├── format-environments.ts │ │ │ │ │ ├── get-env-records.ts │ │ │ │ │ ├── known-error.ts │ │ │ │ │ ├── refresh-oidc-token.ts │ │ │ │ │ ├── remove-env-record.ts │ │ │ │ │ ├── update-env-record.ts │ │ │ │ │ └── validate-env.ts │ │ │ │ ├── error.ts │ │ │ │ ├── errors-ts.ts │ │ │ │ ├── events.ts │ │ │ │ ├── extension/ │ │ │ │ │ ├── exec.ts │ │ │ │ │ └── proxy.ts │ │ │ │ ├── flags/ │ │ │ │ │ ├── create-flag.ts │ │ │ │ │ ├── dashboard-url.ts │ │ │ │ │ ├── delete-flag.ts │ │ │ │ │ ├── environment-variant.ts │ │ │ │ │ ├── get-flags.ts │ │ │ │ │ ├── log-non-boolean-guidance.ts │ │ │ │ │ ├── normalize-optional-input.ts │ │ │ │ │ ├── print-flag-details.ts │ │ │ │ │ ├── resolve-variant.ts │ │ │ │ │ ├── sdk-keys.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── update-flag.ts │ │ │ │ ├── format-date.ts │ │ │ │ ├── format-dns-table.ts │ │ │ │ ├── format-ns-table.ts │ │ │ │ ├── format-table.ts │ │ │ │ ├── get-args.ts │ │ │ │ ├── get-command-flags.ts │ │ │ │ ├── get-config.ts │ │ │ │ ├── get-deployment.ts │ │ │ │ ├── get-files.ts │ │ │ │ ├── get-flags-specification.ts │ │ │ │ ├── get-invalid-subcommand.ts │ │ │ │ ├── get-latest-version/ │ │ │ │ │ ├── get-latest-worker.cjs │ │ │ │ │ └── index.ts │ │ │ │ ├── get-pagination-opts.ts │ │ │ │ ├── get-project-name.ts │ │ │ │ ├── get-scope.ts │ │ │ │ ├── get-sentry.ts │ │ │ │ ├── get-subcommand.ts │ │ │ │ ├── get-update-command.ts │ │ │ │ ├── get-user.ts │ │ │ │ ├── git/ │ │ │ │ │ ├── connect-git-provider.ts │ │ │ │ │ └── repo-info-to-url.ts │ │ │ │ ├── git-helpers.ts │ │ │ │ ├── guidance/ │ │ │ │ │ └── check-status.ts │ │ │ │ ├── handle-command-typo.ts │ │ │ │ ├── humanize-path.ts │ │ │ │ ├── index.ts │ │ │ │ ├── input/ │ │ │ │ │ ├── display-services.ts │ │ │ │ │ ├── edit-project-settings.ts │ │ │ │ │ ├── input-project.ts │ │ │ │ │ ├── input-root-directory.ts │ │ │ │ │ ├── list.ts │ │ │ │ │ ├── read-standard-input.ts │ │ │ │ │ ├── regexes.ts │ │ │ │ │ ├── select-org.ts │ │ │ │ │ └── vercel-auth.ts │ │ │ │ ├── integration/ │ │ │ │ │ ├── accept-terms-via-browser.ts │ │ │ │ │ ├── auto-provision-resource.ts │ │ │ │ │ ├── build-sso-link.ts │ │ │ │ │ ├── create-authorization.ts │ │ │ │ │ ├── fetch-authorization.ts │ │ │ │ │ ├── fetch-billing-plans.ts │ │ │ │ │ ├── fetch-installation-prepayment-info.ts │ │ │ │ │ ├── fetch-installations.ts │ │ │ │ │ ├── fetch-integration-categories.ts │ │ │ │ │ ├── fetch-integration.ts │ │ │ │ │ ├── fetch-marketplace-integrations-list.ts │ │ │ │ │ ├── fetch-marketplace-integrations.ts │ │ │ │ │ ├── format-billing-plans-help.ts │ │ │ │ │ ├── format-dynamic-examples.ts │ │ │ │ │ ├── format-product-help.ts │ │ │ │ │ ├── format-schema-help.ts │ │ │ │ │ ├── generate-resource-name.ts │ │ │ │ │ ├── parse-metadata.ts │ │ │ │ │ ├── post-provision-setup.ts │ │ │ │ │ ├── prompt-for-terms.ts │ │ │ │ │ ├── provision-store-resource.ts │ │ │ │ │ ├── remove-integration.ts │ │ │ │ │ ├── select-product.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── update-installation-threshold.ts │ │ │ │ ├── integration-resource/ │ │ │ │ │ ├── connect-resource-to-project.ts │ │ │ │ │ ├── delete-resource.ts │ │ │ │ │ ├── disconnect-resource-from-project.ts │ │ │ │ │ ├── get-resources.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── update-threshold.ts │ │ │ │ ├── is-root-domain.ts │ │ │ │ ├── is-setting-value.ts │ │ │ │ ├── is-valid-name.ts │ │ │ │ ├── link/ │ │ │ │ │ ├── add-to-gitignore.ts │ │ │ │ │ ├── ensure-link.ts │ │ │ │ │ ├── repo.ts │ │ │ │ │ ├── services-setup.ts │ │ │ │ │ └── setup-and-link.ts │ │ │ │ ├── login/ │ │ │ │ │ ├── reauthenticate.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── update-current-team-after-login.ts │ │ │ │ ├── logs-v2.ts │ │ │ │ ├── logs.ts │ │ │ │ ├── now-error.ts │ │ │ │ ├── oauth.ts │ │ │ │ ├── openapi/ │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── openapi-cache.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── output/ │ │ │ │ │ ├── box.ts │ │ │ │ │ ├── builds.ts │ │ │ │ │ ├── chars.ts │ │ │ │ │ ├── cmd.ts │ │ │ │ │ ├── code.ts │ │ │ │ │ ├── create-output.ts │ │ │ │ │ ├── elapsed.ts │ │ │ │ │ ├── ellipsis.ts │ │ │ │ │ ├── erase-lines.ts │ │ │ │ │ ├── error.ts │ │ │ │ │ ├── highlight.ts │ │ │ │ │ ├── indent.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── info.ts │ │ │ │ │ ├── join-words.ts │ │ │ │ │ ├── link.ts │ │ │ │ │ ├── list-item.ts │ │ │ │ │ ├── param.ts │ │ │ │ │ ├── progress.ts │ │ │ │ │ ├── routes.ts │ │ │ │ │ ├── stamp.ts │ │ │ │ │ ├── table.ts │ │ │ │ │ └── wait.ts │ │ │ │ ├── output-format.ts │ │ │ │ ├── parse-env.ts │ │ │ │ ├── parse-meta.ts │ │ │ │ ├── parse-policy.ts │ │ │ │ ├── parse-target.ts │ │ │ │ ├── path-helpers.ts │ │ │ │ ├── pkg-name.ts │ │ │ │ ├── pkg.ts │ │ │ │ ├── print-indications.ts │ │ │ │ ├── projects/ │ │ │ │ │ ├── add-domain-to-project.ts │ │ │ │ │ ├── create-project.ts │ │ │ │ │ ├── detect-projects.ts │ │ │ │ │ ├── detect-services.ts │ │ │ │ │ ├── find-project-root.ts │ │ │ │ │ ├── find-projects-for-domain.ts │ │ │ │ │ ├── format-project.ts │ │ │ │ │ ├── get-project-by-cwd-or-link.ts │ │ │ │ │ ├── get-project-by-deployment.ts │ │ │ │ │ ├── get-project-by-id-or-name.ts │ │ │ │ │ ├── link.ts │ │ │ │ │ ├── project-settings.ts │ │ │ │ │ ├── remove-domain-from-project.ts │ │ │ │ │ ├── remove-project.ts │ │ │ │ │ └── search-project-across-teams.ts │ │ │ │ ├── promise.ts │ │ │ │ ├── read-json-file.ts │ │ │ │ ├── redirects/ │ │ │ │ │ ├── delete-redirects.ts │ │ │ │ │ ├── get-redirect-versions.ts │ │ │ │ │ ├── get-redirects.ts │ │ │ │ │ ├── put-redirects.ts │ │ │ │ │ └── update-redirect-version.ts │ │ │ │ ├── report-error.ts │ │ │ │ ├── response-error.ts │ │ │ │ ├── routes/ │ │ │ │ │ ├── add-route.ts │ │ │ │ │ ├── ai-transform.ts │ │ │ │ │ ├── delete-routes.ts │ │ │ │ │ ├── edit-route.ts │ │ │ │ │ ├── env.ts │ │ │ │ │ ├── generate-route.ts │ │ │ │ │ ├── get-route-versions.ts │ │ │ │ │ ├── get-routes.ts │ │ │ │ │ ├── interactive.ts │ │ │ │ │ ├── parse-conditions.ts │ │ │ │ │ ├── parse-transforms.ts │ │ │ │ │ ├── stage-routes.ts │ │ │ │ │ ├── types.ts │ │ │ │ │ └── update-route-version.ts │ │ │ │ ├── sleep.ts │ │ │ │ ├── strlen.ts │ │ │ │ ├── suggest-next-commands.ts │ │ │ │ ├── teams/ │ │ │ │ │ ├── create-team.ts │ │ │ │ │ ├── get-team-by-id.ts │ │ │ │ │ ├── get-teams.ts │ │ │ │ │ ├── invite-user-to-team.ts │ │ │ │ │ └── patch-team.ts │ │ │ │ ├── telemetry/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── check-status.ts │ │ │ │ │ ├── commands/ │ │ │ │ │ │ ├── activity/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── agent/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── alerts/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── alias/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── list.ts │ │ │ │ │ │ │ ├── remove.ts │ │ │ │ │ │ │ └── set.ts │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── bisect/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── blob/ │ │ │ │ │ │ │ ├── copy.ts │ │ │ │ │ │ │ ├── del.ts │ │ │ │ │ │ │ ├── get.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── list.ts │ │ │ │ │ │ │ ├── put.ts │ │ │ │ │ │ │ ├── store-add.ts │ │ │ │ │ │ │ ├── store-get.ts │ │ │ │ │ │ │ ├── store-remove.ts │ │ │ │ │ │ │ └── store.ts │ │ │ │ │ │ ├── build/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── buy/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── cache/ │ │ │ │ │ │ │ ├── dangerously-delete.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── invalidate.ts │ │ │ │ │ │ │ └── purge.ts │ │ │ │ │ │ ├── certs/ │ │ │ │ │ │ │ ├── add.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── issue.ts │ │ │ │ │ │ │ ├── ls.ts │ │ │ │ │ │ │ └── remove.ts │ │ │ │ │ │ ├── contract/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── crons/ │ │ │ │ │ │ │ ├── add.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── ls.ts │ │ │ │ │ │ │ └── run.ts │ │ │ │ │ │ ├── curl/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── deploy/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── dev/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── dns/ │ │ │ │ │ │ │ ├── add.ts │ │ │ │ │ │ │ ├── import.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── ls.ts │ │ │ │ │ │ │ └── rm.ts │ │ │ │ │ │ ├── domains/ │ │ │ │ │ │ │ ├── add.ts │ │ │ │ │ │ │ ├── buy.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── inspect.ts │ │ │ │ │ │ │ ├── ls.ts │ │ │ │ │ │ │ ├── move.ts │ │ │ │ │ │ │ ├── rm.ts │ │ │ │ │ │ │ └── transfer-in.ts │ │ │ │ │ │ ├── env/ │ │ │ │ │ │ │ ├── add.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── ls.ts │ │ │ │ │ │ │ ├── pull.ts │ │ │ │ │ │ │ ├── rm.ts │ │ │ │ │ │ │ └── update.ts │ │ │ │ │ │ ├── flags/ │ │ │ │ │ │ │ ├── add.ts │ │ │ │ │ │ │ ├── archive.ts │ │ │ │ │ │ │ ├── disable.ts │ │ │ │ │ │ │ ├── enable.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── inspect.ts │ │ │ │ │ │ │ ├── ls.ts │ │ │ │ │ │ │ ├── open.ts │ │ │ │ │ │ │ ├── rm.ts │ │ │ │ │ │ │ ├── sdk-keys.ts │ │ │ │ │ │ │ ├── set.ts │ │ │ │ │ │ │ └── update.ts │ │ │ │ │ │ ├── git/ │ │ │ │ │ │ │ ├── connect.ts │ │ │ │ │ │ │ ├── disconnect.ts │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── guidance/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── httpstat/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── init/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── inspect/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── install/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── integration/ │ │ │ │ │ │ │ ├── add.ts │ │ │ │ │ │ │ ├── balance.ts │ │ │ │ │ │ │ ├── discover.ts │ │ │ │ │ │ │ ├── guide.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── list.ts │ │ │ │ │ │ │ ├── open.ts │ │ │ │ │ │ │ └── remove.ts │ │ │ │ │ │ ├── integration-resource/ │ │ │ │ │ │ │ ├── create-threshold.ts │ │ │ │ │ │ │ ├── disconnect.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── remove.ts │ │ │ │ │ │ ├── link/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── list/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── login/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── logout/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── logs/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── metrics/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── microfrontends/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ └── pull.ts │ │ │ │ │ │ ├── open/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── project/ │ │ │ │ │ │ │ ├── add.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── inspect.ts │ │ │ │ │ │ │ ├── list.ts │ │ │ │ │ │ │ └── rm.ts │ │ │ │ │ │ ├── promote/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── pull/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── redeploy/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── redirects/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── remove/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── rollback/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── rolling-release/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── routes/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── skills/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── teams/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── invite.ts │ │ │ │ │ │ │ ├── list.ts │ │ │ │ │ │ │ └── switch.ts │ │ │ │ │ │ ├── telemetry/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── upgrade/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── usage/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ ├── webhooks/ │ │ │ │ │ │ │ ├── create.ts │ │ │ │ │ │ │ ├── get.ts │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── ls.ts │ │ │ │ │ │ │ └── rm.ts │ │ │ │ │ │ └── whoami/ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── root.ts │ │ │ │ │ └── types.ts │ │ │ │ ├── time-utils.ts │ │ │ │ ├── to-host.ts │ │ │ │ ├── tree-kill.ts │ │ │ │ ├── types.ts │ │ │ │ ├── ua-browser.ts │ │ │ │ ├── ua.ts │ │ │ │ ├── unique-strings.ts │ │ │ │ ├── upgrade.ts │ │ │ │ ├── url.ts │ │ │ │ ├── validate-config.ts │ │ │ │ ├── validate-cron-secret.ts │ │ │ │ ├── validate-ls-args.ts │ │ │ │ ├── validate-package-manifest.ts │ │ │ │ ├── validate-paths.ts │ │ │ │ └── webhooks/ │ │ │ │ ├── create-webhook.ts │ │ │ │ ├── delete-webhook.ts │ │ │ │ ├── get-webhook-events.ts │ │ │ │ ├── get-webhook.ts │ │ │ │ ├── get-webhooks.ts │ │ │ │ └── types.ts │ │ │ └── vc.js │ │ ├── test/ │ │ │ ├── dev/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── 00-list-directory/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .well-known/ │ │ │ │ │ │ │ └── keybase.txt │ │ │ │ │ │ ├── directory/ │ │ │ │ │ │ │ └── hello.md │ │ │ │ │ │ ├── test1.txt │ │ │ │ │ │ ├── test2.txt │ │ │ │ │ │ └── test3.txt │ │ │ │ │ ├── 01-node/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── date.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── vercel.json │ │ │ │ │ │ └── www/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── style.css │ │ │ │ │ ├── 02-angular-node/ │ │ │ │ │ │ ├── .editorconfig │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── angular.json │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── date.js │ │ │ │ │ │ ├── browserslist │ │ │ │ │ │ ├── e2e/ │ │ │ │ │ │ │ ├── protractor.conf.js │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ ├── app.e2e-spec.ts │ │ │ │ │ │ │ │ └── app.po.ts │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── karma.conf.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ ├── app.component.css │ │ │ │ │ │ │ │ ├── app.component.html │ │ │ │ │ │ │ │ ├── app.component.spec.ts │ │ │ │ │ │ │ │ ├── app.component.ts │ │ │ │ │ │ │ │ └── app.module.ts │ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ │ ├── environments/ │ │ │ │ │ │ │ │ ├── environment.prod.ts │ │ │ │ │ │ │ │ └── environment.ts │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ ├── main.ts │ │ │ │ │ │ │ ├── polyfills.ts │ │ │ │ │ │ │ ├── styles.css │ │ │ │ │ │ │ └── test.ts │ │ │ │ │ │ ├── tsconfig.app.json │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ ├── tsconfig.spec.json │ │ │ │ │ │ └── tslint.json │ │ │ │ │ ├── 03-aurelia/ │ │ │ │ │ │ ├── .babelrc.js │ │ │ │ │ │ ├── .editorconfig │ │ │ │ │ │ ├── .eslintrc.json │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── aurelia_project/ │ │ │ │ │ │ │ ├── aurelia.json │ │ │ │ │ │ │ ├── environments/ │ │ │ │ │ │ │ │ ├── dev.js │ │ │ │ │ │ │ │ ├── prod.js │ │ │ │ │ │ │ │ ├── stage.js │ │ │ │ │ │ │ │ └── test.js │ │ │ │ │ │ │ ├── generators/ │ │ │ │ │ │ │ │ ├── attribute.js │ │ │ │ │ │ │ │ ├── attribute.json │ │ │ │ │ │ │ │ ├── binding-behavior.js │ │ │ │ │ │ │ │ ├── binding-behavior.json │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ ├── component.json │ │ │ │ │ │ │ │ ├── element.js │ │ │ │ │ │ │ │ ├── element.json │ │ │ │ │ │ │ │ ├── generator.js │ │ │ │ │ │ │ │ ├── generator.json │ │ │ │ │ │ │ │ ├── task.js │ │ │ │ │ │ │ │ ├── task.json │ │ │ │ │ │ │ │ ├── value-converter.js │ │ │ │ │ │ │ │ └── value-converter.json │ │ │ │ │ │ │ └── tasks/ │ │ │ │ │ │ │ ├── build.js │ │ │ │ │ │ │ ├── build.json │ │ │ │ │ │ │ ├── environment.js │ │ │ │ │ │ │ ├── jest.js │ │ │ │ │ │ │ ├── jest.json │ │ │ │ │ │ │ ├── run.js │ │ │ │ │ │ │ ├── run.json │ │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ │ └── test.json │ │ │ │ │ │ ├── index.ejs │ │ │ │ │ │ ├── jsconfig.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── app.html │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ ├── environment.js │ │ │ │ │ │ │ ├── main.js │ │ │ │ │ │ │ └── resources/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── test/ │ │ │ │ │ │ │ ├── jest-pretest.js │ │ │ │ │ │ │ └── unit/ │ │ │ │ │ │ │ ├── .eslintrc │ │ │ │ │ │ │ └── app.spec.js │ │ │ │ │ │ └── webpack.config.js │ │ │ │ │ ├── 04-create-react-app/ │ │ │ │ │ │ ├── .env │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── App.css │ │ │ │ │ │ ├── App.js │ │ │ │ │ │ ├── App.test.js │ │ │ │ │ │ ├── index.css │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── serviceWorker.js │ │ │ │ │ ├── 07-hexo-node/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── _config.yml │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── date.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── scaffolds/ │ │ │ │ │ │ │ ├── draft.md │ │ │ │ │ │ │ ├── page.md │ │ │ │ │ │ │ └── post.md │ │ │ │ │ │ ├── source/ │ │ │ │ │ │ │ ├── _posts/ │ │ │ │ │ │ │ │ └── hello-world.md │ │ │ │ │ │ │ └── contact.html │ │ │ │ │ │ ├── themes/ │ │ │ │ │ │ │ └── landscape/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── Gruntfile.js │ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── _config.yml │ │ │ │ │ │ │ ├── languages/ │ │ │ │ │ │ │ │ ├── de.yml │ │ │ │ │ │ │ │ ├── default.yml │ │ │ │ │ │ │ │ ├── es.yml │ │ │ │ │ │ │ │ ├── fr.yml │ │ │ │ │ │ │ │ ├── ja.yml │ │ │ │ │ │ │ │ ├── ko.yml │ │ │ │ │ │ │ │ ├── nl.yml │ │ │ │ │ │ │ │ ├── no.yml │ │ │ │ │ │ │ │ ├── pt.yml │ │ │ │ │ │ │ │ ├── ru.yml │ │ │ │ │ │ │ │ ├── zh-CN.yml │ │ │ │ │ │ │ │ └── zh-TW.yml │ │ │ │ │ │ │ ├── layout/ │ │ │ │ │ │ │ │ ├── _partial/ │ │ │ │ │ │ │ │ │ ├── after-footer.ejs │ │ │ │ │ │ │ │ │ ├── archive-post.ejs │ │ │ │ │ │ │ │ │ ├── archive.ejs │ │ │ │ │ │ │ │ │ ├── article.ejs │ │ │ │ │ │ │ │ │ ├── footer.ejs │ │ │ │ │ │ │ │ │ ├── gauges-analytics.ejs │ │ │ │ │ │ │ │ │ ├── google-analytics.ejs │ │ │ │ │ │ │ │ │ ├── head.ejs │ │ │ │ │ │ │ │ │ ├── header.ejs │ │ │ │ │ │ │ │ │ ├── mobile-nav.ejs │ │ │ │ │ │ │ │ │ ├── post/ │ │ │ │ │ │ │ │ │ │ ├── category.ejs │ │ │ │ │ │ │ │ │ │ ├── date.ejs │ │ │ │ │ │ │ │ │ │ ├── gallery.ejs │ │ │ │ │ │ │ │ │ │ ├── nav.ejs │ │ │ │ │ │ │ │ │ │ ├── tag.ejs │ │ │ │ │ │ │ │ │ │ └── title.ejs │ │ │ │ │ │ │ │ │ └── sidebar.ejs │ │ │ │ │ │ │ │ ├── _widget/ │ │ │ │ │ │ │ │ │ ├── archive.ejs │ │ │ │ │ │ │ │ │ ├── category.ejs │ │ │ │ │ │ │ │ │ ├── recent_posts.ejs │ │ │ │ │ │ │ │ │ ├── tag.ejs │ │ │ │ │ │ │ │ │ └── tagcloud.ejs │ │ │ │ │ │ │ │ ├── archive.ejs │ │ │ │ │ │ │ │ ├── category.ejs │ │ │ │ │ │ │ │ ├── index.ejs │ │ │ │ │ │ │ │ ├── layout.ejs │ │ │ │ │ │ │ │ ├── page.ejs │ │ │ │ │ │ │ │ ├── post.ejs │ │ │ │ │ │ │ │ └── tag.ejs │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ ├── scripts/ │ │ │ │ │ │ │ │ └── fancybox.js │ │ │ │ │ │ │ └── source/ │ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ │ ├── _extend.styl │ │ │ │ │ │ │ │ ├── _partial/ │ │ │ │ │ │ │ │ │ ├── archive.styl │ │ │ │ │ │ │ │ │ ├── article.styl │ │ │ │ │ │ │ │ │ ├── comment.styl │ │ │ │ │ │ │ │ │ ├── footer.styl │ │ │ │ │ │ │ │ │ ├── header.styl │ │ │ │ │ │ │ │ │ ├── highlight.styl │ │ │ │ │ │ │ │ │ ├── mobile.styl │ │ │ │ │ │ │ │ │ ├── sidebar-aside.styl │ │ │ │ │ │ │ │ │ ├── sidebar-bottom.styl │ │ │ │ │ │ │ │ │ └── sidebar.styl │ │ │ │ │ │ │ │ ├── _util/ │ │ │ │ │ │ │ │ │ ├── grid.styl │ │ │ │ │ │ │ │ │ └── mixin.styl │ │ │ │ │ │ │ │ ├── _variables.styl │ │ │ │ │ │ │ │ ├── fonts/ │ │ │ │ │ │ │ │ │ └── FontAwesome.otf │ │ │ │ │ │ │ │ └── style.styl │ │ │ │ │ │ │ ├── fancybox/ │ │ │ │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ │ │ │ ├── jquery.fancybox-buttons.css │ │ │ │ │ │ │ │ │ ├── jquery.fancybox-buttons.js │ │ │ │ │ │ │ │ │ ├── jquery.fancybox-media.js │ │ │ │ │ │ │ │ │ ├── jquery.fancybox-thumbs.css │ │ │ │ │ │ │ │ │ └── jquery.fancybox-thumbs.js │ │ │ │ │ │ │ │ ├── jquery.fancybox.css │ │ │ │ │ │ │ │ ├── jquery.fancybox.js │ │ │ │ │ │ │ │ └── jquery.fancybox.pack.js │ │ │ │ │ │ │ └── js/ │ │ │ │ │ │ │ └── script.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── 08-hugo/ │ │ │ │ │ │ ├── LICENSE │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── archetypes/ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ ├── config.toml │ │ │ │ │ │ ├── content/ │ │ │ │ │ │ │ └── posts/ │ │ │ │ │ │ │ └── my-first-post.md │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── themes/ │ │ │ │ │ │ │ └── ananke/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── CHANGELOG.md │ │ │ │ │ │ │ ├── LICENSE.md │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── archetypes/ │ │ │ │ │ │ │ │ └── default.md │ │ │ │ │ │ │ ├── data/ │ │ │ │ │ │ │ │ └── webpack_assets.json │ │ │ │ │ │ │ ├── exampleSite/ │ │ │ │ │ │ │ │ ├── config.toml │ │ │ │ │ │ │ │ └── content/ │ │ │ │ │ │ │ │ ├── _index.md │ │ │ │ │ │ │ │ ├── about/ │ │ │ │ │ │ │ │ │ └── _index.md │ │ │ │ │ │ │ │ ├── contact.md │ │ │ │ │ │ │ │ └── post/ │ │ │ │ │ │ │ │ ├── _index.md │ │ │ │ │ │ │ │ ├── chapter-1.md │ │ │ │ │ │ │ │ ├── chapter-2.md │ │ │ │ │ │ │ │ ├── chapter-3.md │ │ │ │ │ │ │ │ ├── chapter-4.md │ │ │ │ │ │ │ │ ├── chapter-5.md │ │ │ │ │ │ │ │ └── chapter-6.md │ │ │ │ │ │ │ ├── i18n/ │ │ │ │ │ │ │ │ ├── de.toml │ │ │ │ │ │ │ │ ├── en.toml │ │ │ │ │ │ │ │ ├── es.toml │ │ │ │ │ │ │ │ ├── fr.toml │ │ │ │ │ │ │ │ ├── nl.toml │ │ │ │ │ │ │ │ ├── pt.toml │ │ │ │ │ │ │ │ ├── ru.toml │ │ │ │ │ │ │ │ └── zh.toml │ │ │ │ │ │ │ ├── layouts/ │ │ │ │ │ │ │ │ ├── 404.html │ │ │ │ │ │ │ │ ├── _default/ │ │ │ │ │ │ │ │ │ ├── baseof.html │ │ │ │ │ │ │ │ │ ├── list.html │ │ │ │ │ │ │ │ │ ├── single.html │ │ │ │ │ │ │ │ │ ├── taxonomy.html │ │ │ │ │ │ │ │ │ └── terms.html │ │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ │ ├── page/ │ │ │ │ │ │ │ │ │ └── single.html │ │ │ │ │ │ │ │ ├── partials/ │ │ │ │ │ │ │ │ │ ├── commento.html │ │ │ │ │ │ │ │ │ ├── i18nlist.html │ │ │ │ │ │ │ │ │ ├── menu-contextual.html │ │ │ │ │ │ │ │ │ ├── new-window-icon.html │ │ │ │ │ │ │ │ │ ├── page-header.html │ │ │ │ │ │ │ │ │ ├── site-favicon.html │ │ │ │ │ │ │ │ │ ├── site-footer.html │ │ │ │ │ │ │ │ │ ├── site-header.html │ │ │ │ │ │ │ │ │ ├── site-navigation.html │ │ │ │ │ │ │ │ │ ├── site-scripts.html │ │ │ │ │ │ │ │ │ ├── social-follow.html │ │ │ │ │ │ │ │ │ ├── summary-with-image.html │ │ │ │ │ │ │ │ │ ├── summary.html │ │ │ │ │ │ │ │ │ └── tags.html │ │ │ │ │ │ │ │ ├── post/ │ │ │ │ │ │ │ │ │ ├── list.html │ │ │ │ │ │ │ │ │ ├── summary-with-image.html │ │ │ │ │ │ │ │ │ └── summary.html │ │ │ │ │ │ │ │ ├── robots.txt │ │ │ │ │ │ │ │ └── shortcodes/ │ │ │ │ │ │ │ │ └── form-contact.html │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ │ │ ├── _code.css │ │ │ │ │ │ │ │ │ ├── _hugo-internal-templates.css │ │ │ │ │ │ │ │ │ ├── _social-icons.css │ │ │ │ │ │ │ │ │ ├── _styles.css │ │ │ │ │ │ │ │ │ ├── _tachyons.css │ │ │ │ │ │ │ │ │ ├── main.css │ │ │ │ │ │ │ │ │ └── postcss.config.js │ │ │ │ │ │ │ │ ├── js/ │ │ │ │ │ │ │ │ │ └── main.js │ │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ │ ├── readme.md │ │ │ │ │ │ │ │ └── webpack.config.js │ │ │ │ │ │ │ └── theme.toml │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── 10-nextjs-node/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── date.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ ├── 404.js │ │ │ │ │ │ │ ├── contact.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── 10a-nextjs-routes/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── hello.js │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── 12-polymer-node/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── date.js │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── manifest.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── polymer.json │ │ │ │ │ │ ├── service-worker.js │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── my-app.js │ │ │ │ │ │ │ ├── my-icons.js │ │ │ │ │ │ │ ├── my-view1.js │ │ │ │ │ │ │ ├── my-view2.js │ │ │ │ │ │ │ ├── my-view3.js │ │ │ │ │ │ │ ├── my-view404.js │ │ │ │ │ │ │ └── shared-styles.js │ │ │ │ │ │ ├── sw-precache-config.js │ │ │ │ │ │ └── test/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── my-view1.html │ │ │ │ │ ├── 13-preact-node/ │ │ │ │ │ │ ├── .babelrc │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── date.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── manifest.json │ │ │ │ │ │ ├── routes/ │ │ │ │ │ │ │ └── home/ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ └── style/ │ │ │ │ │ │ └── index.css │ │ │ │ │ ├── 14-svelte-node/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── date.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── rollup.config.js │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── App.svelte │ │ │ │ │ │ └── main.js │ │ │ │ │ ├── 16-vue-node/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── date.js │ │ │ │ │ │ ├── babel.config.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── App.vue │ │ │ │ │ │ └── main.js │ │ │ │ │ ├── 17-vuepress-node/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── date.js │ │ │ │ │ │ ├── babel.config.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── App.vue │ │ │ │ │ │ └── main.js │ │ │ │ │ ├── 18-marko/ │ │ │ │ │ │ ├── .editorconfig │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── .prettierignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── project.js │ │ │ │ │ │ ├── server.js │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── click-count/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── site-layout/ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── routes/ │ │ │ │ │ │ ├── hello/ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ └── stop-watch/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── route.js │ │ │ │ │ │ └── layouts/ │ │ │ │ │ │ └── index.marko │ │ │ │ │ ├── 19-mithril/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── src/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── 20-riot/ │ │ │ │ │ │ ├── .babelrc │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── logs.riot │ │ │ │ │ │ │ ├── main.js │ │ │ │ │ │ │ └── random.riot │ │ │ │ │ │ └── webpack.config.js │ │ │ │ │ ├── 22-brunch/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── assets/ │ │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── initialize.js │ │ │ │ │ │ │ └── styles.css │ │ │ │ │ │ ├── brunch-config.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── 23-docusaurus/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── blog/ │ │ │ │ │ │ │ ├── 2019-05-28-hola.md │ │ │ │ │ │ │ ├── 2019-05-29-hello-world.md │ │ │ │ │ │ │ └── 2019-05-30-welcome.md │ │ │ │ │ │ ├── docs/ │ │ │ │ │ │ │ ├── doc1.md │ │ │ │ │ │ │ ├── doc2.md │ │ │ │ │ │ │ ├── doc3.md │ │ │ │ │ │ │ └── mdx.md │ │ │ │ │ │ ├── docusaurus.config.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── sidebars.js │ │ │ │ │ │ └── src/ │ │ │ │ │ │ ├── css/ │ │ │ │ │ │ │ └── custom.css │ │ │ │ │ │ └── pages/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── styles.module.css │ │ │ │ │ ├── 24-ember/ │ │ │ │ │ │ ├── .editorconfig │ │ │ │ │ │ ├── .ember-cli │ │ │ │ │ │ ├── .eslintignore │ │ │ │ │ │ ├── .eslintrc.js │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .template-lintrc.js │ │ │ │ │ │ ├── .travis.yml │ │ │ │ │ │ ├── .watchmanconfig │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ ├── app.js │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ │ ├── controllers/ │ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ ├── models/ │ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ │ ├── resolver.js │ │ │ │ │ │ │ ├── router.js │ │ │ │ │ │ │ ├── routes/ │ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ │ ├── styles/ │ │ │ │ │ │ │ │ └── app.css │ │ │ │ │ │ │ └── templates/ │ │ │ │ │ │ │ ├── application.hbs │ │ │ │ │ │ │ └── components/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ ├── config/ │ │ │ │ │ │ │ ├── environment.js │ │ │ │ │ │ │ ├── optional-features.json │ │ │ │ │ │ │ └── targets.js │ │ │ │ │ │ ├── ember-cli-build.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── testem.js │ │ │ │ │ │ ├── tests/ │ │ │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ ├── integration/ │ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ │ ├── test-helper.js │ │ │ │ │ │ │ └── unit/ │ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ │ └── vendor/ │ │ │ │ │ │ └── .gitkeep │ │ │ │ │ ├── 25-nextjs-src-dir/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── src/ │ │ │ │ │ │ └── pages/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── 27-zero-config-env/ │ │ │ │ │ │ ├── .nowignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── print.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── 28-vercel-json-and-ignore/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .vercelignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── one.js │ │ │ │ │ │ │ └── two.js │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── 30-next-image-optimization/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── public/ │ │ │ │ │ │ └── test.tiff │ │ │ │ │ ├── 40-mixed-modules/ │ │ │ │ │ │ ├── entrypoint.js │ │ │ │ │ │ ├── entrypoint.mjs │ │ │ │ │ │ ├── entrypoint.ts │ │ │ │ │ │ ├── js/ │ │ │ │ │ │ │ ├── commonjs-module.js │ │ │ │ │ │ │ ├── ecmascript-module.js │ │ │ │ │ │ │ ├── em-jay-ess.mjs │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── ts/ │ │ │ │ │ │ │ ├── commonjs-module.ts │ │ │ │ │ │ │ ├── ecmascript-module.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── type-module-package-json/ │ │ │ │ │ │ │ ├── auto.js │ │ │ │ │ │ │ ├── nested/ │ │ │ │ │ │ │ │ └── also.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── 41-tsconfig-jsx/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── test.ts │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ ├── App.module.css │ │ │ │ │ │ │ ├── App.tsx │ │ │ │ │ │ │ ├── index.css │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── vite.config.ts │ │ │ │ │ ├── 42-dynamic-esm-ext/ │ │ │ │ │ │ └── api/ │ │ │ │ │ │ ├── cjs/ │ │ │ │ │ │ │ └── [id].js │ │ │ │ │ │ └── esm/ │ │ │ │ │ │ └── [id].mjs │ │ │ │ │ ├── 43-compress-encoding/ │ │ │ │ │ │ └── api/ │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── api-with-public/ │ │ │ │ │ │ └── api/ │ │ │ │ │ │ └── [endpoint].js │ │ │ │ │ ├── api-with-static/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── [endpoint].js │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── custom-404/ │ │ │ │ │ │ ├── error.html │ │ │ │ │ │ ├── error.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── dev-server-and-routes/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── [endpoint]/ │ │ │ │ │ │ │ │ └── [id].js │ │ │ │ │ │ │ ├── [endpoint].js │ │ │ │ │ │ │ └── welcome.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── dev-server-query/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── directory-listing/ │ │ │ │ │ │ ├── file.txt │ │ │ │ │ │ ├── lambda.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── edge-function/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── edge-500-response.js │ │ │ │ │ │ │ ├── edge-import-browser.js │ │ │ │ │ │ │ ├── edge-success.js │ │ │ │ │ │ │ └── webassembly.js │ │ │ │ │ │ ├── increment.wasm │ │ │ │ │ │ ├── lib/ │ │ │ │ │ │ │ └── upper.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── vendor/ │ │ │ │ │ │ └── generate-uuid/ │ │ │ │ │ │ ├── index-browser.js │ │ │ │ │ │ ├── index-node.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── edge-function-error/ │ │ │ │ │ │ └── api/ │ │ │ │ │ │ ├── edge-error-config.js │ │ │ │ │ │ ├── edge-error-no-handler.js │ │ │ │ │ │ ├── edge-error-runtime.js │ │ │ │ │ │ ├── edge-error-startup.js │ │ │ │ │ │ ├── edge-error-syntax.js │ │ │ │ │ │ ├── edge-error-unknown-import.js │ │ │ │ │ │ └── edge-no-response.js │ │ │ │ │ ├── empty/ │ │ │ │ │ │ └── .gitignore │ │ │ │ │ ├── esm-js-edge-module/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── data.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── esm-js-edge-no-module/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── data.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── esm-js-nodejs-module/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── data.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── esm-js-nodejs-no-module/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── data.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── esm-ts-edge-module/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── data.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── esm-ts-edge-no-module/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── data.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── esm-ts-nodejs-module/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── data.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── esm-ts-nodejs-no-module/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── data.ts │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── express-no-export/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ └── test.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── force-module-commonjs/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── ts.ts │ │ │ │ │ │ ├── next-env.d.ts │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── go/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── [segement].go │ │ │ │ │ │ │ ├── another.go │ │ │ │ │ │ │ └── index.go │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── go-external-module/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── go.mod │ │ │ │ │ │ │ ├── go.sum │ │ │ │ │ │ │ └── index.go │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── go-work-with-shared/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── go.mod │ │ │ │ │ │ │ └── index.go │ │ │ │ │ │ ├── go.work │ │ │ │ │ │ ├── mylib/ │ │ │ │ │ │ │ ├── go.mod │ │ │ │ │ │ │ └── main.go │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── handle-filesystem-missing/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── handle-hit-after-dest/ │ │ │ │ │ │ ├── blog/ │ │ │ │ │ │ │ └── post.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── handle-hit-after-fs/ │ │ │ │ │ │ ├── blog.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── handle-hit-after-rewrite/ │ │ │ │ │ │ ├── blog/ │ │ │ │ │ │ │ └── post.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── handle-miss-after-rewrite/ │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ └── blog/ │ │ │ │ │ │ │ └── post.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── handle-miss-after-route/ │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ └── blog/ │ │ │ │ │ │ │ └── post.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── handle-miss-hide-dir-list/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ └── blog/ │ │ │ │ │ │ │ └── post/ │ │ │ │ │ │ │ └── one.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── handle-miss-querystring/ │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ └── echo.js │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── headers/ │ │ │ │ │ │ ├── foo.txt │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── hono-no-export/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ └── test.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── invalid-builder-routes/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── invalid-builds/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── invalid-clean-urls/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── invalid-env-var-name/ │ │ │ │ │ │ ├── index.txt │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── invalid-headers/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── invalid-mixed-routes-rewrites/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── invalid-redirects/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── invalid-rewrites/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── invalid-routes/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── invalid-trailing-slash/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── invalidate-vercel-config/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── middleware-500-response/ │ │ │ │ │ │ └── middleware.js │ │ │ │ │ ├── middleware-error-at-init/ │ │ │ │ │ │ └── middleware.js │ │ │ │ │ ├── middleware-error-in-handler/ │ │ │ │ │ │ └── middleware.js │ │ │ │ │ ├── middleware-matchers/ │ │ │ │ │ │ └── middleware.js │ │ │ │ │ ├── middleware-matchers-invalid/ │ │ │ │ │ │ └── middleware.js │ │ │ │ │ ├── middleware-no-response/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── hello.js │ │ │ │ │ │ └── middleware.js │ │ │ │ │ ├── middleware-redirect/ │ │ │ │ │ │ └── middleware.js │ │ │ │ │ ├── middleware-request-headers-override/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── dump-headers.js │ │ │ │ │ │ └── middleware.js │ │ │ │ │ ├── middleware-response/ │ │ │ │ │ │ └── middleware.js │ │ │ │ │ ├── middleware-rewrite/ │ │ │ │ │ │ ├── another.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── middleware.js │ │ │ │ │ ├── middleware-rewrite-404/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── edge.ts │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── middleware.ts │ │ │ │ │ ├── middleware-rewrite-query/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── fn.js │ │ │ │ │ │ └── middleware.js │ │ │ │ │ ├── missing-src-property/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── index.txt │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── nested-tsconfig/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── index.ts │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── next-env.d.ts │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── no-api/ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── no-build-matches/ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── node-helpers/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── node-query-invoke/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── node-request-body/ │ │ │ │ │ │ └── api/ │ │ │ │ │ │ ├── data-events.js │ │ │ │ │ │ └── req-body.js │ │ │ │ │ ├── node-ts-node-target/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── array.js │ │ │ │ │ │ │ ├── dump.js │ │ │ │ │ │ │ └── subclass.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ ├── output-is-source/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── package.json │ │ │ │ │ ├── project-settings-override/ │ │ │ │ │ │ ├── original/ │ │ │ │ │ │ │ └── index.txt │ │ │ │ │ │ ├── overridden/ │ │ │ │ │ │ │ └── index.txt │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── public-and-api/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── date.js │ │ │ │ │ │ │ └── rand.js │ │ │ │ │ │ └── public/ │ │ │ │ │ │ ├── .well-known/ │ │ │ │ │ │ │ └── humans.txt │ │ │ │ │ │ ├── 404.html │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── python-fastapi/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── endpoints/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ └── users.py │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── requirements.txt │ │ │ │ │ │ └── server.py │ │ │ │ │ ├── python-flask/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── endpoints/ │ │ │ │ │ │ │ ├── __init__.py │ │ │ │ │ │ │ └── users.py │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── requirements.txt │ │ │ │ │ │ └── server.py │ │ │ │ │ ├── query-proxy/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── routes-check-true/ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ └── blog │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── routes-check-true-status/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── post.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── routes-custom-404/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── hello.js │ │ │ │ │ │ ├── exact-404.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── user-404.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── runtime-not-installed/ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── serverless-function/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── services-cron/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── cron/ │ │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ │ └── task.py │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── services-explicit-config/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── service-fastapi/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ │ └── server.py │ │ │ │ │ │ ├── service-flask/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ │ └── server.py │ │ │ │ │ │ ├── service-next/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── pages/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── services-worker/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── vercel.json │ │ │ │ │ │ ├── web/ │ │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ │ └── server.py │ │ │ │ │ │ ├── worker/ │ │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ │ └── worker.py │ │ │ │ │ │ └── worker-wildcard/ │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ └── worker.py │ │ │ │ │ ├── services-zc-apps-services/ │ │ │ │ │ │ ├── apps/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ └── web/ │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── services/ │ │ │ │ │ │ ├── service-fastapi/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ │ └── server.py │ │ │ │ │ │ └── service-flask/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ └── server.py │ │ │ │ │ ├── services-zc-frontend-backend/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── backend/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ │ └── server.py │ │ │ │ │ │ └── frontend/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── services-zc-frontend-services/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── frontend/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── services/ │ │ │ │ │ │ ├── service-fastapi/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ │ └── server.py │ │ │ │ │ │ └── service-flask/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ └── server.py │ │ │ │ │ ├── services-zc-root-backend/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── backend/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ │ └── server.py │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── services-zc-service-to-service/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── apps/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ └── web/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── services/ │ │ │ │ │ │ ├── service-a/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ │ └── server.py │ │ │ │ │ │ └── service-b/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── pyproject.toml │ │ │ │ │ │ └── server.py │ │ │ │ │ ├── static-build-routing/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── date.js │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── static-routes/ │ │ │ │ │ │ ├── vercel.json │ │ │ │ │ │ └── www/ │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── temporary-directory-listing/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ └── .nowignore │ │ │ │ │ ├── test-clean-urls/ │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ ├── sub/ │ │ │ │ │ │ │ ├── another.html │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-clean-urls-custom-404/ │ │ │ │ │ │ ├── 404.html │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ ├── contact/ │ │ │ │ │ │ │ └── me.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-clean-urls-trailing-slash/ │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ ├── sub/ │ │ │ │ │ │ │ ├── another.html │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-clean-urls-with-output-directory/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── public/ │ │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ │ ├── another.html │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-cors-routes/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── status.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-external-rewrites-and-redirects/ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-rewrites/ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-rewrites-with-segments/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ ├── [username].js │ │ │ │ │ │ │ ├── fourty-two.js │ │ │ │ │ │ │ └── users/ │ │ │ │ │ │ │ └── [id].js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-routing-case-sensitive/ │ │ │ │ │ │ ├── lower.html │ │ │ │ │ │ ├── upper.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-trailing-slash/ │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ ├── sub/ │ │ │ │ │ │ │ ├── another.html │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-trailing-slash-custom-404/ │ │ │ │ │ │ ├── 404.html │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ ├── contact/ │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-trailing-slash-false/ │ │ │ │ │ │ ├── about.html │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ ├── style.css │ │ │ │ │ │ ├── sub/ │ │ │ │ │ │ │ ├── another.html │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── test-zero-config-rewrite/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── echo/ │ │ │ │ │ │ │ └── [id].js │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── trigger-static-build/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ └── index.txt │ │ │ │ │ ├── vercel-ts-test/ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── test.ts │ │ │ │ │ │ ├── backend/ │ │ │ │ │ │ │ └── app.ts │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── yarn.lock │ │ │ │ │ └── vite-dev/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src/ │ │ │ │ │ │ ├── App.vue │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── HelloWorld.vue │ │ │ │ │ │ └── main.js │ │ │ │ │ ├── vercel.json │ │ │ │ │ └── vite.config.js │ │ │ │ ├── integration-1.test.ts │ │ │ │ ├── integration-2.test.ts │ │ │ │ ├── integration-3.test.ts │ │ │ │ ├── integration-4.test.ts │ │ │ │ ├── integration-5.test.ts │ │ │ │ └── utils.ts │ │ │ ├── fixtures/ │ │ │ │ ├── e2e/ │ │ │ │ │ ├── cli-extension/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── cli-extension-exit-code/ │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── cli-extension-fail/ │ │ │ │ │ │ ├── bin.js │ │ │ │ │ │ └── package.json │ │ │ │ │ └── cli-extension-whoami/ │ │ │ │ │ ├── bin.js │ │ │ │ │ └── package.json │ │ │ │ ├── package.json │ │ │ │ └── unit/ │ │ │ │ ├── .gitignore │ │ │ │ ├── build-output-api-failed-before-builds/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ └── .vercel/ │ │ │ │ │ ├── output/ │ │ │ │ │ │ └── builds.json │ │ │ │ │ └── project.json │ │ │ │ ├── build-output-api-failed-within-build/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ └── .vercel/ │ │ │ │ │ ├── output/ │ │ │ │ │ │ └── builds.json │ │ │ │ │ └── project.json │ │ │ │ ├── build-output-api-preview/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ └── .vercel/ │ │ │ │ │ ├── output/ │ │ │ │ │ │ └── builds.json │ │ │ │ │ └── project.json │ │ │ │ ├── build-output-api-production/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ └── .vercel/ │ │ │ │ │ ├── output/ │ │ │ │ │ │ └── builds.json │ │ │ │ │ └── project.json │ │ │ │ ├── commands/ │ │ │ │ │ ├── build/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── build-output-api-with-api-dir/ │ │ │ │ │ │ │ ├── .gitiignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ ├── build.mjs │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── discontinued-nodejs12.x/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── index.php │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── edge-function/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ ├── builders/ │ │ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ │ │ └── node_modules/ │ │ │ │ │ │ │ │ │ └── edge-function/ │ │ │ │ │ │ │ │ │ ├── builder.js │ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── edge.js │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── env-from-vc-pull/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ ├── .env.preview.local │ │ │ │ │ │ │ │ ├── .env.production.local │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── env.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── env-root-level/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── env.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── error-vercel-json-validation/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── express-with-routes-json/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ ├── project.json │ │ │ │ │ │ │ │ └── routes.json │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── functions-symlink/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ ├── builders/ │ │ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ │ │ └── node_modules/ │ │ │ │ │ │ │ │ │ └── functions-symlink/ │ │ │ │ │ │ │ │ │ ├── main.js │ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── images/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── import-from-main-keys/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ ├── prefer-browser.js │ │ │ │ │ │ │ │ ├── prefer-main.js │ │ │ │ │ │ │ │ ├── prefer-module.js │ │ │ │ │ │ │ │ ├── use-browser.js │ │ │ │ │ │ │ │ ├── use-classic.js │ │ │ │ │ │ │ │ ├── use-main.js │ │ │ │ │ │ │ │ └── use-module.js │ │ │ │ │ │ │ └── packages/ │ │ │ │ │ │ │ ├── only-browser/ │ │ │ │ │ │ │ │ ├── dist-browser.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── only-classic/ │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── only-main/ │ │ │ │ │ │ │ │ ├── dist-main.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── only-module/ │ │ │ │ │ │ │ │ ├── dist-module.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── prefer-browser/ │ │ │ │ │ │ │ │ ├── dist-browser.js │ │ │ │ │ │ │ │ ├── dist-main.js │ │ │ │ │ │ │ │ ├── dist-module.js │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ ├── prefer-main/ │ │ │ │ │ │ │ │ ├── dist-main.js │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ └── prefer-module/ │ │ │ │ │ │ │ ├── dist-main.js │ │ │ │ │ │ │ ├── dist-module.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── invalid-rewrites/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── lambda-with-128-memory/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── memory.js │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── local-config/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── main.html │ │ │ │ │ │ │ ├── test.html │ │ │ │ │ │ │ ├── vercel-test.json │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── middleware/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── middleware.js │ │ │ │ │ │ ├── middleware-root-directory/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── sub/ │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── middleware.js │ │ │ │ │ │ ├── middleware-with-matcher/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── middleware.js │ │ │ │ │ │ ├── minimal-nextjs/ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── monorepo/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── apps/ │ │ │ │ │ │ │ │ └── nextjs/ │ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ │ ├── next.config.js │ │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ │ └── pages/ │ │ │ │ │ │ │ │ └── index.jsx │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── multi-build-output-config/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ ├── builders/ │ │ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ │ │ └── node_modules/ │ │ │ │ │ │ │ │ │ └── boa-builder/ │ │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── first.txt │ │ │ │ │ │ │ ├── second.txt │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── nextjs-with-speed-insights-package/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── next.config.js │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── nextjs-without-speed-insights-package/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── next.config.js │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── node/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── api/ │ │ │ │ │ │ │ ├── es6.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── mjs.mjs │ │ │ │ │ │ │ └── typescript.ts │ │ │ │ │ │ ├── node-error/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── api/ │ │ │ │ │ │ │ ├── es6.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── mjs.mjs │ │ │ │ │ │ │ └── typescript.ts │ │ │ │ │ │ ├── normalize-src/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── server.js │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── now-node-server/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── server.js │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── now-static/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── readme.md │ │ │ │ │ │ │ ├── vercel.json │ │ │ │ │ │ │ └── www/ │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── npmrc-use-node-version/ │ │ │ │ │ │ │ └── .npmrc │ │ │ │ │ │ ├── project-settings-env-vars/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── build.cjs │ │ │ │ │ │ ├── project-settings-override/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── static/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── static-env/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── static-pull/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── static-symlink/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── static-with-ignore/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── .vercelignore │ │ │ │ │ │ │ ├── build.js │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── public/ │ │ │ │ │ │ │ ├── build.log │ │ │ │ │ │ │ ├── foo.html │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── temp/ │ │ │ │ │ │ │ └── cache.tmp │ │ │ │ │ │ ├── static-with-pkg/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── storybook-with-middleware/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .storybook/ │ │ │ │ │ │ │ │ ├── main.ts │ │ │ │ │ │ │ │ └── preview.ts │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ │ │ └── route.ts │ │ │ │ │ │ │ │ ├── globals.css │ │ │ │ │ │ │ │ ├── layout.tsx │ │ │ │ │ │ │ │ ├── page.module.css │ │ │ │ │ │ │ │ └── page.tsx │ │ │ │ │ │ │ ├── middleware.ts │ │ │ │ │ │ │ ├── next.config.js │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ ├── stories/ │ │ │ │ │ │ │ │ ├── Button.stories.ts │ │ │ │ │ │ │ │ ├── Button.tsx │ │ │ │ │ │ │ │ ├── Header.stories.ts │ │ │ │ │ │ │ │ ├── Header.tsx │ │ │ │ │ │ │ │ ├── Introduction.mdx │ │ │ │ │ │ │ │ ├── Page.stories.ts │ │ │ │ │ │ │ │ ├── Page.tsx │ │ │ │ │ │ │ │ ├── button.css │ │ │ │ │ │ │ │ ├── header.css │ │ │ │ │ │ │ │ └── page.css │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ ├── third-party-builder/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ ├── builders/ │ │ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ │ │ └── node_modules/ │ │ │ │ │ │ │ │ │ └── txt-builder/ │ │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── foo.txt │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── turborepo-hono-monorepo/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── apps/ │ │ │ │ │ │ │ │ └── api/ │ │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ ├── packages/ │ │ │ │ │ │ │ │ └── echo/ │ │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ │ ├── src/ │ │ │ │ │ │ │ │ │ └── index.ts │ │ │ │ │ │ │ │ └── tsconfig.json │ │ │ │ │ │ │ ├── pnpm-workspace.yaml │ │ │ │ │ │ │ └── turbo.json │ │ │ │ │ │ ├── vercel-analytics-id/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── env.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── versionless-builder/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ ├── builders/ │ │ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ │ │ └── node_modules/ │ │ │ │ │ │ │ │ │ └── versionless-builder/ │ │ │ │ │ │ │ │ │ ├── main.js │ │ │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── with-cron/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── cron-job.js │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── with-cron-merge/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── cron-job.js │ │ │ │ │ │ │ ├── build.js │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ ├── output/ │ │ │ │ │ │ │ │ └── config.json │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── with-flags/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── build.js │ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ │ ├── flags.json │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── with-invalid-opentelemetry-api/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── index.mjs │ │ │ │ │ │ │ ├── env.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── with-invalid-opentelemetry-sdk/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── index.mjs │ │ │ │ │ │ │ ├── env.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── with-invalid-vercel-otel/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── index.mjs │ │ │ │ │ │ │ ├── env.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── with-services-cron/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── with-services-shared-source/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── vercel.json │ │ │ │ │ │ │ └── worker.js │ │ │ │ │ │ ├── with-valid-opentelemetry-api/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── index.mjs │ │ │ │ │ │ │ ├── env.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── with-valid-opentelemetry-sdk/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── index.mjs │ │ │ │ │ │ │ ├── env.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ └── with-valid-vercel-otel/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ └── index.mjs │ │ │ │ │ │ ├── env.js │ │ │ │ │ │ └── package.json │ │ │ │ │ ├── deploy/ │ │ │ │ │ │ ├── legacy-builds/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ ├── monorepo-static/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── repo.json │ │ │ │ │ │ │ └── app/ │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── node/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ ├── es6.js │ │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ │ ├── mjs.mjs │ │ │ │ │ │ │ │ └── typescript.ts │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── node-low-starting-range/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── node-low-version/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── api/ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── package.json │ │ │ │ │ │ ├── static/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── style.css │ │ │ │ │ │ ├── static-with-build-output/ │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ ├── output/ │ │ │ │ │ │ │ │ │ ├── builds.json │ │ │ │ │ │ │ │ │ ├── config.json │ │ │ │ │ │ │ │ │ ├── provision.json │ │ │ │ │ │ │ │ │ └── static/ │ │ │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── unlinked/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── env/ │ │ │ │ │ │ ├── vercel-env-ls/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── vercel.json │ │ │ │ │ │ └── vercel-env-rm/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── flags/ │ │ │ │ │ │ └── vercel-flags-test/ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── git/ │ │ │ │ │ │ └── connect/ │ │ │ │ │ │ ├── bad-remote-url/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── git/ │ │ │ │ │ │ │ └── config │ │ │ │ │ │ ├── existing-connection/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── git/ │ │ │ │ │ │ │ ├── HEAD │ │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ └── description │ │ │ │ │ │ ├── invalid-repo/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── git/ │ │ │ │ │ │ │ └── config │ │ │ │ │ │ ├── multiple-remotes/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── git/ │ │ │ │ │ │ │ ├── HEAD │ │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ └── description │ │ │ │ │ │ ├── new-connection/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── git/ │ │ │ │ │ │ │ └── config │ │ │ │ │ │ ├── no-git-config/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ └── .vercel/ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ ├── no-remote-url/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── git/ │ │ │ │ │ │ │ └── config │ │ │ │ │ │ ├── same-repo-connection/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ │ └── git/ │ │ │ │ │ │ │ └── config │ │ │ │ │ │ └── unlinked/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ └── git/ │ │ │ │ │ │ ├── HEAD │ │ │ │ │ │ ├── config │ │ │ │ │ │ └── description │ │ │ │ │ ├── integration/ │ │ │ │ │ │ ├── disconnect/ │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ └── .vercel/ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ └── list/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ └── .vercel/ │ │ │ │ │ │ └── project.json │ │ │ │ │ ├── list/ │ │ │ │ │ │ └── with-team/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ └── .vercel/ │ │ │ │ │ │ └── project.json │ │ │ │ │ ├── logs/ │ │ │ │ │ │ └── linked-project/ │ │ │ │ │ │ └── .vercel/ │ │ │ │ │ │ └── project.json │ │ │ │ │ ├── metrics/ │ │ │ │ │ │ └── linked-project/ │ │ │ │ │ │ └── .vercel/ │ │ │ │ │ │ └── project.json │ │ │ │ │ ├── promote/ │ │ │ │ │ │ └── simple-next-site/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ ├── redeploy/ │ │ │ │ │ │ └── simple-static/ │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── redirects/ │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── sample.csv │ │ │ │ │ │ └── sample.json │ │ │ │ │ ├── rollback/ │ │ │ │ │ │ └── simple-next-site/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ └── vercel.json │ │ │ │ │ └── routes/ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ └── project.json │ │ │ │ │ └── package.json │ │ │ │ ├── create-git-meta/ │ │ │ │ │ ├── connected-repo/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── .vercel/ │ │ │ │ │ │ │ └── project.json │ │ │ │ │ │ ├── git/ │ │ │ │ │ │ │ ├── COMMIT_EDITMSG │ │ │ │ │ │ │ ├── HEAD │ │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── description │ │ │ │ │ │ │ ├── objects/ │ │ │ │ │ │ │ │ ├── 45/ │ │ │ │ │ │ │ │ │ └── b983be36b73c0788dc9cbcb76cbb80fc7bb057 │ │ │ │ │ │ │ │ ├── 80/ │ │ │ │ │ │ │ │ │ └── 50816205303e5957b2909083c50677930d5b29 │ │ │ │ │ │ │ │ └── b2/ │ │ │ │ │ │ │ │ └── e4d98c09ed53967b0a8f67c293c04ca4173438 │ │ │ │ │ │ │ └── refs/ │ │ │ │ │ │ │ └── heads/ │ │ │ │ │ │ │ └── master │ │ │ │ │ │ └── index.txt │ │ │ │ │ ├── dirty/ │ │ │ │ │ │ ├── git/ │ │ │ │ │ │ │ ├── HEAD │ │ │ │ │ │ │ ├── config │ │ │ │ │ │ │ ├── description │ │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ │ ├── applypatch-msg.sample │ │ │ │ │ │ │ │ ├── commit-msg.sample │ │ │ │ │ │ │ │ ├── fsmonitor-watchman.sample │ │ │ │ │ │ │ │ ├── post-update.sample │ │ │ │ │ │ │ │ ├── pre-applypatch.sample │ │ │ │ │ │ │ │ ├── pre-commit.sample │ │ │ │ │ │ │ │ ├── pre-merge-commit.sample │ │ │ │ │ │ │ │ ├── pre-push.sample │ │ │ │ │ │ │ │ ├── pre-rebase.sample │ │ │ │ │ │ │ │ ├── pre-receive.sample │ │ │ │ │ │ │ │ ├── prepare-commit-msg.sample │ │ │ │ │ │ │ │ ├── push-to-checkout.sample │ │ │ │ │ │ │ │ └── update.sample │ │ │ │ │ │ │ └── info/ │ │ │ │ │ │ │ └── exclude │ │ │ │ │ │ └── uncommitted.txt │ │ │ │ │ ├── git-corrupt/ │ │ │ │ │ │ └── git/ │ │ │ │ │ │ └── config │ │ │ │ │ ├── multiple-remotes/ │ │ │ │ │ │ └── git/ │ │ │ │ │ │ ├── HEAD │ │ │ │ │ │ ├── config │ │ │ │ │ │ └── description │ │ │ │ │ ├── no-email/ │ │ │ │ │ │ └── git/ │ │ │ │ │ │ └── config │ │ │ │ │ ├── no-origin/ │ │ │ │ │ │ └── git/ │ │ │ │ │ │ ├── COMMIT_EDITMSG │ │ │ │ │ │ ├── HEAD │ │ │ │ │ │ ├── config │ │ │ │ │ │ ├── description │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ ├── applypatch-msg.sample │ │ │ │ │ │ │ ├── commit-msg.sample │ │ │ │ │ │ │ ├── fsmonitor-watchman.sample │ │ │ │ │ │ │ ├── post-update.sample │ │ │ │ │ │ │ ├── pre-applypatch.sample │ │ │ │ │ │ │ ├── pre-commit.sample │ │ │ │ │ │ │ ├── pre-merge-commit.sample │ │ │ │ │ │ │ ├── pre-push.sample │ │ │ │ │ │ │ ├── pre-rebase.sample │ │ │ │ │ │ │ ├── pre-receive.sample │ │ │ │ │ │ │ ├── prepare-commit-msg.sample │ │ │ │ │ │ │ ├── push-to-checkout.sample │ │ │ │ │ │ │ └── update.sample │ │ │ │ │ │ ├── index │ │ │ │ │ │ ├── info/ │ │ │ │ │ │ │ └── exclude │ │ │ │ │ │ ├── logs/ │ │ │ │ │ │ │ ├── HEAD │ │ │ │ │ │ │ └── refs/ │ │ │ │ │ │ │ └── heads/ │ │ │ │ │ │ │ └── master │ │ │ │ │ │ ├── objects/ │ │ │ │ │ │ │ ├── 04/ │ │ │ │ │ │ │ │ └── 99dbfa2f58cd8b3b3ce5b2c02a24200862ac97 │ │ │ │ │ │ │ └── 4b/ │ │ │ │ │ │ │ └── 825dc642cb6eb9a060e54bf8d69288fbee4904 │ │ │ │ │ │ └── refs/ │ │ │ │ │ │ └── heads/ │ │ │ │ │ │ └── master │ │ │ │ │ ├── not-dirty/ │ │ │ │ │ │ ├── committed.txt │ │ │ │ │ │ └── git/ │ │ │ │ │ │ ├── COMMIT_EDITMSG │ │ │ │ │ │ ├── HEAD │ │ │ │ │ │ ├── config │ │ │ │ │ │ ├── description │ │ │ │ │ │ ├── hooks/ │ │ │ │ │ │ │ ├── applypatch-msg.sample │ │ │ │ │ │ │ ├── commit-msg.sample │ │ │ │ │ │ │ ├── fsmonitor-watchman.sample │ │ │ │ │ │ │ ├── post-update.sample │ │ │ │ │ │ │ ├── pre-applypatch.sample │ │ │ │ │ │ │ ├── pre-commit.sample │ │ │ │ │ │ │ ├── pre-merge-commit.sample │ │ │ │ │ │ │ ├── pre-push.sample │ │ │ │ │ │ │ ├── pre-rebase.sample │ │ │ │ │ │ │ ├── pre-receive.sample │ │ │ │ │ │ │ ├── prepare-commit-msg.sample │ │ │ │ │ │ │ ├── push-to-checkout.sample │ │ │ │ │ │ │ └── update.sample │ │ │ │ │ │ ├── index │ │ │ │ │ │ ├── info/ │ │ │ │ │ │ │ └── exclude │ │ │ │ │ │ ├── logs/ │ │ │ │ │ │ │ ├── HEAD │ │ │ │ │ │ │ └── refs/ │ │ │ │ │ │ │ └── heads/ │ │ │ │ │ │ │ └── master │ │ │ │ │ │ ├── objects/ │ │ │ │ │ │ │ ├── 14/ │ │ │ │ │ │ │ │ └── 4ad307295b4476bb95684638d89245959ee6fd │ │ │ │ │ │ │ ├── 32/ │ │ │ │ │ │ │ │ └── f95c0d1244a78b2be1bab8de17906fabb2c4a8 │ │ │ │ │ │ │ ├── 4b/ │ │ │ │ │ │ │ │ └── 825dc642cb6eb9a060e54bf8d69288fbee4904 │ │ │ │ │ │ │ └── dc/ │ │ │ │ │ │ │ └── 8a813395dda63bc708dd6a1d1f68a30533460f │ │ │ │ │ │ └── refs/ │ │ │ │ │ │ └── heads/
Showing preview only (7,985K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (20158 symbols across 3417 files)
FILE: api/_lib/examples/example-list.ts
type Example (line 3) | interface Example {
function getExampleList (line 12) | async function getExampleList(): Promise<Example[]> {
FILE: api/_lib/examples/github-repo-info.ts
function getGitHubRepoInfo (line 9) | async function getGitHubRepoInfo(repo: Repo) {
FILE: api/_lib/examples/gitlab-repo-info.ts
type Repo (line 3) | interface Repo {
function getGitLabRepoInfo (line 16) | async function getGitLabRepoInfo(repo: Repo) {
FILE: api/_lib/examples/summary.ts
function summary (line 11) | function summary(source: string): string[] {
FILE: api/_lib/script/build.ts
function main (line 13) | async function main() {
FILE: api/_lib/types.ts
type Repo (line 1) | interface Repo {
FILE: api/_lib/util/assert-env.ts
function assertEnv (line 1) | function assertEnv(name: string) {
FILE: api/_lib/util/error-handler.ts
function initSentry (line 8) | function initSentry() {
function errorHandler (line 24) | function errorHandler(error: Error, extras?: { [key: string]: any }) {
FILE: api/_lib/util/with-api-handler.ts
type Handler (line 4) | type Handler = (req: VercelRequest, res: VercelResponse) => Promise<any>;
function withApiHandler (line 6) | function withApiHandler(handler: Handler): Handler {
FILE: api/frameworks.ts
function getFrameworks (line 5) | function getFrameworks(includeExperimental: boolean) {
FILE: crates/vercel_runtime/src/axum/mod.rs
type StreamingUtils (line 16) | pub struct StreamingUtils;
method is_streaming_response (line 20) | pub fn is_streaming_response(headers: &axum::http::HeaderMap) -> bool {
method create_stream_body (line 29) | pub async fn create_stream_body(body: Body) -> Result<ResponseBody, Er...
method process_response (line 56) | pub async fn process_response(
type StreamingLayer (line 83) | pub struct StreamingLayer;
method new (line 86) | pub fn new() -> Self {
type Service (line 98) | type Service = StreamingService<S>;
method layer (line 100) | fn layer(&self, inner: S) -> Self::Service {
method default (line 92) | fn default() -> Self {
type StreamingService (line 106) | pub struct StreamingService<S> {
type Response (line 117) | type Response = Response<ResponseBody>;
type Error (line 118) | type Error = Infallible;
type Future (line 119) | type Future = Pin<Box<dyn Future<Output = Result<Self::Response, Self::E...
function poll_ready (line 121) | fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::...
function call (line 125) | fn call(&mut self, req: axum::http::Request<Body>) -> Self::Future {
type VercelLayer (line 147) | pub struct VercelLayer;
method new (line 150) | pub fn new() -> Self {
type Service (line 162) | type Service = VercelService<S>;
method layer (line 164) | fn layer(&self, inner: S) -> Self::Service {
method default (line 156) | fn default() -> Self {
type VercelService (line 170) | pub struct VercelService<S> {
type Response (line 185) | type Response = hyper::Response<ResponseBody>;
type Error (line 186) | type Error = Error;
type Future (line 187) | type Future = Pin<Box<dyn Future<Output = Result<Self::Response, Self::E...
function poll_ready (line 189) | fn poll_ready(&mut self, cx: &mut Context<'_>) -> Poll<Result<(), Self::...
function call (line 197) | fn call(&mut self, (_state, req): (AppState, Request)) -> Self::Future {
function stream_response (line 226) | pub fn stream_response<F, Fut>(generator: F) -> impl IntoResponse
FILE: crates/vercel_runtime/src/ipc/core.rs
type RequestContext (line 4) | pub struct RequestContext {
type StartMessage (line 12) | pub struct StartMessage {
method new (line 27) | pub fn new(init_duration: u64, http_port: u16) -> Self {
type StartPayload (line 19) | pub struct StartPayload {
type EndMessage (line 39) | pub struct EndMessage {
method new (line 52) | pub fn new(invocation_id: String, request_id: u64, error: Option<serde...
type EndPayload (line 46) | pub struct EndPayload {
FILE: crates/vercel_runtime/src/ipc/log.rs
type Stream (line 7) | pub enum Stream {
type Level (line 14) | pub enum Level {
type LogType (line 24) | pub enum LogType {
type LogPayload (line 30) | pub struct LogPayload {
type LogMessage (line 38) | pub struct LogMessage {
method stream (line 45) | pub fn stream(invocation_id: String, request_id: u64, message: String,...
method level (line 59) | pub fn level(invocation_id: String, request_id: u64, message: String, ...
method encode_message (line 73) | pub fn encode_message(message: &str) -> String {
method with_stream (line 79) | pub fn with_stream(
method with_level (line 93) | pub fn with_level(invocation_id: String, request_id: u64, message: &st...
FILE: crates/vercel_runtime/src/ipc/metric.rs
type MetricMessage (line 6) | pub struct MetricMessage {
method new (line 22) | pub fn new(
type MetricPayload (line 13) | pub struct MetricPayload {
FILE: crates/vercel_runtime/src/ipc_utils.rs
function register_exit_handler (line 24) | fn register_exit_handler() {
function send_message (line 33) | pub fn send_message<T: Serialize>(stream: &Arc<Mutex<UnixStream>>, messa...
function enqueue_or_send_message (line 49) | pub fn enqueue_or_send_message<T: Serialize>(
function flush_init_log_buffer (line 84) | pub fn flush_init_log_buffer(stream: &Option<Arc<Mutex<UnixStream>>>) {
function flush_init_log_buf_to_stderr (line 102) | pub fn flush_init_log_buf_to_stderr() {
FILE: crates/vercel_runtime/src/lib.rs
type Request (line 14) | pub type Request = hyper::Request<hyper::body::Incoming>;
type LogContext (line 40) | pub struct LogContext {
method new (line 48) | pub fn new(
method info (line 60) | pub fn info(&self, msg: &str) {
method error (line 64) | pub fn error(&self, msg: &str) {
method warn (line 68) | pub fn warn(&self, msg: &str) {
method debug (line 72) | pub fn debug(&self, msg: &str) {
method log (line 76) | fn log(&self, level: Level, msg: &str) {
method new (line 98) | pub fn new() -> Self {
method info (line 102) | pub fn info(&self, msg: &str) {
method error (line 106) | pub fn error(&self, msg: &str) {
method warn (line 110) | pub fn warn(&self, msg: &str) {
method debug (line 114) | pub fn debug(&self, msg: &str) {
type LogContext (line 92) | pub struct LogContext {
method new (line 48) | pub fn new(
method info (line 60) | pub fn info(&self, msg: &str) {
method error (line 64) | pub fn error(&self, msg: &str) {
method warn (line 68) | pub fn warn(&self, msg: &str) {
method debug (line 72) | pub fn debug(&self, msg: &str) {
method log (line 76) | fn log(&self, level: Level, msg: &str) {
method new (line 98) | pub fn new() -> Self {
method info (line 102) | pub fn info(&self, msg: &str) {
method error (line 106) | pub fn error(&self, msg: &str) {
method warn (line 110) | pub fn warn(&self, msg: &str) {
method debug (line 114) | pub fn debug(&self, msg: &str) {
method default (line 121) | fn default() -> Self {
type AppState (line 127) | pub struct AppState {
method new (line 132) | pub fn new(log_context: LogContext) -> Self {
type Handler (line 138) | pub trait Handler {
method call (line 141) | fn call(&self, req: Request, state: AppState) -> Self::Future;
type Output (line 151) | type Output = R;
type Future (line 152) | type Future = Fut;
method call (line 154) | fn call(&self, req: Request, state: AppState) -> Self::Future {
type Output (line 171) | type Output = R;
type Future (line 172) | type Future = Fut;
method call (line 174) | fn call(&self, req: Request, _state: AppState) -> Self::Future {
type StatelessHandler (line 161) | pub struct StatelessHandler<F> {
type IntoServiceFn (line 180) | pub trait IntoServiceFn<Args> {
method into_service_fn (line 182) | fn into_service_fn(self) -> ServiceFn<Self::Handler>;
type Handler (line 192) | type Handler = F;
method into_service_fn (line 194) | fn into_service_fn(self) -> ServiceFn<Self::Handler> {
type Handler (line 206) | type Handler = StatelessHandler<F>;
method into_service_fn (line 208) | fn into_service_fn(self) -> ServiceFn<Self::Handler> {
function service_fn (line 216) | pub fn service_fn<F, Args>(handler: F) -> ServiceFn<F::Handler>
type ServiceFn (line 225) | pub struct ServiceFn<H> {
type Response (line 235) | type Response = Response<ResponseBody>;
type Error (line 236) | type Error = Error;
type Future (line 237) | type Future = Pin<Box<dyn Future<Output = Result<Self::Response, Self::E...
function poll_ready (line 239) | fn poll_ready(&mut self, _cx: &mut Context<'_>) -> Poll<Result<(), Self:...
function call (line 243) | fn call(&mut self, (state, req): (AppState, Request)) -> Self::Future {
function run (line 253) | pub async fn run<S>(service: S) -> Result<(), Error>
FILE: crates/vercel_runtime/src/types.rs
type Error (line 5) | pub type Error = Box<dyn std::error::Error + Send + Sync>;
type ResponseBody (line 9) | pub struct ResponseBody(pub http_body_util::combinators::BoxBody<Bytes, ...
type Target (line 12) | type Target = http_body_util::combinators::BoxBody<Bytes, Error>;
method deref (line 14) | fn deref(&self) -> &Self::Target {
method deref_mut (line 20) | fn deref_mut(&mut self) -> &mut Self::Target {
type Data (line 26) | type Data = Bytes;
type Error (line 27) | type Error = Error;
method poll_frame (line 29) | fn poll_frame(
method is_end_stream (line 36) | fn is_end_stream(&self) -> bool {
method size_hint (line 40) | fn size_hint(&self) -> http_body::SizeHint {
method from (line 46) | fn from(value: &str) -> Self {
method from (line 54) | fn from(value: String) -> Self {
method from (line 62) | fn from(value: Bytes) -> Self {
method from (line 69) | fn from(value: Vec<u8>) -> Self {
method from (line 77) | fn from(value: http_body_util::Full<Bytes>) -> Self {
method from (line 90) | fn from(value: http_body_util::StreamBody<T>) -> Self {
method from (line 96) | fn from(value: serde_json::Value) -> Self {
method from (line 105) | fn from(_: ()) -> Self {
method from (line 112) | fn from(value: Html<T>) -> Self {
type IntoFunctionResponse (line 119) | pub trait IntoFunctionResponse {
method into_response (line 121) | fn into_response(self) -> Result<Response<ResponseBody>, Error>;
method into_response (line 125) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 134) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 150) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 160) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 170) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 179) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 189) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 199) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 207) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 215) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 223) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 231) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 245) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 253) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 262) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 274) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 290) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
method into_response (line 300) | fn into_response(self) -> Result<Response<ResponseBody>, Error> {
type Html (line 287) | pub struct Html<T>(pub T);
FILE: examples/__tests__/test-utils.ts
function deployExample (line 4) | async function deployExample(filename: string) {
function getExamples (line 10) | function getExamples() {
FILE: examples/angular/src/app/app-routing.module.ts
class AppRoutingModule (line 10) | class AppRoutingModule { }
FILE: examples/angular/src/app/app.component.ts
class AppComponent (line 8) | class AppComponent {
FILE: examples/angular/src/app/app.module.ts
class AppModule (line 18) | class AppModule { }
FILE: examples/astro/src/env.d.ts
type ImportMetaEnv (line 3) | interface ImportMetaEnv {
type ImportMeta (line 7) | interface ImportMeta {
FILE: examples/axum/src/main.rs
type DataItem (line 14) | struct DataItem {
type DataResponse (line 21) | struct DataResponse {
type ItemResponse (line 28) | struct ItemResponse {
function home (line 33) | async fn home() -> impl IntoResponse {
function get_data (line 37) | async fn get_data() -> impl IntoResponse {
function get_item (line 63) | async fn get_item(Path(item_id): Path<u32>) -> impl IntoResponse {
function favicon (line 74) | async fn favicon() -> impl IntoResponse {
function fallback (line 81) | async fn fallback(uri: Uri) -> impl IntoResponse {
function main (line 89) | async fn main() -> Result<(), Error> {
FILE: examples/blitzjs/src/pages/404.tsx
function Page404 (line 7) | function Page404() {
FILE: examples/blitzjs/src/pages/_app.tsx
function RootErrorFallback (line 5) | function RootErrorFallback({ error }: ErrorFallbackProps) {
function MyApp (line 14) | function MyApp({ Component, pageProps }: AppProps) {
FILE: examples/blitzjs/src/pages/_document.tsx
class MyDocument (line 3) | class MyDocument extends Document {
method render (line 9) | render() {
FILE: examples/create-react-app/src/App.js
function App (line 4) | function App() {
FILE: examples/create-react-app/src/vitals.js
function getConnectionSpeed (line 3) | function getConnectionSpeed() {
function sendToVercelAnalytics (line 11) | function sendToVercelAnalytics(metric) {
FILE: examples/django/app/views.py
function index (line 4) | def index(request):
function api_data (line 51) | def api_data(request):
FILE: examples/django/manage.py
function main (line 7) | def main():
FILE: examples/docusaurus-2/src/components/HomepageFeatures/index.js
function Feature (line 38) | function Feature({Svg, title, description}) {
function HomepageFeatures (line 52) | function HomepageFeatures() {
FILE: examples/docusaurus-2/src/pages/index.js
function HomepageHeader (line 10) | function HomepageHeader() {
function Home (line 29) | function Home() {
FILE: examples/docusaurus/core/Footer.js
class Footer (line 10) | class Footer extends React.Component {
method docUrl (line 11) | docUrl(doc, language) {
method pageUrl (line 19) | pageUrl(doc, language) {
method render (line 24) | render() {
FILE: examples/docusaurus/pages/en/help.js
function Help (line 15) | function Help(props) {
FILE: examples/docusaurus/pages/en/index.js
class HomeSplash (line 16) | class HomeSplash extends React.Component {
method render (line 17) | render() {
class Index (line 77) | class Index extends React.Component {
method render (line 78) | render() {
FILE: examples/docusaurus/pages/en/users.js
class Users (line 14) | class Users extends React.Component {
method render (line 15) | render() {
FILE: examples/eleventy/.eleventy.js
function filterTagList (line 48) | function filterTagList(tags) {
FILE: examples/ember/app/app.js
class App (line 6) | class App extends Application {
FILE: examples/ember/app/router.js
class Router (line 4) | class Router extends EmberRouter {
FILE: examples/ember/tests/helpers/index.js
function setupApplicationTest (line 11) | function setupApplicationTest(hooks, options) {
function setupRenderingTest (line 30) | function setupRenderingTest(hooks, options) {
function setupTest (line 36) | function setupTest(hooks, options) {
FILE: examples/fastapi/main.py
function get_sample_data (line 13) | def get_sample_data():
function get_item (line 26) | def get_item(item_id: int):
function read_root (line 38) | def read_root():
FILE: examples/fasthtml/main.py
function get (line 7) | def get():
FILE: examples/flask/endpoints/routes.py
function get_sample_data (line 8) | def get_sample_data():
function get_item (line 23) | def get_item(item_id: int):
FILE: examples/flask/main.py
function read_root (line 12) | def read_root():
FILE: examples/hugo/themes/ananke/static/dist/js/app.3fc0f988d21662902933.js
function t (line 1) | function t(e){if(r[e])return r[e].exports;var o=r[e]={i:e,l:!1,exports:{...
FILE: examples/hydrogen-2/app/components/Aside.tsx
function Aside (line 11) | function Aside({
function CloseAside (line 40) | function CloseAside() {
FILE: examples/hydrogen-2/app/components/Cart.tsx
type CartLine (line 7) | type CartLine = CartApiQueryFragment['lines']['nodes'][0];
type CartMainProps (line 9) | type CartMainProps = {
function CartMain (line 14) | function CartMain({layout, cart}: CartMainProps) {
function CartDetails (line 29) | function CartDetails({layout, cart}: CartMainProps) {
function CartLines (line 45) | function CartLines({
function CartLineItem (line 65) | function CartLineItem({
function CartCheckoutActions (line 120) | function CartCheckoutActions({checkoutUrl}: {checkoutUrl: string}) {
function CartSummary (line 133) | function CartSummary({
function CartLineRemoveButton (line 163) | function CartLineRemoveButton({lineIds}: {lineIds: string[]}) {
function CartLineQuantity (line 175) | function CartLineQuantity({line}: {line: CartLine}) {
function CartLinePrice (line 210) | function CartLinePrice({
function CartEmpty (line 237) | function CartEmpty({
function CartDiscounts (line 266) | function CartDiscounts({
function UpdateDiscountForm (line 304) | function UpdateDiscountForm({
function CartLineUpdateButton (line 324) | function CartLineUpdateButton({
FILE: examples/hydrogen-2/app/components/Footer.tsx
function Footer (line 4) | function Footer({menu}: FooterQuery) {
function FooterMenu (line 12) | function FooterMenu({menu}: Pick<FooterQuery, 'menu'>) {
constant FALLBACK_FOOTER_MENU (line 46) | const FALLBACK_FOOTER_MENU = {
function activeLinkStyle (line 88) | function activeLinkStyle({
FILE: examples/hydrogen-2/app/components/Header.tsx
type HeaderProps (line 5) | type HeaderProps = Pick<LayoutProps, 'header' | 'cart' | 'isLoggedIn'>;
type Viewport (line 7) | type Viewport = 'desktop' | 'mobile';
function Header (line 9) | function Header({header, isLoggedIn, cart}: HeaderProps) {
function HeaderMenu (line 22) | function HeaderMenu({
function HeaderCtas (line 80) | function HeaderCtas({
function HeaderMenuMobileToggle (line 96) | function HeaderMenuMobileToggle() {
function SearchToggle (line 104) | function SearchToggle() {
function CartBadge (line 108) | function CartBadge({count}: {count: number}) {
function CartToggle (line 112) | function CartToggle({cart}: Pick<HeaderProps, 'cart'>) {
constant FALLBACK_HEADER_MENU (line 125) | const FALLBACK_HEADER_MENU = {
function activeLinkStyle (line 167) | function activeLinkStyle({
FILE: examples/hydrogen-2/app/components/Layout.tsx
type LayoutProps (line 17) | type LayoutProps = {
function Layout (line 25) | function Layout({
function CartAside (line 48) | function CartAside({cart}: {cart: LayoutProps['cart']}) {
function SearchAside (line 62) | function SearchAside() {
function MobileMenuAside (line 89) | function MobileMenuAside({menu}: {menu: HeaderQuery['menu']}) {
FILE: examples/hydrogen-2/app/components/Search.tsx
type PredicticeSearchResultItemImage (line 19) | type PredicticeSearchResultItemImage =
type PredictiveSearchResultItemPrice (line 24) | type PredictiveSearchResultItemPrice =
type NormalizedPredictiveSearchResultItem (line 27) | type NormalizedPredictiveSearchResultItem = {
type NormalizedPredictiveSearchResults (line 38) | type NormalizedPredictiveSearchResults = Array<
type NormalizedPredictiveSearch (line 46) | type NormalizedPredictiveSearch = {
type FetchSearchResultsReturn (line 51) | type FetchSearchResultsReturn = {
constant NO_PREDICTIVE_SEARCH_RESULTS (line 59) | const NO_PREDICTIVE_SEARCH_RESULTS: NormalizedPredictiveSearchResults = [
function SearchForm (line 67) | function SearchForm({searchTerm}: {searchTerm: string}) {
function SearchResults (line 105) | function SearchResults({
function SearchResultsProductsGrid (line 151) | function SearchResultsProductsGrid({products}: Pick<SearchQuery, 'produc...
function SearchResultPageGrid (line 189) | function SearchResultPageGrid({pages}: Pick<SearchQuery, 'pages'>) {
function SearchResultArticleGrid (line 207) | function SearchResultArticleGrid({articles}: Pick<SearchQuery, 'articles...
function NoSearchResults (line 225) | function NoSearchResults() {
type ChildrenRenderProps (line 229) | type ChildrenRenderProps = {
type SearchFromProps (line 235) | type SearchFromProps = {
function PredictiveSearchForm (line 246) | function PredictiveSearchForm({
function PredictiveSearchResults (line 293) | function PredictiveSearchResults() {
function NoPredictiveSearchResults (line 334) | function NoPredictiveSearchResults({
type SearchResultTypeProps (line 349) | type SearchResultTypeProps = {
function PredictiveSearchResult (line 356) | function PredictiveSearchResult({
type SearchResultItemProps (line 385) | type SearchResultItemProps = Pick<SearchResultTypeProps, 'goToSearchResu...
function SearchResultItem (line 389) | function SearchResultItem({goToSearchResult, item}: SearchResultItemProp...
type UseSearchReturn (line 422) | type UseSearchReturn = NormalizedPredictiveSearch & {
function usePredictiveSearch (line 427) | function usePredictiveSearch(): UseSearchReturn {
function pluralToSingularSearchType (line 462) | function pluralToSingularSearchType(
FILE: examples/hydrogen-2/app/entry.server.tsx
function handleRequest (line 6) | async function handleRequest(
FILE: examples/hydrogen-2/app/root.tsx
function links (line 21) | function links() {
function loader (line 38) | async function loader({context}: LoaderArgs) {
function App (line 80) | function App() {
function ErrorBoundary (line 102) | function ErrorBoundary() {
function validateCustomerAccessToken (line 155) | async function validateCustomerAccessToken(
constant MENU_FRAGMENT (line 177) | const MENU_FRAGMENT = `#graphql
constant HEADER_QUERY (line 203) | const HEADER_QUERY = `#graphql
constant FOOTER_QUERY (line 234) | const FOOTER_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/$.tsx
function loader (line 3) | async function loader({request}: LoaderArgs) {
FILE: examples/hydrogen-2/app/routes/[robots.txt].tsx
function loader (line 5) | async function loader({request, context}: LoaderArgs) {
function ErrorBoundary (line 23) | function ErrorBoundary() {
function robotsTxtData (line 50) | function robotsTxtData({url, shopId}: {shopId?: string; url?: string}) {
function generalDisallowRules (line 92) | function generalDisallowRules({
constant ROBOTS_QUERY (line 138) | const ROBOTS_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/[sitemap.xml].tsx
constant MAX_URLS (line 9) | const MAX_URLS = 250;
type Entry (line 11) | type Entry = {
function loader (line 22) | async function loader({request, context: {storefront}}: LoaderArgs) {
function xmlEncode (line 45) | function xmlEncode(string: string) {
function generateSitemap (line 49) | function generateSitemap({
function renderUrlTag (line 119) | function renderUrlTag({url, lastMod, changeFreq, image}: Entry) {
constant SITEMAP_QUERY (line 138) | const SITEMAP_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/_index.tsx
function loader (line 15) | async function loader({context}: LoaderArgs) {
function Homepage (line 24) | function Homepage() {
function FeaturedCollection (line 34) | function FeaturedCollection({
function RecommendedProducts (line 55) | function RecommendedProducts({
constant FEATURED_COLLECTION_QUERY (line 93) | const FEATURED_COLLECTION_QUERY = `#graphql
constant RECOMMENDED_PRODUCTS_QUERY (line 116) | const RECOMMENDED_PRODUCTS_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/account.$.tsx
function loader (line 4) | async function loader({context}: LoaderArgs) {
FILE: examples/hydrogen-2/app/routes/account.addresses.tsx
type ActionResponse (line 17) | type ActionResponse = {
function loader (line 30) | async function loader({context}: LoaderArgs) {
function action (line 39) | async function action({request, context}: ActionArgs) {
function Addresses (line 217) | function Addresses() {
function NewAddressForm (line 246) | function NewAddressForm() {
function ExistingAddresses (line 278) | function ExistingAddresses({
function AddressForm (line 315) | function AddressForm({
constant UPDATE_ADDRESS_MUTATION (line 471) | const UPDATE_ADDRESS_MUTATION = `#graphql
constant DELETE_ADDRESS_MUTATION (line 497) | const DELETE_ADDRESS_MUTATION = `#graphql
constant UPDATE_DEFAULT_ADDRESS_MUTATION (line 516) | const UPDATE_DEFAULT_ADDRESS_MUTATION = `#graphql
constant CREATE_ADDRESS_MUTATION (line 542) | const CREATE_ADDRESS_MUTATION = `#graphql
FILE: examples/hydrogen-2/app/routes/account.orders.$id.tsx
function loader (line 10) | async function loader({params, context}: LoaderArgs) {
function OrderRoute (line 52) | function OrderRoute() {
function OrderLineRow (line 166) | function OrderLineRow({lineItem}: {lineItem: OrderLineItemFullFragment}) {
constant CUSTOMER_ORDER_QUERY (line 196) | const CUSTOMER_ORDER_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/account.orders._index.tsx
function loader (line 18) | async function loader({request, context}: LoaderArgs) {
function Orders (line 54) | function Orders() {
function OrdersTable (line 68) | function OrdersTable({orders}: Pick<CustomerOrdersFragment, 'orders'>) {
function EmptyOrders (line 96) | function EmptyOrders() {
function OrderItem (line 108) | function OrderItem({order}: {order: OrderItemFragment}) {
constant ORDER_ITEM_FRAGMENT (line 126) | const ORDER_ITEM_FRAGMENT = `#graphql
constant CUSTOMER_FRAGMENT (line 155) | const CUSTOMER_FRAGMENT = `#graphql
constant CUSTOMER_ORDERS_QUERY (line 181) | const CUSTOMER_ORDERS_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/account.profile.tsx
type ActionResponse (line 12) | type ActionResponse = {
function loader (line 21) | async function loader({context}: LoaderArgs) {
function action (line 29) | async function action({request, context}: ActionArgs) {
function AccountProfile (line 105) | function AccountProfile() {
function getPassword (line 227) | function getPassword(form: FormData): string | undefined {
constant CUSTOMER_UPDATE_MUTATION (line 261) | const CUSTOMER_UPDATE_MUTATION = `#graphql
FILE: examples/hydrogen-2/app/routes/account.tsx
function shouldRevalidate (line 5) | function shouldRevalidate() {
function loader (line 9) | async function loader({request, context}: LoaderArgs) {
function Acccount (line 78) | function Acccount() {
function AccountLayout (line 95) | function AccountLayout({
function AcccountMenu (line 118) | function AcccountMenu() {
function Logout (line 150) | function Logout() {
constant CUSTOMER_FRAGMENT (line 158) | const CUSTOMER_FRAGMENT = `#graphql
constant CUSTOMER_QUERY (line 192) | const CUSTOMER_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/account_.activate.$id.$activationToken.tsx
type ActionResponse (line 5) | type ActionResponse = {
function loader (line 13) | async function loader({context}: LoaderArgs) {
function action (line 20) | async function action({request, context, params}: ActionArgs) {
function Activate (line 82) | function Activate() {
constant CUSTOMER_ACTIVATE_MUTATION (line 138) | const CUSTOMER_ACTIVATE_MUTATION = `#graphql
FILE: examples/hydrogen-2/app/routes/account_.login.tsx
type ActionResponse (line 10) | type ActionResponse = {
function loader (line 18) | async function loader({context}: LoaderArgs) {
function action (line 25) | async function action({request, context}: ActionArgs) {
function Login (line 71) | function Login() {
constant LOGIN_MUTATION (line 129) | const LOGIN_MUTATION = `#graphql
FILE: examples/hydrogen-2/app/routes/account_.logout.tsx
function loader (line 12) | async function loader() {
function action (line 16) | async function action({request, context}: ActionArgs) {
function Logout (line 31) | function Logout() {
FILE: examples/hydrogen-2/app/routes/account_.recover.tsx
type ActionResponse (line 4) | type ActionResponse = {
function loader (line 9) | async function loader({context}: LoaderArgs) {
function action (line 18) | async function action({request, context}: LoaderArgs) {
function Recover (line 45) | function Recover() {
constant CUSTOMER_RECOVER_MUTATION (line 110) | const CUSTOMER_RECOVER_MUTATION = `#graphql
FILE: examples/hydrogen-2/app/routes/account_.register.tsx
type ActionResponse (line 10) | type ActionResponse = {
function loader (line 17) | async function loader({context}: LoaderArgs) {
function Register (line 106) | function Register() {
constant CUSTOMER_CREATE_MUTATION (line 169) | const CUSTOMER_CREATE_MUTATION = `#graphql
constant REGISTER_LOGIN_MUTATION (line 189) | const REGISTER_LOGIN_MUTATION = `#graphql
FILE: examples/hydrogen-2/app/routes/account_.reset.$id.$resetToken.tsx
type ActionResponse (line 4) | type ActionResponse = {
function action (line 12) | async function action({request, context, params}: ActionArgs) {
function Reset (line 63) | function Reset() {
constant CUSTOMER_RESET_MUTATION (line 117) | const CUSTOMER_RESET_MUTATION = `#graphql
FILE: examples/hydrogen-2/app/routes/api.predictive-search.tsx
type PredictiveSearchResultItem (line 17) | type PredictiveSearchResultItem =
type PredictiveSearchTypes (line 23) | type PredictiveSearchTypes =
constant DEFAULT_SEARCH_TYPES (line 30) | const DEFAULT_SEARCH_TYPES: PredictiveSearchTypes[] = [
function action (line 42) | async function action({request, params, context}: LoaderArgs) {
function fetchPredictiveSearchResults (line 56) | async function fetchPredictiveSearchResults({
function normalizePredictiveSearchResults (line 114) | function normalizePredictiveSearchResults(
constant PREDICTIVE_SEARCH_QUERY (line 249) | const PREDICTIVE_SEARCH_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/blogs.$blogHandle.$articleHandle.tsx
function loader (line 10) | async function loader({params, context}: LoaderArgs) {
function Article (line 30) | function Article() {
constant ARTICLE_QUERY (line 59) | const ARTICLE_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/blogs.$blogHandle._index.tsx
function Blog (line 38) | function Blog() {
function ArticleItem (line 74) | function ArticleItem({
constant BLOGS_QUERY (line 108) | const BLOGS_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/blogs._index.tsx
function Blogs (line 24) | function Blogs() {
constant BLOGS_QUERY (line 63) | const BLOGS_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/cart.tsx
function action (line 14) | async function action({request, context}: ActionArgs) {
function Cart (line 88) | function Cart() {
FILE: examples/hydrogen-2/app/routes/collections.$handle.tsx
function loader (line 17) | async function loader({request, params, context}: LoaderArgs) {
function Collection (line 40) | function Collection() {
function ProductsGrid (line 65) | function ProductsGrid({products}: {products: ProductItemFragment[]}) {
function ProductItem (line 81) | function ProductItem({
constant PRODUCT_ITEM_FRAGMENT (line 114) | const PRODUCT_ITEM_FRAGMENT = `#graphql
constant COLLECTION_QUERY (line 150) | const COLLECTION_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/collections._index.tsx
function loader (line 6) | async function loader({context, request}: LoaderArgs) {
function Collections (line 18) | function Collections() {
function CollectionsGrid (line 41) | function CollectionsGrid({collections}: {collections: CollectionFragment...
function CollectionItem (line 55) | function CollectionItem({
constant COLLECTIONS_QUERY (line 82) | const COLLECTIONS_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/pages.$handle.tsx
function loader (line 9) | async function loader({params, context}: LoaderArgs) {
function Page (line 27) | function Page() {
constant PAGE_QUERY (line 40) | const PAGE_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/policies.$handle.tsx
type SelectedPolicies (line 6) | type SelectedPolicies = keyof Pick<
function loader (line 15) | async function loader({params, context}: LoaderArgs) {
function Policy (line 45) | function Policy() {
constant POLICY_CONTENT_QUERY (line 63) | const POLICY_CONTENT_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/policies._index.tsx
function loader (line 4) | async function loader({context}: LoaderArgs) {
function Policies (line 15) | function Policies() {
constant POLICIES_QUERY (line 35) | const POLICIES_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/products.$handle.tsx
function loader (line 27) | async function loader({params, request, context}: LoaderArgs) {
function redirectToFirstVariant (line 82) | function redirectToFirstVariant({
function Product (line 105) | function Product() {
function ProductImage (line 120) | function ProductImage({image}: {image: ProductVariantFragment['image']}) {
function ProductMain (line 137) | function ProductMain({
function ProductPrice (line 186) | function ProductPrice({
function ProductForm (line 211) | function ProductForm({
function ProductOptions (line 252) | function ProductOptions({option}: {option: VariantOption}) {
function AddToCartButton (line 281) | function AddToCartButton({
constant PRODUCT_VARIANT_FRAGMENT (line 316) | const PRODUCT_VARIANT_FRAGMENT = `#graphql
constant PRODUCT_FRAGMENT (line 354) | const PRODUCT_FRAGMENT = `#graphql
constant PRODUCT_QUERY (line 382) | const PRODUCT_QUERY = `#graphql
constant PRODUCT_VARIANTS_FRAGMENT (line 396) | const PRODUCT_VARIANTS_FRAGMENT = `#graphql
constant VARIANTS_QUERY (line 407) | const VARIANTS_QUERY = `#graphql
FILE: examples/hydrogen-2/app/routes/search.tsx
function loader (line 12) | async function loader({request, context}: LoaderArgs) {
function SearchPage (line 48) | function SearchPage() {
constant SEARCH_QUERY (line 63) | const SEARCH_QUERY = `#graphql
FILE: examples/hydrogen-2/app/utils.ts
function useVariantUrl (line 5) | function useVariantUrl(
function getVariantUrl (line 21) | function getVariantUrl({
FILE: examples/hydrogen-2/remix.env.d.ts
type Env (line 20) | interface Env {
type AppLoadContext (line 33) | interface AppLoadContext {
FILE: examples/hydrogen-2/server.ts
method fetch (line 22) | async fetch(
class HydrogenSession (line 101) | class HydrogenSession {
method constructor (line 102) | constructor(
method init (line 107) | static async init(request: Request, secrets: string[]) {
method has (line 123) | has(key: string) {
method get (line 127) | get(key: string) {
method destroy (line 131) | destroy() {
method flash (line 135) | flash(key: string, value: any) {
method unset (line 139) | unset(key: string) {
method set (line 143) | set(key: string, value: any) {
method commit (line 147) | commit() {
constant CART_QUERY_FRAGMENT (line 153) | const CART_QUERY_FRAGMENT = `#graphql
FILE: examples/hydrogen-2/storefrontapi.generated.d.ts
type MenuItemFragment (line 6) | type MenuItemFragment = Pick<
type ChildMenuItemFragment (line 11) | type ChildMenuItemFragment = Pick<
type ParentMenuItemFragment (line 16) | type ParentMenuItemFragment = Pick<
type MenuFragment (line 28) | type MenuFragment = Pick<StorefrontAPI.Menu, 'id'> & {
type ShopFragment (line 44) | type ShopFragment = Pick<
type HeaderQueryVariables (line 56) | type HeaderQueryVariables = StorefrontAPI.Exact<{
type HeaderQuery (line 62) | type HeaderQuery = {
type FooterQueryVariables (line 90) | type FooterQueryVariables = StorefrontAPI.Exact<{
type FooterQuery (line 96) | type FooterQuery = {
type StoreRobotsQueryVariables (line 116) | type StoreRobotsQueryVariables = StorefrontAPI.Exact<{
type StoreRobotsQuery (line 121) | type StoreRobotsQuery = {shop: Pick<StorefrontAPI.Shop, 'id'>};
type SitemapQueryVariables (line 123) | type SitemapQueryVariables = StorefrontAPI.Exact<{
type SitemapQuery (line 128) | type SitemapQuery = {
type FeaturedCollectionFragment (line 153) | type FeaturedCollectionFragment = Pick<
type FeaturedCollectionQueryVariables (line 162) | type FeaturedCollectionQueryVariables = StorefrontAPI.Exact<{
type FeaturedCollectionQuery (line 167) | type FeaturedCollectionQuery = {
type RecommendedProductFragment (line 182) | type RecommendedProductFragment = Pick<
type RecommendedProductsQueryVariables (line 196) | type RecommendedProductsQueryVariables = StorefrontAPI.Exact<{
type RecommendedProductsQuery (line 201) | type RecommendedProductsQuery = {
type CustomerAddressUpdateMutationVariables (line 224) | type CustomerAddressUpdateMutationVariables = StorefrontAPI.Exact<{
type CustomerAddressUpdateMutation (line 232) | type CustomerAddressUpdateMutation = {
type CustomerAddressDeleteMutationVariables (line 243) | type CustomerAddressDeleteMutationVariables = StorefrontAPI.Exact<{
type CustomerAddressDeleteMutation (line 250) | type CustomerAddressDeleteMutation = {
type CustomerDefaultAddressUpdateMutationVariables (line 263) | type CustomerDefaultAddressUpdateMutationVariables =
type CustomerDefaultAddressUpdateMutation (line 271) | type CustomerDefaultAddressUpdateMutation = {
type CustomerAddressCreateMutationVariables (line 284) | type CustomerAddressCreateMutationVariables = StorefrontAPI.Exact<{
type CustomerAddressCreateMutation (line 291) | type CustomerAddressCreateMutation = {
type OrderMoneyFragment (line 302) | type OrderMoneyFragment = Pick<
type AddressFullFragment (line 307) | type AddressFullFragment = Pick<
type DiscountApplicationFragment (line 326) | type DiscountApplicationFragment = {
type OrderLineProductVariantFragment (line 338) | type OrderLineProductVariantFragment = Pick<
type OrderLineItemFullFragment (line 349) | type OrderLineItemFullFragment = Pick<
type OrderFragment (line 380) | type OrderFragment = Pick<
type OrderQueryVariables (line 474) | type OrderQueryVariables = StorefrontAPI.Exact<{
type OrderQuery (line 480) | type OrderQuery = {
type OrderItemFragment (line 578) | type OrderItemFragment = Pick<
type CustomerOrdersFragment (line 602) | type CustomerOrdersFragment = Pick<
type CustomerOrdersQueryVariables (line 645) | type CustomerOrdersQueryVariables = StorefrontAPI.Exact<{
type CustomerOrdersQuery (line 655) | type CustomerOrdersQuery = {
type CustomerUpdateMutationVariables (line 699) | type CustomerUpdateMutationVariables = StorefrontAPI.Exact<{
type CustomerUpdateMutation (line 706) | type CustomerUpdateMutation = {
type CustomerFragment (line 723) | type CustomerFragment = Pick<
type AddressFragment (line 770) | type AddressFragment = Pick<
type CustomerQueryVariables (line 786) | type CustomerQueryVariables = StorefrontAPI.Exact<{
type CustomerQuery (line 792) | type CustomerQuery = {
type CustomerActivateMutationVariables (line 843) | type CustomerActivateMutationVariables = StorefrontAPI.Exact<{
type CustomerActivateMutation (line 850) | type CustomerActivateMutation = {
type LoginMutationVariables (line 861) | type LoginMutationVariables = StorefrontAPI.Exact<{
type LoginMutation (line 865) | type LoginMutation = {
type CustomerRecoverMutationVariables (line 876) | type CustomerRecoverMutationVariables = StorefrontAPI.Exact<{
type CustomerRecoverMutation (line 882) | type CustomerRecoverMutation = {
type CustomerCreateMutationVariables (line 890) | type CustomerCreateMutationVariables = StorefrontAPI.Exact<{
type CustomerCreateMutation (line 896) | type CustomerCreateMutation = {
type RegisterLoginMutationVariables (line 905) | type RegisterLoginMutationVariables = StorefrontAPI.Exact<{
type RegisterLoginMutation (line 911) | type RegisterLoginMutation = {
type CustomerResetMutationVariables (line 922) | type CustomerResetMutationVariables = StorefrontAPI.Exact<{
type CustomerResetMutation (line 929) | type CustomerResetMutation = {
type PredictiveArticleFragment (line 940) | type PredictiveArticleFragment = {__typename: 'Article'} & Pick<
type PredictiveCollectionFragment (line 949) | type PredictiveCollectionFragment = {__typename: 'Collection'} & Pick<
type PredictivePageFragment (line 958) | type PredictivePageFragment = {__typename: 'Page'} & Pick<
type PredictiveProductFragment (line 963) | type PredictiveProductFragment = {__typename: 'Product'} & Pick<
type PredictiveQueryFragment (line 979) | type PredictiveQueryFragment = {
type PredictiveSearchQueryVariables (line 986) | type PredictiveSearchQueryVariables = StorefrontAPI.Exact<{
type PredictiveSearchQuery (line 998) | type PredictiveSearchQuery = {
type ArticleQueryVariables (line 1055) | type ArticleQueryVariables = StorefrontAPI.Exact<{
type ArticleQuery (line 1062) | type ArticleQuery = {
type BlogQueryVariables (line 1081) | type BlogQueryVariables = StorefrontAPI.Exact<{
type BlogQuery (line 1090) | type BlogQuery = {
type ArticleItemFragment (line 1123) | type ArticleItemFragment = Pick<
type BlogsQueryVariables (line 1134) | type BlogsQueryVariables = StorefrontAPI.Exact<{
type BlogsQuery (line 1143) | type BlogsQuery = {
type MoneyProductItemFragment (line 1159) | type MoneyProductItemFragment = Pick<
type ProductItemFragment (line 1164) | type ProductItemFragment = Pick<
type CollectionQueryVariables (line 1184) | type CollectionQueryVariables = StorefrontAPI.Exact<{
type CollectionQuery (line 1194) | type CollectionQuery = {
type CollectionFragment (line 1237) | type CollectionFragment = Pick<
type StoreCollectionsQueryVariables (line 1246) | type StoreCollectionsQueryVariables = StorefrontAPI.Exact<{
type StoreCollectionsQuery (line 1255) | type StoreCollectionsQuery = {
type PageQueryVariables (line 1274) | type PageQueryVariables = StorefrontAPI.Exact<{
type PageQuery (line 1280) | type PageQuery = {
type PolicyFragment (line 1290) | type PolicyFragment = Pick<
type PolicyQueryVariables (line 1295) | type PolicyQueryVariables = StorefrontAPI.Exact<{
type PolicyQuery (line 1304) | type PolicyQuery = {
type PolicyItemFragment (line 1321) | type PolicyItemFragment = Pick<
type PoliciesQueryVariables (line 1326) | type PoliciesQueryVariables = StorefrontAPI.Exact<{
type PoliciesQuery (line 1331) | type PoliciesQuery = {
type ProductVariantFragment (line 1351) | type ProductVariantFragment = Pick<
type ProductFragment (line 1372) | type ProductFragment = Pick<
type ProductQueryVariables (line 1430) | type ProductQueryVariables = StorefrontAPI.Exact<{
type ProductQuery (line 1439) | type ProductQuery = {
type ProductVariantsFragment (line 1501) | type ProductVariantsFragment = {
type ProductVariantsQueryVariables (line 1530) | type ProductVariantsQueryVariables = StorefrontAPI.Exact<{
type ProductVariantsQuery (line 1536) | type ProductVariantsQuery = {
type SearchProductFragment (line 1567) | type SearchProductFragment = {__typename: 'Product'} & Pick<
type SearchPageFragment (line 1590) | type SearchPageFragment = {__typename: 'Page'} & Pick<
type SearchArticleFragment (line 1595) | type SearchArticleFragment = {__typename: 'Article'} & Pick<
type SearchQueryVariables (line 1600) | type SearchQueryVariables = StorefrontAPI.Exact<{
type SearchQuery (line 1610) | type SearchQuery = {
type MoneyFragment (line 1667) | type MoneyFragment = Pick<
type CartLineFragment (line 1672) | type CartLineFragment = Pick<
type CartApiQueryFragment (line 1702) | type CartApiQueryFragment = Pick<
type GeneratedQueryTypes (line 1769) | interface GeneratedQueryTypes {
type GeneratedMutationTypes (line 1856) | interface GeneratedMutationTypes {
type StorefrontQueries (line 1904) | interface StorefrontQueries extends GeneratedQueryTypes {}
type StorefrontMutations (line 1905) | interface StorefrontMutations extends GeneratedMutationTypes {}
FILE: examples/ionic-angular/src/app/app-routing.module.ts
class AppRoutingModule (line 16) | class AppRoutingModule {}
FILE: examples/ionic-angular/src/app/app.component.ts
class AppComponent (line 9) | class AppComponent {
method constructor (line 10) | constructor() {}
FILE: examples/ionic-angular/src/app/app.module.ts
class AppModule (line 16) | class AppModule {}
FILE: examples/ionic-angular/src/app/explore-container/explore-container.component.ts
class ExploreContainerComponent (line 9) | class ExploreContainerComponent {
FILE: examples/ionic-angular/src/app/explore-container/explore-container.module.ts
class ExploreContainerComponentModule (line 14) | class ExploreContainerComponentModule {}
FILE: examples/ionic-angular/src/app/tab1/tab1-routing.module.ts
class Tab1PageRoutingModule (line 16) | class Tab1PageRoutingModule {}
FILE: examples/ionic-angular/src/app/tab1/tab1.module.ts
class Tab1PageModule (line 20) | class Tab1PageModule {}
FILE: examples/ionic-angular/src/app/tab1/tab1.page.ts
class Tab1Page (line 9) | class Tab1Page {
method constructor (line 11) | constructor() {}
FILE: examples/ionic-angular/src/app/tab2/tab2-routing.module.ts
class Tab2PageRoutingModule (line 16) | class Tab2PageRoutingModule {}
FILE: examples/ionic-angular/src/app/tab2/tab2.module.ts
class Tab2PageModule (line 20) | class Tab2PageModule {}
FILE: examples/ionic-angular/src/app/tab2/tab2.page.ts
class Tab2Page (line 9) | class Tab2Page {
method constructor (line 11) | constructor() {}
FILE: examples/ionic-angular/src/app/tab3/tab3-routing.module.ts
class Tab3PageRoutingModule (line 16) | class Tab3PageRoutingModule {}
FILE: examples/ionic-angular/src/app/tab3/tab3.module.ts
class Tab3PageModule (line 20) | class Tab3PageModule {}
FILE: examples/ionic-angular/src/app/tab3/tab3.page.ts
class Tab3Page (line 9) | class Tab3Page {
method constructor (line 11) | constructor() {}
FILE: examples/ionic-angular/src/app/tabs/tabs-routing.module.ts
class TabsPageRoutingModule (line 39) | class TabsPageRoutingModule {}
FILE: examples/ionic-angular/src/app/tabs/tabs.module.ts
class TabsPageModule (line 19) | class TabsPageModule {}
FILE: examples/ionic-angular/src/app/tabs/tabs.page.ts
class TabsPage (line 9) | class TabsPage {
method constructor (line 11) | constructor() {}
FILE: examples/ionic-react/cypress.config.ts
method setupNodeEvents (line 6) | setupNodeEvents(on, config) {
FILE: examples/ionic-react/src/components/ExploreContainer.tsx
type ContainerProps (line 3) | interface ContainerProps {
FILE: examples/nestjs/src/app.controller.ts
class AppController (line 5) | class AppController {
method constructor (line 6) | constructor(private readonly appService: AppService) {}
method getHello (line 10) | getHello(): string {
method getHealth (line 15) | getHealth(): string {
method getVersion (line 20) | getVersion(): string {
FILE: examples/nestjs/src/app.module.ts
class AppModule (line 10) | class AppModule {}
FILE: examples/nestjs/src/app.service.ts
class AppService (line 4) | class AppService {
method getHello (line 5) | getHello(): string {
FILE: examples/nestjs/src/main.ts
function bootstrap (line 4) | async function bootstrap() {
FILE: examples/nextjs/app/layout.tsx
function RootLayout (line 20) | function RootLayout({
FILE: examples/nextjs/app/page.tsx
function Home (line 3) | function Home() {
FILE: examples/polymer/src/my-app.js
class MyApp (line 37) | class MyApp extends PolymerElement {
method template (line 38) | static get template() {
method properties (line 129) | static get properties() {
method observers (line 141) | static get observers() {
method _routePageChanged (line 145) | _routePageChanged(page) {
method _pageChanged (line 164) | _pageChanged(page) {
FILE: examples/polymer/src/my-view1.js
class MyView1 (line 14) | class MyView1 extends PolymerElement {
method template (line 15) | static get template() {
FILE: examples/polymer/src/my-view2.js
class MyView2 (line 14) | class MyView2 extends PolymerElement {
method template (line 15) | static get template() {
FILE: examples/polymer/src/my-view3.js
class MyView3 (line 14) | class MyView3 extends PolymerElement {
method template (line 15) | static get template() {
FILE: examples/polymer/src/my-view404.js
class MyView404 (line 13) | class MyView404 extends PolymerElement {
method template (line 14) | static get template() {
FILE: examples/react-router/app/root.tsx
function Layout (line 26) | function Layout({ children }: { children: React.ReactNode }) {
function App (line 44) | function App() {
function ErrorBoundary (line 48) | function ErrorBoundary({ error }: Route.ErrorBoundaryProps) {
FILE: examples/react-router/app/routes/home.tsx
function meta (line 4) | function meta({}: Route.MetaArgs) {
function Home (line 11) | function Home() {
FILE: examples/react-router/app/welcome/welcome.tsx
function Welcome (line 4) | function Welcome() {
FILE: examples/redwoodjs/api/db/seed.js
function main (line 8) | async function main() {
FILE: examples/remix/app/root.tsx
function Layout (line 10) | function Layout({ children }: { children: React.ReactNode }) {
function App (line 29) | function App() {
FILE: examples/remix/app/routes/_index.tsx
function Index (line 10) | function Index() {
FILE: examples/remix/app/routes/edge.tsx
function Edge (line 7) | function Edge() {
FILE: examples/sanity/schemas/post.js
method prepare (line 58) | prepare(selection) {
FILE: examples/sapper/src/routes/blog/[slug].json.js
function get (line 8) | function get(req, res, next) {
FILE: examples/sapper/src/routes/blog/index.json.js
function get (line 12) | function get(req, res) {
FILE: examples/sapper/src/service-worker.js
constant ASSETS (line 3) | const ASSETS = `cache${timestamp}`;
FILE: examples/solidstart-1/src/app.tsx
function App (line 7) | function App() {
FILE: examples/solidstart-1/src/components/Counter.tsx
function Counter (line 4) | function Counter() {
FILE: examples/solidstart-1/src/routes/[...404].tsx
function NotFound (line 4) | function NotFound() {
FILE: examples/solidstart-1/src/routes/about.tsx
function Home (line 3) | function Home() {
FILE: examples/solidstart-1/src/routes/index.tsx
function Home (line 4) | function Home() {
FILE: examples/starlette/api/routes.py
function get_sample_data (line 5) | async def get_sample_data(request):
function get_item (line 19) | async def get_item(request):
FILE: examples/starlette/main.py
function read_root (line 15) | async def read_root(request):
FILE: examples/stencil/src/components.d.ts
type AppHome (line 11) | interface AppHome {}
type AppProfile (line 12) | interface AppProfile {
type AppRoot (line 15) | interface AppRoot {}
type HTMLAppHomeElement (line 19) | interface HTMLAppHomeElement extends Components.AppHome, HTMLStencilElem...
type HTMLAppProfileElement (line 25) | interface HTMLAppProfileElement
type HTMLAppRootElement (line 33) | interface HTMLAppRootElement extends Components.AppRoot, HTMLStencilElem...
type HTMLElementTagNameMap (line 38) | interface HTMLElementTagNameMap {
type AppHome (line 46) | interface AppHome extends JSXBase.HTMLAttributes<HTMLAppHomeElement> {}
type AppProfile (line 47) | interface AppProfile extends JSXBase.HTMLAttributes<HTMLAppProfileElemen...
type AppRoot (line 50) | interface AppRoot extends JSXBase.HTMLAttributes<HTMLAppRootElement> {}
type IntrinsicElements (line 52) | interface IntrinsicElements {
type IntrinsicElements (line 63) | interface IntrinsicElements extends LocalJSX.IntrinsicElements {}
FILE: examples/stencil/src/components/app-home/app-home.tsx
class AppHome (line 8) | class AppHome {
method render (line 10) | render() {
FILE: examples/stencil/src/components/app-profile/app-profile.tsx
class AppProfile (line 9) | class AppProfile {
method normalize (line 12) | normalize(name: string): string {
method render (line 19) | render() {
FILE: examples/stencil/src/components/app-root/app-root.tsx
class AppRoot (line 9) | class AppRoot {
method render (line 11) | render() {
FILE: examples/sveltekit-1/src/app.d.ts
type Locals (line 5) | interface Locals {
FILE: examples/sveltekit-1/src/lib/form.js
function enhance (line 31) | function enhance(form, { pending, error, result } = {}) {
FILE: examples/sveltekit-1/src/lib/vitals.js
function getConnectionSpeed (line 5) | function getConnectionSpeed() {
function sendToAnalytics (line 18) | function sendToAnalytics(metric, options) {
function webVitals (line 56) | function webVitals(options) {
FILE: examples/sveltekit-1/src/routes/todos/api.js
function api (line 17) | function api(method, resource, data) {
FILE: examples/sveltekit/src/lib/vitals.ts
function getConnectionSpeed (line 5) | function getConnectionSpeed() {
function sendToAnalytics (line 10) | function sendToAnalytics(metric: Metric, options: { params: { [s: string...
function webVitals (line 45) | function webVitals(options: any) {
FILE: examples/sveltekit/src/routes/sverdle/game.ts
class Game (line 3) | class Game {
method constructor (line 12) | constructor(serialized: string | undefined = undefined) {
method enter (line 32) | enter(letters: string[]) {
method toString (line 72) | toString() {
FILE: examples/tanstack-start/src/components/Header.tsx
function Header (line 15) | function Header() {
FILE: examples/tanstack-start/src/routeTree.gen.ts
type FileRoutesByFullPath (line 62) | interface FileRoutesByFullPath {
type FileRoutesByTo (line 72) | interface FileRoutesByTo {
type FileRoutesById (line 82) | interface FileRoutesById {
type FileRouteTypes (line 93) | interface FileRouteTypes {
type RootRouteChildren (line 126) | interface RootRouteChildren {
type FileRoutesByPath (line 138) | interface FileRoutesByPath {
type Register (line 215) | interface Register {
FILE: examples/tanstack-start/src/routes/__root.tsx
function RootDocument (line 34) | function RootDocument({ children }: { children: React.ReactNode }) {
FILE: examples/tanstack-start/src/routes/demo/start.api-request.tsx
function getNames (line 5) | function getNames() {
function Home (line 13) | function Home() {
FILE: examples/tanstack-start/src/routes/demo/start.server-funcs.tsx
constant TODOS_FILE (line 18) | const TODOS_FILE = 'todos.json'
function readTodos (line 20) | async function readTodos() {
function Home (line 53) | function Home() {
FILE: examples/tanstack-start/src/routes/demo/start.ssr.data-only.tsx
function RouteComponent (line 10) | function RouteComponent() {
FILE: examples/tanstack-start/src/routes/demo/start.ssr.full-ssr.tsx
function RouteComponent (line 9) | function RouteComponent() {
FILE: examples/tanstack-start/src/routes/demo/start.ssr.index.tsx
function RouteComponent (line 7) | function RouteComponent() {
FILE: examples/tanstack-start/src/routes/demo/start.ssr.spa-mode.tsx
function RouteComponent (line 10) | function RouteComponent() {
FILE: examples/tanstack-start/src/routes/index.tsx
function App (line 13) | function App() {
FILE: examples/umijs/src/layouts/index.tsx
function Layout (line 4) | function Layout() {
FILE: examples/umijs/src/pages/index.tsx
function HomePage (line 3) | function HomePage() {
FILE: examples/vite-react/src/App.tsx
function App (line 6) | function App() {
FILE: examples/xmcp/src/tools/greet.ts
function greet (line 22) | function greet({ name }: InferSchema<typeof schema>) {
FILE: internals/constants/src/index.ts
constant PROJECT_ENV_TARGET (line 1) | const PROJECT_ENV_TARGET = [
constant LOGO (line 7) | const LOGO = '▲' as const;
constant NAME (line 8) | const NAME = 'vercel' as const;
constant TITLE (line 9) | const TITLE = 'Vercel' as const;
FILE: internals/get-package-json/src/index.ts
function getPackageJSONPath (line 7) | function getPackageJSONPath(dir: string) {
function captureCallerCallSite (line 11) | function captureCallerCallSite() {
function getPackageJSON (line 34) | function getPackageJSON() {
FILE: internals/types/index.d.ts
type ProjectEnvTarget (line 7) | type ProjectEnvTarget = (typeof PROJECT_ENV_TARGET)[number];
type ProjectEnvType (line 8) | type ProjectEnvType = 'plain' | 'encrypted' | 'system' | 'sensitive';
type ProjectSettings (line 10) | type ProjectSettings = import('@vercel/build-utils').ProjectSettings;
type Primitive (line 12) | type Primitive =
type JSONArray (line 21) | type JSONArray = JSONValue[];
type JSONValue (line 23) | type JSONValue = Primitive | JSONObject | JSONArray;
type JSONObject (line 25) | interface JSONObject {
type AuthConfig (line 29) | interface AuthConfig {
type GlobalConfig (line 49) | interface GlobalConfig {
type Billing (line 63) | type Billing = {
type User (line 73) | type User = {
type Team (line 86) | interface Team {
type Domain (line 104) | type Domain = {
type DomainConfig (line 123) | type DomainConfig = {
type Cert (line 133) | type Cert = {
type RouteOrMiddleware (line 142) | type RouteOrMiddleware =
type CustomEnvironment (line 150) | interface CustomEnvironment {
type CustomEnvironmentBranchMatcher (line 161) | interface CustomEnvironmentBranchMatcher {
type CustomEnvironmentType (line 166) | type CustomEnvironmentType = 'production' | 'preview' | 'development';
type Deployment (line 168) | type Deployment = {
type Alias (line 266) | type Alias = {
type DNSRecord (line 282) | type DNSRecord = {
type SRVRecordData (line 298) | type SRVRecordData = {
type MXRecordData (line 309) | type MXRecordData = {
type DNSRecordData (line 316) | type DNSRecordData =
type ProjectAliasTarget (line 325) | interface ProjectAliasTarget {
type ProjectEnvVariable (line 336) | interface ProjectEnvVariable {
type DeployHook (line 350) | interface DeployHook {
type ProjectLinkData (line 358) | interface ProjectLinkData {
type AutomationProtectionBypass (line 371) | interface AutomationProtectionBypass {
type IntegrationAutomationProtectionBypass (line 377) | interface IntegrationAutomationProtectionBypass {
type ProjectProtectionBypass (line 385) | type ProjectProtectionBypass = Record<
type Project (line 390) | interface Project extends ProjectSettings {
type Org (line 413) | interface Org {
type ProjectLink (line 419) | interface ProjectLink {
type PaginationOptions (line 444) | interface PaginationOptions {
type ProjectLinked (line 462) | type ProjectLinked = {
type ProjectNotLinked (line 469) | type ProjectNotLinked = {
type ProjectLinkedError (line 475) | type ProjectLinkedError = {
type ProjectLinkResult (line 487) | type ProjectLinkResult =
type RollbackJobStatus (line 495) | type RollbackJobStatus =
type RollbackTarget (line 506) | interface RollbackTarget {
type LastAliasRequest (line 513) | interface LastAliasRequest {
type Token (line 521) | interface Token {
type GitMetadata (line 531) | interface GitMetadata {
type Build (line 544) | interface Build {
type BuildOutput (line 640) | interface BuildOutput {
type ReadableTTY (line 679) | interface ReadableTTY extends Readable {
type WritableTTY (line 685) | interface WritableTTY extends Writable {
type Stdio (line 689) | interface Stdio {
type ProjectRollingReleaseStage (line 694) | interface ProjectRollingReleaseStage {
type ProjectRollingRelease (line 701) | interface ProjectRollingRelease {
type RollingReleaseState (line 707) | type RollingReleaseState = 'ACTIVE' | 'COMPLETE' | 'ABORTED';
type RollingReleaseAdvancementType (line 708) | type RollingReleaseAdvancementType = 'manual-approval' | 'automatic';
type RollingReleaseDeploymentSummary (line 710) | interface RollingReleaseDeploymentSummary {
type RollingReleaseStageSummary (line 720) | interface RollingReleaseStageSummary {
type RollingReleaseDocument (line 728) | interface RollingReleaseDocument {
FILE: packages/backends/src/cervel/index.ts
type ParseArgsOptionsConfig (line 18) | type ParseArgsOptionsConfig = NonNullable<ParseArgsConfig['options']>;
FILE: packages/backends/src/cervel/node-file-trace.ts
method resolve (line 39) | async resolve(id, parent, job, cjsResolve) {
method readFile (line 42) | async readFile(fsPath) {
FILE: packages/backends/src/cervel/plugin.ts
constant CJS_SHIM_PREFIX (line 8) | const CJS_SHIM_PREFIX = '\0cjs-shim:';
method handler (line 158) | async handler(id, importer, rOpts) {
method handler (line 244) | async handler(id) {
FILE: packages/backends/src/cervel/types.ts
type PathOptions (line 8) | type PathOptions = Pick<BuildOptions, 'workPath' | 'repoRootPath'>;
type CervelBuildOptions (line 13) | type CervelBuildOptions = PathOptions & {
type CervelServeOptions (line 22) | type CervelServeOptions = Pick<BuildOptions, 'workPath'> & {
type TypescriptOptions (line 29) | type TypescriptOptions = {
type RolldownOptions (line 38) | type RolldownOptions = PathOptions & {
type PluginContext (line 47) | type PluginContext = {
type PluginOptions (line 54) | type PluginOptions = PathOptions & {
type NodeFileTraceOptions (line 63) | type NodeFileTraceOptions = PathOptions & {
FILE: packages/backends/src/cervel/typescript.ts
function doTypeCheck (line 38) | async function doTypeCheck(
FILE: packages/backends/src/introspection/hono.ts
method constructor (line 10) | constructor(...args: any[]) {
function extractRoutes (line 27) | function extractRoutes() {
FILE: packages/backends/src/introspection/loaders/block-network.ts
method apply (line 6) | apply() {
FILE: packages/backends/src/introspection/loaders/hooks.ts
function resolve (line 4) | async function resolve(
function load (line 20) | async function load(
FILE: packages/backends/src/introspection/loaders/rolldown-hooks.ts
function findProjectRoot (line 9) | function findProjectRoot(startDir: string): string {
function resolve (line 29) | async function resolve(
function load (line 59) | async function load(
FILE: packages/backends/src/rolldown/hooks.ts
type ResolveContext (line 6) | interface ResolveContext {
type ResolveResult (line 12) | interface ResolveResult {
type LoadContext (line 18) | interface LoadContext {
type LoadResult (line 23) | interface LoadResult {
type NextResolve (line 29) | type NextResolve = (
type NextLoad (line 34) | type NextLoad = (url: string, context: LoadContext) => Promise<LoadResult>;
function resolve (line 51) | async function resolve(
function load (line 113) | async function load(
FILE: packages/backends/src/rolldown/index.ts
constant PLUGIN_NAME (line 13) | const PLUGIN_NAME = 'vercel:backends';
constant CJS_SHIM_PREFIX (line 14) | const CJS_SHIM_PREFIX = '\0cjs-shim:';
method handler (line 144) | async handler(id, importer, rOpts) {
method handler (line 239) | async handler(id) {
FILE: packages/backends/src/rolldown/introspection.ts
type IntrospectionResult (line 27) | interface IntrospectionResult {
FILE: packages/backends/src/rolldown/loaders/block-network.ts
method apply (line 6) | apply() {
FILE: packages/backends/src/rolldown/loaders/hooks.ts
function resolve (line 4) | async function resolve(
function load (line 20) | async function load(
FILE: packages/backends/src/rolldown/loaders/rolldown-hooks.ts
function findProjectRoot (line 9) | function findProjectRoot(startDir: string): string {
function resolve (line 29) | async function resolve(
function load (line 59) | async function load(
FILE: packages/backends/src/rolldown/nft.ts
method readFile (line 37) | async readFile(fsPath) {
FILE: packages/backends/src/rolldown/util.ts
constant BEGIN_INTROSPECTION_RESULT (line 2) | const BEGIN_INTROSPECTION_RESULT = '\n__VERCEL_INTROSPECTION_BEGIN__\n';
constant END_INTROSPECTION_RESULT (line 3) | const END_INTROSPECTION_RESULT = '\n__VERCEL_INTROSPECTION_END__\n';
FILE: packages/backends/src/service-vc-init.ts
type ModuleFormat (line 5) | type ModuleFormat = 'esm' | 'cjs';
function applyServiceVcInit (line 7) | async function applyServiceVcInit(args: {
function resolveShimFormat (line 37) | async function resolveShimFormat(args: {
function createEsmServiceVcInit (line 134) | function createEsmServiceVcInit(handlerImportPath: string): string {
function createCjsServiceVcInit (line 171) | function createCjsServiceVcInit(handlerImportPath: string): string {
FILE: packages/backends/src/typescript.ts
function doTypeCheck (line 42) | async function doTypeCheck(
FILE: packages/backends/src/utils.ts
function downloadInstallAndBundle (line 14) | async function downloadInstallAndBundle(
function maybeExecBuildCommand (line 68) | async function maybeExecBuildCommand(
FILE: packages/backends/test/fixtures/09-nestjs-with-build-command/src/app.controller.ts
class AppController (line 5) | class AppController {
method constructor (line 6) | constructor(private readonly appService: AppService) {}
method getHello (line 9) | getHello(): string {
method getHealth (line 14) | getHealth(): { status: string } {
FILE: packages/backends/test/fixtures/09-nestjs-with-build-command/src/app.module.ts
class AppModule (line 10) | class AppModule {}
FILE: packages/backends/test/fixtures/09-nestjs-with-build-command/src/app.service.ts
class AppService (line 4) | class AppService {
method getHello (line 5) | getHello(): string {
FILE: packages/backends/test/fixtures/09-nestjs-with-build-command/src/main.ts
function bootstrap (line 4) | async function bootstrap() {
FILE: packages/backends/test/fixtures/10-nestjs-no-build-command/src/app.controller.ts
class AppController (line 5) | class AppController {
method constructor (line 6) | constructor(private readonly appService: AppService) {}
method getHello (line 9) | getHello(): string {
method getUser (line 14) | getUser(@Param('id') id: string): { id: string; name: string } {
FILE: packages/backends/test/fixtures/10-nestjs-no-build-command/src/app.module.ts
class AppModule (line 10) | class AppModule {}
FILE: packages/backends/test/fixtures/10-nestjs-no-build-command/src/app.service.ts
class AppService (line 4) | class AppService {
method getHello (line 5) | getHello(): string {
FILE: packages/backends/test/fixtures/10-nestjs-no-build-command/src/main.ts
function bootstrap (line 4) | async function bootstrap() {
FILE: packages/backends/test/fixtures/17-turborepo-hono-monorepo/packages/shared-types/src/index.ts
type User (line 1) | interface User {
type ApiResponse (line 7) | type ApiResponse<T> = {
constant DEFAULT_PAGE_SIZE (line 12) | const DEFAULT_PAGE_SIZE = 20;
FILE: packages/backends/test/unit.test.ts
type VercelJson (line 34) | interface VercelJson {
constant USE_DEBUG_DIR (line 81) | const USE_DEBUG_DIR = false;
constant DEBUG_DIR (line 85) | const DEBUG_DIR = join(__dirname, 'debug');
constant SERVICE_ROUTE_PREFIX_PATCH (line 86) | const SERVICE_ROUTE_PREFIX_PATCH = Symbol.for(
FILE: packages/build-utils/src/clone-env.ts
function cloneEnv (line 13) | function cloneEnv(...envs: (Env | undefined)[]): Env {
FILE: packages/build-utils/src/collect-build-result/get-build-result-metadata.ts
type BuildResultMetadata (line 11) | interface BuildResultMetadata {
function getBuildResultMetadata (line 21) | function getBuildResultMetadata(params: {
type MiddlewareMeta (line 49) | type MiddlewareMeta =
function getMiddlewareMetadata (line 66) | function getMiddlewareMetadata(params: {
function toMiddlewareTuple (line 87) | function toMiddlewareTuple(params: {
FILE: packages/build-utils/src/collect-build-result/get-lambda-by-output-path.ts
function getLambdaByOutputPath (line 11) | function getLambdaByOutputPath(params: {
FILE: packages/build-utils/src/collect-build-result/get-prerender-chain.ts
function getPrerenderChain (line 9) | function getPrerenderChain(prerender: Prerender): Chain | undefined {
FILE: packages/build-utils/src/collect-build-result/is-route-middleware.ts
function isRouteMiddleware (line 3) | function isRouteMiddleware(
FILE: packages/build-utils/src/collect-build-result/stream-with-extended-payload.ts
type ExtendedBodyData (line 3) | interface ExtendedBodyData {
function streamWithExtendedPayload (line 8) | function streamWithExtendedPayload(
class MultipartContentStream (line 15) | class MultipartContentStream extends Readable {
method constructor (line 16) | constructor(stream: NodeJS.ReadableStream, data: ExtendedBodyData) {
method _read (line 35) | _read(): void {
FILE: packages/build-utils/src/debug.ts
function debug (line 3) | function debug(message: string, ...additional: any[]) {
FILE: packages/build-utils/src/edge-function.ts
class EdgeFunction (line 6) | class EdgeFunction {
method constructor (line 47) | constructor(params: Omit<EdgeFunction, 'type'>) {
FILE: packages/build-utils/src/errors.ts
class NowBuildError (line 6) | class NowBuildError extends Error {
method constructor (line 12) | constructor({ message, code, link, action }: Props) {
type Props (line 20) | interface Props {
function getPrettyError (line 42) | function getPrettyError(obj: {
function getTopLevelPropertyName (line 87) | function getTopLevelPropertyName(dataPath?: string): string {
function getSuggestion (line 110) | function getSuggestion(topLevelProp: string, additionalProperty: string) {
FILE: packages/build-utils/src/file-blob.ts
type FileBlobOptions (line 5) | interface FileBlobOptions {
type FromStreamOptions (line 11) | interface FromStreamOptions {
class FileBlob (line 17) | class FileBlob implements FileBase {
method constructor (line 23) | constructor({ mode = 0o100644, contentType, data }: FileBlobOptions) {
method fromStream (line 32) | static async fromStream({
method toStreamAsync (line 55) | async toStreamAsync(): Promise<NodeJS.ReadableStream> {
method toStream (line 59) | toStream(): NodeJS.ReadableStream {
FILE: packages/build-utils/src/file-fs-ref.ts
type FileFsRefOptions (line 10) | interface FileFsRefOptions {
type FromStreamOptions (line 17) | interface FromStreamOptions {
class FileFsRef (line 24) | class FileFsRef implements FileBase {
method constructor (line 31) | constructor({
method fromFsPath (line 46) | static async fromFsPath({
method fromStream (line 62) | static async fromStream({
method toStreamAsync (line 86) | async toStreamAsync(): Promise<NodeJS.ReadableStream> {
method toStream (line 95) | toStream(): NodeJS.ReadableStream {
FILE: packages/build-utils/src/file-ref.ts
type FileRefOptions (line 8) | interface FileRefOptions {
class BailableError (line 17) | class BailableError extends Error {
method constructor (line 20) | constructor(...args: string[]) {
class FileRef (line 26) | class FileRef implements FileBase {
method constructor (line 33) | constructor({
method getNowFilesCloudfrontUrl (line 54) | private getNowFilesCloudfrontUrl(): string {
method getNowEphemeralFilesS3Url (line 66) | private getNowEphemeralFilesS3Url(): string {
method getNowFilesS3Url (line 78) | private getNowFilesS3Url(): string {
method toStreamAsync (line 85) | async toStreamAsync(): Promise<NodeJS.ReadableStream> {
method toStream (line 127) | toStream(): NodeJS.ReadableStream {
function getEnvAsUrlOrThrow (line 151) | function getEnvAsUrlOrThrow(
FILE: packages/build-utils/src/finalize-lambda.ts
type TraceFn (line 15) | type TraceFn = <T>(name: string, fn: () => Promise<T>) => Promise<T>;
type FinalizeLambdaParams (line 19) | interface FinalizeLambdaParams {
type FinalizeLambdaResult (line 31) | interface FinalizeLambdaResult {
function finalizeLambda (line 53) | async function finalizeLambda(
FILE: packages/build-utils/src/framework-helpers.ts
constant BACKEND_FRAMEWORKS (line 6) | const BACKEND_FRAMEWORKS = [
constant PYTHON_FRAMEWORKS (line 16) | const PYTHON_FRAMEWORKS = [
constant RUNTIME_FRAMEWORKS (line 23) | const RUNTIME_FRAMEWORKS = ['python'] as const;
constant BACKEND_BUILDERS (line 29) | const BACKEND_BUILDERS = [
constant UNIFIED_BACKEND_BUILDER (line 42) | const UNIFIED_BACKEND_BUILDER = '@vercel/backends' as const;
type BackendFramework (line 44) | type BackendFramework = (typeof BACKEND_FRAMEWORKS)[number];
type PythonFramework (line 45) | type PythonFramework = (typeof PYTHON_FRAMEWORKS)[number];
function isBackendFramework (line 52) | function isBackendFramework(
function isNodeBackendFramework (line 59) | function isNodeBackendFramework(
function isPythonFramework (line 66) | function isPythonFramework(
function isExperimentalBackendsWithoutIntrospectionEnabled (line 74) | function isExperimentalBackendsWithoutIntrospectionEnabled(): boolean {
function isExperimentalBackendsEnabled (line 78) | function isExperimentalBackendsEnabled(): boolean {
function isBackendBuilder (line 88) | function isBackendBuilder(builder: Builder | null | undefined): boolean {
function shouldUseExperimentalBackends (line 98) | function shouldUseExperimentalBackends(
FILE: packages/build-utils/src/fs/download.ts
type DownloadedFiles (line 8) | interface DownloadedFiles {
constant S_IFDIR (line 12) | const S_IFDIR = 16384;
constant S_IFLNK (line 13) | const S_IFLNK = 40960;
constant S_IFMT (line 14) | const S_IFMT = 61440;
function isDirectory (line 16) | function isDirectory(mode: number): boolean {
function isSymbolicLink (line 20) | function isSymbolicLink(mode: number): boolean {
function prepareSymlinkTarget (line 24) | async function prepareSymlinkTarget(
function downloadFile (line 48) | async function downloadFile(
function removeFile (line 90) | async function removeFile(basePath: string, fileMatched: string) {
function download (line 95) | async function download(
FILE: packages/build-utils/src/fs/get-writable-directory.ts
function getWritableDirectory (line 5) | async function getWritableDirectory() {
FILE: packages/build-utils/src/fs/glob.ts
type GlobOptions (line 9) | interface GlobOptions {
function glob (line 20) | async function glob(
FILE: packages/build-utils/src/fs/node-version.ts
type NodeVersionMajor (line 7) | type NodeVersionMajor = ReturnType<typeof getOptions>[number]['major'];
constant NODE_VERSIONS (line 11) | const NODE_VERSIONS: NodeVersion[] = [
constant BUN_VERSIONS (line 65) | const BUN_VERSIONS: BunVersion[] = [
function getNodeVersionByMajor (line 73) | function getNodeVersionByMajor(major: number): NodeVersion | undefined {
function getOptions (line 77) | function getOptions(): NodeVersion[] {
function isNodeVersionAvailable (line 81) | function isNodeVersionAvailable(version: NodeVersion): boolean {
function getAvailableNodeVersions (line 86) | function getAvailableNodeVersions(): NodeVersionMajor[] {
function getHint (line 96) | function getHint(isAuto = false, availableVersions?: NodeVersionMajor[]) {
function getLatestNodeVersion (line 103) | function getLatestNodeVersion(availableVersions?: NodeVersionMajor[]) {
function getDiscontinuedNodeVersions (line 121) | function getDiscontinuedNodeVersions(): NodeVersion[] {
function getSupportedNodeVersion (line 127) | async function getSupportedNodeVersion(
function getSupportedBunVersion (line 199) | function getSupportedBunVersion(engineRange: string): BunVersion {
function isBunVersion (line 220) | function isBunVersion(version: Version) {
FILE: packages/build-utils/src/fs/normalize-path.ts
function normalizePath (line 6) | function normalizePath(p: string): string {
FILE: packages/build-utils/src/fs/read-config-file.ts
function readFileOrNull (line 8) | async function readFileOrNull(file: string) {
function readConfigFile (line 24) | async function readConfigFile<T>(
function getPackageJson (line 55) | async function getPackageJson(dir: string): Promise<PackageJson> {
FILE: packages/build-utils/src/fs/rename.ts
type Delegate (line 2) | type Delegate = (name: string) => string;
function rename (line 11) | function rename(files: Files, delegate: Delegate): Files {
FILE: packages/build-utils/src/fs/run-user-scripts.ts
constant NO_OVERRIDE (line 33) | const NO_OVERRIDE = {
type CliType (line 39) | type CliType = 'yarn' | 'npm' | 'pnpm' | 'bun' | 'vlt';
type FindPackageJsonResult (line 41) | interface FindPackageJsonResult {
type ScanParentDirsResult (line 53) | interface ScanParentDirsResult extends FindPackageJsonResult {
type TraverseUpDirectoriesProps (line 81) | interface TraverseUpDirectoriesProps {
type WalkParentDirsProps (line 92) | interface WalkParentDirsProps
type WalkParentDirsMultiProps (line 100) | interface WalkParentDirsMultiProps
type SpawnOptionsExtended (line 108) | interface SpawnOptionsExtended extends SpawnOptions {
type NpmInstallOutput (line 134) | interface NpmInstallOutput {
function spawnAsync (line 145) | function spawnAsync(
function spawnCommand (line 195) | function spawnCommand(command: string, options: SpawnOptions = {}) {
function execCommand (line 204) | async function execCommand(command: string, options: SpawnOptions = {}) {
function readProjectRootInfo (line 230) | async function readProjectRootInfo({
function getNodeBinPath (line 258) | async function getNodeBinPath({
function getNodeBinPaths (line 268) | function getNodeBinPaths({
function chmodPlusX (line 277) | async function chmodPlusX(fsPath: string) {
function runShellScript (line 285) | async function runShellScript(
function getSpawnOptions (line 307) | function getSpawnOptions(
function getNodeVersion (line 342) | async function getNodeVersion(
function findPackageJson (line 401) | async function findPackageJson(
function scanParentDirs (line 431) | async function scanParentDirs(
function parseYarnLockVersion (line 541) | function parseYarnLockVersion(yarnLock: string) {
function checkTurboSupportsCorepack (line 554) | async function checkTurboSupportsCorepack(
function turboVersionSpecifierSupportsCorepack (line 599) | function turboVersionSpecifierSupportsCorepack(
function detectPackageManagerNameWithoutLockfile (line 617) | function detectPackageManagerNameWithoutLockfile(
function usingCorepack (line 648) | function usingCorepack(
function walkParentDirs (line 668) | async function walkParentDirs({
function walkParentDirsMulti (line 687) | async function walkParentDirsMulti({
function isSet (line 722) | function isSet<T>(v: any): v is Set<T> {
function getInstallCommandForPackageManager (line 726) | function getInstallCommandForPackageManager(
function runInstallCommand (line 766) | async function runInstallCommand({
function initializeSet (line 791) | function initializeSet(set: unknown) {
function checkIfAlreadyInstalled (line 798) | function checkIfAlreadyInstalled(
function resetCustomInstallCommandSet (line 820) | function resetCustomInstallCommandSet(): void {
function runNpmInstall (line 824) | async function runNpmInstall(
function getEnvForPackageManager (line 944) | function getEnvForPackageManager({
type DetectedPnpmVersion (line 1041) | type DetectedPnpmVersion =
constant PNPM_10_PREFERRED_AT (line 1049) | const PNPM_10_PREFERRED_AT = new Date('2025-02-27T20:00:00Z');
function detectPnpmVersion (line 1051) | function detectPnpmVersion(
function detectYarnVersion (line 1076) | function detectYarnVersion(lockfileVersion: number | undefined) {
function validLockfileForPackageManager (line 1091) | function validLockfileForPackageManager(
function getPathOverrideForPackageManager (line 1132) | function getPathOverrideForPackageManager({
function checkEnginesPnpmAgainstDetected (line 1197) | function checkEnginesPnpmAgainstDetected(
function validateCorepackPackageManager (line 1218) | function validateCorepackPackageManager(
function validateVersionSpecifier (line 1268) | function validateVersionSpecifier(version?: string) {
function detectPackageManager (line 1302) | function detectPackageManager(
function getPathForPackageManager (line 1386) | function getPathForPackageManager({
function runCustomInstallCommand (line 1451) | async function runCustomInstallCommand({
function runPackageJsonScript (line 1512) | async function runPackageJsonScript(
function runBundleInstall (line 1569) | async function runBundleInstall(
type PipInstallResult (line 1586) | type PipInstallResult =
function runPipInstall (line 1597) | async function runPipInstall(
function getScriptName (line 1627) | function getScriptName(
FILE: packages/build-utils/src/fs/stream-to-buffer.ts
function streamToBuffer (line 3) | function streamToBuffer(
function streamToBufferChunks (line 36) | async function streamToBufferChunks(
FILE: packages/build-utils/src/fs/stream-to-digest-async.ts
type FileDigest (line 3) | interface FileDigest {
function streamToDigestAsync (line 9) | async function streamToDigestAsync(
function sha256 (line 42) | function sha256(value: any) {
function md5 (line 46) | function md5(value: Buffer) {
FILE: packages/build-utils/src/generate-node-builder-functions.ts
function generateNodeBuilderFunctions (line 9) | function generateNodeBuilderFunctions(
FILE: packages/build-utils/src/get-ignore-filter.ts
type CodedError (line 5) | interface CodedError extends Error {
function isCodedError (line 9) | function isCodedError(error: unknown): error is CodedError {
function clearRelative (line 17) | function clearRelative(s: string) {
FILE: packages/build-utils/src/get-installed-package-version.ts
function getInstalledPackageVersion (line 3) | async function getInstalledPackageVersion(
FILE: packages/build-utils/src/get-prefixed-env-vars.ts
type Envs (line 1) | type Envs = { [key: string]: string | undefined };
function getPrefixedEnvVars (line 9) | function getPrefixedEnvVars({
FILE: packages/build-utils/src/get-service-url-env-vars.ts
type Envs (line 3) | type Envs = { [key: string]: string | undefined };
type FrameworkInfo (line 5) | interface FrameworkInfo {
type GetServiceUrlEnvVarsOptions (line 10) | interface GetServiceUrlEnvVarsOptions {
function serviceNameToEnvVar (line 23) | function serviceNameToEnvVar(name: string): string {
function computeServiceUrl (line 27) | function computeServiceUrl(
function getFrameworkEnvPrefix (line 50) | function getFrameworkEnvPrefix(
function getServiceUrlEnvVars (line 76) | function getServiceUrlEnvVars(
FILE: packages/build-utils/src/hard-link-dir.ts
function hardLinkDir (line 7) | async function hardLinkDir(src: string, destDirs: string[]) {
function linkOrCopyFile (line 49) | async function linkOrCopyFile(srcFile: string, destFile: string) {
function linkOrCopy (line 68) | async function linkOrCopy(srcFile: string, destFile: string) {
FILE: packages/build-utils/src/lambda.ts
function sanitizeConsumerName (line 36) | function sanitizeConsumerName(functionPath: string): string {
type LambdaOptions (line 55) | type LambdaOptions = LambdaOptionsWithFiles | LambdaOptionsWithZipBuffer;
type LambdaExecutableRuntimeLanguages (line 57) | type LambdaExecutableRuntimeLanguages = 'rust' | 'go';
type LambdaArchitecture (line 58) | type LambdaArchitecture = 'x86_64' | 'arm64';
type LambdaOptionsBase (line 60) | interface LambdaOptionsBase {
type LambdaOptionsWithFiles (line 108) | interface LambdaOptionsWithFiles extends LambdaOptionsBase {
type LambdaOptionsWithZipBuffer (line 116) | interface LambdaOptionsWithZipBuffer extends LambdaOptionsBase {
type GetLambdaOptionsFromFunctionOptions (line 123) | interface GetLambdaOptionsFromFunctionOptions {
function getDefaultLambdaArchitecture (line 128) | function getDefaultLambdaArchitecture(
class Lambda (line 146) | class Lambda {
method constructor (line 205) | constructor(opts: LambdaOptions) {
method createZip (line 458) | async createZip(): Promise<Buffer> {
method experimentalResponseStreaming (line 477) | get experimentalResponseStreaming(): boolean | undefined {
method experimentalResponseStreaming (line 480) | set experimentalResponseStreaming(v: boolean | undefined) {
function createLambda (line 491) | async function createLambda(opts: LambdaOptions): Promise<Lambda> {
function createZip (line 500) | async function createZip(files: Files): Promise<Buffer> {
function getLambdaOptionsFromFunction (line 536) | async function getLambdaOptionsFromFunction({
FILE: packages/build-utils/src/nodejs-lambda.ts
type NodejsLambdaOptions (line 3) | interface NodejsLambdaOptions extends LambdaOptionsWithFiles {
class NodejsLambda (line 10) | class NodejsLambda extends Lambda {
method constructor (line 17) | constructor({
FILE: packages/build-utils/src/os.ts
function getOsRelease (line 4) | async function getOsRelease() {
function parseOsRelease (line 16) | async function parseOsRelease(data: string) {
function getProvidedRuntime (line 33) | async function getProvidedRuntime() {
FILE: packages/build-utils/src/prerender.ts
type PrerenderOptions (line 4) | interface PrerenderOptions {
class Prerender (line 24) | class Prerender {
method constructor (line 53) | constructor({
FILE: packages/build-utils/src/process-serverless/get-encrypted-env-file.ts
type EncryptedEnvFile (line 7) | type EncryptedEnvFile = [string, FileBlob];
function getEncryptedEnv (line 13) | function getEncryptedEnv(
FILE: packages/build-utils/src/process-serverless/get-lambda-environment.ts
type LambdaLike (line 6) | interface LambdaLike {
function getLambdaEnvironment (line 21) | function getLambdaEnvironment(
FILE: packages/build-utils/src/process-serverless/get-lambda-preload-scripts.ts
type BytecodeCachingOptions (line 1) | interface BytecodeCachingOptions {
type LambdaLike (line 8) | interface LambdaLike {
function getLambdaPreloadScripts (line 19) | function getLambdaPreloadScripts(
FILE: packages/build-utils/src/process-serverless/get-lambda-supports-streaming.ts
type LambdaLike (line 5) | interface LambdaLike {
type SupportsStreamingResult (line 13) | interface SupportsStreamingResult {
function getLambdaSupportsStreaming (line 24) | async function getLambdaSupportsStreaming(
constant HTTP_METHODS (line 44) | const HTTP_METHODS = [
function lambdaShouldStream (line 63) | async function lambdaShouldStream(
function getFileExports (line 89) | async function getFileExports(
function streamToBuffer (line 109) | function streamToBuffer(stream: NodeJS.ReadableStream): Promise<Buffer> {
FILE: packages/build-utils/src/python.ts
function isPythonEntrypoint (line 12) | async function isPythonEntrypoint(
FILE: packages/build-utils/src/should-serve.ts
function hasProp (line 25) | function hasProp(obj: { [path: string]: FileFsRef }, key: string): boole...
FILE: packages/build-utils/src/trace/constants.ts
constant BUILDER_INSTALLER_STEP (line 1) | const BUILDER_INSTALLER_STEP = 'vc.builder.install';
constant BUILDER_COMPILE_STEP (line 3) | const BUILDER_COMPILE_STEP = 'vc.builder.build';
FILE: packages/build-utils/src/trace/trace.ts
constant NUM_OF_MICROSEC_IN_NANOSEC (line 3) | const NUM_OF_MICROSEC_IN_NANOSEC = BigInt('1000');
type SpanId (line 5) | type SpanId = string;
type TraceEvent (line 7) | type TraceEvent = {
type Reporter (line 17) | type Reporter = {
type Attributes (line 21) | interface Attributes {
function mapUndefinedAttributes (line 25) | function mapUndefinedAttributes(attrs: Attributes | undefined): {
class Span (line 35) | class Span {
method constructor (line 48) | constructor({
method stop (line 76) | stop() {
method setAttributes (line 103) | setAttributes(attrs: Attributes) {
method child (line 107) | child(name: string, attrs?: Attributes) {
method trace (line 116) | async trace<T>(fn: (span: Span) => T | Promise<T>): Promise<T> {
FILE: packages/build-utils/src/types.ts
type Env (line 10) | interface Env {
type File (line 14) | type File = FileRef | FileFsRef | FileBlob;
type FileBase (line 15) | interface FileBase {
type Files (line 23) | interface Files {
type Config (line 27) | interface Config {
type Meta (line 53) | interface Meta {
type BuildOptions (line 65) | interface BuildOptions {
type PrepareCacheOptions (line 135) | interface PrepareCacheOptions {
type ShouldServeOptions (line 169) | interface ShouldServeOptions {
type StartDevServerOptions (line 211) | type StartDevServerOptions = BuildOptions & {
type StartDevServerSuccess (line 230) | interface StartDevServerSuccess {
type StartDevServerResult (line 254) | type StartDevServerResult = StartDevServerSuccess | null;
type Author (line 264) | interface Author {
type BinMap (line 273) | interface BinMap {
type Bugs (line 280) | interface Bugs {
type Config (line 285) | interface Config {
type DependencyMap (line 293) | interface DependencyMap {
type Directories (line 300) | interface Directories {
type Engines (line 308) | interface Engines {
type PublishConfig (line 314) | interface PublishConfig {
type Repository (line 321) | interface Repository {
type ScriptsMap (line 326) | interface ScriptsMap {
type PackageJson (line 331) | interface PackageJson {
type ConstructorVersion (line 364) | interface ConstructorVersion {
type BaseVersion (line 376) | interface BaseVersion extends ConstructorVersion {
class Version (line 380) | class Version implements BaseVersion {
method constructor (line 386) | constructor(version: ConstructorVersion) {
method state (line 393) | get state() {
method formattedDate (line 401) | get formattedDate() {
class NodeVersion (line 408) | class NodeVersion extends Version {}
class BunVersion (line 410) | class BunVersion extends Version {}
type Builder (line 412) | interface Builder {
type MaxDuration (line 418) | type MaxDuration = number | 'max';
type BuilderFunctions (line 420) | interface BuilderFunctions {
type ProjectSettings (line 435) | interface ProjectSettings {
type BuilderVX (line 455) | interface BuilderVX {
type BuilderV2 (line 464) | interface BuilderV2 {
type BuilderV3 (line 472) | interface BuilderV3 {
type ImageFormat (line 481) | type ImageFormat = 'image/avif' | 'image/webp';
type ImageContentDispositionType (line 483) | type ImageContentDispositionType = 'inline' | 'attachment';
type RemotePattern (line 485) | type RemotePattern = {
type LocalPattern (line 518) | interface LocalPattern {
type Images (line 533) | interface Images {
type BuildResultBuildOutput (line 550) | interface BuildResultBuildOutput {
type Cron (line 564) | interface Cron {
type Service (line 569) | interface Service {
function getWorkerTopics (line 598) | function getWorkerTopics(config: {
type FunctionFramework (line 607) | interface FunctionFramework {
type BuildResultV2Typical (line 616) | interface BuildResultV2Typical {
type BuildResultVX (line 641) | type BuildResultVX =
type BuildResultV2 (line 645) | type BuildResultV2 = BuildResultV2Typical | BuildResultBuildOutput;
type BuildResultV3 (line 647) | interface BuildResultV3 {
type BuildVX (line 653) | type BuildVX = (options: BuildOptions) => Promise<BuildResultVX>;
type BuildV2 (line 654) | type BuildV2 = (options: BuildOptions) => Promise<BuildResultV2>;
type BuildV3 (line 655) | type BuildV3 = (options: BuildOptions) => Promise<BuildResultV3>;
type PrepareCache (line 656) | type PrepareCache = (options: PrepareCacheOptions) => Promise<Files>;
type Diagnostics (line 657) | type Diagnostics = (options: BuildOptions) => Promise<Files>;
type ShouldServe (line 658) | type ShouldServe = (
type StartDevServer (line 661) | type StartDevServer = (
type FlagJSONArray (line 669) | type FlagJSONArray = ReadonlyArray<FlagJSONValue>;
type FlagJSONValue (line 671) | type FlagJSONValue =
type FlagOption (line 679) | type FlagOption = {
type FlagDefinition (line 684) | interface FlagDefinition {
type FlagDefinitions (line 690) | type FlagDefinitions = Record<string, FlagDefinition>;
type Chain (line 692) | interface Chain {
type TriggerEventBase (line 705) | interface TriggerEventBase {
type TriggerEventInputV1 (line 742) | interface TriggerEventInputV1 extends TriggerEventBase {
type TriggerEventInputV2 (line 755) | interface TriggerEventInputV2 extends TriggerEventBase {
type TriggerEventInput (line 764) | type TriggerEventInput = TriggerEventInputV1 | TriggerEventInputV2;
type TriggerEvent (line 770) | interface TriggerEvent extends TriggerEventBase {
type ServiceRuntime (line 778) | type ServiceRuntime = 'node' | 'python' | 'go' | 'rust' | 'ruby';
type ServiceType (line 780) | type ServiceType = 'web' | 'cron' | 'worker';
type ExperimentalServiceConfig (line 786) | interface ExperimentalServiceConfig {
type ExperimentalServices (line 834) | type ExperimentalServices = Record<string, ExperimentalServiceConfig>;
type ExperimentalServiceGroups (line 845) | type ExperimentalServiceGroups = Record<string, string[]>;
FILE: packages/build-utils/src/validate-lambda-size.ts
constant MAX_LAMBDA_SIZE (line 9) | const MAX_LAMBDA_SIZE: number = bytes('300mb');
constant MAX_LAMBDA_UNCOMPRESSED_SIZE (line 14) | const MAX_LAMBDA_UNCOMPRESSED_SIZE = 250 * 1024 * 1024;
class FunctionSizeError (line 19) | class FunctionSizeError extends NowBuildError {
method constructor (line 23) | constructor(outputPath: string, size: number) {
function validateLambdaSize (line 43) | function validateLambdaSize(
function validateUncompressedLambdaSize (line 59) | function validateUncompressedLambdaSize(
constant ENV_WRAPPER_SUPPORTED_FAMILIES (line 80) | const ENV_WRAPPER_SUPPORTED_FAMILIES = [
type LambdaLikeForEnvWrapper (line 90) | interface LambdaLikeForEnvWrapper {
function validateEnvWrapperSupport (line 102) | function validateEnvWrapperSupport(
FILE: packages/build-utils/src/validate-npmrc.ts
function validateNpmrc (line 15) | async function validateNpmrc(cwd: string): Promise<void> {
FILE: packages/build-utils/test/fixtures/03-zero-config-angular/e2e/protractor.conf.js
method onPrepare (line 24) | onPrepare() {
FILE: packages/build-utils/test/fixtures/03-zero-config-angular/e2e/src/app.po.ts
class AppPage (line 3) | class AppPage {
method navigateTo (line 4) | navigateTo() {
method getTitleText (line 8) | getTitleText() {
FILE: packages/build-utils/test/fixtures/03-zero-config-angular/src/app/app.component.ts
class AppComponent (line 8) | class AppComponent {
FILE: packages/build-utils/test/fixtures/03-zero-config-angular/src/app/app.module.ts
class AppModule (line 12) | class AppModule {}
FILE: packages/build-utils/test/fixtures/05-zero-config-gatsby/src/components/seo.js
function SEO (line 13) | function SEO({ description, lang, meta, title }) {
FILE: packages/build-utils/test/fixtures/16-node-env-install/build.js
function checkPkgOrThrow (line 1) | function checkPkgOrThrow(pkgname) {
FILE: packages/build-utils/test/fixtures/18-install-only-production/npm/build.js
function found (line 1) | function found(pkgname) {
FILE: packages/build-utils/test/fixtures/18-install-only-production/yarn/build.js
function found (line 1) | function found(pkgname) {
FILE: packages/build-utils/test/fixtures/19-yarn-v2/.yarn/releases/yarn-berry.js
function n (line 2) | function n(r){if(t[r])return t[r].exports;var A=t[r]={i:r,l:!1,exports:{...
function w (line 2) | function w(e){const t=s.npath.toPortablePath(A.default.tmpdir()),n=Math....
method constructor (line 10) | constructor(e,t){this.allOptionNames=[],this.arity={leading:[],trailin...
method addPath (line 10) | addPath(e){this.paths.push(e)}
method setArity (line 10) | setArity({leading:e=this.arity.leading,trailing:t=this.arity.trailing,...
method addPositional (line 10) | addPositional({name:e="arg",required:n=!0}={}){if(!n&&this.arity.extra...
method addRest (line 10) | addRest({name:e="arg",required:n=0}={}){if(this.arity.extra===t.NoLimi...
method addProxy (line 10) | addProxy(){this.addRest(),this.arity.proxy=!0}
method addOption (line 10) | addOption({names:e,arity:t=0,hidden:n=!1}){this.allOptionNames.push(.....
method setContext (line 10) | setContext(e){this.context=e}
method usage (line 10) | usage({detailed:e=!0}={}){const n=[this.cliOpts.binaryName];if(this.pa...
method compile (line 10) | compile(){if(void 0===this.context)throw new Error("Assertion failed: ...
method registerOptions (line 10) | registerOptions(e,n){E(e,n,["isOption","--"],n,"inhibateOptions"),E(e,...
function v (line 2) | function v(e,t){const n=new Set(["accessSync","appendFileSync","createRe...
method constructor (line 10) | constructor({binaryName:e="..."}={}){this.builders=[],this.opts={binar...
method build (line 10) | static build(e,t={}){return new v(t).commands(e).compile()}
method getBuilderByIndex (line 10) | getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Erro...
method commands (line 10) | commands(e){for(const t of e)t(this.command());return this}
method command (line 10) | command(){const e=new w(this.builders.length,this.opts);return this.bu...
method compile (line 10) | compile(){const e=[],n=[];for(const t of this.builders){const{machine:...
function S (line 2) | function S(){if(D)return;D=!0;const e=()=>{process.off("exit",e);for(con...
method detachTemp (line 2) | detachTemp(e){b.delete(e)}
method mktempSync (line 2) | mktempSync(e){for(S();;){const t=w("xfs-");try{this.mkdirSync(t)}catch(e...
method mktempPromise (line 2) | async mktempPromise(e){for(S();;){const t=w("xfs-");try{await this.mkdir...
function n (line 2) | function n(){this.constructor=e}
function t (line 2) | function t(n,r,A){var i=e.call(this)||this;switch(i.syncErrorValue=null,...
function t (line 2) | function t(t,n,r,A){var s,a=e.call(this)||this;a._parentSubscriber=t;var...
function e (line 2) | function e(e){this._isScalar=!1,e&&(this._subscribe=e)}
function c (line 2) | function c(e){if(e||(e=s.config.Promise||Promise),!e)throw new Error("no...
method constructor (line 2) | constructor(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerel...
method format (line 2) | format(){return this.version=`${this.major}.${this.minor}.${this.patch...
method toString (line 2) | toString(){return this.version}
method compare (line 2) | compare(e){if(r("SemVer.compare",this.version,this.options,e),!(e inst...
method compareMain (line 2) | compareMain(e){return e instanceof c||(e=new c(e,this.options)),a(this...
method comparePre (line 2) | comparePre(e){if(e instanceof c||(e=new c(e,this.options)),this.prerel...
method compareBuild (line 2) | compareBuild(e){e instanceof c||(e=new c(e,this.options));let t=0;do{c...
method inc (line 2) | inc(e,t){switch(e){case"premajor":this.prerelease.length=0,this.patch=...
method constructor (line 16) | constructor(e,t){super("zlib: "+e),this.errno=t,this.code=u.get(t)}
method name (line 16) | get name(){return"ZlibError"}
method constructor (line 16) | constructor({baseFs:e=new r.NodeFS}={}){super(i.ppath),this.baseFs=e}
method makeVirtualPath (line 16) | static makeVirtualPath(e,t,n){if("$$virtual"!==i.ppath.basename(e))thr...
method resolveVirtual (line 16) | static resolveVirtual(e){const t=e.match(s);if(!t||!t[3]&&t[5])return ...
method getExtractHint (line 16) | getExtractHint(e){return this.baseFs.getExtractHint(e)}
method getRealPath (line 16) | getRealPath(){return this.baseFs.getRealPath()}
method realpathSync (line 16) | realpathSync(e){const t=e.match(s);if(!t)return this.baseFs.realpathSy...
method realpathPromise (line 16) | async realpathPromise(e){const t=e.match(s);if(!t)return await this.ba...
method mapToBase (line 16) | mapToBase(e){return c.resolveVirtual(e)}
method mapFromBase (line 16) | mapFromBase(e){return e}
method constructor (line 16) | constructor({libzip:e,baseFs:t=new i.NodeFS,filter:n=null,maxOpenFiles...
method openPromise (line 16) | static async openPromise(e,t){const n=new c(t);try{return await e(n)}f...
method getExtractHint (line 16) | getExtractHint(e){return this.baseFs.getExtractHint(e)}
method getRealPath (line 16) | getRealPath(){return this.baseFs.getRealPath()}
method saveAndClose (line 16) | saveAndClose(){if(this.zipInstances)for(const[e,t]of this.zipInstances...
method discardAndClose (line 16) | discardAndClose(){if(this.zipInstances)for(const[e,t]of this.zipInstan...
method remapFd (line 16) | remapFd(e,t){const n=this.nextFd++|a;return this.fdMap.set(n,[e,t]),n}
method openPromise (line 16) | async openPromise(e,t,n){return await this.makeCallPromise(e,async()=>...
method openSync (line 16) | openSync(e,t,n){return this.makeCallSync(e,()=>this.baseFs.openSync(e,...
method readPromise (line 16) | async readPromise(e,t,n,r,A){if(0==(e&a))return await this.baseFs.read...
method readSync (line 16) | readSync(e,t,n,r,A){if(0==(e&a))return this.baseFs.readSync(e,t,n,r,A)...
method writePromise (line 16) | async writePromise(e,t,n,r,A){if(0==(e&a))return"string"==typeof t?awa...
method writeSync (line 16) | writeSync(e,t,n,r,A){if(0==(e&a))return"string"==typeof t?this.baseFs....
method closePromise (line 16) | async closePromise(e){if(0==(e&a))return await this.baseFs.closePromis...
method closeSync (line 16) | closeSync(e){if(0==(e&a))return this.baseFs.closeSync(e);const t=this....
method createReadStream (line 16) | createReadStream(e,t){return null===e?this.baseFs.createReadStream(e,t...
method createWriteStream (line 16) | createWriteStream(e,t){return null===e?this.baseFs.createWriteStream(e...
method realpathPromise (line 16) | async realpathPromise(e){return await this.makeCallPromise(e,async()=>...
method realpathSync (line 16) | realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSyn...
method existsPromise (line 16) | async existsPromise(e){return await this.makeCallPromise(e,async()=>aw...
method existsSync (line 16) | existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e)...
method accessPromise (line 16) | async accessPromise(e,t){return await this.makeCallPromise(e,async()=>...
method accessSync (line 16) | accessSync(e,t){return this.makeCallSync(e,()=>this.baseFs.accessSync(...
method statPromise (line 16) | async statPromise(e){return await this.makeCallPromise(e,async()=>awai...
method statSync (line 16) | statSync(e){return this.makeCallSync(e,()=>this.baseFs.statSync(e),(e,...
method lstatPromise (line 16) | async lstatPromise(e){return await this.makeCallPromise(e,async()=>awa...
method lstatSync (line 16) | lstatSync(e){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e),(...
method chmodPromise (line 16) | async chmodPromise(e,t){return await this.makeCallPromise(e,async()=>a...
method chmodSync (line 16) | chmodSync(e,t){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,...
method renamePromise (line 16) | async renamePromise(e,t){return await this.makeCallPromise(e,async()=>...
method renameSync (line 16) | renameSync(e,t){return this.makeCallSync(e,()=>this.makeCallSync(t,()=...
method copyFilePromise (line 16) | async copyFilePromise(e,t,n=0){const A=async(e,t,A,i)=>{if(0!=(n&r.con...
method copyFileSync (line 16) | copyFileSync(e,t,n=0){const A=(e,t,A,i)=>{if(0!=(n&r.constants.COPYFIL...
method appendFilePromise (line 16) | async appendFilePromise(e,t,n){return await this.makeCallPromise(e,asy...
method appendFileSync (line 16) | appendFileSync(e,t,n){return this.makeCallSync(e,()=>this.baseFs.appen...
method writeFilePromise (line 16) | async writeFilePromise(e,t,n){return await this.makeCallPromise(e,asyn...
method writeFileSync (line 16) | writeFileSync(e,t,n){return this.makeCallSync(e,()=>this.baseFs.writeF...
method unlinkPromise (line 16) | async unlinkPromise(e){return await this.makeCallPromise(e,async()=>aw...
method unlinkSync (line 16) | unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e)...
method utimesPromise (line 16) | async utimesPromise(e,t,n){return await this.makeCallPromise(e,async()...
method utimesSync (line 16) | utimesSync(e,t,n){return this.makeCallSync(e,()=>this.baseFs.utimesSyn...
method mkdirPromise (line 16) | async mkdirPromise(e,t){return await this.makeCallPromise(e,async()=>a...
method mkdirSync (line 16) | mkdirSync(e,t){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,...
method rmdirPromise (line 16) | async rmdirPromise(e){return await this.makeCallPromise(e,async()=>awa...
method rmdirSync (line 16) | rmdirSync(e){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e),(...
method symlinkPromise (line 16) | async symlinkPromise(e,t,n){return await this.makeCallPromise(t,async(...
method symlinkSync (line 16) | symlinkSync(e,t,n){return this.makeCallSync(t,()=>this.baseFs.symlinkS...
method readFilePromise (line 16) | async readFilePromise(e,t){return this.makeCallPromise(e,async()=>{swi...
method readFileSync (line 16) | readFileSync(e,t){return this.makeCallSync(e,()=>{switch(t){case"utf8"...
method readdirPromise (line 16) | async readdirPromise(e,{withFileTypes:t}={}){return await this.makeCal...
method readdirSync (line 16) | readdirSync(e,{withFileTypes:t}={}){return this.makeCallSync(e,()=>thi...
method readlinkPromise (line 16) | async readlinkPromise(e){return await this.makeCallPromise(e,async()=>...
method readlinkSync (line 16) | readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSyn...
method watch (line 16) | watch(e,t,n){return this.makeCallSync(e,()=>this.baseFs.watch(e,t,n),(...
method makeCallPromise (line 16) | async makeCallPromise(e,t,n,{requireSubpath:r=!0}={}){if("string"!=typ...
method makeCallSync (line 16) | makeCallSync(e,t,n,{requireSubpath:r=!0}={}){if("string"!=typeof e)ret...
method findZip (line 16) | findZip(e){if(this.filter&&!this.filter.test(e))return null;const t=e....
method limitOpenFiles (line 16) | limitOpenFiles(e){if(null===this.zipInstances)return;let t=this.zipIns...
method getZipPromise (line 16) | async getZipPromise(e,t){const n=async()=>({baseFs:this.baseFs,libzip:...
method getZipSync (line 16) | getZipSync(e,t){const n=()=>({baseFs:this.baseFs,libzip:this.libzip,re...
method constructor (line 42) | constructor({binaryLabel:e,binaryName:t="...",binaryVersion:n}={}){thi...
method from (line 42) | static from(e){const t=new c;for(const n of e)t.register(n);return t}
method register (line 42) | register(e){const t=this.builder.command();this.registrations.set(e,t....
method process (line 42) | process(e){const{contexts:t,process:n}=this.builder.compile(),r=n(e);s...
method run (line 42) | async run(e,t){let n,r;if(Array.isArray(e))try{n=this.process(e)}catch...
method runExit (line 42) | async runExit(e,t){process.exitCode=await this.run(e,t)}
method suggestFor (line 42) | async suggestFor(e){const{contexts:t,process:n,suggest:r}=this.builder...
method definitions (line 42) | definitions(){const e=[];for(const[t,n]of this.registrations){if(void ...
method usage (line 42) | usage(e=null,{detailed:t=!1,prefix:n="$ "}={}){const r=null!==e&&void ...
method error (line 42) | error(e,{command:t=null}={}){let n="",r=e.name.replace(/([a-z])([A-Z])...
method getUsageByRegistration (line 42) | getUsageByRegistration(e,t){const n=this.registrations.get(e);if(void ...
method getUsageByIndex (line 42) | getUsageByIndex(e,t){return this.builder.getBuilderByIndex(e).usage(t)}
method constructor (line 50) | constructor(){super(...arguments),this.verbose=!1,this.why=!1,this.jso...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.json=!1,this.checkCache=!1,this...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.args=[]}
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.idents=[]}
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.inspect=!1,this.inspectBrk=!1,t...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.quiet=!1,this.args=[]}
method execute (line 50) | async execute(){await s.xfs.mktempPromise(async e=>{const t=s.ppath.jo...
method constructor (line 56) | constructor(){super(...arguments),this.mode="loose"}
method makeInstaller (line 56) | makeInstaller(e){return new u(e)}
method constructor (line 56) | constructor(){super(...arguments),this.publish=!1}
method execute (line 56) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
function n (line 2) | function n(){this.constructor=e}
function t (line 2) | function t(){return null!==e&&e.apply(this,arguments)||this}
function e (line 2) | function e(e){this.closed=!1,this._parent=null,this._parents=null,this._...
function u (line 2) | function u(e){return e.reduce((function(e,t){return e.concat(t instanceo...
method constructor (line 10) | constructor(){this.indent=" ",this.name=null,this.version=null,this.t...
method tryFind (line 10) | static async tryFind(e,{baseFs:t=new i.NodeFS}={}){const n=i.ppath.joi...
method find (line 10) | static async find(e,{baseFs:t}={}){const n=await u.tryFind(e,{baseFs:t...
method fromFile (line 10) | static async fromFile(e,{baseFs:t=new i.NodeFS}={}){const n=new u;retu...
method fromText (line 10) | static fromText(e){const t=new u;return t.loadFromText(e),t}
method loadFromText (line 10) | loadFromText(e){let t;try{t=JSON.parse(l(e)||"{}")}catch(t){throw t.me...
method loadFile (line 10) | async loadFile(e,{baseFs:t=new i.NodeFS}){const n=await t.readFileProm...
method load (line 10) | load(e){if("object"!=typeof e||null===e)throw new Error(`Utterly inval...
method getForScope (line 10) | getForScope(e){switch(e){case"dependencies":return this.dependencies;c...
method hasConsumerDependency (line 10) | hasConsumerDependency(e){return!!this.dependencies.has(e.identHash)||!...
method hasHardDependency (line 10) | hasHardDependency(e){return!!this.dependencies.has(e.identHash)||!!thi...
method hasSoftDependency (line 10) | hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}
method hasDependency (line 10) | hasDependency(e){return!!this.hasHardDependency(e)||!!this.hasSoftDepe...
method ensureDependencyMeta (line 10) | ensureDependencyMeta(e){if("unknown"!==e.range&&!s.default.valid(e.ran...
method ensurePeerDependencyMeta (line 10) | ensurePeerDependencyMeta(e){if("unknown"!==e.range)throw new Error(`In...
method setRawField (line 10) | setRawField(e,t,{after:n=[]}={}){const r=new Set(n.filter(e=>Object.pr...
method exportTo (line 10) | exportTo(e,{compatibilityMode:t=!0}={}){Object.assign(e,this.raw),null...
method constructor (line 16) | constructor(){super(...arguments),this.json=!1,this.unsafe=!1}
method execute (line 16) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method constructor (line 42) | constructor(e){return g(e)}
method constructor (line 50) | constructor(){super(...arguments),this.recursive=!1,this.peers=!1}
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.usev2=!1,this.yes=!1,this.priva...
method execute (line 50) | async execute(){if(s.xfs.existsSync(s.ppath.join(this.context.cwd,i.Ma...
method executeProxy (line 50) | async executeProxy(e,t){if(null!==e.get("yarnPath"))throw new a.UsageE...
method executeRegular (line 50) | async executeRegular(e){s.xfs.existsSync(this.context.cwd)||await s.xf...
method constructor (line 56) | constructor(){super(...arguments),this.mode="loose"}
method finalizeInstallWithPnp (line 56) | async finalizeInstallWithPnp(e){if(this.opts.project.configuration.get...
method constructor (line 56) | constructor(){super(...arguments),this.installIfNeeded=!1,this.dryRun=...
method execute (line 56) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method execute (line 56) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method execute (line 56) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
class c (line 2) | class c{constructor(e,t){if(t&&"object"==typeof t||(t={loose:!!t,include...
method constructor (line 2) | constructor(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerel...
method format (line 2) | format(){return this.version=`${this.major}.${this.minor}.${this.patch...
method toString (line 2) | toString(){return this.version}
method compare (line 2) | compare(e){if(r("SemVer.compare",this.version,this.options,e),!(e inst...
method compareMain (line 2) | compareMain(e){return e instanceof c||(e=new c(e,this.options)),a(this...
method comparePre (line 2) | comparePre(e){if(e instanceof c||(e=new c(e,this.options)),this.prerel...
method compareBuild (line 2) | compareBuild(e){e instanceof c||(e=new c(e,this.options));let t=0;do{c...
method inc (line 2) | inc(e,t){switch(e){case"premajor":this.prerelease.length=0,this.patch=...
method constructor (line 16) | constructor(e,t){super("zlib: "+e),this.errno=t,this.code=u.get(t)}
method name (line 16) | get name(){return"ZlibError"}
method constructor (line 16) | constructor({baseFs:e=new r.NodeFS}={}){super(i.ppath),this.baseFs=e}
method makeVirtualPath (line 16) | static makeVirtualPath(e,t,n){if("$$virtual"!==i.ppath.basename(e))thr...
method resolveVirtual (line 16) | static resolveVirtual(e){const t=e.match(s);if(!t||!t[3]&&t[5])return ...
method getExtractHint (line 16) | getExtractHint(e){return this.baseFs.getExtractHint(e)}
method getRealPath (line 16) | getRealPath(){return this.baseFs.getRealPath()}
method realpathSync (line 16) | realpathSync(e){const t=e.match(s);if(!t)return this.baseFs.realpathSy...
method realpathPromise (line 16) | async realpathPromise(e){const t=e.match(s);if(!t)return await this.ba...
method mapToBase (line 16) | mapToBase(e){return c.resolveVirtual(e)}
method mapFromBase (line 16) | mapFromBase(e){return e}
method constructor (line 16) | constructor({libzip:e,baseFs:t=new i.NodeFS,filter:n=null,maxOpenFiles...
method openPromise (line 16) | static async openPromise(e,t){const n=new c(t);try{return await e(n)}f...
method getExtractHint (line 16) | getExtractHint(e){return this.baseFs.getExtractHint(e)}
method getRealPath (line 16) | getRealPath(){return this.baseFs.getRealPath()}
method saveAndClose (line 16) | saveAndClose(){if(this.zipInstances)for(const[e,t]of this.zipInstances...
method discardAndClose (line 16) | discardAndClose(){if(this.zipInstances)for(const[e,t]of this.zipInstan...
method remapFd (line 16) | remapFd(e,t){const n=this.nextFd++|a;return this.fdMap.set(n,[e,t]),n}
method openPromise (line 16) | async openPromise(e,t,n){return await this.makeCallPromise(e,async()=>...
method openSync (line 16) | openSync(e,t,n){return this.makeCallSync(e,()=>this.baseFs.openSync(e,...
method readPromise (line 16) | async readPromise(e,t,n,r,A){if(0==(e&a))return await this.baseFs.read...
method readSync (line 16) | readSync(e,t,n,r,A){if(0==(e&a))return this.baseFs.readSync(e,t,n,r,A)...
method writePromise (line 16) | async writePromise(e,t,n,r,A){if(0==(e&a))return"string"==typeof t?awa...
method writeSync (line 16) | writeSync(e,t,n,r,A){if(0==(e&a))return"string"==typeof t?this.baseFs....
method closePromise (line 16) | async closePromise(e){if(0==(e&a))return await this.baseFs.closePromis...
method closeSync (line 16) | closeSync(e){if(0==(e&a))return this.baseFs.closeSync(e);const t=this....
method createReadStream (line 16) | createReadStream(e,t){return null===e?this.baseFs.createReadStream(e,t...
method createWriteStream (line 16) | createWriteStream(e,t){return null===e?this.baseFs.createWriteStream(e...
method realpathPromise (line 16) | async realpathPromise(e){return await this.makeCallPromise(e,async()=>...
method realpathSync (line 16) | realpathSync(e){return this.makeCallSync(e,()=>this.baseFs.realpathSyn...
method existsPromise (line 16) | async existsPromise(e){return await this.makeCallPromise(e,async()=>aw...
method existsSync (line 16) | existsSync(e){return this.makeCallSync(e,()=>this.baseFs.existsSync(e)...
method accessPromise (line 16) | async accessPromise(e,t){return await this.makeCallPromise(e,async()=>...
method accessSync (line 16) | accessSync(e,t){return this.makeCallSync(e,()=>this.baseFs.accessSync(...
method statPromise (line 16) | async statPromise(e){return await this.makeCallPromise(e,async()=>awai...
method statSync (line 16) | statSync(e){return this.makeCallSync(e,()=>this.baseFs.statSync(e),(e,...
method lstatPromise (line 16) | async lstatPromise(e){return await this.makeCallPromise(e,async()=>awa...
method lstatSync (line 16) | lstatSync(e){return this.makeCallSync(e,()=>this.baseFs.lstatSync(e),(...
method chmodPromise (line 16) | async chmodPromise(e,t){return await this.makeCallPromise(e,async()=>a...
method chmodSync (line 16) | chmodSync(e,t){return this.makeCallSync(e,()=>this.baseFs.chmodSync(e,...
method renamePromise (line 16) | async renamePromise(e,t){return await this.makeCallPromise(e,async()=>...
method renameSync (line 16) | renameSync(e,t){return this.makeCallSync(e,()=>this.makeCallSync(t,()=...
method copyFilePromise (line 16) | async copyFilePromise(e,t,n=0){const A=async(e,t,A,i)=>{if(0!=(n&r.con...
method copyFileSync (line 16) | copyFileSync(e,t,n=0){const A=(e,t,A,i)=>{if(0!=(n&r.constants.COPYFIL...
method appendFilePromise (line 16) | async appendFilePromise(e,t,n){return await this.makeCallPromise(e,asy...
method appendFileSync (line 16) | appendFileSync(e,t,n){return this.makeCallSync(e,()=>this.baseFs.appen...
method writeFilePromise (line 16) | async writeFilePromise(e,t,n){return await this.makeCallPromise(e,asyn...
method writeFileSync (line 16) | writeFileSync(e,t,n){return this.makeCallSync(e,()=>this.baseFs.writeF...
method unlinkPromise (line 16) | async unlinkPromise(e){return await this.makeCallPromise(e,async()=>aw...
method unlinkSync (line 16) | unlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.unlinkSync(e)...
method utimesPromise (line 16) | async utimesPromise(e,t,n){return await this.makeCallPromise(e,async()...
method utimesSync (line 16) | utimesSync(e,t,n){return this.makeCallSync(e,()=>this.baseFs.utimesSyn...
method mkdirPromise (line 16) | async mkdirPromise(e,t){return await this.makeCallPromise(e,async()=>a...
method mkdirSync (line 16) | mkdirSync(e,t){return this.makeCallSync(e,()=>this.baseFs.mkdirSync(e,...
method rmdirPromise (line 16) | async rmdirPromise(e){return await this.makeCallPromise(e,async()=>awa...
method rmdirSync (line 16) | rmdirSync(e){return this.makeCallSync(e,()=>this.baseFs.rmdirSync(e),(...
method symlinkPromise (line 16) | async symlinkPromise(e,t,n){return await this.makeCallPromise(t,async(...
method symlinkSync (line 16) | symlinkSync(e,t,n){return this.makeCallSync(t,()=>this.baseFs.symlinkS...
method readFilePromise (line 16) | async readFilePromise(e,t){return this.makeCallPromise(e,async()=>{swi...
method readFileSync (line 16) | readFileSync(e,t){return this.makeCallSync(e,()=>{switch(t){case"utf8"...
method readdirPromise (line 16) | async readdirPromise(e,{withFileTypes:t}={}){return await this.makeCal...
method readdirSync (line 16) | readdirSync(e,{withFileTypes:t}={}){return this.makeCallSync(e,()=>thi...
method readlinkPromise (line 16) | async readlinkPromise(e){return await this.makeCallPromise(e,async()=>...
method readlinkSync (line 16) | readlinkSync(e){return this.makeCallSync(e,()=>this.baseFs.readlinkSyn...
method watch (line 16) | watch(e,t,n){return this.makeCallSync(e,()=>this.baseFs.watch(e,t,n),(...
method makeCallPromise (line 16) | async makeCallPromise(e,t,n,{requireSubpath:r=!0}={}){if("string"!=typ...
method makeCallSync (line 16) | makeCallSync(e,t,n,{requireSubpath:r=!0}={}){if("string"!=typeof e)ret...
method findZip (line 16) | findZip(e){if(this.filter&&!this.filter.test(e))return null;const t=e....
method limitOpenFiles (line 16) | limitOpenFiles(e){if(null===this.zipInstances)return;let t=this.zipIns...
method getZipPromise (line 16) | async getZipPromise(e,t){const n=async()=>({baseFs:this.baseFs,libzip:...
method getZipSync (line 16) | getZipSync(e,t){const n=()=>({baseFs:this.baseFs,libzip:this.libzip,re...
method constructor (line 42) | constructor({binaryLabel:e,binaryName:t="...",binaryVersion:n}={}){thi...
method from (line 42) | static from(e){const t=new c;for(const n of e)t.register(n);return t}
method register (line 42) | register(e){const t=this.builder.command();this.registrations.set(e,t....
method process (line 42) | process(e){const{contexts:t,process:n}=this.builder.compile(),r=n(e);s...
method run (line 42) | async run(e,t){let n,r;if(Array.isArray(e))try{n=this.process(e)}catch...
method runExit (line 42) | async runExit(e,t){process.exitCode=await this.run(e,t)}
method suggestFor (line 42) | async suggestFor(e){const{contexts:t,process:n,suggest:r}=this.builder...
method definitions (line 42) | definitions(){const e=[];for(const[t,n]of this.registrations){if(void ...
method usage (line 42) | usage(e=null,{detailed:t=!1,prefix:n="$ "}={}){const r=null!==e&&void ...
method error (line 42) | error(e,{command:t=null}={}){let n="",r=e.name.replace(/([a-z])([A-Z])...
method getUsageByRegistration (line 42) | getUsageByRegistration(e,t){const n=this.registrations.get(e);if(void ...
method getUsageByIndex (line 42) | getUsageByIndex(e,t){return this.builder.getBuilderByIndex(e).usage(t)}
method constructor (line 50) | constructor(){super(...arguments),this.verbose=!1,this.why=!1,this.jso...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.json=!1,this.checkCache=!1,this...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.args=[]}
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.idents=[]}
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.inspect=!1,this.inspectBrk=!1,t...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.quiet=!1,this.args=[]}
method execute (line 50) | async execute(){await s.xfs.mktempPromise(async e=>{const t=s.ppath.jo...
method constructor (line 56) | constructor(){super(...arguments),this.mode="loose"}
method makeInstaller (line 56) | makeInstaller(e){return new u(e)}
method constructor (line 56) | constructor(){super(...arguments),this.publish=!1}
method execute (line 56) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
function n (line 2) | function n(){this.constructor=e}
function t (line 2) | function t(t){var n=e.call(this,t)||this;return n.destination=t,n}
function t (line 2) | function t(){var t=e.call(this)||this;return t.observers=[],t.closed=!1,...
function t (line 2) | function t(t,n){var r=e.call(this)||this;return r.destination=t,r.source...
function u (line 2) | function u(e){if("win32"!==process.platform)return e;if(e.match(a))e=e.r...
method constructor (line 10) | constructor(){this.indent=" ",this.name=null,this.version=null,this.t...
method tryFind (line 10) | static async tryFind(e,{baseFs:t=new i.NodeFS}={}){const n=i.ppath.joi...
method find (line 10) | static async find(e,{baseFs:t}={}){const n=await u.tryFind(e,{baseFs:t...
method fromFile (line 10) | static async fromFile(e,{baseFs:t=new i.NodeFS}={}){const n=new u;retu...
method fromText (line 10) | static fromText(e){const t=new u;return t.loadFromText(e),t}
method loadFromText (line 10) | loadFromText(e){let t;try{t=JSON.parse(l(e)||"{}")}catch(t){throw t.me...
method loadFile (line 10) | async loadFile(e,{baseFs:t=new i.NodeFS}){const n=await t.readFileProm...
method load (line 10) | load(e){if("object"!=typeof e||null===e)throw new Error(`Utterly inval...
method getForScope (line 10) | getForScope(e){switch(e){case"dependencies":return this.dependencies;c...
method hasConsumerDependency (line 10) | hasConsumerDependency(e){return!!this.dependencies.has(e.identHash)||!...
method hasHardDependency (line 10) | hasHardDependency(e){return!!this.dependencies.has(e.identHash)||!!thi...
method hasSoftDependency (line 10) | hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}
method hasDependency (line 10) | hasDependency(e){return!!this.hasHardDependency(e)||!!this.hasSoftDepe...
method ensureDependencyMeta (line 10) | ensureDependencyMeta(e){if("unknown"!==e.range&&!s.default.valid(e.ran...
method ensurePeerDependencyMeta (line 10) | ensurePeerDependencyMeta(e){if("unknown"!==e.range)throw new Error(`In...
method setRawField (line 10) | setRawField(e,t,{after:n=[]}={}){const r=new Set(n.filter(e=>Object.pr...
method exportTo (line 10) | exportTo(e,{compatibilityMode:t=!0}={}){Object.assign(e,this.raw),null...
method constructor (line 16) | constructor(){super(...arguments),this.json=!1,this.unsafe=!1}
method execute (line 16) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method constructor (line 42) | constructor(e){return g(e)}
method constructor (line 50) | constructor(){super(...arguments),this.recursive=!1,this.peers=!1}
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.usev2=!1,this.yes=!1,this.priva...
method execute (line 50) | async execute(){if(s.xfs.existsSync(s.ppath.join(this.context.cwd,i.Ma...
method executeProxy (line 50) | async executeProxy(e,t){if(null!==e.get("yarnPath"))throw new a.UsageE...
method executeRegular (line 50) | async executeRegular(e){s.xfs.existsSync(this.context.cwd)||await s.xf...
method constructor (line 56) | constructor(){super(...arguments),this.mode="loose"}
method finalizeInstallWithPnp (line 56) | async finalizeInstallWithPnp(e){if(this.opts.project.configuration.get...
method constructor (line 56) | constructor(){super(...arguments),this.installIfNeeded=!1,this.dryRun=...
method execute (line 56) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method execute (line 56) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method execute (line 56) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
function g (line 2) | function g(e){return"win32"!==process.platform?e:(e.match(o)?e=e.replace...
method constructor (line 16) | constructor(){super(...arguments),this.json=!1}
method execute (line 16) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method constructor (line 16) | constructor(){super(...arguments),this.onlyIfNeeded=!1}
method execute (line 16) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.all=!1,this.names=[]}
method execute (line 50) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(e,{realFs:t=s.default,pnpifyFs:n=!0}={}){super(A.npath),th...
method mapFromBase (line 50) | mapFromBase(e){return A.npath.fromPortablePath(e)}
method mapToBase (line 50) | mapToBase(e){return A.npath.toPortablePath(e)}
method constructor (line 56) | constructor(){super(...arguments),this.publish=!1}
method execute (line 56) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
function h (line 2) | function h(e,t){return{identHash:c.makeHash(e,t),scope:e,name:t}}
method constructor (line 16) | constructor(){super(...arguments),this.mode="strict",this.unpluggedPat...
method getBuildScripts (line 16) | async getBuildScripts(e,t,n){if(null===t)return[];const r=[];for(const...
method transformPackage (line 16) | async transformPackage(e,t,n,r,{hasBuildScripts:A}){return this.isUnpl...
method finalizeInstallWithPnp (line 16) | async finalizeInstallWithPnp(e){if(this.opts.project.configuration.get...
method locateNodeModules (line 16) | async locateNodeModules(){const e=[];for(const t of this.opts.project....
method getUnpluggedPath (line 16) | getUnpluggedPath(e){return o.ppath.resolve(this.opts.project.configura...
method unplugPackage (line 16) | async unplugPackage(e,t){const n=this.getUnpluggedPath(e);return this....
method isUnplugged (line 16) | isUnplugged(e,t,n,r,{hasBuildScripts:A}){return void 0!==r.unplugged?r...
method constructor (line 42) | constructor(){super(...arguments),this.packages=[],this.json=!1,this.e...
method execute (line 42) | async execute(){const e=await s.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.json=!1}
method execute (line 50) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.packages=[],this.interactive=!1...
method execute (line 50) | async execute(){const e=await s.Configuration.find(this.context.cwd,th...
method constructor (line 56) | constructor(){super(...arguments),this.json=!1}
method execute (line 56) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method constructor (line 56) | constructor(){super(...arguments),this.tag="latest",this.tolerateRepub...
method execute (line 56) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method isIntegrity (line 56) | get isIntegrity(){return!0}
method toJSON (line 56) | toJSON(){return this.toString()}
method toString (line 56) | toString(e){let t=(e=g(e)).sep||" ";return e.strict&&(t=t.replace(/\S+...
method concat (line 56) | concat(e,t){t=g(t);const n="string"==typeof e?e:C(e,t);return p(`${thi...
method hexDigest (line 56) | hexDigest(){return p(this,{single:!0}).hexDigest()}
method match (line 56) | match(e,t){const n=p(e,t=g(t)),r=n.pickAlgorithm(t);return this[r]&&n[...
method pickAlgorithm (line 56) | pickAlgorithm(e){const t=(e=g(e)).pickAlgorithm,n=Object.keys(this);if...
function p (line 2) | function p(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,d...
function f (line 2) | function f(e,t){return{identHash:e.identHash,scope:e.scope,name:e.name,l...
method constructor (line 10) | constructor(){this.dev=0,this.ino=0,this.mode=0,this.nlink=1,this.rdev...
method isBlockDevice (line 10) | isBlockDevice(){return!1}
method isCharacterDevice (line 10) | isCharacterDevice(){return!1}
method isDirectory (line 10) | isDirectory(){return(this.mode&g)===l}
method isFIFO (line 10) | isFIFO(){return!1}
method isFile (line 10) | isFile(){return(this.mode&g)===h}
method isSocket (line 10) | isSocket(){return!1}
method isSymbolicLink (line 10) | isSymbolicLink(){return(this.mode&g)===p}
method constructor (line 10) | constructor(){this.values=new Map,this.expiries=new Map}
method set (line 10) | set(e,t,n){this.values.set(e,t),this.expiries.set(e,n&&n+Date.now())}
method get (line 10) | get(e){const t=this.expiries.get(e);return"number"==typeof t&&Date.now...
method delete (line 10) | delete(e){return this.values.delete(e),this.expiries.delete(e)}
method clear (line 10) | clear(){this.values.clear(),this.expiries.clear()}
method size (line 10) | get size(){return this.values.size}
method constructor (line 16) | constructor({configuration:e,stdout:t,json:n=!1,includeFooter:r=!0,inc...
method start (line 16) | static async start(e,t){const n=new this(e);try{await t(n)}catch(e){n....
method hasErrors (line 16) | hasErrors(){return this.errorCount>0}
method exitCode (line 16) | exitCode(){return this.hasErrors()?1:0}
method reportCacheHit (line 16) | reportCacheHit(e){this.cacheHitCount+=1}
method reportCacheMiss (line 16) | reportCacheMiss(e,t){this.cacheMissCount+=1,void 0===t||this.configura...
method startTimerSync (line 16) | startTimerSync(e,t){this.reportInfo(null,`┌ ${e}`);const n=Date.now();...
method startTimerPromise (line 16) | async startTimerPromise(e,t){this.reportInfo(null,`┌ ${e}`),null!==u&&...
method startCacheReport (line 16) | async startCacheReport(e){const t=this.configuration.get("preferAggreg...
method reportSeparator (line 16) | reportSeparator(){0===this.indent?this.writeLineWithForgettableReset("...
method reportInfo (line 16) | reportInfo(e,t){if(this.includeInfos)if(this.json)this.reportJson({typ...
method reportWarning (line 16) | reportWarning(e,t){this.warningCount+=1,this.includeWarnings&&(this.js...
method reportError (line 16) | reportError(e,t){this.errorCount+=1,this.json?this.reportJson({type:"e...
method reportProgress (line 16) | reportProgress(e){let t=!1;const n=Promise.resolve().then(async()=>{va...
method reportJson (line 16) | reportJson(e){this.json&&this.writeLineWithForgettableReset(`${JSON.st...
method finalize (line 16) | async finalize(){if(!this.includeFooter)return;let e="";e=this.errorCo...
method writeLine (line 16) | writeLine(e){this.clearProgress({clear:!0}),this.stdout.write(`${e}\n`...
method writeLineWithForgettableReset (line 16) | writeLineWithForgettableReset(e){this.forgettableLines=[],this.writeLi...
method writeLines (line 16) | writeLines(e,t){this.clearProgress({delta:t.length});for(const n of t)...
method reportCacheChanges (line 16) | reportCacheChanges({cacheHitCount:e,cacheMissCount:t}){const n=this.ca...
method clearProgress (line 16) | clearProgress({delta:e=0,clear:t=!1}){this.configuration.get("enablePr...
method writeProgress (line 16) | writeProgress(){if(!this.configuration.get("enableProgressBars")||this...
method refreshProgress (line 16) | refreshProgress(e=0){this.clearProgress({delta:e}),this.writeProgress()}
method formatTiming (line 16) | formatTiming(e){return e<6e4?`${Math.round(e/10)/100}s`:`${Math.round(...
method formatName (line 16) | formatName(e){const t=`YN${(null===e?0:e).toString(10).padStart(4,"0")...
method formatNameWithHyperlink (line 16) | formatNameWithHyperlink(e){const t=this.formatName(e);return this.conf...
method formatIndent (line 16) | formatIndent(){return"│ ".repeat(this.indent)}
method constructor (line 42) | constructor(e,{configuration:t,immutable:n=t.get("enableImmutableCache...
method find (line 42) | static async find(e,{immutable:t,check:n}={}){const r=new f(e.get("cac...
method mirrorCwd (line 42) | get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null...
method getLocatorFilename (line 42) | getLocatorFilename(e){return`${h.slugifyLocator(e)}${this.compressionL...
method getLocatorPath (line 42) | getLocatorPath(e){return o.ppath.resolve(this.cwd,this.getLocatorFilen...
method getLocatorMirrorPath (line 42) | getLocatorMirrorPath(e){const t=this.mirrorCwd;return null!==t?o.ppath...
method setup (line 42) | async setup(){if(!this.configuration.get("enableGlobalCache")){await o...
method fetchPackageFromCache (line 42) | async fetchPackageFromCache(e,t,{onHit:n,onMiss:r,loader:A}){const f=t...
method writeFileWithLock (line 42) | async writeFileWithLock(e,t){return null===e?await t():(await o.xfs.mk...
method constructor (line 50) | constructor(){super(...arguments),this.repository="https://github.com/...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
function C (line 2) | function C(e,t){return{identHash:t.identHash,scope:t.scope,name:t.name,l...
method constructor (line 10) | constructor({timeout:e=6e4,maxSessions:t=1/0,maxFreeSessions:n=1,maxCa...
method normalizeOrigin (line 10) | static normalizeOrigin(e,t){return"string"==typeof e&&(e=new URL(e)),t...
method normalizeOptions (line 10) | normalizeOptions(e){let t="";if(e)for(const n of u)e[n]&&(t+=`:${e[n]}...
method _tryToCreateNewSession (line 10) | _tryToCreateNewSession(e,t){if(!Reflect.has(this.queue,e)||!Reflect.ha...
method _closeCoveredSessions (line 10) | _closeCoveredSessions(e,t){p(this.freeSessions,e,t),p(this.busySession...
method getSession (line 10) | getSession(e,t,n){return new Promise((r,A)=>{Array.isArray(n)?(n=[...n...
method request (line 10) | request(e,t,n){return new Promise((r,A)=>{this.getSession(e,t,[{reject...
method createConnection (line 10) | createConnection(e,t){return C.connect(e,t)}
method connect (line 10) | static connect(e,t){t.ALPNProtocols=["h2"];const n=e.port||443,r=e.hos...
method closeFreeSessions (line 10) | closeFreeSessions(){for(const e of Object.values(this.freeSessions))fo...
method destroy (line 10) | destroy(e){for(const t of Object.values(this.busySessions))for(const n...
function d (line 2) | function d(e){return e.range.startsWith(g)}
method constructor (line 10) | constructor(e,n){super(),this.listings=new Map,this.entries=new Map,th...
method getExtractHint (line 10) | getExtractHint(e){for(const t of this.entries.keys()){const n=this.pat...
method getAllFiles (line 10) | getAllFiles(){return Array.from(this.entries.keys())}
method getRealPath (line 10) | getRealPath(){if(!this.path)throw new Error("ZipFS don't have real pat...
method saveAndClose (line 10) | saveAndClose(){if(!this.path||!this.baseFs)throw new Error("ZipFS cann...
method discardAndClose (line 10) | discardAndClose(){if(!this.ready)throw c.EBUSY("archive closed, close"...
method openPromise (line 10) | async openPromise(e,t,n){return this.openSync(e,t,n)}
method openSync (line 10) | openSync(e,t,n){const r=this.nextFd++;return this.fds.set(r,{cursor:0,...
method readPromise (line 10) | async readPromise(e,t,n,r,A){return this.readSync(e,t,n,r,A)}
method readSync (line 10) | readSync(e,t,n=0,r=0,A=-1){const i=this.fds.get(e);if(void 0===i)throw...
method writePromise (line 10) | async writePromise(e,t,n,r,A){return"string"==typeof t?this.writeSync(...
method writeSync (line 10) | writeSync(e,t,n,r,A){if(void 0===this.fds.get(e))throw c.EBADF("read")...
method closePromise (line 10) | async closePromise(e){return this.closeSync(e)}
method closeSync (line 10) | closeSync(e){if(void 0===this.fds.get(e))throw c.EBADF("read");this.fd...
method createReadStream (line 10) | createReadStream(e,{encoding:t}={}){if(null===e)throw new Error("Unimp...
method createWriteStream (line 10) | createWriteStream(e,{encoding:t}={}){if(this.readOnly)throw c.EROFS(`o...
method realpathPromise (line 10) | async realpathPromise(e){return this.realpathSync(e)}
method realpathSync (line 10) | realpathSync(e){const t=this.resolveFilename(`lstat '${e}'`,e);if(!thi...
method existsPromise (line 10) | async existsPromise(e){return this.existsSync(e)}
method existsSync (line 10) | existsSync(e){let t;try{t=this.resolveFilename(`stat '${e}'`,e)}catch(...
method accessPromise (line 10) | async accessPromise(e,t){return this.accessSync(e,t)}
method accessSync (line 10) | accessSync(e,t=A.constants.F_OK){const n=this.resolveFilename(`access ...
method statPromise (line 10) | async statPromise(e){return this.statSync(e)}
method statSync (line 10) | statSync(e){const t=this.resolveFilename(`stat '${e}'`,e);if(!this.ent...
method lstatPromise (line 10) | async lstatPromise(e){return this.lstatSync(e)}
method lstatSync (line 10) | lstatSync(e){const t=this.resolveFilename(`lstat '${e}'`,e,!1);if(!thi...
method statImpl (line 10) | statImpl(e,t){const n=this.entries.get(t);if(void 0!==n){const e=this....
method getUnixMode (line 10) | getUnixMode(e,t){if(-1===this.libzip.file.getExternalAttributes(this.z...
method registerListing (line 10) | registerListing(e){let t=this.listings.get(e);if(t)return t;const n=th...
method registerEntry (line 10) | registerEntry(e,t){this.registerListing(u.ppath.dirname(e)).add(u.ppat...
method resolveFilename (line 10) | resolveFilename(e,t,n=!0){if(!this.ready)throw c.EBUSY(`archive closed...
method allocateBuffer (line 10) | allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));const t=this....
method allocateUnattachedSource (line 10) | allocateUnattachedSource(e){const t=this.libzip.struct.errorS(),{buffe...
method allocateSource (line 10) | allocateSource(e){const{buffer:t,byteLength:n}=this.allocateBuffer(e),...
method setFileSource (line 10) | setFileSource(e,t){const n=u.ppath.relative(u.PortablePath.root,e),r=t...
method isSymbolicLink (line 10) | isSymbolicLink(e){if(-1===this.libzip.file.getExternalAttributes(this....
method getFileSource (line 10) | getFileSource(e){const t=this.libzip.struct.statS();if(-1===this.libzi...
method chmodPromise (line 10) | async chmodPromise(e,t){return this.chmodSync(e,t)}
method chmodSync (line 10) | chmodSync(e,t){if(this.readOnly)throw c.EROFS(`chmod '${e}'`);t&=493;c...
method renamePromise (line 10) | async renamePromise(e,t){return this.renameSync(e,t)}
method renameSync (line 10) | renameSync(e,t){throw new Error("Unimplemented")}
method copyFilePromise (line 10) | async copyFilePromise(e,t,n){return this.copyFileSync(e,t,n)}
method copyFileSync (line 10) | copyFileSync(e,t,n=0){if(this.readOnly)throw c.EROFS(`copyfile '${e} -...
method appendFilePromise (line 10) | async appendFilePromise(e,t,n){return this.appendFileSync(e,t,n)}
method appendFileSync (line 10) | appendFileSync(e,t,n={}){if(this.readOnly)throw c.EROFS(`open '${e}'`)...
method writeFilePromise (line 10) | async writeFilePromise(e,t,n){return this.writeFileSync(e,t,n)}
method writeFileSync (line 10) | writeFileSync(e,t,n){if("string"!=typeof e)throw c.EBADF("read");if(th...
method unlinkPromise (line 10) | async unlinkPromise(e){return this.unlinkSync(e)}
method unlinkSync (line 10) | unlinkSync(e){throw new Error("Unimplemented")}
method utimesPromise (line 10) | async utimesPromise(e,t,n){return this.utimesSync(e,t,n)}
method utimesSync (line 10) | utimesSync(e,t,n){if(this.readOnly)throw c.EROFS(`utimes '${e}'`);cons...
method lutimesPromise (line 10) | async lutimesPromise(e,t,n){return this.lutimesSync(e,t,n)}
method lutimesSync (line 10) | lutimesSync(e,t,n){if(this.readOnly)throw c.EROFS(`lutimes '${e}'`);co...
method utimesImpl (line 10) | utimesImpl(e,t){this.listings.has(e)&&(this.entries.has(e)||this.hydra...
method mkdirPromise (line 10) | async mkdirPromise(e,t){return this.mkdirSync(e,t)}
method mkdirSync (line 10) | mkdirSync(e,{mode:t=493,recursive:n=!1}={}){if(n)return this.mkdirpSyn...
method rmdirPromise (line 10) | async rmdirPromise(e){return this.rmdirSync(e)}
method rmdirSync (line 10) | rmdirSync(e){throw new Error("Unimplemented")}
method hydrateDirectory (line 10) | hydrateDirectory(e){const t=this.libzip.dir.add(this.zip,u.ppath.relat...
method symlinkPromise (line 10) | async symlinkPromise(e,t){return this.symlinkSync(e,t)}
method symlinkSync (line 10) | symlinkSync(e,t){if(this.readOnly)throw c.EROFS(`symlink '${e}' -> '${...
method readFilePromise (line 10) | async readFilePromise(e,t){switch(t){case"utf8":default:return this.re...
method readFileSync (line 10) | readFileSync(e,t){if("string"!=typeof e)throw c.EBADF("read");"object"...
method readdirPromise (line 10) | async readdirPromise(e,{withFileTypes:t}={}){return this.readdirSync(e...
method readdirSync (line 10) | readdirSync(e,{withFileTypes:t}={}){const n=this.resolveFilename(`scan...
method readlinkPromise (line 10) | async readlinkPromise(e){return this.readlinkSync(e)}
method readlinkSync (line 10) | readlinkSync(e){const t=this.resolveFilename(`readlink '${e}'`,e,!1);i...
method watch (line 10) | watch(e,t,n){let r;switch(typeof t){case"function":case"string":case"u...
method constructor (line 10) | constructor({cache:e=new f,maxTtl:t=1/0,resolver:n=new c,customHostsPa...
method servers (line 10) | set servers(e){this._resolver.setServers(e)}
method servers (line 10) | get servers(){return this._resolver.getServers()}
method lookup (line 10) | lookup(e,t,n){"function"==typeof t&&(n=t,t={}),this.lookupAsync(e,t,!0...
method lookupAsync (line 10) | async lookupAsync(e,t={},n){let i=await this.query(e);if(6===t.family)...
method query (line 10) | async query(e){let t=await this._hostsResolver.get(e)||await this._cac...
method queryAndCache (line 10) | async queryAndCache(e){const[t,n]=await Promise.all([this._resolve4(e,...
method _getEntry (line 10) | _getEntry(e){return e[Math.floor(Math.random()*e.length)]}
method tick (line 10) | tick(){if(!this._tickLocked){if(this._cache instanceof f){const e=Date...
method install (line 10) | install(e){if(l(e),u in e)throw new Error("CacheableLookup has been al...
method uninstall (line 10) | uninstall(e){if(l(e),e[u]){if(e[g]!==this)throw new Error("The agent i...
method updateInterfaceInfo (line 10) | updateInterfaceInfo(){this._iface=p(),this._hostsResolver.update(),thi...
method clear (line 10) | clear(){this._cache.clear()}
method constructor (line 42) | constructor(e,t,n,r){this.origin=e,this.pattern=t,this.negative=n,this...
function I (line 2) | function I(e){return e.reference.startsWith(g)}
function E (line 2) | function E(e,t){return e.identHash===t.identHash}
function B (line 2) | function B(e,t){return e.descriptorHash===t.descriptorHash}
function y (line 2) | function y(e){const t=e.match(/^(?:@([^\/]+?)\/)?([^\/]+)$/);if(!t)retur...
method constructor (line 16) | constructor(e,t){if(super(e),this[B]=!1,this[h]=e=e||{},e.flush&&!g.ha...
method close (line 16) | close(){this[C]&&(this[C].close(),this[C]=null,this.emit("close"))}
method params (line 16) | params(e,t){if(!this[C])throw new Error("cannot switch params when bin...
method reset (line 16) | reset(){return r(this[C],"zlib binding closed"),this[C].reset()}
method flush (line 16) | flush(e){if(void 0===e&&(e=o.Z_FULL_FLUSH),this.ended)return;const t=t...
method end (line 16) | end(e,t,n){return e&&this.write(e,t),this.flush(this[f]),this[B]=!0,su...
method ended (line 16) | get ended(){return this[B]}
method write (line 16) | write(e,t,n){"function"==typeof t&&(n=t,t="utf8"),"string"==typeof e&&...
function m (line 2) | function m(e,t=!1){const n=t?e.match(/^(?:@([^\/]+?)\/)?([^\/]+?)(?:@(.+...
method constructor (line 42) | constructor({ignorecase:e=!0}={}){this._rules=[],this._ignorecase=e,u(...
method _initCache (line 42) | _initCache(){this._ignoreCache=Object.create(null),this._testCache=Obj...
method _addPattern (line 42) | _addPattern(e){if(e&&e[c])return this._rules=this._rules.concat(e._rul...
method add (line 42) | add(e){return this._added=!1,n(p(e)?C(e):e).forEach(this._addPattern,t...
method addPattern (line 42) | addPattern(e){return this.add(e)}
method _testOne (line 42) | _testOne(e,t){let n=!1,r=!1;return this._rules.forEach(A=>{const{negat...
method _test (line 42) | _test(e,t,n,r){const A=e&&B.convert(e);return B(A,e,E),this._t(A,t,n,r)}
method _t (line 42) | _t(e,t,n,r){if(e in t)return t[e];if(r||(r=e.split(a)),r.pop(),!r.leng...
method ignores (line 42) | ignores(e){return this._test(e,this._ignoreCache,!1).ignored}
method createFilter (line 42) | createFilter(){return e=>!this.ignores(e)}
method filter (line 42) | filter(e){return n(e).filter(this.createFilter())}
method test (line 42) | test(e){return this._test(e,this._testCache,!0)}
function Q (line 2) | function Q(e,t=!1){const n=w(e,t);if(!n)throw new Error(`Invalid locator...
method constructor (line 50) | constructor(){super(...arguments),this.manifestCache=new Map}
method getBuildScripts (line 50) | async getBuildScripts(e,t,n){return[]}
method transformPackage (line 50) | async transformPackage(e,t,n,r,A){return n.packageFs}
method finalizeInstallWithPnp (line 50) | async finalizeInstallWithPnp(e){if("node-modules"!==this.opts.project....
method cachedManifestLoad (line 50) | async cachedManifestLoad(e){let t=this.manifestCache.get(e);if(t)retur...
method getSourceBuildScripts (line 50) | async getSourceBuildScripts(e,t){const n=[],{scripts:r}=t;for(const e ...
function w (line 2) | function w(e,t=!1){const n=t?e.match(/^(?:@([^\/]+?)\/)?([^\/]+?)(?:@(.+...
method constructor (line 10) | constructor(e,t){this.allOptionNames=[],this.arity={leading:[],trailin...
method addPath (line 10) | addPath(e){this.paths.push(e)}
method setArity (line 10) | setArity({leading:e=this.arity.leading,trailing:t=this.arity.trailing,...
method addPositional (line 10) | addPositional({name:e="arg",required:n=!0}={}){if(!n&&this.arity.extra...
method addRest (line 10) | addRest({name:e="arg",required:n=0}={}){if(this.arity.extra===t.NoLimi...
method addProxy (line 10) | addProxy(){this.addRest(),this.arity.proxy=!0}
method addOption (line 10) | addOption({names:e,arity:t=0,hidden:n=!1}){this.allOptionNames.push(.....
method setContext (line 10) | setContext(e){this.context=e}
method usage (line 10) | usage({detailed:e=!0}={}){const n=[this.cliOpts.binaryName];if(this.pa...
method compile (line 10) | compile(){if(void 0===this.context)throw new Error("Assertion failed: ...
method registerOptions (line 10) | registerOptions(e,n){E(e,n,["isOption","--"],n,"inhibateOptions"),E(e,...
function v (line 2) | function v(e,t){const n=e.match(/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!...
method constructor (line 10) | constructor({binaryName:e="..."}={}){this.builders=[],this.opts={binar...
method build (line 10) | static build(e,t={}){return new v(t).commands(e).compile()}
method getBuilderByIndex (line 10) | getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Erro...
method commands (line 10) | commands(e){for(const t of e)t(this.command());return this}
method command (line 10) | command(){const e=new w(this.builders.length,this.opts);return this.bu...
method compile (line 10) | compile(){const e=[],n=[];for(const t of this.builders){const{machine:...
function b (line 2) | function b(e){return e=(e=(e=e.replace(/%/g,"%25")).replace(/:/g,"%3A"))...
function D (line 2) | function D({protocol:e,source:t,selector:n,params:r}){let A="";return nu...
function S (line 2) | function S(e){return e.scope?`@${e.scope}/${e.name}`:`${e.name}`}
function k (line 2) | function k(e){return e.scope?`@${e.scope}/${e.name}`:`${e.name}`}
function _ (line 2) | function _(e){return null!==e.scope?`@${e.scope}-${e.name}`:e.name}
function F (line 2) | function F(e,t){return t.scope?`${e.format(`@${t.scope}/`,a.FormatType.S...
function M (line 2) | function M(e){if(e.startsWith(g)){return`${M(e.substr(e.indexOf("#")+1))...
function N (line 2) | function N(e,t){return`${e.format(M(t),a.FormatType.RANGE)}`}
function R (line 2) | function R(e,t){return`${e.format(M(t),a.FormatType.REFERENCE)}`}
function Gt (line 10) | function Gt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:retur...
function Jt (line 10) | function Jt(e,t,n,r){for(var A=-1,i=null==e?0:e.length;++A<i;){var o=e[A...
function Ht (line 10) | function Ht(e,t){for(var n=-1,r=null==e?0:e.length;++n<r&&!1!==t(e[n],n,...
function qt (line 10) | function qt(e,t){for(var n=null==e?0:e.length;n--&&!1!==t(e[n],n,e););re...
function zt (line 10) | function zt(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(!t(e[n],n,e...
function Wt (line 10) | function Wt(e,t){for(var n=-1,r=null==e?0:e.length,A=0,i=[];++n<r;){var ...
function Xt (line 10) | function Xt(e,t){return!!(null==e?0:e.length)&&sn(e,t,0)>-1}
function Vt (line 10) | function Vt(e,t,n){for(var r=-1,A=null==e?0:e.length;++r<A;)if(n(t,e[r])...
function $t (line 10) | function $t(e,t){for(var n=-1,r=null==e?0:e.length,A=Array(r);++n<r;)A[n...
function Zt (line 10) | function Zt(e,t){for(var n=-1,r=t.length,A=e.length;++n<r;)e[A+n]=t[n];r...
function en (line 10) | function en(e,t,n,r){var A=-1,i=null==e?0:e.length;for(r&&i&&(n=e[++A]);...
function tn (line 10) | function tn(e,t,n,r){var A=null==e?0:e.length;for(r&&A&&(n=e[--A]);A--;)...
function nn (line 10) | function nn(e,t){for(var n=-1,r=null==e?0:e.length;++n<r;)if(t(e[n],n,e)...
function An (line 10) | function An(e,t,n){var r;return n(e,(function(e,n,A){if(t(e,n,A))return ...
function on (line 10) | function on(e,t,n,r){for(var A=e.length,i=n+(r?1:-1);r?i--:++i<A;)if(t(e...
function sn (line 10) | function sn(e,t,n){return t==t?function(e,t,n){var r=n-1,A=e.length;for(...
function an (line 10) | function an(e,t,n,r){for(var A=n-1,i=e.length;++A<i;)if(r(e[A],t))return...
function cn (line 10) | function cn(e){return e!=e}
function un (line 10) | function un(e,t){var n=null==e?0:e.length;return n?pn(e,t)/n:K}
function gn (line 10) | function gn(e){return function(t){return null==t?A:t[e]}}
function ln (line 10) | function ln(e){return function(t){return null==e?A:e[t]}}
function hn (line 10) | function hn(e,t,n,r,A){return A(e,(function(e,A,i){n=r?(r=!1,e):t(n,e,A,...
function pn (line 10) | function pn(e,t){for(var n,r=-1,i=e.length;++r<i;){var o=t(e[r]);o!==A&&...
function fn (line 10) | function fn(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}
function Cn (line 10) | function Cn(e){return function(t){return e(t)}}
function dn (line 10) | function dn(e,t){return $t(t,(function(t){return e[t]}))}
function In (line 10) | function In(e,t){return e.has(t)}
function En (line 10) | function En(e,t){for(var n=-1,r=e.length;++n<r&&sn(t,e[n],0)>-1;);return n}
function Bn (line 10) | function Bn(e,t){for(var n=e.length;n--&&sn(t,e[n],0)>-1;);return n}
function Qn (line 10) | function Qn(e){return"\\"+Dt[e]}
function wn (line 10) | function wn(e){return yt.test(e)}
function vn (line 10) | function vn(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){...
function bn (line 10) | function bn(e,t){return function(n){return e(t(n))}}
function Dn (line 10) | function Dn(e,t){for(var n=-1,r=e.length,A=0,i=[];++n<r;){var o=e[n];o!=...
function Sn (line 10) | function Sn(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[...
function kn (line 10) | function kn(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[...
function _n (line 10) | function _n(e){return wn(e)?function(e){var t=Et.lastIndex=0;for(;Et.tes...
function Fn (line 10) | function Fn(e){return wn(e)?function(e){return e.match(Et)||[]}(e):funct...
function hr (line 10) | function hr(e){if(Ss(e)&&!ds(e)&&!(e instanceof dr)){if(e instanceof Cr)...
function e (line 10) | function e(){}
function fr (line 10) | function fr(){}
function Cr (line 10) | function Cr(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!...
function dr (line 10) | function dr(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,thi...
function Ir (line 10) | function Ir(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){va...
function Er (line 10) | function Er(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){va...
function Br (line 10) | function Br(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t<n;){va...
function yr (line 10) | function yr(e){var t=-1,n=null==e?0:e.length;for(this.__data__=new Br;++...
function mr (line 10) | function mr(e){var t=this.__data__=new Er(e);this.size=t.size}
function Qr (line 10) | function Qr(e,t){var n=ds(e),r=!n&&Cs(e),A=!n&&!r&&ys(e),i=!n&&!r&&!A&&x...
function wr (line 10) | function wr(e){var t=e.length;return t?e[yA(0,t-1)]:A}
function vr (line 10) | function vr(e,t){return so(ni(e),Rr(t,0,e.length))}
function br (line 10) | function br(e){return so(ni(e))}
function Dr (line 10) | function Dr(e,t,n){(n===A||hs(e[t],n))&&(n!==A||t in e)||Mr(e,t,n)}
function Sr (line 10) | function Sr(e,t,n){var r=e[t];ut.call(e,t)&&hs(r,n)&&(n!==A||t in e)||Mr...
function kr (line 10) | function kr(e,t){for(var n=e.length;n--;)if(hs(e[n][0],t))return n;retur...
function _r (line 10) | function _r(e,t,n,r){return Or(e,(function(e,A,i){t(r,e,n(e),i)})),r}
function Fr (line 10) | function Fr(e,t){return e&&ri(t,Aa(t),e)}
function Mr (line 10) | function Mr(e,t,n){"__proto__"==t&&Rn?Rn(e,t,{configurable:!0,enumerable...
function Nr (line 10) | function Nr(e,t){for(var n=-1,i=t.length,o=r(i),s=null==e;++n<i;)o[n]=s?...
function Rr (line 10) | function Rr(e,t,n){return e==e&&(n!==A&&(e=e<=n?e:n),t!==A&&(e=e>=t?e:t)...
function Kr (line 10) | function Kr(e,t,n,r,i,o){var s,a=t&g,c=t&l,u=t&h;if(n&&(s=i?n(e,r,i,o):n...
function xr (line 10) | function xr(e,t,n){var r=n.length;if(null==e)return!r;for(e=tt(e);r--;){...
function Pr (line 10) | function Pr(e,t,n){if("function"!=typeof e)throw new At(s);return ro((fu...
function Lr (line 10) | function Lr(e,t,n,r){var A=-1,o=Xt,s=!0,a=e.length,c=[],u=t.length;if(!a...
function Ur (line 10) | function Ur(e,t){var n=!0;return Or(e,(function(e,r,A){return n=!!t(e,r,...
function Yr (line 10) | function Yr(e,t,n){for(var r=-1,i=e.length;++r<i;){var o=e[r],s=t(o);if(...
function jr (line 10) | function jr(e,t){var n=[];return Or(e,(function(e,r,A){t(e,r,A)&&n.push(...
function Gr (line 10) | function Gr(e,t,n,r,A){var i=-1,o=e.length;for(n||(n=Gi),A||(A=[]);++i<o...
function qr (line 10) | function qr(e,t){return e&&Jr(e,t,Aa)}
function zr (line 10) | function zr(e,t){return e&&Hr(e,t,Aa)}
function Wr (line 10) | function Wr(e,t){return Wt(t,(function(t){return ws(e[t])}))}
function Xr (line 10) | function Xr(e,t){for(var n=0,r=(t=HA(t,e)).length;null!=e&&n<r;)e=e[co(t...
function Vr (line 10) | function Vr(e,t,n){var r=t(e);return ds(e)?r:Zt(r,n(e))}
function $r (line 10) | function $r(e){return null==e?e===A?Ae:V:ln&&ln in tt(e)?function(e){var...
function Zr (line 10) | function Zr(e,t){return e>t}
function eA (line 10) | function eA(e,t){return null!=e&&ut.call(e,t)}
function tA (line 10) | function tA(e,t){return null!=e&&t in tt(e)}
function nA (line 10) | function nA(e,t,n){for(var i=n?Vt:Xt,o=e[0].length,s=e.length,a=s,c=r(s)...
function rA (line 10) | function rA(e,t,n){var r=null==(e=eo(e,t=HA(t,e)))?e:e[co(Qo(t))];return...
function AA (line 10) | function AA(e){return Ss(e)&&$r(e)==T}
function iA (line 10) | function iA(e,t,n,r,i){return e===t||(null==e||null==t||!Ss(e)&&!Ss(t)?e...
function oA (line 10) | function oA(e,t,n,r){var i=n.length,o=i,s=!r;if(null==e)return!o;for(e=t...
function sA (line 10) | function sA(e){return!(!Ds(e)||(t=e,lt&< in t))&&(ws(e)?Ct:Je).test(uo...
function aA (line 10) | function aA(e){return"function"==typeof e?e:null==e?_a:"object"==typeof ...
function cA (line 10) | function cA(e){if(!Xi(e))return Gn(e);var t=[];for(var n in tt(e))ut.cal...
function uA (line 10) | function uA(e){if(!Ds(e))return function(e){var t=[];if(null!=e)for(var ...
function gA (line 10) | function gA(e,t){return e<t}
function lA (line 10) | function lA(e,t){var n=-1,A=Es(e)?r(e.length):[];return Or(e,(function(e...
function hA (line 10) | function hA(e){var t=Pi(e);return 1==t.length&&t[0][2]?$i(t[0][0],t[0][1...
function pA (line 10) | function pA(e,t){return qi(e)&&Vi(t)?$i(co(e),t):function(n){var r=Zs(n,...
function fA (line 10) | function fA(e,t,n,r,i){e!==t&&Jr(t,(function(o,s){if(Ds(o))i||(i=new mr)...
function CA (line 10) | function CA(e,t){var n=e.length;if(n)return Ji(t+=t<0?n:0,n)?e[t]:A}
function dA (line 10) | function dA(e,t,n){var r=-1;return t=$t(t.length?t:[_a],Cn(Ki())),functi...
function IA (line 10) | function IA(e,t,n){for(var r=-1,A=t.length,i={};++r<A;){var o=t[r],s=Xr(...
function EA (line 10) | function EA(e,t,n,r){var A=r?an:sn,i=-1,o=t.length,s=e;for(e===t&&(t=ni(...
function BA (line 10) | function BA(e,t){for(var n=e?t.length:0,r=n-1;n--;){var A=t[n];if(n==r||...
function yA (line 10) | function yA(e,t){return e+On(Wn()*(t-e+1))}
function mA (line 10) | function mA(e,t){var n="";if(!e||t<1||t>N)return n;do{t%2&&(n+=e),(t=On(...
function QA (line 10) | function QA(e,t){return Ao(Zi(e,t,_a),e+"")}
function wA (line 10) | function wA(e){return wr(ha(e))}
function vA (line 10) | function vA(e,t){var n=ha(e);return so(n,Rr(t,0,n.length))}
function bA (line 10) | function bA(e,t,n,r){if(!Ds(e))return e;for(var i=-1,o=(t=HA(t,e)).lengt...
function kA (line 10) | function kA(e){return so(ha(e))}
function _A (line 10) | function _A(e,t,n){var A=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0...
function FA (line 10) | function FA(e,t){var n;return Or(e,(function(e,r,A){return!(n=t(e,r,A))}...
function MA (line 10) | function MA(e,t,n){var r=0,A=null==e?r:e.length;if("number"==typeof t&&t...
function NA (line 10) | function NA(e,t,n,r){t=n(t);for(var i=0,o=null==e?0:e.length,s=t!=t,a=nu...
function RA (line 10) | function RA(e,t){for(var n=-1,r=e.length,A=0,i=[];++n<r;){var o=e[n],s=t...
function KA (line 10) | function KA(e){return"number"==typeof e?e:Ks(e)?K:+e}
function xA (line 10) | function xA(e){if("string"==typeof e)return e;if(ds(e))return $t(e,xA)+"...
function PA (line 10) | function PA(e,t,n){var r=-1,A=Xt,o=e.length,s=!0,a=[],c=a;if(n)s=!1,A=Vt...
function LA (line 10) | function LA(e,t){return null==(e=eo(e,t=HA(t,e)))||delete e[co(Qo(t))]}
function OA (line 10) | function OA(e,t,n,r){return bA(e,t,n(Xr(e,t)),r)}
function TA (line 10) | function TA(e,t,n,r){for(var A=e.length,i=r?A:-1;(r?i--:++i<A)&&t(e[i],i...
function UA (line 10) | function UA(e,t){var n=e;return n instanceof dr&&(n=n.value()),en(t,(fun...
function YA (line 10) | function YA(e,t,n){var A=e.length;if(A<2)return A?PA(e[0]):[];for(var i=...
function jA (line 10) | function jA(e,t,n){for(var r=-1,i=e.length,o=t.length,s={};++r<i;){var a...
function GA (line 10) | function GA(e){return Bs(e)?e:[]}
function JA (line 10) | function JA(e){return"function"==typeof e?e:_a}
function HA (line 10) | function HA(e,t){return ds(e)?e:qi(e,t)?[e]:ao(Js(e))}
function zA (line 10) | function zA(e,t,n){var r=e.length;return n=n===A?r:n,!t&&n>=r?e:_A(e,t,n)}
function XA (line 10) | function XA(e,t){if(t)return e.slice();var n=e.length,r=_t?_t(n):new e.c...
function VA (line 10) | function VA(e){var t=new e.constructor(e.byteLength);return new Dt(t).se...
function $A (line 10) | function $A(e,t){var n=t?VA(e.buffer):e.buffer;return new e.constructor(...
function ZA (line 10) | function ZA(e,t){if(e!==t){var n=e!==A,r=null===e,i=e==e,o=Ks(e),s=t!==A...
function ei (line 10) | function ei(e,t,n,A){for(var i=-1,o=e.length,s=n.length,a=-1,c=t.length,...
function ti (line 10) | function ti(e,t,n,A){for(var i=-1,o=e.length,s=-1,a=n.length,c=-1,u=t.le...
function ni (line 10) | function ni(e,t){var n=-1,A=e.length;for(t||(t=r(A));++n<A;)t[n]=e[n];re...
function ri (line 10) | function ri(e,t,n,r){var i=!n;n||(n={});for(var o=-1,s=t.length;++o<s;){...
function Ai (line 10) | function Ai(e,t){return function(n,r){var A=ds(n)?Jt:_r,i=t?t():{};retur...
function ii (line 10) | function ii(e){return QA((function(t,n){var r=-1,i=n.length,o=i>1?n[i-1]...
function oi (line 10) | function oi(e,t){return function(n,r){if(null==n)return n;if(!Es(n))retu...
function si (line 10) | function si(e){return function(t,n,r){for(var A=-1,i=tt(t),o=r(t),s=o.le...
function ai (line 10) | function ai(e){return function(t){var n=wn(t=Js(t))?Fn(t):A,r=n?n[0]:t.c...
function ci (line 10) | function ci(e){return function(t){return en(wa(Ca(t).replace(dt,"")),e,"...
function ui (line 10) | function ui(e){return function(){var t=arguments;switch(t.length){case 0...
function gi (line 10) | function gi(e){return function(t,n,r){var i=tt(t);if(!Es(t)){var o=Ki(n,...
function li (line 10) | function li(e){return ki((function(t){var n=t.length,r=n,i=Cr.prototype....
function hi (line 10) | function hi(e,t,n,i,o,s,a,c,u,g){var l=t&Q,h=t&C,p=t&d,f=t&(E|B),I=t&v,y...
function pi (line 10) | function pi(e,t){return function(n,r){return function(e,t,n,r){return qr...
function fi (line 10) | function fi(e,t){return function(n,r){var i;if(n===A&&r===A)return t;if(...
function Ci (line 10) | function Ci(e){return ki((function(t){return t=$t(t,Cn(Ki())),QA((functi...
function di (line 10) | function di(e,t){var n=(t=t===A?" ":xA(t)).length;if(n<2)return n?mA(t,e...
function Ii (line 10) | function Ii(e){return function(t,n,i){return i&&"number"!=typeof i&&Hi(t...
function Ei (line 10) | function Ei(e){return function(t,n){return"string"==typeof t&&"string"==...
function Bi (line 10) | function Bi(e,t,n,r,i,o,s,a,c,u){var g=t&E;t|=g?y:m,(t&=~(g?m:y))&I||(t&...
function yi (line 10) | function yi(e){var t=et[e];return function(e,n){if(e=js(e),n=null==n?0:H...
function Qi (line 10) | function Qi(e){return function(t){var n=Ui(t);return n==W?vn(t):n==te?kn...
function wi (line 10) | function wi(e,t,n,i,o,a,c,g){var l=t&d;if(!l&&"function"!=typeof e)throw...
function vi (line 10) | function vi(e,t,n,r){return e===A||hs(e,st[n])&&!ut.call(r,n)?t:e}
function bi (line 10) | function bi(e,t,n,r,i,o){return Ds(e)&&Ds(t)&&(o.set(t,e),fA(e,t,A,bi,o)...
function Di (line 10) | function Di(e){return Fs(e)?A:e}
function Si (line 10) | function Si(e,t,n,r,i,o){var s=n&p,a=e.length,c=t.length;if(a!=c&&!(s&&c...
function ki (line 10) | function ki(e){return Ao(Zi(e,A,Io),e+"")}
function _i (line 10) | function _i(e){return Vr(e,Aa,Oi)}
function Fi (line 10) | function Fi(e){return Vr(e,ia,Ti)}
function Ni (line 10) | function Ni(e){for(var t=e.name+"",n=Ar[t],r=ut.call(Ar,t)?n.length:0;r-...
function Ri (line 10) | function Ri(e){return(ut.call(hr,"placeholder")?hr:e).placeholder}
function Ki (line 10) | function Ki(){var e=hr.iteratee||Fa;return e=e===Fa?aA:e,arguments.lengt...
function xi (line 10) | function xi(e,t){var n,r,A=e.__data__;return("string"==(r=typeof(n=t))||...
function Pi (line 10) | function Pi(e){for(var t=Aa(e),n=t.length;n--;){var r=t[n],A=e[r];t[n]=[...
function Li (line 10) | function Li(e,t){var n=function(e,t){return null==e?A:e[t]}(e,t);return ...
function Yi (line 10) | function Yi(e,t,n){for(var r=-1,A=(t=HA(t,e)).length,i=!1;++r<A;){var o=...
function ji (line 10) | function ji(e){return"function"!=typeof e.constructor||Xi(e)?{}:pr(Ft(e))}
function Gi (line 10) | function Gi(e){return ds(e)||Cs(e)||!!(Pt&&e&&e[Pt])}
function Ji (line 10) | function Ji(e,t){var n=typeof e;return!!(t=null==t?N:t)&&("number"==n||"...
function Hi (line 10) | function Hi(e,t,n){if(!Ds(n))return!1;var r=typeof t;return!!("number"==...
function qi (line 10) | function qi(e,t){if(ds(e))return!1;var n=typeof e;return!("number"!=n&&"...
function zi (line 10) | function zi(e){var t=Ni(e),n=hr[t];if("function"!=typeof n||!(t in dr.pr...
function Xi (line 10) | function Xi(e){var t=e&&e.constructor;return e===("function"==typeof t&&...
function Vi (line 10) | function Vi(e){return e==e&&!Ds(e)}
function $i (line 10) | function $i(e,t){return function(n){return null!=n&&(n[e]===t&&(t!==A||e...
function Zi (line 10) | function Zi(e,t,n){return t=Jn(t===A?e.length-1:t,0),function(){for(var ...
function eo (line 10) | function eo(e,t){return t.length<2?e:Xr(e,_A(t,0,-1))}
function to (line 10) | function to(e,t){if("__proto__"!=t)return e[t]}
function io (line 10) | function io(e,t,n){var r=t+"";return Ao(e,function(e,t){var n=t.length;i...
function oo (line 10) | function oo(e){var t=0,n=0;return function(){var r=qn(),i=k-(r-n);if(n=r...
function so (line 10) | function so(e,t){var n=-1,r=e.length,i=r-1;for(t=t===A?r:t;++n<t;){var o...
function co (line 10) | function co(e){if("string"==typeof e||Ks(e))return e;var t=e+"";return"0...
function uo (line 10) | function uo(e){if(null!=e){try{return ct.call(e)}catch(e){}try{return e+...
function go (line 10) | function go(e){if(e instanceof dr)return e.clone();var t=new Cr(e.__wrap...
function fo (line 10) | function fo(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var A=null==n...
function Co (line 10) | function Co(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=r-1;ret...
function Io (line 10) | function Io(e){return(null==e?0:e.length)?Gr(e,1):[]}
function Eo (line 10) | function Eo(e){return e&&e.length?e[0]:A}
function Qo (line 10) | function Qo(e){var t=null==e?0:e.length;return t?e[t-1]:A}
function vo (line 10) | function vo(e,t){return e&&e.length&&t&&t.length?EA(e,t):e}
function Do (line 10) | function Do(e){return null==e?e:Xn.call(e)}
function Fo (line 10) | function Fo(e){if(!e||!e.length)return[];var t=0;return e=Wt(e,(function...
function Mo (line 10) | function Mo(e,t){if(!e||!e.length)return[];var n=Fo(e);return null==t?n:...
function Oo (line 10) | function Oo(e){var t=hr(e);return t.__chain__=!0,t}
function To (line 10) | function To(e,t){return t(e)}
function Jo (line 10) | function Jo(e,t){return(ds(e)?Ht:Or)(e,Ki(t,3))}
function Ho (line 10) | function Ho(e,t){return(ds(e)?qt:Tr)(e,Ki(t,3))}
function Xo (line 10) | function Xo(e,t){return(ds(e)?$t:lA)(e,Ki(t,3))}
function es (line 10) | function es(e,t,n){return t=n?A:t,t=e&&null==t?e.length:t,wi(e,Q,A,A,A,A...
function ts (line 10) | function ts(e,t){var n;if("function"!=typeof t)throw new At(s);return e=...
function As (line 10) | function As(e,t,n){var r,i,o,a,c,u,g=0,l=!1,h=!1,p=!0;if("function"!=typ...
function ss (line 10) | function ss(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)...
function as (line 10) | function as(e){if("function"!=typeof e)throw new At(s);return function()...
function hs (line 10) | function hs(e,t){return e===t||e!=e&&t!=t}
function Es (line 10) | function Es(e){return null!=e&&bs(e.length)&&!ws(e)}
function Bs (line 10) | function Bs(e){return Ss(e)&&Es(e)}
function Qs (line 10) | function Qs(e){if(!Ss(e))return!1;var t=$r(e);return t==H||t==J||"string...
function ws (line 10) | function ws(e){if(!Ds(e))return!1;var t=$r(e);return t==q||t==z||t==Y||t...
function vs (line 10) | function vs(e){return"number"==typeof e&&e==Us(e)}
function bs (line 10) | function bs(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=N}
function Ds (line 10) | function Ds(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}
function Ss (line 10) | function Ss(e){return null!=e&&"object"==typeof e}
function _s (line 10) | function _s(e){return"number"==typeof e||Ss(e)&&$r(e)==X}
function Fs (line 10) | function Fs(e){if(!Ss(e)||$r(e)!=$)return!1;var t=Ft(e);if(null===t)retu...
function Rs (line 10) | function Rs(e){return"string"==typeof e||!ds(e)&&Ss(e)&&$r(e)==ne}
function Ks (line 10) | function Ks(e){return"symbol"==typeof e||Ss(e)&&$r(e)==re}
function Os (line 10) | function Os(e){if(!e)return[];if(Es(e))return Rs(e)?Fn(e):ni(e);if(rn&&e...
function Ts (line 10) | function Ts(e){return e?(e=js(e))===M||e===-M?(e<0?-1:1)*R:e==e?e:0:0===...
function Us (line 10) | function Us(e){var t=Ts(e),n=t%1;return t==t?n?t-n:t:0}
function Ys (line 10) | function Ys(e){return e?Rr(Us(e),0,x):0}
function js (line 10) | function js(e){if("number"==typeof e)return e;if(Ks(e))return K;if(Ds(e)...
function Gs (line 10) | function Gs(e){return ri(e,ia(e))}
function Js (line 10) | function Js(e){return null==e?"":xA(e)}
function Zs (line 10) | function Zs(e,t,n){var r=null==e?A:Xr(e,t);return r===A?n:r}
function ea (line 10) | function ea(e,t){return null!=e&&Yi(e,t,tA)}
function Aa (line 10) | function Aa(e){return Es(e)?Qr(e):cA(e)}
function ia (line 10) | function ia(e){return Es(e)?Qr(e,!0):uA(e)}
function ua (line 10) | function ua(e,t){if(null==e)return{};var n=$t(Fi(e),(function(e){return[...
function ha (line 10) | function ha(e){return null==e?[]:dn(e,Aa(e))}
function fa (line 10) | function fa(e){return Qa(Js(e).toLowerCase())}
function Ca (line 10) | function Ca(e){return(e=Js(e))&&e.replace(ze,yn).replace(It,"")}
function wa (line 10) | function wa(e,t,n){return e=Js(e),(t=n?A:t)===A?function(e){return mt.te...
function Da (line 10) | function Da(e){return function(){return e}}
function _a (line 10) | function _a(e){return e}
function Fa (line 10) | function Fa(e){return aA("function"==typeof e?e:Kr(e,g))}
function Ra (line 10) | function Ra(e,t,n){var r=Aa(t),A=Wr(t,r);null!=n||Ds(t)&&(A.length||!r.l...
function Ka (line 10) | function Ka(){}
function Oa (line 10) | function Oa(e){return qi(e)?gn(co(e)):function(e){return function(t){ret...
function Ya (line 10) | function Ya(){return[]}
function ja (line 10) | function ja(){return!1}
function A (line 10) | function A(e){return new r.Observable((function(t){return e.schedule((fu...
method getExtractHint (line 10) | getExtractHint(e){return this.baseFs.getExtractHint(e)}
method resolve (line 10) | resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(...
method getRealPath (line 10) | getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}
method openPromise (line 10) | openPromise(e,t,n){return this.baseFs.openPromise(this.mapToBase(e),t,n)}
method openSync (line 10) | openSync(e,t,n){return this.baseFs.openSync(this.mapToBase(e),t,n)}
method readPromise (line 10) | async readPromise(e,t,n,r,A){return await this.baseFs.readPromise(e,t,...
method readSync (line 10) | readSync(e,t,n,r,A){return this.baseFs.readSync(e,t,n,r,A)}
method writePromise (line 10) | async writePromise(e,t,n,r,A){return"string"==typeof t?await this.base...
method writeSync (line 10) | writeSync(e,t,n,r,A){return"string"==typeof t?this.baseFs.writeSync(e,...
method closePromise (line 10) | closePromise(e){return this.baseFs.closePromise(e)}
method closeSync (line 10) | closeSync(e){this.baseFs.closeSync(e)}
method createReadStream (line 10) | createReadStream(e,t){return this.baseFs.createReadStream(null!==e?thi...
method createWriteStream (line 10) | createWriteStream(e,t){return this.baseFs.createWriteStream(null!==e?t...
method realpathPromise (line 10) | async realpathPromise(e){return this.mapFromBase(await this.baseFs.rea...
method realpathSync (line 10) | realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this....
method existsPromise (line 10) | existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}
method existsSync (line 10) | existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}
method accessSync (line 10) | accessSync(e,t){return this.baseFs.accessSync(this.mapToBase(e),t)}
method accessPromise (line 10) | accessPromise(e,t){return this.baseFs.accessPromise(this.mapToBase(e),t)}
method statPromise (line 10) | statPromise(e){return this.baseFs.statPromise(this.mapToBase(e))}
method statSync (line 10) | statSync(e){return this.baseFs.statSync(this.mapToBase(e))}
method lstatPromise (line 10) | lstatPromise(e){return this.baseFs.lstatPromise(this.mapToBase(e))}
method lstatSync (line 10) | lstatSync(e){return this.baseFs.lstatSync(this.mapToBase(e))}
method chmodPromise (line 10) | chmodPromise(e,t){return this.baseFs.chmodPromise(this.mapToBase(e),t)}
method chmodSync (line 10) | chmodSync(e,t){return this.baseFs.chmodSync(this.mapToBase(e),t)}
method renamePromise (line 10) | renamePromise(e,t){return this.baseFs.renamePromise(this.mapToBase(e),...
method renameSync (line 10) | renameSync(e,t){return this.baseFs.renameSync(this.mapToBase(e),this.m...
method copyFilePromise (line 10) | copyFilePromise(e,t,n=0){return this.baseFs.copyFilePromise(this.mapTo...
method copyFileSync (line 10) | copyFileSync(e,t,n=0){return this.baseFs.copyFileSync(this.mapToBase(e...
method appendFilePromise (line 10) | appendFilePromise(e,t,n){return this.baseFs.appendFilePromise(this.fsM...
method appendFileSync (line 10) | appendFileSync(e,t,n){return this.baseFs.appendFileSync(this.fsMapToBa...
method writeFilePromise (line 10) | writeFilePromise(e,t,n){return this.baseFs.writeFilePromise(this.fsMap...
method writeFileSync (line 10) | writeFileSync(e,t,n){return this.baseFs.writeFileSync(this.fsMapToBase...
method unlinkPromise (line 10) | unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}
method unlinkSync (line 10) | unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}
method utimesPromise (line 10) | utimesPromise(e,t,n){return this.baseFs.utimesPromise(this.mapToBase(e...
method utimesSync (line 10) | utimesSync(e,t,n){return this.baseFs.utimesSync(this.mapToBase(e),t,n)}
method mkdirPromise (line 10) | mkdirPromise(e,t){return this.baseFs.mkdirPromise(this.mapToBase(e),t)}
method mkdirSync (line 10) | mkdirSync(e,t){return this.baseFs.mkdirSync(this.mapToBase(e),t)}
method rmdirPromise (line 10) | rmdirPromise(e){return this.baseFs.rmdirPromise(this.mapToBase(e))}
method rmdirSync (line 10) | rmdirSync(e){return this.baseFs.rmdirSync(this.mapToBase(e))}
method symlinkPromise (line 10) | symlinkPromise(e,t,n){return this.baseFs.symlinkPromise(this.mapToBase...
method symlinkSync (line 10) | symlinkSync(e,t,n){return this.baseFs.symlinkSync(this.mapToBase(e),th...
method readFilePromise (line 10) | readFilePromise(e,t){return this.baseFs.readFilePromise(this.fsMapToBa...
method readFileSync (line 10) | readFileSync(e,t){return this.baseFs.readFileSync(this.fsMapToBase(e),t)}
method readdirPromise (line 10) | async readdirPromise(e,{withFileTypes:t}={}){return this.baseFs.readdi...
method readdirSync (line 10) | readdirSync(e,{withFileTypes:t}={}){return this.baseFs.readdirSync(thi...
method readlinkPromise (line 10) | async readlinkPromise(e){return this.mapFromBase(await this.baseFs.rea...
method readlinkSync (line 10) | readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this....
method watch (line 10) | watch(e,t,n){return this.baseFs.watch(this.mapToBase(e),t,n)}
method fsMapToBase (line 10) | fsMapToBase(e){return"number"==typeof e?e:this.mapToBase(e)}
method supportsDescriptor (line 10) | supportsDescriptor(e,t){if(e.range.startsWith(A.protocol))return!0;ret...
method supportsLocator (line 10) | supportsLocator(e,t){return!!e.reference.startsWith(A.protocol)}
method shouldPersistResolution (line 10) | shouldPersistResolution(e,t){return!1}
method bindDescriptor (line 10) | bindDescriptor(e,t,n){return e}
method getResolutionDependencies (line 10) | getResolutionDependencies(e,t){return[]}
method getCandidates (line 10) | async getCandidates(e,t,n){return[n.project.getWorkspaceByDescriptor(e...
method resolve (line 10) | async resolve(e,t){const n=t.project.getWorkspaceByCwd(e.reference.sli...
method fn (line 10) | static fn(e){return(...t)=>new A((n,r,A)=>{t.push(A),e(...t).then(n,r)})}
method constructor (line 10) | constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanc...
method then (line 10) | then(e,t){return this._promise.then(e,t)}
method catch (line 10) | catch(e){return this._promise.catch(e)}
method finally (line 10) | finally(e){return this._promise.finally(e)}
method cancel (line 10) | cancel(e){if(this._isPending&&!this._isCanceled){if(this._cancelHandle...
method isCanceled (line 10) | get isCanceled(){return this._isCanceled}
method ANY (line 10) | static get ANY(){return r}
method constructor (line 10) | constructor(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerel...
method parse (line 10) | parse(e){const t=this.options.loose?i[o.COMPARATORLOOSE]:i[o.COMPARATO...
method toString (line 10) | toString(){return this.value}
method test (line 10) | test(e){if(a("Comparator.test",e,this.options.loose),this.semver===r||...
method intersects (line 10) | intersects(e,t){if(!(e instanceof A))throw new TypeError("a Comparator...
method constructor (line 10) | constructor(e,t){this.path=e||"./",this.absolute=t,this.entry=null,thi...
method constructor (line 16) | constructor(e){super(e),this.clipanion={type:"usage"},this.name="Usage...
method constructor (line 16) | constructor(e,{baseFs:t,pathUtils:n}){super(n),this.target=e,this.base...
method getRealPath (line 16) | getRealPath(){return this.target}
method getBaseFs (line 16) | getBaseFs(){return this.baseFs}
method mapFromBase (line 16) | mapFromBase(e){return e}
method mapToBase (line 16) | mapToBase(e){return e}
method constructor (line 16) | constructor(e,t){super(t),this.instance=null,this.factory=e}
method baseFs (line 16) | get baseFs(){return this.instance||(this.instance=this.factory()),this...
method baseFs (line 16) | set baseFs(e){this.instance=e}
method mapFromBase (line 16) | mapFromBase(e){return e}
method mapToBase (line 16) | mapToBase(e){return e}
method match (line 42) | match(e){const t=e.split("/"),n=t.length,r=this._storage.filter(e=>!e....
method constructor (line 42) | constructor(e,t){super(),this.realCli=e,this.contexts=t,this.commands=[]}
method from (line 42) | static from(e,t,n){const r=new A(t,n);for(const t of e.options)switch(...
method execute (line 42) | async execute(){let e=this.commands;if(void 0!==this.index&&this.index...
method constructor (line 42) | constructor(){super({objectMode:!0})}
method constructor (line 50) | constructor(e,t,n){super(),this.dirWatchers=e,this.watchPath=t,this.wa...
method close (line 50) | close(){const e=this.dirWatchers.get(this.watchPath);e.eventEmitters.d...
function g (line 10) | function g(e,t){t=t||{};const n=i?i.level:0;e.level=void 0===t.level?n:t...
method constructor (line 16) | constructor(){super(...arguments),this.json=!1}
method execute (line 16) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method constructor (line 16) | constructor(){super(...arguments),this.onlyIfNeeded=!1}
method execute (line 16) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(){super(...arguments),this.all=!1,this.names=[]}
method execute (line 50) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
method constructor (line 50) | constructor(e,{realFs:t=s.default,pnpifyFs:n=!0}={}){super(A.npath),th...
method mapFromBase (line 50) | mapFromBase(e){return A.npath.fromPortablePath(e)}
method mapToBase (line 50) | mapToBase(e){return A.npath.toPortablePath(e)}
method constructor (line 56) | constructor(){super(...arguments),this.publish=!1}
method execute (line 56) | async execute(){const e=await o.Configuration.find(this.context.cwd,th...
function l (line 10) | function l(e){if(!this||!(this instanceof l)||this.template){const t={};...
method supports (line 10) | supports(e,t){if(!e.reference.startsWith(c.PROTOCOL))return!1;const n=...
method getLocalPath (line 10) | getLocalPath(e,t){return null}
method fetch (line 10) | async fetch(e,t){const n=t.checksums.get(e.locatorHash)||null,[r,A,o]=...
method fetchFromNetwork (line 10) | async fetchFromNetwork(e,t){let n;try{n=await g.get(l.getLocatorUrl(e)...
method isConventionalTarballUrl (line 10) | static isConventionalTarballUrl(e,t,{configuration:n}){let r=u.getScop...
method getLocatorUrl (line 10) | static getLocatorUrl(e){const t=s.default.clean(e.reference.slice(c.PR...
method constructor (line 16) | constructor(e,t){if("function"!=typeof e)throw new TypeError("Paramete...
method createCacheableRequest (line 16) | createCacheableRequest(e){return(t,n)=>{let g;if("string"==typeof t)g=...
method constructor (line 50) | constructor(e,{baseFs:t=new o.NodeFS,pnpifyFs:n=!0}={}){if(super(A.ppa...
method watchPnpFile (line 50) | watchPnpFile(e){this.baseFs.watch(e,{persistent:!1},(e,t)=>{if(".pnp.j...
method persistPath (line 50) | persistPath(e){const t=[];let n=e;for(;!this.baseFs.existsSync(n);)t.p...
method getExtractHint (line 50) | getExtractHint(e){return this.baseFs.getExtractHint(e)}
method resolve (line 50) | resolve(e){return this.baseFs.resolve(this.resolvePath(e).resolvedPath)}
method getBaseFs (line 50) | getBaseFs(){return this.baseFs}
method resolvePath (line 50) | resolvePath(e){if("number"==typeof e)return{resolvedPath:e,fullOrigina...
method resolveFilePath (line 50) | resolveFilePath(e){if("number"==typeof e)return e;return this.resolveP...
method resolveDirOrFilePath (line 50) | resolveDirOrFilePath(e){if("number"==typeof e)return e;let t=this.reso...
method resolveLink (line 50) | resolveLink(e,t,n,r){const A=this.resolvePath(e);if(A.isSymlink){let e...
method makeSymlinkStats (line 50) | static makeSymlinkStats(e){return Object.assign(e,{isFile:()=>!1,isDir...
method getRealPath (line 50) | getRealPath(){return this.baseFs.getRealPath()}
method openPromise (line 50) | async openPromise(e,t,n){return await this.baseFs.openPromise(this.res...
method openSync (line 50) | openSync(e,t,n){return this.baseFs.openSync(this.resolveFilePath(e),t,n)}
method readPromise (line 50) | async readPromise(e,t,n,r,A){return await this.baseFs.readPromise(e,t,...
method readSync (line 50) | readSync(e,t,n,r,A){return this.baseFs.readSync(e,t,n,r,A)}
method writePromise (line 50) | async writePromise(e,t,n,r,A){return"string"==typeof t?await this.base...
method writeSync (line 50) | writeSync(e,t,n,r,A){return"string"==typeof t?this.baseFs.writeSync(e,...
method closePromise (line 50) | async closePromise(e){await this.baseFs.closePromise(e)}
method closeSync (line 50) | closeSync(e){this.baseFs.closeSync(e)}
method createReadStream (line 50) | createReadStream(e,t){return this.baseFs.createReadStream(null!==e?thi...
method createWriteStream (line 50) | createWriteStream(e,t){return this.baseFs.createWriteStream(null!==e?t...
method realpathPromise (line 50) | async realpathPromise(e){const t=this.resolvePath(e);return t.dirList?...
method realpathSync (line 50) | realpathSync(e){const t=this.resolvePath(e);return t.dirList?t.resolve...
method existsPromise (line 50) | async existsPromise(e){const t=this.resolvePath(e);return!!t.dirList||...
method existsSync (line 50) | existsSync(e){const t=this.resolvePath(e);return!!t.dirList||this.base...
method accessPromise (line 50) | async accessPromise(e,t){return await this.baseFs.accessPromise(this.r...
method accessSync (line 50) | accessSync(e,t){return this.baseFs.accessSync(this.resolveDirOrFilePat...
method statPromise (line 50) | async statPromise(e){return await this.baseFs.statPromise(this.resolve...
method statSync (line 50) | statSync(e){return this.baseFs.statSync(this.resolveDirOrFilePath(e))}
method lstatPromise (line 50) | async lstatPromise(e){return this.resolveLink(e,"lstat",e=>l.makeSymli...
method lstatSync (line 50) | lstatSync(e){return this.resolveLink(e,"lstat",e=>l.makeSymlinkStats(e...
method chmodPromise (line 50) | async chmodPromise(e,t){return await this.baseFs.chmodPromise(this.res...
method chmodSync (line 50) | chmodSync(e,t){return this.baseFs.chmodSync(this.resolveDirOrFilePath(...
method renamePromise (line 50) | async renamePromise(e,t){return await this.baseFs.renamePromise(this.r...
method renameSync (line 50) | renameSync(e,t){return this.baseFs.renameSync(this.resolveDirOrFilePat...
method copyFilePromise (line 50) | async copyFilePromise(e,t,n){return await this.baseFs.copyFilePromise(...
method copyFileSync (line 50) | copyFileSync(e,t,n){return this.baseFs.copyFileSync(this.resolveFilePa...
method appendFilePromise (line 50) | async appendFilePromise(e,t,n){return await this.baseFs.appendFileProm...
method appendFileSync (line 50) | appendFileSync(e,t,n){return this.baseFs.appendFileSync(this.resolveDi...
method writeFilePromise (line 50) | async writeFilePromise(e,t,n){return await this.baseFs.writeFilePromis...
method writeFileSync (line 50) | writeFileSync(e,t,n){return this.baseFs.writeFileSync(this.resolveDirO...
method unlinkPromise (line 50) | async unlinkPromise(e){return await this.baseFs.unlinkPromise(this.res...
method unlinkSync (line 50) | unlinkSync(e){return this.baseFs.unlinkSync(this.resolveDirOrFilePath(...
method utimesPromise (line 50) | async utimesPromise(e,t,n){return await this.baseFs.utimesPromise(this...
method utimesSync (line 50) | utimesSync(e,t,n){return this.baseFs.utimesSync(this.resolveDirOrFileP...
method mkdirPromise (line 50) | async mkdirPromise(e,t){const n=this.resolvePath(e),r=this.resolvePath...
method mkdirSync (line 50) | mkdirSync(e,t){const n=this.resolvePath(e),r=this.resolvePath(A.ppath....
method rmdirPromise (line 50) | async rmdirPromise(e){return await this.baseFs.rmdirPromise(this.resol...
method rmdirSync (line 50) | rmdirSync(e){return this.baseFs.rmdirSync(this.resolveDirOrFilePath(e))}
method symlinkPromise (line 50) | async symlinkPromise(e,t){return await this.baseFs.symlinkPromise(this...
method symlinkSync (line 50) | symlinkSync(e,t){return this.baseFs.symlinkSync(this.resolveDirOrFileP...
method readFilePromise (line 50) | async readFilePromise(e,t){switch(t){case"utf8":default:return await t...
method readFileSync (line 50) | readFileSync(e,t){switch(t){case"utf8":default:return this.baseFs.read...
method readdirPromise (line 50) | async readdirPromise(e,{withFileTypes:t}={}){const n=this.resolvePath(...
method readdirSync (line 50) | readdirSync(e,{withFileTypes:t}={}){const n=this.resolvePath(e);if(n.d...
method readlinkPromise (line 50) | async readlinkPromise(e){return this.resolveLink(e,"readlink",(e,t)=>t...
method readlinkSync (line 50) | readlinkSync(e){return this.resolveLink(e,"readlink",(e,t)=>t,e=>this....
method watch (line 50) | watch(e,t,n){const r=this.resolvePath(e),A=r.resolvedPath;if(A&&r.dirL...
method isHash (line 56) | get isHash(){return!0}
method constructor (line 56) | constructor(e,t){const n=!!(t=g(t)).strict;this.source=e.trim();const ...
method hexDigest (line 56) | hexDigest(){return this.digest&&Buffer.from(this.digest,"base64").toSt...
method toJSON (line 56) | toJSON(){return this.toString()}
method toString (line 56) | toString(e){if((e=g(e)).strict&&!(o.some(e=>e===this.algorithm)&&this....
method get (line 10) | get(){const t=A[e];return p.call(this,this._styles?this._styles.concat(t...
method get (line 10) | get(){return p.call(this,this._styles||[],!0,"visible")}
method get (line 10) | get(){const t=this.level;return function(){const n=A.color[a[t]][e].appl...
method get (line 10) | get(){const t=this.level;return function(){const n=A.bgColor[a[t]][e].ap...
function p (line 10) | function p(e,t,n){const r=function(){return f.apply(r,arguments)};r._sty...
function f (line 10) | function f(){const e=arguments,t=e.length;let n=String(arguments[0]);if(...
method constructor (line 10) | constructor(){this.dev=0,this.ino=0,this.mode=0,this.nlink=1,this.rdev...
method isBlockDevice (line 10) | isBlockDevice(){return!1}
method isCharacterDevice (line 10) | isCharacterDevice(){return!1}
method isDirectory (line 10) | isDirectory(){return(this.mode&g)===l}
method isFIFO (line 10) | isFIFO(){return!1}
method isFile (line 10) | isFile(){return(this.mode&g)===h}
method isSocket (line 10) | isSocket(){return!1}
method isSymbolicLink (line 10) | isSymbolicLink(){return(this.mode&g)===p}
method constructor (line 10) | constructor(){this.values=new Map,this.expiries=new Map}
method set (line 10) | set(e,t,n){this.values.set(e,t),this.expiries.set(e,n&&n+Date.now())}
method get (line 10) | get(e){const t=this.expiries.get(e);return"number"==typeof t&&Date.now...
method delete (line 10) | delete(e){return this.values.delete(e),this.expiries.delete(e)}
method clear (line 10) | clear(){this.values.clear(),this.expiries.clear()}
method size (line 10) | get size(){return this.values.size}
method constructor (line 16) | constructor({configuration:e,stdout:t,json:n=!1,includeFooter:r=!0,inc...
method start (line 16) | static async start(e,t){const n=new this(e);try{await t(n)}catch(e){n....
method hasErrors (line 16) | hasErrors(){return this.errorCount>0}
method exitCode (line 16) | exitCode(){return this.hasErrors()?1:0}
method reportCacheHit (line 16) | reportCacheHit(e){this.cacheHitCount+=1}
method reportCacheMiss (line 16) | reportCacheMiss(e,t){this.cacheMissCount+=1,void 0===t||this.configura...
method startTimerSync (line 16) | startTimerSync(e,t){this.reportInfo(null,`┌ ${e}`);const n=Date.now();...
method startTimerPromise (line 16) | async startTimerPromise(e,t){this.reportInfo(null,`┌ ${e}`),null!==u&&...
method startCacheReport (line 16) | async startCacheReport(e){const t=this.configuration.get("preferAggreg...
method reportSeparator (line 16) | reportSeparator(){0===this.indent?this.writeLineWithForgettableReset("...
method reportInfo (line 16) | reportInfo(e,t){if(this.includeInfos)if(this.json)this.reportJson({typ...
method reportWarning (line 16) | reportWarning(e,t){this.warningCount+=1,this.includeWarnings&&(this.js...
method reportError (line 16) | reportError(e,t){this.errorCount+=1,this.json?this.reportJson({type:"e...
method reportProgress (line 16) | reportProgress(e){let t=!1;const n=Promise.resolve().then(async()=>{va...
method reportJson (line 16) | reportJson(e){this.json&&this.writeLineWithForgettableReset(`${JSON.st...
method finalize (line 16) | async finalize(){if(!this.includeFooter)return;let e="";e=this.errorCo...
method writeLine (line 16) | writeLine(e){this.clearProgress({clear:!0}),this.stdout.write(`${e}\n`...
method writeLineWithForgettableReset (line 16) | writeLineWithForgettableReset(e){this.forgettableLines=[],this.writeLi...
method writeLines (line 16) | writeLines(e,t){this.clearProgress({delta:t.length});for(const n of t)...
method reportCacheChanges (line 16) | reportCacheChanges({cacheHitCount:e,cacheMissCount:t}){const n=this.ca...
method clearProgress (line 16) | clearProgress({delta:e=0,clear:t=!1}){this.configuration.get("enablePr...
method writeProgress (line 16) | writeProgress(){if(!this.configuration.get("enableProgressBars")||this...
method refreshProgress (line 16) | refreshProgress(e=0){this.clearProgress({delta:e}),this.writeProgress()}
method formatTiming (line 16) | formatTiming(e){return e<6e4?`${Math.round(e/10)/100}s`:`${Math.round(...
method formatName (line 16) | formatName(e){const t=`YN${(null===e?0:e).toString(10).padStart(4,"0")...
method formatNameWithHyperlink (line 16) | formatNameWithHyperlink(e){const t=this.formatName(e);return this.conf...
method formatIndent (line 16) | formatIndent(){return"│ ".repeat(this.indent)}
method constructor (line 42) | constructor(e,{configuration:t,immutable:n=t.get("enableImmutableCache...
method find (line 42) | static async find(e,{immutable:t,check:n}={}){const r=new f(e.get("cac...
method mirrorCwd (line 42) | get mirrorCwd(){if(!this.configuration.get("enableMirror"))return null...
method getLocatorFilename (line 42) | getLocatorFilename(e){return`${h.slugifyLocator(e)}${this.compressionL...
method getLocatorPath (line 42) | getLocatorPath(e){return o.ppath.resolve(this.cwd,this.getLocatorFilen...
method getLocatorMirrorPath (line 42) | getLocatorMirrorPath(e){const t=this.mirrorCwd;return null!==t?o.ppath...
method setup (line 42) | async setup(){if(!this.configuration.get("enableGlobalCache")){await o...
method fetchPackageFromCache (line 42) | async fetchPackageFromCache(e,t,{onHit:n,onMiss:r,loader:A}){const f=t...
method writeFileWithLock (line 42) | async writeFileWithLock(e,t){return null===e?await t():(await o.xfs.mk...
method constructor (line 50) | constructor(){super(...arguments),this.repository="https://github.com/...
method execute (line 50) | async execute(){const e=await i.Configuration.find(this.context.cwd,th...
function C (line 10) | function C(e,t){if(!Array.isArray(t))return[].slice.call(arguments,1).jo...
method constructor (line 10) | constructor({timeout:e=6e4,maxSessions:t=1/0,maxFreeSessions:n=1,maxCa...
method normalizeOrigin (line 10) | static normalizeOrigin(e,t){return"string"==typeof e&&(e=new UR
Copy disabled (too large)
Download .json
Condensed preview — 10664 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (26,538K chars).
[
{
"path": ".changeset/README.md",
"chars": 510,
"preview": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that wo"
},
{
"path": ".changeset/config.json",
"chars": 464,
"preview": "{\n \"$schema\": \"https://unpkg.com/@changesets/config@2.3.0/schema.json\",\n \"changelog\": [\n \"@svitejs/changesets-chang"
},
{
"path": ".changeset/dirty-fans-suffer.md",
"chars": 64,
"preview": "---\n'@vercel/next': patch\n---\n\nUpdate to latest Next.js adapter\n"
},
{
"path": ".changeset/fix-cli-evals-setup.md",
"chars": 320,
"preview": "---\n---\n\nfix(cli): fix eval sandbox setup and multi-product-install assertion\n\n- Pre-write `.vercel/project.json` in Doc"
},
{
"path": ".changeset/node-security-2026-03-24.md",
"chars": 266,
"preview": "---\n---\n\nBump CI and local Node.js pins to the 2026-03-24 security releases (20.20.2, 22.22.2, 24.14.1). `uv.lock` is un"
},
{
"path": ".changeset/odd-bugs-approve.md",
"chars": 170,
"preview": "---\n'vercel': patch\n---\n\nImprove `vercel link` by searching matching project names across teams by default, with clearer"
},
{
"path": ".claude/skills/vercel-runtime-implementation-guide.md",
"chars": 4843,
"preview": "# Vercel Runtime Implementation Guide\n\nGuide for building Vercel runtimes that implement the Fluid IPC protocol.\n\n**Refe"
},
{
"path": ".editorconfig",
"chars": 763,
"preview": "root = true\n\n[*]\nindent_style = space\nindent_size = 2\ntab_width = 2\nend_of_line = lf\ncharset = utf-8\ntrim_trailing_white"
},
{
"path": ".gitattributes",
"chars": 491,
"preview": "# Ignore test fixtures in GitHub Languages\n# See https://github.com/github/linguist#vendored-code\nexamples/* linguist-ve"
},
{
"path": ".github/AFFECTED_TESTING.md",
"chars": 3278,
"preview": "# Affected Testing Strategy\n\nThis repository implements an affected testing strategy, which runs tests only on packages "
},
{
"path": ".github/CODEOWNERS",
"chars": 4707,
"preview": "# Documentation\n# https://help.github.com/en/articles/about-code-owners\n\n# Restricted Paths\n* "
},
{
"path": ".github/CODE_OF_CONDUCT.md",
"chars": 3235,
"preview": "## Code of Conduct\n\n### Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors a"
},
{
"path": ".github/CONTRIBUTING.md",
"chars": 96,
"preview": "## Contributing\n\nSee the [Contributing Guidelines](../README.md#contributing) for more details.\n"
},
{
"path": ".github/DISCUSSION_TEMPLATE/general.yml",
"chars": 400,
"preview": "body:\n - type: markdown\n attributes:\n value: |\n # Please go to Vercel Community\n > [!IMPORTANT] "
},
{
"path": ".github/DISCUSSION_TEMPLATE/help.yml",
"chars": 397,
"preview": "body:\n - type: markdown\n attributes:\n value: |\n # Please go to Vercel Community\n > [!IMPORTANT] "
},
{
"path": ".github/DISCUSSION_TEMPLATE/ideas.yml",
"chars": 393,
"preview": "body:\n - type: markdown\n attributes:\n value: |\n # Please go to Vercel Community\n > [!IMPORTANT] "
},
{
"path": ".github/DISCUSSION_TEMPLATE/show-and-tell.yml",
"chars": 400,
"preview": "body:\n - type: markdown\n attributes:\n value: |\n # Please go to Vercel Community\n > [!IMPORTANT] "
},
{
"path": ".github/EXAMPLE_README_TEMPLATE.md",
"chars": 674,
"preview": "# [Name] Example\n\nThis directory is a brief example of a [Name](site-link) site that can be deployed to Vercel with zero"
},
{
"path": ".github/ISSUE_TEMPLATE/cli_bug_report.md",
"chars": 420,
"preview": "---\nname: Vercel CLI Bug report\nabout: File a bug report for the `vercel` CLI\ntitle: ''\n---\n\n**Thanks for reaching out!*"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 376,
"preview": "blank_issues_enabled: false\n\ncontact_links:\n - name: Vercel Platform Bug Report\n url: https://vercel.com/help\n ab"
},
{
"path": ".github/aw/actions-lock.json",
"chars": 360,
"preview": "{\n \"entries\": {\n \"actions/github-script@v8\": {\n \"repo\": \"actions/github-script\",\n \"version\": \"v8\",\n \""
},
{
"path": ".github/workflows/agentics-maintenance.yml",
"chars": 5148,
"preview": "#\n# ___ _ _ \n# / _ \\ | | (_) \n# | |_| | __ _ ___ _ __ | |_ _ ___ \n#"
},
{
"path": ".github/workflows/ci-doctor.lock.yml",
"chars": 77608,
"preview": "#\n# ___ _ _ \n# / _ \\ | | (_) \n# | |_| | __ _ ___ _ __ | |_ _ ___ \n#"
},
{
"path": ".github/workflows/ci-doctor.md",
"chars": 10614,
"preview": "---\ndescription: Investigates failed CI workflows to identify root causes and patterns, creating issues with diagnostic "
},
{
"path": ".github/workflows/cli-evals.yml",
"chars": 2994,
"preview": "name: CLI Evals\n\n# Runs on PRs only when evals change (to limit AI gateway cost). Also runnable manually via \"Run workfl"
},
{
"path": ".github/workflows/comment-cli-tarball.yml",
"chars": 5500,
"preview": "name: Comment CLI Tarball Instructions\n\non:\n pull_request:\n\nenv:\n VERCEL_TELEMETRY_DISABLED: '1'\n\nconcurrency:\n group"
},
{
"path": ".github/workflows/cron-update-gatsby-fixtures.yml",
"chars": 1088,
"preview": "name: Cron Update Gatsby Fixtures\n\non:\n # Allow manual runs\n workflow_dispatch:\n # Run once a week https://crontab.gu"
},
{
"path": ".github/workflows/cron-update-next-canary.yml",
"chars": 1093,
"preview": "name: Cron Update Next\n\non:\n # Allow manual runs\n workflow_dispatch:\n # Run every 10 minutes https://crontab.guru/eve"
},
{
"path": ".github/workflows/cron-update-next-latest.yml",
"chars": 1004,
"preview": "name: Cron Update Next\n\non:\n # Allow manual runs\n workflow_dispatch:\n # Run every 4 hours https://crontab.guru/every-"
},
{
"path": ".github/workflows/cron-update-turbo.yml",
"chars": 983,
"preview": "name: Cron Update Turbo\n\non:\n # Allow manual runs\n workflow_dispatch:\n # Run every week https://crontab.guru/every-we"
},
{
"path": ".github/workflows/discussions-auto-close.yml",
"chars": 1433,
"preview": "name: New Discussion Auto-lock\n# automatically lock and close new discussion posts\n\non:\n discussion:\n types: [create"
},
{
"path": ".github/workflows/faster-template-prebuild-nextjs.yml",
"chars": 1319,
"preview": "name: Prebuild Next.js Example\n\non:\n push:\n branches:\n - main\n workflow_dispatch:\n inputs:\n\njobs:\n clone-b"
},
{
"path": ".github/workflows/release-crates.yml",
"chars": 541,
"preview": "name: Release Rust Crates\n\non:\n push:\n branches: [main]\n paths:\n - 'crates/vercel_runtime/**'\n - 'Cargo"
},
{
"path": ".github/workflows/release-python-package.yml",
"chars": 1317,
"preview": "name: Release Python Package\n\non:\n workflow_dispatch:\n inputs:\n package:\n description: 'Python package t"
},
{
"path": ".github/workflows/release.yml",
"chars": 3033,
"preview": "name: Release\n\non:\n push:\n branches:\n - main\n\nenv:\n TURBO_REMOTE_ONLY: 'true'\n TURBO_TEAM: 'vercel'\n TURBO_T"
},
{
"path": ".github/workflows/rollback-latest-tag.yml",
"chars": 1673,
"preview": "name: Rollback Latest Tag\n\non:\n workflow_dispatch:\n inputs:\n version:\n description: 'CLI version to set "
},
{
"path": ".github/workflows/test-e2e.yml",
"chars": 11215,
"preview": "name: E2E Tests\n# any files changing in .github/workflows will ensure\n# that all e2e tests run. One easy way of doing th"
},
{
"path": ".github/workflows/test-lint.yml",
"chars": 4615,
"preview": "name: Lint\n\non:\n pull_request:\n\nenv:\n TURBO_REMOTE_ONLY: 'true'\n TURBO_TEAM: 'vercel'\n TURBO_TOKEN: ${{ secrets.TURB"
},
{
"path": ".github/workflows/test-python-packages.yml",
"chars": 2223,
"preview": "name: Python Packages Tests\n\non:\n pull_request:\n paths:\n - 'python/**'\n - 'pyproject.toml'\n - 'uv.loc"
},
{
"path": ".github/workflows/test.yml",
"chars": 18937,
"preview": "name: Unit Tests\n\non:\n pull_request:\n\nenv:\n VERCEL_TELEMETRY_DISABLED: '1'\n TURBO_REMOTE_ONLY: 'true'\n TURBO_TEAM: '"
},
{
"path": ".github/workflows/update-remix-run-dev.yml",
"chars": 859,
"preview": "name: Update @remix-run/dev\n\non:\n workflow_dispatch:\n inputs:\n new-version:\n type: string\n descri"
},
{
"path": ".gitignore",
"chars": 1049,
"preview": "node_modules\ndist\n.vscode\n.zed\nnpm-debug.log\nyarn-error.log\n.nyc_output\ncoverage\ncoverage.lcov\n*.swp\n*~\n*.bak\n*.tgz\npack"
},
{
"path": ".husky/.gitignore",
"chars": 2,
"preview": "_\n"
},
{
"path": ".husky/pre-commit",
"chars": 58,
"preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\npnpm pre-commit\n"
},
{
"path": ".node_version",
"chars": 7,
"preview": "22.19.0"
},
{
"path": ".npmrc",
"chars": 187,
"preview": "provenance=true\nsave-exact=true\nhoist-pattern[]=!\"**/@types/**\"\nhoist-pattern[]=!\"**/typedoc\"\nhoist-pattern[]=!\"**/typed"
},
{
"path": ".nvmrc",
"chars": 2,
"preview": "22"
},
{
"path": ".prettierignore",
"chars": 833,
"preview": "# https://prettier.io/docs/en/ignore.html\n\n# ignore these files with an intentional syntax error\npackages/cli/test/dev/f"
},
{
"path": ".syncpackrc.json",
"chars": 625,
"preview": "{\n \"$schema\": \"node_modules/syncpack/dist/schema.json\",\n \"lintFormatting\": false,\n \"source\": [\n \"package.json\",\n "
},
{
"path": ".vercel.approvers",
"chars": 73,
"preview": "# Migrated CODEOWNERS rule: * @vercel/ci-cd\n\n@vercel/ci-cd:team:optional\n"
},
{
"path": ".vercelignore",
"chars": 19,
"preview": "packages/*/test/**\n"
},
{
"path": "AGENTS.md",
"chars": 4205,
"preview": "# AGENTS.md\n\nGuidelines for AI agents working on the Vercel monorepo.\n\n## Repository Structure\n\nThis is a pnpm monorepo "
},
{
"path": "Cargo.toml",
"chars": 70,
"preview": "[workspace]\nresolver = \"3\"\nmembers = [\n \"crates/vercel_runtime\",\n]\n"
},
{
"path": "DEVELOPING_A_RUNTIME.md",
"chars": 17765,
"preview": "# Runtime Developer Reference\n\nThe following page is a reference for how to create a Runtime by implementing\nthe Runtime"
},
{
"path": "LICENSE",
"chars": 11343,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 7370,
"preview": "<p align=\"center\">\n <a href=\"https://vercel.com\">\n <img src=\"https://assets.vercel.com/image/upload/v1588805858/repo"
},
{
"path": "api/_lib/examples/example-list.ts",
"chars": 603,
"preview": "import Frameworks, { Framework } from '../../../packages/frameworks';\n\ninterface Example {\n example: string;\n path: st"
},
{
"path": "api/_lib/examples/github-repo-info.ts",
"chars": 2167,
"preview": "import nodeFetch from 'node-fetch';\nimport { Repo } from '../types';\nimport { getExampleList } from './example-list';\n\n/"
},
{
"path": "api/_lib/examples/gitlab-repo-info.ts",
"chars": 1092,
"preview": "import nodeFetch from 'node-fetch';\n\ninterface Repo {\n repo: string;\n owner: {\n username: string;\n };\n username: "
},
{
"path": "api/_lib/examples/map-old-to-new.ts",
"chars": 1015,
"preview": "export const mapOldToNew: { [key: string]: string[] } = {\n 'go-image-to-ascii': ['vanilla-functions'],\n markdown: ['he"
},
{
"path": "api/_lib/examples/summary.ts",
"chars": 559,
"preview": "/**\n * Get example list from extracted folder\n */\n\nimport { lstatSync, existsSync, readdirSync } from 'fs';\n\nconst exist"
},
{
"path": "api/_lib/script/build.ts",
"chars": 4934,
"preview": "import { createWriteStream } from 'fs';\nimport fs from 'fs/promises';\nimport tar from 'tar-fs';\nimport { pipeline } from"
},
{
"path": "api/_lib/types.ts",
"chars": 134,
"preview": "export interface Repo {\n repo: string;\n owner: {\n username: string;\n };\n username: string;\n branch: string;\n pa"
},
{
"path": "api/_lib/util/assert-env.ts",
"chars": 163,
"preview": "export function assertEnv(name: string) {\n const value = process.env[name];\n\n if (!value) {\n throw new Error(`Missi"
},
{
"path": "api/_lib/util/error-handler.ts",
"chars": 1164,
"preview": "import { init, captureException, withScope } from '@sentry/node';\nimport { assertEnv } from './assert-env';\n\nconst servi"
},
{
"path": "api/_lib/util/with-api-handler.ts",
"chars": 1171,
"preview": "import { VercelRequest, VercelResponse } from '@vercel/node';\nimport { errorHandler } from './error-handler';\n\ntype Hand"
},
{
"path": "api/examples/info.ts",
"chars": 1209,
"preview": "// A proxy to get the basic info of an existing github/gitlab repo:\n// GET /info?repo=vercel/micro\n\n// @ts-ignore\nimport"
},
{
"path": "api/frameworks.ts",
"chars": 1191,
"preview": "import { VercelRequest, VercelResponse } from '@vercel/node';\nimport { withApiHandler } from './_lib/util/with-api-handl"
},
{
"path": "api/package.json",
"chars": 467,
"preview": "{\n \"name\": \"api\",\n \"private\": true,\n \"version\": \"0.0.1\",\n \"description\": \"API for the vercel/vercel repo\",\n \"main\":"
},
{
"path": "api/tsconfig.json",
"chars": 393,
"preview": "{\n \"compilerOptions\": {\n \"target\": \"ES2021\",\n \"skipLibCheck\": true,\n \"strict\": false,\n \"forceConsistentCasi"
},
{
"path": "biome.jsonc",
"chars": 6999,
"preview": "{\n \"$schema\": \"./node_modules/@biomejs/biome/configuration_schema.json\",\n \"vcs\": {\n \"enabled\": true,\n \"clientKin"
},
{
"path": "crates/vercel_runtime/Cargo.toml",
"chars": 949,
"preview": "[package]\nname = \"vercel_runtime\"\nversion = \"2.1.1\"\nedition = \"2024\"\ndescription = \"Vercel Runtime for Rust\"\nlicense = \""
},
{
"path": "crates/vercel_runtime/src/axum/mod.rs",
"chars": 7873,
"preview": "use axum::response::Response;\nuse axum::{body::Body, response::IntoResponse};\nuse http_body_util::BodyExt;\nuse hyper::bo"
},
{
"path": "crates/vercel_runtime/src/ipc/core.rs",
"chars": 1569,
"preview": "use serde::{Deserialize, Serialize};\n\n#[derive(Serialize, Deserialize, Debug)]\npub struct RequestContext {\n #[serde(r"
},
{
"path": "crates/vercel_runtime/src/ipc/log.rs",
"chars": 2470,
"preview": "#![allow(dead_code)]\nuse crate::ipc::core::RequestContext;\nuse serde::{Deserialize, Serialize};\n\n#[derive(Serialize, Des"
},
{
"path": "crates/vercel_runtime/src/ipc/metric.rs",
"chars": 1034,
"preview": "#![allow(dead_code)]\nuse crate::ipc::core::RequestContext;\nuse serde::{Deserialize, Serialize};\n\n#[derive(Serialize, Des"
},
{
"path": "crates/vercel_runtime/src/ipc/mod.rs",
"chars": 43,
"preview": "pub mod core;\npub mod log;\npub mod metric;\n"
},
{
"path": "crates/vercel_runtime/src/ipc_utils.rs",
"chars": 3823,
"preview": "#![cfg(unix)]\n\nuse base64::prelude::*;\nuse serde::Serialize;\nuse std::collections::VecDeque;\nuse std::io::prelude::*;\nus"
},
{
"path": "crates/vercel_runtime/src/lib.rs",
"chars": 12471,
"preview": "use hyper::server::conn::http1;\nuse hyper::service::service_fn as hyper_service_fn;\nuse hyper_util::rt::TokioIo;\nuse std"
},
{
"path": "crates/vercel_runtime/src/types.rs",
"chars": 9234,
"preview": "use http_body_util::BodyExt;\nuse hyper::body::Bytes;\nuse hyper::{Response, StatusCode};\n\npub type Error = Box<dyn std::e"
},
{
"path": "errors/cant-solve-challenge.md",
"chars": 1332,
"preview": "# The DNS Challenge Could Not Be Solved\n\n## Why This Error Occurred\n\nWhen generating a certificate, we have to prove own"
},
{
"path": "errors/deploy-invalid-dc.md",
"chars": 763,
"preview": "# Invalid Region or DC Identifier\n\n#### Why This Error Occurred\n\nWhen supplying `regions` configuration, you\nused an unk"
},
{
"path": "errors/deployment-error.md",
"chars": 616,
"preview": "# Deployment failed\n\n## Why This Error Occurred\n\nWhen deploying this project, there was not a successful deployment into"
},
{
"path": "errors/dns-configuration-error.md",
"chars": 1061,
"preview": "# The DNS Configuration can't be verified\n\n## Why This Error Occurred\n\nWhen generating a certificate, we have to prove o"
},
{
"path": "errors/domain-verification.md",
"chars": 776,
"preview": "# Domain Verification\n\n#### Why This Error Occurred\n\nThe domain you supplied cannot be verified using the intended names"
},
{
"path": "errors/env-value-invalid-type.md",
"chars": 426,
"preview": "# Bad Type in Env Value\n\n#### Why This Error Occurred\n\nYou supplied a value in the `env` of your deployment whose type i"
},
{
"path": "errors/invalid-route-source.md",
"chars": 1177,
"preview": "# Invalid Custom Route `source`\n\n#### Why This Error Occurred\n\nWhen defining custom routes a route was added that causes"
},
{
"path": "errors/invalid-token-value.md",
"chars": 475,
"preview": "# Invalid Token Value\n\n#### Why This Error Occurred\n\nThe `--token` flag was specified, but its contents are invalid.\n\n##"
},
{
"path": "errors/missing-env-file.md",
"chars": 1539,
"preview": "# Missing Environment Variables While Developing\n\n#### Why This Error Occurred\n\nYou ran `vercel dev` inside a project th"
},
{
"path": "errors/missing-env-key-value.md",
"chars": 299,
"preview": "# Missing Env Key and Value\n\n#### Why This Error Occurred\n\nYou specified the `--env` or `-e` flag and didn't add a name "
},
{
"path": "errors/missing-scope-value.md",
"chars": 464,
"preview": "# Missing Scope Value\n\n#### Why This Error Occurred\n\nThe `--scope` flag was specified, but there's no value for it avail"
},
{
"path": "errors/missing-token-value.md",
"chars": 466,
"preview": "# Missing Token Value\n\n#### Why This Error Occurred\n\nThe `--token` flag was specified, but there's no value for it avail"
},
{
"path": "errors/next-functions-config-optimized-lambdas.md",
"chars": 634,
"preview": "# `@vercel/next` Functions Config Optimized Lambdas Opt-out\n\n#### Why This Warning Occurred\n\n`@vercel/next` by default n"
},
{
"path": "errors/next-legacy-routes-optimized-lambdas.md",
"chars": 992,
"preview": "# `@vercel/next` Legacy Routes Optimized Lambdas Opt-out\n\n#### Why This Warning Occurred\n\n`@vercel/next` by default now "
},
{
"path": "errors/no-credentials-found.md",
"chars": 515,
"preview": "# No Credentials Found\n\n#### Why This Error Occurred\n\nYou're running Vercel CLI in a non-terminal context and there are "
},
{
"path": "errors/no-open-port-found.md",
"chars": 442,
"preview": "# No Open Port Found\n\n#### Why This Error Occurred\n\nYour application code exited or timed out before binding to a port n"
},
{
"path": "errors/no-single-file-deployments.md",
"chars": 468,
"preview": "# No Single File Deployments\n\n#### Why This Error Occurred\n\nYou attempted to create a Vercel deployment where the input "
},
{
"path": "errors/no-token-allowed.md",
"chars": 698,
"preview": "# No Token Allowed\n\n#### Why This Error Occurred\n\nYou tried to run a command that doesn't allow the `--token` flag (like"
},
{
"path": "errors/now-dev-as-dev-script.md",
"chars": 407,
"preview": "# `vercel dev` as `dev` script\n\n#### Why This Error Occurred\n\nThe `package.json` file of the used project invokes `verce"
},
{
"path": "errors/now-next-legacy-mode.md",
"chars": 2182,
"preview": "# `@vercel/next` Legacy Mode\n\n#### Why This Warning Occurred\n\n`@vercel/next` has two modes: `legacy` and `serverless`. Y"
},
{
"path": "errors/now-next-no-serverless-pages-built.md",
"chars": 1387,
"preview": "# `@vercel/next` No Serverless Pages Built\n\n#### Why This Error Occurred\n\nThis error occurs when your application is not"
},
{
"path": "errors/now-next-routes-manifest.md",
"chars": 2218,
"preview": "# Routes Manifest Could Not Be Found\n\n#### Why This Error Occurred\n\nThis error occurs when the Next.js build output dire"
},
{
"path": "errors/now-static-build-failed-to-detect-a-server.md",
"chars": 1257,
"preview": "# `@vercel/static-build` Failed to detect a server running\n\n#### Why This Warning Occurred\n\nWhen running `vercel dev`, t"
},
{
"path": "errors/path-not-deployable.md",
"chars": 419,
"preview": "# Path Not Deployable\n\n#### Why This Error Occurred\n\nYou either tried to run Vercel CLI inside a directory that should n"
},
{
"path": "errors/scope-not-accessible.md",
"chars": 892,
"preview": "# Scope Not Accessible\n\n#### Why This Error Occurred\n\nYou specified the `--scope` flag and specified the ID or slug of a"
},
{
"path": "errors/scope-not-existent.md",
"chars": 888,
"preview": "# Scope Not Existent\n\n#### Why This Error Occurred\n\nYou specified the `--scope` flag and specified the ID or slug of a t"
},
{
"path": "errors/solve-challenges-manually.md",
"chars": 1003,
"preview": "# DNS Challenges must be solved manually\n\n## Why This Error Occurred\n\nWhen generating a certificate, we have to prove ow"
},
{
"path": "errors/unauthorized-domain.md",
"chars": 354,
"preview": "# Not authorized to access domain\n\n#### Why This Error Occurred\n\nYou tried to add or update a domain's configuration, bu"
},
{
"path": "examples/CHANGELOG.md",
"chars": 605,
"preview": "# examples\n\n## null\n\n### Patch Changes\n\n- Bump python-fasthtml dependency for examples ([#11981](https://github.com/verc"
},
{
"path": "examples/README.md",
"chars": 2190,
"preview": "# Vercel Examples\n\nTo get started using any of these examples as your own project, [install Vercel](https://vercel.com/d"
},
{
"path": "examples/__tests__/integration/angular.test.ts",
"chars": 138,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy angular', async () => {\n await deployExampl"
},
{
"path": "examples/__tests__/integration/astro.test.ts",
"chars": 134,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy astro', async () => {\n await deployExample("
},
{
"path": "examples/__tests__/integration/axum.test.ts",
"chars": 132,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy axum', async () => {\n await deployExample('"
},
{
"path": "examples/__tests__/integration/blitzjs.test.ts",
"chars": 138,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy blitzjs', async () => {\n await deployExampl"
},
{
"path": "examples/__tests__/integration/brunch.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy brunch', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/create-react-app.test.ts",
"chars": 156,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy create-react-app', async () => {\n await dep"
},
{
"path": "examples/__tests__/integration/django.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy django', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/docusaurus-2.test.ts",
"chars": 148,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy docusaurus-2', async () => {\n await deployE"
},
{
"path": "examples/__tests__/integration/docusaurus.test.ts",
"chars": 144,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy docusaurus', async () => {\n await deployExa"
},
{
"path": "examples/__tests__/integration/eleventy.test.ts",
"chars": 140,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy eleventy', async () => {\n await deployExamp"
},
{
"path": "examples/__tests__/integration/elysia.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy elysia', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/ember.test.ts",
"chars": 134,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy ember', async () => {\n await deployExample("
},
{
"path": "examples/__tests__/integration/express.test.ts",
"chars": 138,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy express', async () => {\n await deployExampl"
},
{
"path": "examples/__tests__/integration/fastapi.test.ts",
"chars": 138,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy fastapi', async () => {\n await deployExampl"
},
{
"path": "examples/__tests__/integration/fasthtml.test.ts",
"chars": 140,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy fasthtml', async () => {\n await deployExamp"
},
{
"path": "examples/__tests__/integration/fastify.test.ts",
"chars": 138,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy fastify', async () => {\n await deployExampl"
},
{
"path": "examples/__tests__/integration/flask.test.ts",
"chars": 134,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy flask', async () => {\n await deployExample("
},
{
"path": "examples/__tests__/integration/gatsby.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy gatsby', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/gin.test.ts",
"chars": 130,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy gin', async () => {\n await deployExample('g"
},
{
"path": "examples/__tests__/integration/h3.test.ts",
"chars": 128,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy h3', async () => {\n await deployExample('h3"
},
{
"path": "examples/__tests__/integration/hexo.test.ts",
"chars": 132,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy hexo', async () => {\n await deployExample('"
},
{
"path": "examples/__tests__/integration/hono.test.ts",
"chars": 132,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy hono', async () => {\n await deployExample('"
},
{
"path": "examples/__tests__/integration/hugo.test.ts",
"chars": 132,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy hugo', async () => {\n await deployExample('"
},
{
"path": "examples/__tests__/integration/hydrogen-2.test.ts",
"chars": 144,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy hydrogen-2', async () => {\n await deployExa"
},
{
"path": "examples/__tests__/integration/ionic-angular.test.ts",
"chars": 150,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy ionic-angular', async () => {\n await deploy"
},
{
"path": "examples/__tests__/integration/ionic-react.test.ts",
"chars": 146,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy ionic-react', async () => {\n await deployEx"
},
{
"path": "examples/__tests__/integration/jekyll.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy jekyll', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/koa.test.ts",
"chars": 130,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy koa', async () => {\n await deployExample('k"
},
{
"path": "examples/__tests__/integration/middleman.test.ts",
"chars": 142,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy middleman', async () => {\n await deployExam"
},
{
"path": "examples/__tests__/integration/nestjs.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy nestjs', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/nextjs.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy nextjs', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/nitro.test.ts",
"chars": 134,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy nitro', async () => {\n await deployExample("
},
{
"path": "examples/__tests__/integration/node_modules.test.ts",
"chars": 148,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy node_modules', async () => {\n await deployE"
},
{
"path": "examples/__tests__/integration/nuxtjs.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy nuxtjs', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/parcel.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy parcel', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/polymer.test.ts",
"chars": 138,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy polymer', async () => {\n await deployExampl"
},
{
"path": "examples/__tests__/integration/preact.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy preact', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/react-router.test.ts",
"chars": 150,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy react-router', async () => {\n await deplo"
},
{
"path": "examples/__tests__/integration/redwoodjs.test.ts",
"chars": 142,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy redwoodjs', async () => {\n await deployExam"
},
{
"path": "examples/__tests__/integration/remix.test.ts",
"chars": 134,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy remix', async () => {\n await deployExample("
},
{
"path": "examples/__tests__/integration/sanity.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy sanity', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/sapper.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy sapper', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/sinatra.test.ts",
"chars": 138,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy sinatra', async () => {\n await deployExampl"
},
{
"path": "examples/__tests__/integration/solidstart-1.test.ts",
"chars": 148,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy solidstart-1', async () => {\n await deployE"
},
{
"path": "examples/__tests__/integration/starlette.test.ts",
"chars": 142,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy starlette', async () => {\n await deployExam"
},
{
"path": "examples/__tests__/integration/stencil.test.ts",
"chars": 138,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy stencil', async () => {\n await deployExampl"
},
{
"path": "examples/__tests__/integration/svelte.test.ts",
"chars": 136,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy svelte', async () => {\n await deployExample"
},
{
"path": "examples/__tests__/integration/sveltekit-1.test.ts",
"chars": 233,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy sveltekit-1', async () => {\n if (process.ve"
},
{
"path": "examples/__tests__/integration/sveltekit.test.ts",
"chars": 142,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy sveltekit', async () => {\n await deployExam"
},
{
"path": "examples/__tests__/integration/tanstack-start.test.ts",
"chars": 152,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy tanstack-start', async () => {\n await deplo"
},
{
"path": "examples/__tests__/integration/umijs.test.ts",
"chars": 134,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy umijs', async () => {\n await deployExample("
},
{
"path": "examples/__tests__/integration/vite-react.test.ts",
"chars": 144,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy vite react', async () => {\n await deployExa"
},
{
"path": "examples/__tests__/integration/vite.test.ts",
"chars": 132,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy vite', async () => {\n await deployExample('"
},
{
"path": "examples/__tests__/integration/vitepress.test.ts",
"chars": 142,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy vitepress', async () => {\n await deployExam"
},
{
"path": "examples/__tests__/integration/vue.test.ts",
"chars": 130,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy vue', async () => {\n await deployExample('v"
},
{
"path": "examples/__tests__/integration/vuepress.test.ts",
"chars": 287,
"preview": "import { deployExample } from '../test-utils';\n// https://linear.app/vercel/issue/ZERO-3238/unskip-tests-failing-due-to-"
},
{
"path": "examples/__tests__/integration/xmcp.test.ts",
"chars": 131,
"preview": "import { deployExample } from '../test-utils';\nit('[examples] should deploy xmcp', async () => {\n await deployExample('"
},
{
"path": "examples/__tests__/integration/zola.test.ts",
"chars": 216,
"preview": "import { deployExample } from '../test-utils';\n\n// not supported on AL2023\n// eslint-disable-next-line jest/no-disabled-"
},
{
"path": "examples/__tests__/test-utils.ts",
"chars": 876,
"preview": "import { basename, join } from 'path';\nimport { lstatSync, readdirSync } from 'fs';\n\nexport async function deployExample"
},
{
"path": "examples/__tests__/unit/index.test.ts",
"chars": 268,
"preview": "import { existsSync } from 'fs';\nimport { getExamples } from '../test-utils';\n\ndescribe('should have test for each examp"
},
{
"path": "examples/angular/.editorconfig",
"chars": 274,
"preview": "# Editor configuration, see https://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size ="
},
{
"path": "examples/angular/.gitignore",
"chars": 565,
"preview": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n\n# Compiled output\n/dist\n/tmp\n/out-tsc\n/bazel-"
},
{
"path": "examples/angular/README.md",
"chars": 1486,
"preview": "# Angular\n\nThis directory is a brief example of an [Angular](https://angular.io/) app that can be deployed to Vercel wit"
},
{
"path": "examples/angular/angular.json",
"chars": 2520,
"preview": "{\n \"$schema\": \"./node_modules/@angular/cli/lib/config/schema.json\",\n \"version\": 1,\n \"newProjectRoot\": \"projects\",\n \""
},
{
"path": "examples/angular/package.json",
"chars": 995,
"preview": "{\n \"private\": true,\n \"scripts\": {\n \"ng\": \"ng\",\n \"start\": \"ng serve\",\n \"build\": \"ng build\",\n \"watch\": \"ng b"
},
{
"path": "examples/angular/src/app/app-routing.module.ts",
"chars": 245,
"preview": "import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes "
},
{
"path": "examples/angular/src/app/app.component.css",
"chars": 0,
"preview": ""
},
{
"path": "examples/angular/src/app/app.component.html",
"chars": 23115,
"preview": "<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->\n<!-- * * * * * * * * * * * The content below * * "
},
{
"path": "examples/angular/src/app/app.component.spec.ts",
"chars": 1091,
"preview": "import { TestBed } from '@angular/core/testing';\nimport { RouterTestingModule } from '@angular/router/testing';\nimport {"
},
{
"path": "examples/angular/src/app/app.component.ts",
"chars": 216,
"preview": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n"
},
{
"path": "examples/angular/src/app/app.module.ts",
"chars": 393,
"preview": "import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\n\nimport { AppRoutin"
},
{
"path": "examples/angular/src/assets/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "examples/angular/src/index.html",
"chars": 321,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>Angular</title>\n <base href=\"/\" />\n"
},
{
"path": "examples/angular/src/main.ts",
"chars": 214,
"preview": "import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module"
},
{
"path": "examples/angular/src/styles.css",
"chars": 80,
"preview": "/* You can add global styles to this file, and also import other style files */\n"
},
{
"path": "examples/angular/tsconfig.app.json",
"chars": 247,
"preview": "/* To learn more about this file see: https://angular.io/config/tsconfig. */\n{\n \"extends\": \"./tsconfig.json\",\n \"compil"
},
{
"path": "examples/angular/tsconfig.json",
"chars": 883,
"preview": "/* To learn more about this file see: https://angular.io/config/tsconfig. */\n{\n \"compileOnSave\": false,\n \"compilerOpti"
},
{
"path": "examples/angular/tsconfig.spec.json",
"chars": 249,
"preview": "/* To learn more about this file see: https://angular.io/config/tsconfig. */\n{\n \"extends\": \"./tsconfig.json\",\n \"compil"
},
{
"path": "examples/astro/.gitignore",
"chars": 235,
"preview": "# astro\n.astro\n\n# build output\ndist/\n.output/\n\n# dependencies\nnode_modules/\n\n# logs\nnpm-debug.log*\nyarn-debug.log*\nyarn-"
},
{
"path": "examples/astro/.npmrc",
"chars": 67,
"preview": "# Expose Astro dependencies for `pnpm` users\nshamefully-hoist=true\n"
},
{
"path": "examples/astro/README.md",
"chars": 2205,
"preview": "# Astro\n\nThis directory is a brief example of an [Astro](https://astro.build/) site that can be deployed to Vercel with "
},
{
"path": "examples/astro/astro.config.ts",
"chars": 236,
"preview": "import { defineConfig } from 'astro/config';\nimport vercel from '@astrojs/vercel';\n\nexport default defineConfig({\n outp"
},
{
"path": "examples/astro/package.json",
"chars": 275,
"preview": "{\n \"private\": true,\n \"scripts\": {\n \"dev\": \"astro dev\",\n \"start\": \"astro dev\",\n \"build\": \"astro build\",\n \"p"
},
{
"path": "examples/astro/src/components/Card.astro",
"chars": 1322,
"preview": "---\nexport interface Props {\n\ttitle: string;\n\tbody: string;\n\thref: string;\n}\n\nconst { href, title, body } = Astro.props "
},
{
"path": "examples/astro/src/env.d.ts",
"chars": 176,
"preview": "/// <reference types=\"astro/client-image\" />\n\ninterface ImportMetaEnv {\n\treadonly PUBLIC_VERCEL_ANALYTICS_ID: string;\n}\n"
},
{
"path": "examples/astro/src/layouts/Layout.astro",
"chars": 1151,
"preview": "---\nexport interface Props {\n\ttitle: string;\n}\n\nconst { title } = Astro.props as Props;\n---\n\n<!DOCTYPE html>\n<html lang="
},
{
"path": "examples/astro/src/pages/image.astro",
"chars": 158,
"preview": "---\nimport { Image } from 'astro:assets';\nimport astroLogo from '../assets/logo.png';\n---\n\n<Image src={astroLogo} alt=\"A"
},
{
"path": "examples/astro/src/pages/index.astro",
"chars": 2064,
"preview": "---\nimport Layout from '../layouts/Layout.astro';\nimport Card from '../components/Card.astro';\n\nexport const prerender ="
},
{
"path": "examples/astro/src/pages/ssr-with-swr-caching.astro",
"chars": 156,
"preview": "---\nAstro.response.headers.set('Cache-Control', 's-maxage=10, stale-while-revalidate');\n\nconst time = new Date().toLocal"
},
{
"path": "examples/astro/src/pages/ssr.astro",
"chars": 71,
"preview": "---\nconst time = new Date().toLocaleTimeString();\n---\n\n<h1>{time}</h1>\n"
}
]
// ... and 10464 more files (download for full content)
About this extraction
This page contains the full source code of the vercel/vercel GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 10664 files (23.3 MB), approximately 6.8M tokens, and a symbol index with 20158 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.