gitextract_u7h5vna8/ ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ ├── push.yml │ └── release.yml ├── .gitignore ├── Dockerfile ├── Dockerfile-ci ├── Dockerfile-dev ├── LICENSE.md ├── Makefile ├── README.md ├── apps/ │ ├── dashboard/ │ │ ├── .gitignore │ │ ├── .prettierrc │ │ ├── README.md │ │ ├── components.json │ │ ├── eslint.config.js │ │ ├── index.html │ │ ├── package.json │ │ ├── postcss.config.js │ │ ├── public/ │ │ │ └── env.js │ │ ├── src/ │ │ │ ├── App.tsx │ │ │ ├── components/ │ │ │ │ ├── APIError/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Combobox/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── DataTable/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── UpdateDetailsSheet/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── app-sidebar.tsx │ │ │ │ └── ui/ │ │ │ │ ├── alert.tsx │ │ │ │ ├── badge.tsx │ │ │ │ ├── breadcrumb.tsx │ │ │ │ ├── button.tsx │ │ │ │ ├── card.tsx │ │ │ │ ├── command.tsx │ │ │ │ ├── dialog.tsx │ │ │ │ ├── form.tsx │ │ │ │ ├── input.tsx │ │ │ │ ├── label.tsx │ │ │ │ ├── popover.tsx │ │ │ │ ├── progress.tsx │ │ │ │ ├── separator.tsx │ │ │ │ ├── sheet.tsx │ │ │ │ ├── sidebar.tsx │ │ │ │ ├── skeleton.tsx │ │ │ │ ├── table.tsx │ │ │ │ ├── toast.tsx │ │ │ │ ├── toaster.tsx │ │ │ │ └── tooltip.tsx │ │ │ ├── containers/ │ │ │ │ └── Layout/ │ │ │ │ └── index.tsx │ │ │ ├── hooks/ │ │ │ │ ├── use-mobile.tsx │ │ │ │ └── use-toast.ts │ │ │ ├── index.css │ │ │ ├── lib/ │ │ │ │ ├── api.ts │ │ │ │ ├── auth.ts │ │ │ │ └── utils.ts │ │ │ ├── main.tsx │ │ │ ├── pages/ │ │ │ │ ├── Channels/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── SelectBranch/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── Login/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Logout/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Settings/ │ │ │ │ │ └── index.tsx │ │ │ │ └── Updates/ │ │ │ │ ├── components/ │ │ │ │ │ ├── BranchesTable/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── RuntimeVersionsTable/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ └── UpdatesTable/ │ │ │ │ │ └── index.tsx │ │ │ │ └── index.tsx │ │ │ └── vite-env.d.ts │ │ ├── tailwind.config.js │ │ ├── tsconfig.app.json │ │ ├── tsconfig.json │ │ ├── tsconfig.node.json │ │ └── vite.config.ts │ ├── docs/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── docs/ │ │ │ ├── advanced/ │ │ │ │ ├── _category_.json │ │ │ │ └── prometheus.mdx │ │ │ ├── dashboard.mdx │ │ │ ├── deployment/ │ │ │ │ ├── _category_.json │ │ │ │ ├── custom.mdx │ │ │ │ ├── helm.mdx │ │ │ │ ├── railway.mdx │ │ │ │ └── testing.mdx │ │ │ ├── eoas/ │ │ │ │ ├── _category_.json │ │ │ │ ├── configure.mdx │ │ │ │ ├── intro.mdx │ │ │ │ ├── publish.mdx │ │ │ │ ├── republish.mdx │ │ │ │ └── rollback.mdx │ │ │ ├── getting-started/ │ │ │ │ ├── _category_.json │ │ │ │ ├── introduction.mdx │ │ │ │ ├── prerequisites.mdx │ │ │ │ └── quick-start.mdx │ │ │ ├── reference/ │ │ │ │ ├── _category_.json │ │ │ │ └── environment.mdx │ │ │ └── server-configuration/ │ │ │ ├── _category_.json │ │ │ ├── cache.mdx │ │ │ ├── cdn/ │ │ │ │ ├── _category_.json │ │ │ │ ├── cloudfront.mdx │ │ │ │ ├── generic.mdx │ │ │ │ └── intro.mdx │ │ │ ├── key-store.mdx │ │ │ └── storage.mdx │ │ ├── docusaurus.config.ts │ │ ├── package.json │ │ ├── sidebars.ts │ │ ├── src/ │ │ │ ├── components/ │ │ │ │ ├── BrowserWindow/ │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── styles.module.css │ │ │ │ └── HomepageFeatures/ │ │ │ │ ├── index.tsx │ │ │ │ └── styles.module.css │ │ │ ├── css/ │ │ │ │ └── custom.css │ │ │ └── pages/ │ │ │ ├── index.module.css │ │ │ ├── index.tsx │ │ │ └── markdown-page.md │ │ ├── static/ │ │ │ └── .nojekyll │ │ └── tsconfig.json │ ├── eoas/ │ │ ├── .eslintignore │ │ ├── .eslintrc.js │ │ ├── .gitignore │ │ ├── .prettierrc │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── commands/ │ │ │ │ ├── generate-certs.ts │ │ │ │ ├── init.ts │ │ │ │ ├── publish.ts │ │ │ │ ├── republish.ts │ │ │ │ └── rollback.ts │ │ │ ├── index.d.ts │ │ │ └── lib/ │ │ │ ├── assets.ts │ │ │ ├── auth.ts │ │ │ ├── channel.ts │ │ │ ├── expoConfig.ts │ │ │ ├── fetch.ts │ │ │ ├── log.ts │ │ │ ├── ora.ts │ │ │ ├── package.ts │ │ │ ├── packageRunner.ts │ │ │ ├── prompts.ts │ │ │ ├── repo.ts │ │ │ ├── runtimeVersion.ts │ │ │ ├── utils.ts │ │ │ ├── vcs/ │ │ │ │ ├── README.md │ │ │ │ ├── clients/ │ │ │ │ │ ├── git.ts │ │ │ │ │ ├── gitNoCommit.ts │ │ │ │ │ └── noVcs.ts │ │ │ │ ├── git.ts │ │ │ │ ├── index.ts │ │ │ │ ├── local.ts │ │ │ │ └── vcs.ts │ │ │ └── workflow.ts │ │ └── tsconfig.json │ ├── example-app/ │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── .prettierignore │ │ ├── .prettierrc │ │ ├── README.md │ │ ├── app/ │ │ │ ├── +not-found.tsx │ │ │ ├── _layout.tsx │ │ │ └── index.tsx │ │ ├── app.config.ts │ │ ├── app.json │ │ ├── components/ │ │ │ ├── LogViewer.tsx │ │ │ ├── ThemedText.tsx │ │ │ ├── ThemedView.tsx │ │ │ ├── __tests__/ │ │ │ │ ├── ThemedText-test.tsx │ │ │ │ └── __snapshots__/ │ │ │ │ └── ThemedText-test.tsx.snap │ │ │ └── ui/ │ │ │ ├── IconSymbol.ios.tsx │ │ │ ├── IconSymbol.tsx │ │ │ ├── TabBarBackground.ios.tsx │ │ │ └── TabBarBackground.tsx │ │ ├── constants/ │ │ │ └── Colors.ts │ │ ├── hooks/ │ │ │ ├── useColorScheme.ts │ │ │ ├── useColorScheme.web.ts │ │ │ └── useThemeColor.ts │ │ ├── package.json │ │ ├── scripts/ │ │ │ ├── network_security_config.xml │ │ │ ├── reset-project.js │ │ │ └── trust_local_certs.js │ │ └── tsconfig.json │ └── example-app-runtime-switch/ │ ├── .eslintrc.json │ ├── .gitignore │ ├── .prettierignore │ ├── .prettierrc │ ├── README.md │ ├── app/ │ │ ├── +not-found.tsx │ │ ├── _layout.tsx │ │ └── index.tsx │ ├── app.config.ts │ ├── app.json │ ├── components/ │ │ ├── LogViewer.tsx │ │ ├── ThemedText.tsx │ │ ├── ThemedView.tsx │ │ ├── __tests__/ │ │ │ ├── ThemedText-test.tsx │ │ │ └── __snapshots__/ │ │ │ └── ThemedText-test.tsx.snap │ │ └── ui/ │ │ ├── IconSymbol.ios.tsx │ │ ├── IconSymbol.tsx │ │ ├── TabBarBackground.ios.tsx │ │ └── TabBarBackground.tsx │ ├── constants/ │ │ └── Colors.ts │ ├── hooks/ │ │ ├── useColorScheme.ts │ │ ├── useColorScheme.web.ts │ │ └── useThemeColor.ts │ ├── package.json │ ├── scripts/ │ │ ├── network_security_config.xml │ │ ├── reset-project.js │ │ └── trust_local_certs.js │ └── tsconfig.json ├── cmd/ │ └── api/ │ └── main.go ├── config/ │ ├── config.go │ └── config_test.go ├── docker-compose.yml ├── go.mod ├── go.sum ├── grafana/ │ └── dashboard.json ├── grafana-dashboard.json ├── helm/ │ ├── .helmignore │ ├── Chart.yaml │ ├── helm_template_test.go │ ├── templates/ │ │ ├── NOTES.txt │ │ ├── _helpers.tpl │ │ ├── deployment.yaml │ │ ├── hpa.yaml │ │ ├── ingress.yaml │ │ ├── service.yaml │ │ ├── serviceaccount.yaml │ │ └── tests/ │ │ └── test-connection.yaml │ └── values.yaml ├── internal/ │ ├── assets/ │ │ └── assets.go │ ├── auth/ │ │ └── auth.go │ ├── branch/ │ │ ├── branch.go │ │ └── branch_test.go │ ├── bucket/ │ │ ├── bucket.go │ │ ├── bucket_test.go │ │ ├── gcsBucket.go │ │ ├── localBucket.go │ │ ├── localBucket_test.go │ │ └── s3Bucket.go │ ├── cache/ │ │ ├── cache.go │ │ ├── cache_test.go │ │ ├── localCache.go │ │ └── redisCache.go │ ├── cdn/ │ │ ├── cdn.go │ │ ├── cdn_test.go │ │ ├── cloudfront.go │ │ ├── gcs_direct.go │ │ └── generic.go │ ├── compression/ │ │ └── compression.go │ ├── crypto/ │ │ ├── crypto.go │ │ └── crypto_test.go │ ├── dashboard/ │ │ └── dashboard.go │ ├── handlers/ │ │ ├── assets_handler.go │ │ ├── auth_handler.go │ │ ├── dashboard_handler.go │ │ ├── manifest_handler.go │ │ ├── republish_handler.go │ │ ├── rollback_handler.go │ │ └── upload_handler.go │ ├── helpers/ │ │ ├── auth.go │ │ ├── headers.go │ │ ├── string.go │ │ └── url.go │ ├── keyStore/ │ │ ├── awsSMKeyStorage.go │ │ ├── environmentKeyStorage.go │ │ ├── keyStore.go │ │ └── localKeyStorage.go │ ├── metrics/ │ │ ├── metrics.go │ │ └── metrics_test.go │ ├── middleware/ │ │ ├── auth_middleware.go │ │ ├── cors_middleware.go │ │ └── logging_middleware.go │ ├── migration/ │ │ ├── base.go │ │ ├── migration.go │ │ ├── registry.go │ │ └── runner.go │ ├── migrations/ │ │ ├── 20250417_persist_uuid/ │ │ │ └── 20250417_persist_uuid.go │ │ └── migrations.go │ ├── router/ │ │ └── router.go │ ├── services/ │ │ ├── aws.go │ │ ├── aws_test.go │ │ ├── expo.go │ │ ├── gcp.go │ │ └── jwt.go │ ├── types/ │ │ └── types.go │ ├── update/ │ │ ├── prewarm.go │ │ └── updates.go │ └── version/ │ └── version.go ├── prometheus.yml └── test/ ├── assets_test.go ├── channel_mapping_cache_test.go ├── dashboard_path_traversal_test.go ├── dashboard_test.go ├── expo_multipart_parser.go ├── helpers.go ├── manifest_test.go ├── migrations_test.go ├── republish_test.go ├── requestUpload_test.go ├── rollback_test.go ├── test-updates/ │ ├── branch-1/ │ │ └── 1/ │ │ └── 1674170951/ │ │ ├── .check │ │ ├── assets/ │ │ │ └── 4f1cb2cac2370cd5050681232e8575a8 │ │ ├── bundles/ │ │ │ ├── android-82adadb1fb6e489d04ad95fd79670deb.js │ │ │ └── ios-9d01842d6ee1224f7188971c5d397115.js │ │ ├── expoConfig.json │ │ ├── metadata.json │ │ └── update-metadata.json │ ├── branch-2/ │ │ └── 1/ │ │ ├── 1666304169/ │ │ │ ├── .check │ │ │ ├── rollback │ │ │ └── update-metadata.json │ │ ├── 1666629107/ │ │ │ ├── .check │ │ │ ├── bundles/ │ │ │ │ ├── android-b00c4b050fca5b0ca395c7c183a2aed3.js │ │ │ │ └── ios-673cd0555c467df47093f49cc1b6d00f.js │ │ │ ├── metadata.json │ │ │ └── update-metadata.json │ │ ├── 1666629141/ │ │ │ ├── .check │ │ │ ├── rollback │ │ │ └── update-metadata.json │ │ ├── 1674170951/ │ │ │ ├── .check │ │ │ ├── assets/ │ │ │ │ └── 4f1cb2cac2370cd5050681232e8575a8 │ │ │ ├── bundles/ │ │ │ │ ├── android-82adadb1fb6e489d04ad95fd79670deb.js │ │ │ │ └── ios-9d01842d6ee1224f7188971c5d397115.js │ │ │ ├── expoConfig.json │ │ │ ├── metadata.json │ │ │ └── update-metadata.json │ │ └── 1737455526/ │ │ ├── .check │ │ ├── _expo/ │ │ │ └── static/ │ │ │ └── js/ │ │ │ ├── android/ │ │ │ │ └── AppEntry-3aa3d3f85ad7a30a3c33dba2de772e4f.hbc │ │ │ └── ios/ │ │ │ └── AppEntry-546b83fc2035b34c5f2dbd9bb04a2478.hbc │ │ ├── assets/ │ │ │ └── 4f1cb2cac2370cd5050681232e8575a8 │ │ ├── expoConfig.json │ │ ├── metadata.json │ │ └── update-metadata.json │ ├── branch-3/ │ │ └── 1/ │ │ ├── 1666304168/ │ │ │ ├── .check │ │ │ ├── assets/ │ │ │ │ └── 4f1cb2cac2370cd5050681232e8575a8 │ │ │ ├── bundles/ │ │ │ │ ├── android-82adadb1fb6e489d04ad95fd79670deb.js │ │ │ │ └── ios-9d01842d6ee1224f7188971c5d397115.js │ │ │ ├── expoConfig.json │ │ │ ├── metadata.json │ │ │ └── update-metadata.json │ │ └── 1666304169/ │ │ ├── .check │ │ ├── rollback │ │ └── update-metadata.json │ └── branch-4/ │ └── 1/ │ ├── 1674170951/ │ │ ├── .check │ │ ├── assets/ │ │ │ └── 4f1cb2cac2370cd5050681232e8575a8 │ │ ├── bundles/ │ │ │ ├── android-82adadb1fb6e489d04ad95fd79670deb.js │ │ │ └── ios-9d01842d6ee1224f7188971c5d397115.js │ │ ├── expoConfig.json │ │ ├── metadata.json │ │ └── update-metadata.json │ └── 1674170952/ │ ├── assets/ │ │ └── 4f1cb2cac2370cd5050681232e8575a8 │ ├── bundles/ │ │ └── android-82adadb1fb6e489d04ad95fd79670deb.js │ ├── expoConfig.json │ ├── metadata.json │ └── update-metadata.json └── url_encoding_test.go