diff --git a/.gitignore b/.gitignore
index e3381083..d62fb792 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,44 +1,166 @@
-# Created by https://www.toptal.com/developers/gitignore/api/nextjs
-# Edit at https://www.toptal.com/developers/gitignore?templates=nextjs
+# Created by https://www.toptal.com/developers/gitignore/api/yarn,node
+# Edit at https://www.toptal.com/developers/gitignore?templates=yarn,node
-### NextJS ###
-# dependencies
-/node_modules
-/.pnp
-.pnp.js
-
-# testing
-/coverage
-
-# next.js
-/.next/
-/out/
-
-# production
-/build
-
-# misc
-.DS_Store
-*.pem
-
-# debug
+### Node ###
+# Logs
+logs
+*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
+lerna-debug.log*
.pnpm-debug.log*
-# local env files
-.env*.local
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
-# vercel
-.vercel
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
-# typescript
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
*.tsbuildinfo
-next-env.d.ts
-# End of https://www.toptal.com/developers/gitignore/api/nextjs
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional stylelint cache
+.stylelintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variable files
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# vuepress v2.x temp and cache directory
+.temp
+
+# Docusaurus cache and generated files
+.docusaurus
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+
+### Node Patch ###
+# Serverless Webpack directories
+.webpack/
+
+# Optional stylelint cache
+
+# SvelteKit build / generate output
+.svelte-kit
+
+### yarn ###
+# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored
+
+.yarn/*
+!.yarn/releases
+!.yarn/patches
+!.yarn/plugins
+!.yarn/sdks
+!.yarn/versions
+
+# if you are NOT using Zero-installs, then:
+# comment the following lines
+!.yarn/cache
+
+# and uncomment the following lines
+# .pnp.*
+
+# End of https://www.toptal.com/developers/gitignore/api/yarn,node
.sourcebot
/bin
-/config.json
\ No newline at end of file
+/config.json
+.DS_Store
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..5f65bac5
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,6 @@
+{
+ "files.associations": {
+ "*.json": "jsonc",
+ "index.json": "json"
+ }
+}
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b491ccd9..2d60a4b0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
+- [**Breaking Change**] Added index schema v2. This new schema brings many quality of life features like clearer syntax, ability to specify individual `repos`, `projects`, `groups`, and `orgs`, and the ability to easily `exclude` repositories.
- Added a `SOURCEBOT_VERSION` build argument to the Docker image. ([#41](https://github.com/sourcebot-dev/sourcebot/pull/41))
- Added the `sourcebot_version` property to all PostHog events for versioned telemetry. ([#41](https://github.com/sourcebot-dev/sourcebot/pull/41)
diff --git a/Dockerfile b/Dockerfile
index 7d06d144..3af8b3e5 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -14,18 +14,29 @@ RUN CGO_ENABLED=0 GOOS=linux go build -o /cmd/ ./cmd/...
FROM node-alpine AS web-builder
RUN apk add --no-cache libc6-compat
WORKDIR /app
+
COPY package.json yarn.lock* ./
+COPY ./packages/web ./packages/web
# Fixes arm64 timeouts
RUN yarn config set registry https://registry.npmjs.org/
RUN yarn config set network-timeout 1200000
-RUN yarn --frozen-lockfile
-COPY . .
+RUN yarn workspace @sourcebot/web install --frozen-lockfile
ENV NEXT_TELEMETRY_DISABLED=1
# @see: https://phase.dev/blog/nextjs-public-runtime-variables/
ARG NEXT_PUBLIC_SOURCEBOT_TELEMETRY_DISABLED=BAKED_NEXT_PUBLIC_SOURCEBOT_TELEMETRY_DISABLED
ARG NEXT_PUBLIC_SOURCEBOT_VERSION=BAKED_NEXT_PUBLIC_SOURCEBOT_VERSION
-RUN yarn run build
+RUN yarn workspace @sourcebot/web build
+
+# ------ Build Backend ------
+FROM node-alpine AS backend-builder
+WORKDIR /app
+
+COPY package.json yarn.lock* ./
+COPY ./schemas ./schemas
+COPY ./packages/backend ./packages/backend
+RUN yarn workspace @sourcebot/backend install --frozen-lockfile
+RUN yarn workspace @sourcebot/backend build
# ------ Runner ------
FROM node-alpine AS runner
@@ -40,8 +51,8 @@ ARG SOURCEBOT_VERSION=unknown
ENV SOURCEBOT_VERSION=$SOURCEBOT_VERSION
RUN echo "Sourcebot Version: $SOURCEBOT_VERSION"
-ENV GITHUB_HOSTNAME=github.com
-ENV GITLAB_HOSTNAME=gitlab.com
+# Valid values are: debug, info, warn, error
+ENV SOURCEBOT_LOG_LEVEL=info
# @note: This is also set in .env
ENV NEXT_PUBLIC_POSTHOG_KEY=phc_VFn4CkEGHRdlVyOOw8mfkoj1DKVoG6y1007EClvzAnS
@@ -50,7 +61,7 @@ ENV NEXT_PUBLIC_POSTHOG_KEY=phc_VFn4CkEGHRdlVyOOw8mfkoj1DKVoG6y1007EClvzAnS
# ENV SOURCEBOT_TELEMETRY_DISABLED=1
# Configure dependencies
-RUN apk add --no-cache git ca-certificates bind-tools tini jansson wget supervisor uuidgen curl
+RUN apk add --no-cache git ca-certificates bind-tools tini jansson wget supervisor uuidgen curl perl
# Configure zoekt
COPY vendor/zoekt/install-ctags-alpine.sh .
@@ -68,12 +79,17 @@ COPY --from=zoekt-builder \
/usr/local/bin/
# Configure the webapp
-COPY --from=web-builder /app/public ./public
-RUN mkdir .next
-COPY --from=web-builder /app/.next/standalone ./
-COPY --from=web-builder /app/.next/static ./.next/static
+COPY --from=web-builder /app/packages/web/public ./packages/web/public
+COPY --from=web-builder /app/packages/web/.next/standalone ./
+COPY --from=web-builder /app/packages/web/.next/static ./packages/web/.next/static
+
+# Configure the backend
+COPY --from=backend-builder /app/node_modules ./node_modules
+COPY --from=backend-builder /app/packages/backend ./packages/backend
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
+COPY prefix-output.sh ./prefix-output.sh
+RUN chmod +x ./prefix-output.sh
COPY entrypoint.sh ./entrypoint.sh
RUN chmod +x ./entrypoint.sh
diff --git a/Makefile b/Makefile
index 298cb5e5..b1edcc74 100644
--- a/Makefile
+++ b/Makefile
@@ -9,8 +9,17 @@ ui:
zoekt:
mkdir -p bin
go build -C vendor/zoekt -o $(PWD)/bin ./cmd/...
+ export PATH=$(PWD)/bin:$(PATH)
+ export CTAGS_COMMANDS=ctags
clean:
- rm -rf bin node_modules .next .sourcebot
+ rm -rf \
+ bin \
+ node_modules \
+ packages/web/node_modules \
+ packages/web/.next \
+ packages/backend/dist \
+ packages/backend/node_modules \
+ .sourcebot
.PHONY: bin
diff --git a/README.md b/README.md
index a90a06ad..9cdb9cd1 100644
--- a/README.md
+++ b/README.md
@@ -70,23 +70,25 @@ Sourcebot supports indexing and searching through public and private repositorie
cd sourcebot_workspace
```
-2. Create a new config following the [configuration schema](./schemas/index.json) to specify which repositories Sourcebot should index. For example, to index [llama.cpp](https://github.com/ggerganov/llama.cpp):
+2. Create a new config following the [configuration schema](./schemas/v2/index.json) to specify which repositories Sourcebot should index. For example, let's index llama.cpp:
```sh
touch my_config.json
echo '{
- "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/index.json",
- "Configs": [
+ "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/refs/tags/latest/schemas/v2/index.json",
+ "repos": [
{
- "Type": "github",
- "GitHubUser": "ggerganov",
- "Name": "^llama\\\\.cpp$"
+ "type": "github",
+ "repos": [
+ "ggerganov/llama.cpp"
+ ]
}
]
}' > my_config.json
```
- (For more examples, see [example-config.json](./example-config.json). For additional usage information, see the [configuration schema](./schemas/index.json)).
+>[!NOTE]
+> Sourcebot can also index all repos owned by a organization, user, group, etc., instead of listing them individually. For examples, see the [configs](./configs) directory. For additional usage information, see the [configuration schema](./schemas/v2/index.json).
3. Run Sourcebot and point it to the new config you created with the `-e CONFIG_PATH` flag:
@@ -106,31 +108,8 @@ Sourcebot supports indexing and searching through public and private repositorie
- You should see a `.sourcebot` folder in your current directory. This folder stores a cache of the repositories zoekt has indexed. The `HEAD` commit of a repository is re-indexed [every hour](https://github.com/sourcebot-dev/zoekt/blob/11b7713f1fb511073c502c41cea413d616f7761f/cmd/zoekt-indexserver/main.go#L86). Indexing private repos? See [Providing an access token](#providing-an-access-token).
-
- >[!WARNING]
- > Depending on the size of your repo(s), SourceBot could take a couple of minutes to finish indexing. SourceBot doesn't currently support displaying indexing progress in real-time, so please be patient while it finishes. You can track the progress manually by investigating the `.sourcebot` cache in your workspace.
-
-
- Using GitLab?
-
- _tl;dr: A `GITLAB_TOKEN` is required to index GitLab repositories (both private & public). See [Providing an access token](#providing-an-access-token)._
-
- Currently, the GitLab indexer is restricted to only indexing repositories that the associated `GITLAB_TOKEN` has access to. For example, if the token has access to `foo`, `bar`, and `baz` repositories, the following config will index all three:
-
- ```sh
- {
- "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/index.json",
- "Configs": [
- {
- "Type": "gitlab"
- }
- ]
- }
- ```
-
- See [Providing an access token](#providing-an-access-token).
-
+ You should see a `.sourcebot` folder in your current directory. This folder stores a cache of the repositories zoekt has indexed. The `HEAD` commit of a repository is re-indexed [every hour](./packages/backend/src/constants.ts). Indexing private repos? See [Providing an access token](#providing-an-access-token).
+
## Providing an access token
@@ -145,31 +124,92 @@ This will depend on the code hosting platform you're using:
GitHub
-In order to index private repositories, you'll need to generate a GitHub Personal Access Token (PAT) and pass it to Sourcebot. Create a new PAT [here](https://github.com/settings/tokens/new) and make sure you select the `repo` scope:
+In order to index private repositories, you'll need to generate a GitHub Personal Access Token (PAT). Create a new PAT [here](https://github.com/settings/tokens/new) and make sure you select the `repo` scope:

-You'll need to pass this PAT each time you run Sourcebot by setting the `GITHUB_TOKEN` environment variable:
+Next, update your configuration with the `token` field:
+```json
+{
+ "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/refs/tags/latest/schemas/v2/index.json",
+ "repos": [
+ {
+ "type": "github",
+ "token": "ghp_mytoken",
+ ...
+ }
+ ]
+}
+```
+
+You can also pass tokens as environment variables:
+```json
+{
+ "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/refs/tags/latest/schemas/v2/index.json",
+ "repos": [
+ {
+ "type": "github",
+ "token": {
+ // note: this env var can be named anything. It
+ // doesn't need to be `GITHUB_TOKEN`.
+ "env": "GITHUB_TOKEN"
+ },
+ ...
+ }
+ ]
+}
+```
+
+You'll need to pass this environment variable each time you run Sourcebot:
GitLab
->[!NOTE]
-> An access token is required to index GitLab repositories (both private & public) since the GitLab indexer needs the token to determine which repositories to index. See [example-config.json](./example-config.json) for example usage.
-
Generate a GitLab Personal Access Token (PAT) [here](https://gitlab.com/-/user_settings/personal_access_tokens) and make sure you select the `read_api` scope:

-You'll need to pass this PAT each time you run Sourcebot by setting the `GITLAB_TOKEN` environment variable:
+Next, update your configuration with the `token` field:
+```json
+{
+ "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/refs/tags/latest/schemas/v2/index.json",
+ "repos": [
+ {
+ "type": "gitlab",
+ "token": "glpat-mytoken",
+ ...
+ }
+ ]
+}
+```
+
+You can also pass tokens as environment variables:
+```json
+{
+ "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/refs/tags/latest/schemas/v2/index.json",
+ "repos": [
+ {
+ "type": "gitlab",
+ "token": {
+ // note: this env var can be named anything. It
+ // doesn't need to be `GITLAB_TOKEN`.
+ "env": "GITLAB_TOKEN"
+ },
+ ...
+ }
+ ]
+}
+```
+
+You'll need to pass this environment variable each time you run Sourcebot:
@@ -178,63 +218,7 @@ docker run -p 3000:3000 --rm --name sourcebot -e GITLAB_TOKEN=[your-gitlab-to
## Using a self-hosted GitLab / GitHub instance
-If you're using a self-hosted GitLab or GitHub instance with a custom domain, there is some additional config required:
-
-
-
-
-
-
-
- GitHub
-
-
-1. In your config, add the `GitHubURL` field to point to your deployment's URL. For example:
- ```json
- {
- "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/index.json",
- "Configs": [
- {
- "Type": "github",
- "GitHubUrl": "https://github.example.com"
- }
- ]
- }
-
-2. Set the `GITHUB_HOSTNAME` environment variable to your deployment's hostname. For example:
-
-
-
-
-
-
- GitLab
-
-
-1. In your config, add the `GitLabURL` field to point to your deployment's URL. For example:
- ```json
- {
- "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/index.json",
- "Configs": [
- {
- "Type": "gitlab",
- "GitLabURL": "https://gitlab.example.com"
- }
- ]
- }
- ```
-
-2. Set the `GITLAB_HOSTNAME` environment variable to your deployment's hostname. For example:
-
-
+If you're using a self-hosted GitLab or GitHub instance with a custom domain, you can specify the domain in your config file. See [configs/self-hosted.json](configs/self-hosted.json) for examples.
## Build from source
>[!NOTE]
@@ -266,49 +250,14 @@ If you're using a self-hosted GitLab or GitHub instance with a custom domain, th
5. Create a `config.json` file at the repository root. See [Configuring Sourcebot](#configuring-sourcebot) for more information.
-6. (Optional) Depending on your `config.json`, you may need to pass an access token to Sourcebot:
-
-
-
-
-
-
-
-
- GitHub
-
-
- First, generate a personal access token (PAT). See [Providing an access token](#providing-an-access-token).
-
- Next, Create a text file named `.github-token` **in your home directory** and paste the token in it. The file should look like:
- ```sh
- ghp_...
- ```
- zoekt will [read this file](https://github.com/sourcebot-dev/zoekt/blob/6a5753692b46e669f851ab23211e756a3677185d/cmd/zoekt-mirror-github/main.go#L60) to authenticate with GitHub.
-
-
-
-
- GitLab
-
- First, generate a personal access token (PAT). See [Providing an access token](#providing-an-access-token).
-
- Next, Create a text file named `.gitlab-token` **in your home directory** and paste the token in it. The file should look like:
- ```sh
- glpat-...
- ```
- zoekt will [read this file](https://github.com/sourcebot-dev/zoekt/blob/11b7713f1fb511073c502c41cea413d616f7761f/cmd/zoekt-mirror-gitlab/main.go#L43) to authenticate with GitLab.
-
-
-
-7. Start Sourcebot with the command:
+6. Start Sourcebot with the command:
```sh
yarn dev
```
A `.sourcebot` directory will be created and zoekt will begin to index the repositories found given `config.json`.
-8. Start searching at `http://localhost:3000`.
+7. Start searching at `http://localhost:3000`.
## Telemetry
diff --git a/configs/auth.json b/configs/auth.json
new file mode 100644
index 00000000..ce328e02
--- /dev/null
+++ b/configs/auth.json
@@ -0,0 +1,39 @@
+{
+ "$schema": "../schemas/v2/index.json",
+ "repos": [
+ // Authenticate using a token directly in the config.
+ // Private and public repositories will be included.
+ {
+ "type": "github",
+ "token": "ghp_token1234",
+ "orgs": [
+ "my-org"
+ ]
+ },
+ {
+ "type": "gitlab",
+ "token": "glpat-1234",
+ "groups": [
+ "my-group"
+ ]
+ },
+
+ // You can also store the token in a environment variable and then
+ // references it from the config.
+ {
+ "type": "github",
+ "token": {
+ "env": "GITHUB_TOKEN_ENV_VAR"
+ }
+ },
+ {
+ "type": "gitlab",
+ "token": {
+ "env": "GITLAB_TOKEN_ENV_VAR"
+ },
+ "groups": [
+ "my-group"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/configs/basic.json b/configs/basic.json
new file mode 100644
index 00000000..38ddcb8b
--- /dev/null
+++ b/configs/basic.json
@@ -0,0 +1,42 @@
+{
+ "$schema": "../schemas/v2/index.json",
+ // Note: to include private repositories, you must provide an authentication token.
+ // See: configs/auth.json for a example.
+ "repos": [
+ // From GitHub, include:
+ // - all public repos owned by user `torvalds`
+ // - all public repos owned by organization `commai`
+ // - repo `sourcebot-dev/sourcebot`
+ {
+ "type": "github",
+ "token": "my-token",
+ "users": [
+ "torvalds"
+ ],
+ "orgs": [
+ "commaai"
+ ],
+ "repos": [
+ "sourcebot-dev/sourcebot"
+ ]
+ },
+ // From GitLab, include:
+ // - all public projects owned by user `brendan67`
+ // - all public projects in group `my-group` and sub-group `sub-group`
+ // - project `my-group/project1`
+ {
+ "type": "gitlab",
+ "token": "my-token",
+ "users": [
+ "brendan67"
+ ],
+ "groups": [
+ "my-group",
+ "my-other-group/sub-group"
+ ],
+ "projects": [
+ "my-group/project1"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/configs/filter.json b/configs/filter.json
new file mode 100644
index 00000000..f072cd7e
--- /dev/null
+++ b/configs/filter.json
@@ -0,0 +1,42 @@
+{
+ "$schema": "../schemas/v2/index.json",
+ "repos": [
+ // Include all repos in my-org, except:
+ // - repo1 & repo2
+ // - repos that are archived or forks
+ {
+ "type": "github",
+ "token": "my-token",
+ "orgs": [
+ "my-org"
+ ],
+ "exclude": {
+ "archived": true,
+ "forks": true,
+ "repos": [
+ "my-org/repo1",
+ "my-org/repo2"
+ ]
+ }
+ },
+
+ // Include all projects in my-group, except:
+ // - project1 & project2
+ // - projects that are archived or forks
+ {
+ "type": "gitlab",
+ "token": "my-token",
+ "groups": [
+ "my-group"
+ ],
+ "exclude": {
+ "archived": true,
+ "forks": true,
+ "projects": [
+ "my-group/project1",
+ "my-group/project2"
+ ]
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/configs/self-hosted.json b/configs/self-hosted.json
new file mode 100644
index 00000000..0ea32be3
--- /dev/null
+++ b/configs/self-hosted.json
@@ -0,0 +1,19 @@
+{
+ "$schema": "../schemas/v2/index.json",
+ "repos": [
+ {
+ "type": "github",
+ "url": "https://github.example.com",
+ "orgs": [
+ "my-org-name"
+ ]
+ },
+ {
+ "type": "gitlab",
+ "url": "https://gitlab.example.com",
+ "groups": [
+ "my-group"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/default-config.json b/default-config.json
index dff1cc71..c3154f64 100644
--- a/default-config.json
+++ b/default-config.json
@@ -1,10 +1,11 @@
{
- "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/index.json",
- "Configs": [
+ "$schema": "./schemas/v2/index.json",
+ "repos": [
{
- "Type": "github",
- "GitHubOrg": "sourcebot-dev",
- "Name": "^sourcebot$"
+ "type": "github",
+ "repos": [
+ "sourcebot-dev/sourcebot"
+ ]
}
]
}
\ No newline at end of file
diff --git a/demo-site-config.json b/demo-site-config.json
index 3d90cc5e..a60cb784 100644
--- a/demo-site-config.json
+++ b/demo-site-config.json
@@ -1,41 +1,18 @@
{
- "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/index.json",
- "Configs": [
+ "$schema": "./schemas/v2/index.json",
+ "repos": [
{
- "Type": "github",
- "GitHubUser": "torvalds",
- "Name": "linux"
- },
- {
- "Type": "github",
- "GitHubOrg": "pytorch",
- "Name": "pytorch"
- },
- {
- "Type": "github",
- "GitHubOrg": "commaai",
- "Name": "^(openpilot|tinygrad)$",
- "IncludeForks": true
- },
- {
- "Type": "github",
- "GitHubUser": "ggerganov",
- "Name": "^(whisper\\.cpp|llama\\.cpp)$"
- },
- {
- "Type": "github",
- "GitHubOrg": "codemirror",
- "Name": "^(dev|lang-.*)$"
- },
- {
- "Type": "github",
- "GitHubOrg": "tailwindlabs",
- "Name": "^tailwindcss$"
- },
- {
- "Type": "github",
- "GitHubOrg": "sourcebot-dev",
- "Name": "^sourcebot$"
+ "type": "github",
+ "repos": [
+ "torvalds/linux",
+ "pytorch/pytorch",
+ "commaai/openpilot",
+ "ggerganov/whisper.cpp",
+ "ggerganov/llama.cpp",
+ "codemirror/dev",
+ "tailwindlabs/tailwindcss",
+ "sourcebot-dev/sourcebot"
+ ]
}
]
}
\ No newline at end of file
diff --git a/entrypoint.sh b/entrypoint.sh
index 9acd18d1..2fa3be78 100644
--- a/entrypoint.sh
+++ b/entrypoint.sh
@@ -46,36 +46,6 @@ fi
echo -e "\e[34m[Info] Using config file at: '$CONFIG_PATH'.\e[0m"
-# Check if GITHUB_TOKEN is set
-if [ -n "$GITHUB_TOKEN" ]; then
- echo "$GITHUB_TOKEN" > "$HOME/.github-token"
- chmod 600 "$HOME/.github-token"
-
- # Configure Git with the provided GITHUB_TOKEN
- echo -e "\e[34m[Info] Configuring GitHub credentials with hostname '$GITHUB_HOSTNAME'.\e[0m"
- echo "machine ${GITHUB_HOSTNAME}
- login oauth
- password ${GITHUB_TOKEN}" >> "$HOME/.netrc"
- chmod 600 "$HOME/.netrc"
-else
- echo -e "\e[34m[Info] Private GitHub repositories will not be indexed since GITHUB_TOKEN was not set.\e[0m"
-fi
-
-# Check if GITLAB_TOKEN is set
-if [ -n "$GITLAB_TOKEN" ]; then
- echo "$GITLAB_TOKEN" > "$HOME/.gitlab-token"
- chmod 600 "$HOME/.gitlab-token"
-
- # Configure Git with the provided GITLAB_TOKEN
- echo -e "\e[34m[Info] Configuring GitLab credentials with hostname '$GITLAB_HOSTNAME'.\e[0m"
- echo "machine ${GITLAB_HOSTNAME}
- login oauth
- password ${GITLAB_TOKEN}" >> "$HOME/.netrc"
- chmod 600 "$HOME/.netrc"
-else
- echo -e "\e[34m[Info] GitLab repositories will not be indexed since GITLAB_TOKEN was not set.\e[0m"
-fi
-
# Update nextjs public env variables w/o requiring a rebuild.
# @see: https://phase.dev/blog/nextjs-public-runtime-variables/
@@ -89,7 +59,7 @@ if [ -z "$NEXT_PUBLIC_SOURCEBOT_VERSION" ] && [ ! -z "$SOURCEBOT_VERSION" ]; the
export NEXT_PUBLIC_SOURCEBOT_VERSION="$SOURCEBOT_VERSION"
fi
-find /app/public /app/.next -type f -name "*.js" |
+find /app/packages/web/public /app/packages/web/.next -type f -name "*.js" |
while read file; do
sed -i "s|BAKED_NEXT_PUBLIC_SOURCEBOT_TELEMETRY_DISABLED|${NEXT_PUBLIC_SOURCEBOT_TELEMETRY_DISABLED}|g" "$file"
sed -i "s|BAKED_NEXT_PUBLIC_SOURCEBOT_VERSION|${NEXT_PUBLIC_SOURCEBOT_VERSION}|g" "$file"
diff --git a/example-config.json b/example-config.json
deleted file mode 100644
index 5bed0f73..00000000
--- a/example-config.json
+++ /dev/null
@@ -1,86 +0,0 @@
-{
- "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/index.json",
- "Configs": [
- // ~~~~~~~~~~~~ GitHub Examples ~~~~~~~~~~~~
- // Index all repos in organization "my-org".
- {
- "Type": "github",
- "GitHubOrg": "my-org"
- },
- // Index all repos in self-hosted GitHub instance.
- // @note: the environment variable GITHUB_HOSTNAME must be set. See README.
- {
- "Type": "github",
- "GitHubUrl": "https://github.example.com"
- },
- // Index all repos in user "my-user".
- {
- "Type": "github",
- "GitHubUser": "my-user"
- },
- // Index repos foo & bar in organization "my-org".
- {
- "Type": "github",
- "GitHubOrg": "my-org",
- "Name": "^(foo|bar)$"
- },
-
- // Index all repos except foo & bar in organization "my-org".
- {
- "Type": "github",
- "GitHubOrg": "my-org",
- "Exclude": "^(foo|bar)$"
- },
- // Index all repos that contain topic "topic_a" or "topic_b" in organization "my-org".
- {
- "Type": "github",
- "GitHubOrg": "my-org",
- "Topics": ["topic_a", "topic_b"]
- },
- // Index all repos that _do not_ contain "topic_x" and "topic_y" in organization "my-org".
- {
- "Type": "github",
- "GitHubOrg": "my-org",
- "ExcludeTopics": ["topic_x", "topic_y"]
- },
- // Index all repos in organization, including forks in "my-org".
- {
- "Type": "github",
- "GitHubOrg": "my-org",
- "IncludeForks": true /* default: false */
- },
- // Index all repos in organization, excluding repos that are archived in "my-org".
- {
- "Type": "github",
- "GitHubOrg": "my-org",
- "NoArchived": true /* default: false */
- }
-
- // ~~~~~~~~~~~~ GitLab Examples ~~~~~~~~~~~~
- // Index all repos visible to the GITLAB_TOKEN.
- {
- "Type": "gitlab"
- },
- // Index all repos visible to the GITLAB_TOKEN (custom GitLab URL).
- // @note: the environment variable GITLAB_HOSTNAME must also be set. See README.
- {
- "Type": "gitlab",
- "GitLabURL": "https://gitlab.example.com"
- },
- // Index all repos (public only) visible to the GITLAB_TOKEN.
- {
- "Type": "gitlab",
- "OnlyPublic": true
- },
- // Index only the repos foo & bar.
- {
- "Type": "gitlab",
- "Name": "^(foo|bar)$"
- },
- // Index all repos except fizz & buzz visible to the GITLAB_TOKEN.
- {
- "Type": "gitlab",
- "Exclude": "^(fizz|buzz)$"
- },
- ]
-}
\ No newline at end of file
diff --git a/package.json b/package.json
index 26432314..b0bb5d74 100644
--- a/package.json
+++ b/package.json
@@ -1,83 +1,16 @@
{
- "name": "sourcebot",
- "version": "0.1.0",
- "private": true,
- "scripts": {
- "dev": "npm-run-all --print-label --parallel next:dev zoekt:webserver zoekt:indexserver",
- "zoekt:webserver": "export PATH=\"$PWD/bin:$PATH\" && zoekt-webserver -index .sourcebot/index -rpc",
- "zoekt:indexserver": "export PATH=\"$PWD/bin:$PATH\" && export CTAGS_COMMAND=ctags && zoekt-indexserver -data_dir .sourcebot -mirror_config config.json",
- "next:dev": "next dev",
- "build": "next build",
- "start": "next start",
- "lint": "next lint"
- },
- "dependencies": {
- "@codemirror/commands": "^6.6.0",
- "@codemirror/lang-cpp": "^6.0.2",
- "@codemirror/lang-css": "^6.3.0",
- "@codemirror/lang-go": "^6.0.1",
- "@codemirror/lang-html": "^6.4.9",
- "@codemirror/lang-java": "^6.0.1",
- "@codemirror/lang-javascript": "^6.2.2",
- "@codemirror/lang-json": "^6.0.1",
- "@codemirror/lang-markdown": "^6.2.5",
- "@codemirror/lang-php": "^6.0.1",
- "@codemirror/lang-python": "^6.1.6",
- "@codemirror/lang-rust": "^6.0.1",
- "@codemirror/lang-sql": "^6.7.1",
- "@codemirror/search": "^6.5.6",
- "@codemirror/state": "^6.4.1",
- "@codemirror/view": "^6.33.0",
- "@hookform/resolvers": "^3.9.0",
- "@radix-ui/react-dropdown-menu": "^2.1.1",
- "@radix-ui/react-icons": "^1.3.0",
- "@radix-ui/react-label": "^2.1.0",
- "@radix-ui/react-navigation-menu": "^1.2.0",
- "@radix-ui/react-scroll-area": "^1.1.0",
- "@radix-ui/react-separator": "^1.1.0",
- "@radix-ui/react-slot": "^1.1.0",
- "@replit/codemirror-lang-csharp": "^6.2.0",
- "@replit/codemirror-vim": "^6.2.1",
- "@tanstack/react-query": "^5.53.3",
- "@tanstack/react-table": "^8.20.5",
- "@uiw/react-codemirror": "^4.23.0",
- "class-variance-authority": "^0.7.0",
- "client-only": "^0.0.1",
- "clsx": "^2.1.1",
- "embla-carousel-auto-scroll": "^8.3.0",
- "embla-carousel-react": "^8.3.0",
- "escape-string-regexp": "^5.0.0",
- "http-status-codes": "^2.3.0",
- "lucide-react": "^0.435.0",
- "next": "14.2.10",
- "next-themes": "^0.3.0",
- "posthog-js": "^1.161.5",
- "pretty-bytes": "^6.1.1",
- "react": "^18",
- "react-dom": "^18",
- "react-hook-form": "^7.53.0",
- "react-hotkeys-hook": "^4.5.1",
- "react-resizable-panels": "^2.1.1",
- "server-only": "^0.0.1",
- "sharp": "^0.33.5",
- "tailwind-merge": "^2.5.2",
- "tailwindcss-animate": "^1.0.7",
- "usehooks-ts": "^3.1.0",
- "zod": "^3.23.8"
- },
- "devDependencies": {
- "@types/node": "^20",
- "@types/react": "^18",
- "@types/react-dom": "^18",
- "@typescript-eslint/eslint-plugin": "^8.3.0",
- "@typescript-eslint/parser": "^8.3.0",
- "eslint": "^8",
- "eslint-config-next": "14.2.6",
- "eslint-plugin-react": "^7.35.0",
- "eslint-plugin-react-hooks": "^4.6.2",
- "npm-run-all": "^4.1.5",
- "postcss": "^8",
- "tailwindcss": "^3.4.1",
- "typescript": "^5"
- }
+ "private": true,
+ "workspaces": [
+ "packages/*"
+ ],
+ "scripts": {
+ "build": "yarn workspaces run build",
+ "dev": "npm-run-all --print-label --parallel dev:zoekt dev:backend dev:web",
+ "dev:zoekt": "export PATH=\"$PWD/bin:$PATH\" && zoekt-webserver -index .sourcebot/index -rpc",
+ "dev:backend": "yarn workspace @sourcebot/backend dev:watch",
+ "dev:web": "yarn workspace @sourcebot/web dev"
+ },
+ "devDependencies": {
+ "npm-run-all": "^4.1.5"
+ }
}
diff --git a/packages/backend/.gitignore b/packages/backend/.gitignore
new file mode 100644
index 00000000..77738287
--- /dev/null
+++ b/packages/backend/.gitignore
@@ -0,0 +1 @@
+dist/
\ No newline at end of file
diff --git a/packages/backend/package.json b/packages/backend/package.json
new file mode 100644
index 00000000..18c69d67
--- /dev/null
+++ b/packages/backend/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@sourcebot/backend",
+ "version": "0.1.0",
+ "private": true,
+ "main": "index.js",
+ "type": "module",
+ "scripts": {
+ "dev:watch": "yarn generate:types && tsc-watch --preserveWatchOutput --onSuccess \"yarn dev --configPath ../../config.json --cacheDir ../../.sourcebot\"",
+ "dev": "export PATH=\"$PWD/../../bin:$PATH\" && export CTAGS_COMMAND=ctags && node ./dist/index.js",
+ "build": "yarn generate:types && tsc",
+ "generate:types": "tsx tools/generateTypes.ts"
+ },
+ "devDependencies": {
+ "@types/argparse": "^2.0.16",
+ "@types/node": "^22.7.5",
+ "json-schema-to-typescript": "^15.0.2",
+ "tsc-watch": "^6.2.0",
+ "tsx": "^4.19.1",
+ "typescript": "^5.6.2"
+ },
+ "dependencies": {
+ "@gitbeaker/rest": "^40.5.1",
+ "@octokit/rest": "^21.0.2",
+ "argparse": "^2.0.1",
+ "lowdb": "^7.0.1",
+ "simple-git": "^3.27.0",
+ "strip-json-comments": "^5.0.1",
+ "winston": "^3.15.0"
+ }
+}
diff --git a/packages/backend/src/constants.ts b/packages/backend/src/constants.ts
new file mode 100644
index 00000000..6db4289e
--- /dev/null
+++ b/packages/backend/src/constants.ts
@@ -0,0 +1,10 @@
+
+/**
+ * The interval to reindex a given repository.
+ */
+export const REINDEX_INTERVAL_MS = 1000 * 60 * 60;
+
+/**
+ * The interval to re-sync the config.
+ */
+export const RESYNC_CONFIG_INTERVAL_MS = 1000 * 60 * 60 * 24;
\ No newline at end of file
diff --git a/packages/backend/src/db.ts b/packages/backend/src/db.ts
new file mode 100644
index 00000000..84ea69fd
--- /dev/null
+++ b/packages/backend/src/db.ts
@@ -0,0 +1,28 @@
+import { JSONFilePreset } from "lowdb/node";
+import { type Low } from "lowdb";
+import { AppContext, Repository } from "./types.js";
+
+type Schema = {
+ repos: {
+ [key: string]: Repository;
+ }
+}
+
+export type Database = Low;
+
+export const loadDB = async (ctx: AppContext): Promise => {
+ const db = await JSONFilePreset(`${ctx.cachePath}/db.json`, { repos: {} });
+ return db;
+}
+export const updateRepository = async (repoId: string, data: Partial, db: Database) => {
+ db.data.repos[repoId] = {
+ ...db.data.repos[repoId],
+ ...data,
+ }
+ await db.write();
+}
+
+export const createRepository = async (repo: Repository, db: Database) => {
+ db.data.repos[repo.id] = repo;
+ await db.write();
+}
\ No newline at end of file
diff --git a/packages/backend/src/environment.ts b/packages/backend/src/environment.ts
new file mode 100644
index 00000000..b1e0e43e
--- /dev/null
+++ b/packages/backend/src/environment.ts
@@ -0,0 +1,6 @@
+
+export const getEnv = (env: string | undefined, defaultValue = '') => {
+ return env ?? defaultValue;
+}
+
+export const SOURCEBOT_LOG_LEVEL = getEnv(process.env.SOURCEBOT_LOG_LEVEL, 'info');
diff --git a/packages/backend/src/git.ts b/packages/backend/src/git.ts
new file mode 100644
index 00000000..7d5947a2
--- /dev/null
+++ b/packages/backend/src/git.ts
@@ -0,0 +1,51 @@
+import { Repository } from './types.js';
+import { simpleGit, SimpleGitProgressEvent } from 'simple-git';
+import { existsSync } from 'fs';
+import { createLogger } from './logger.js';
+
+const logger = createLogger('git');
+
+export const cloneRepository = async (repo: Repository, onProgress?: (event: SimpleGitProgressEvent) => void) => {
+ if (existsSync(repo.path)) {
+ logger.warn(`${repo.id} already exists. Skipping clone.`)
+ return;
+ }
+
+ const git = simpleGit({
+ progress: onProgress,
+ });
+
+ const gitConfig = Object.entries(repo.gitConfigMetadata ?? {}).flatMap(
+ ([key, value]) => ['--config', `${key}=${value}`]
+ );
+
+ await git.clone(
+ repo.cloneUrl,
+ repo.path,
+ [
+ "--bare",
+ ...gitConfig
+ ]
+ );
+
+ await git.cwd({
+ path: repo.path,
+ }).addConfig("remote.origin.fetch", "+refs/heads/*:refs/heads/*");
+}
+
+
+export const fetchRepository = async (repo: Repository, onProgress?: (event: SimpleGitProgressEvent) => void) => {
+ const git = simpleGit({
+ progress: onProgress,
+ });
+
+ await git.cwd({
+ path: repo.path,
+ }).fetch(
+ "origin",
+ [
+ "--prune",
+ "--progress"
+ ]
+ );
+}
\ No newline at end of file
diff --git a/packages/backend/src/github.ts b/packages/backend/src/github.ts
new file mode 100644
index 00000000..e25b8c5e
--- /dev/null
+++ b/packages/backend/src/github.ts
@@ -0,0 +1,195 @@
+import { Octokit } from "@octokit/rest";
+import { GitHubConfig } from "./schemas/v2.js";
+import { createLogger } from "./logger.js";
+import { AppContext, Repository } from "./types.js";
+import path from 'path';
+import { excludeArchivedRepos, excludeForkedRepos, excludeReposByName, getTokenFromConfig, marshalBool } from "./utils.js";
+
+const logger = createLogger("GitHub");
+
+type OctokitRepository = {
+ name: string,
+ full_name: string,
+ fork: boolean,
+ private: boolean,
+ html_url: string,
+ clone_url?: string,
+ stargazers_count?: number,
+ watchers_count?: number,
+ subscribers_count?: number,
+ forks_count?: number,
+ archived?: boolean,
+}
+
+export const getGitHubReposFromConfig = async (config: GitHubConfig, signal: AbortSignal, ctx: AppContext) => {
+ const token = config.token ? getTokenFromConfig(config.token, ctx) : undefined;
+
+ const octokit = new Octokit({
+ auth: token,
+ ...(config.url ? {
+ baseUrl: `${config.url}/api/v3`
+ } : {}),
+ });
+
+ let allRepos: OctokitRepository[] = [];
+
+ if (config.orgs) {
+ const _repos = await getReposForOrgs(config.orgs, octokit, signal);
+ allRepos = allRepos.concat(_repos);
+ }
+
+ if (config.repos) {
+ const _repos = await getRepos(config.repos, octokit, signal);
+ allRepos = allRepos.concat(_repos);
+ }
+
+ if (config.users) {
+ const isAuthenticated = config.token !== undefined;
+ const _repos = await getReposOwnedByUsers(config.users, isAuthenticated, octokit, signal);
+ allRepos = allRepos.concat(_repos);
+ }
+
+ // Marshall results to our type
+ let repos: Repository[] = allRepos
+ .filter((repo) => {
+ if (!repo.clone_url) {
+ logger.warn(`Repository ${repo.name} missing property 'clone_url'. Excluding.`)
+ return false;
+ }
+ return true;
+ })
+ .map((repo) => {
+ const hostname = config.url ? new URL(config.url).hostname : 'github.com';
+ const repoId = `${hostname}/${repo.full_name}`;
+ const repoPath = path.resolve(path.join(ctx.reposPath, `${repoId}.git`));
+
+ const cloneUrl = new URL(repo.clone_url!);
+ if (token) {
+ cloneUrl.username = token;
+ }
+
+ return {
+ name: repo.full_name,
+ id: repoId,
+ cloneUrl: cloneUrl.toString(),
+ path: repoPath,
+ isStale: false,
+ isFork: repo.fork,
+ isArchived: !!repo.archived,
+ gitConfigMetadata: {
+ 'zoekt.web-url-type': 'github',
+ 'zoekt.web-url': repo.html_url,
+ 'zoekt.name': repoId,
+ 'zoekt.github-stars': (repo.stargazers_count ?? 0).toString(),
+ 'zoekt.github-watchers': (repo.watchers_count ?? 0).toString(),
+ 'zoekt.github-subscribers': (repo.subscribers_count ?? 0).toString(),
+ 'zoekt.github-forks': (repo.forks_count ?? 0).toString(),
+ 'zoekt.archived': marshalBool(repo.archived),
+ 'zoekt.fork': marshalBool(repo.fork),
+ 'zoekt.public': marshalBool(repo.private === false)
+ }
+ } satisfies Repository;
+ });
+
+ if (config.exclude) {
+ if (!!config.exclude.forks) {
+ repos = excludeForkedRepos(repos, logger);
+ }
+
+ if (!!config.exclude.archived) {
+ repos = excludeArchivedRepos(repos, logger);
+ }
+
+ if (config.exclude.repos) {
+ repos = excludeReposByName(repos, config.exclude.repos, logger);
+ }
+ }
+
+ logger.debug(`Found ${repos.length} total repositories.`);
+
+ return repos;
+}
+
+const getReposOwnedByUsers = async (users: string[], isAuthenticated: boolean, octokit: Octokit, signal: AbortSignal) => {
+ // @todo : error handling
+ const repos = (await Promise.all(users.map(async (user) => {
+ logger.debug(`Fetching repository info for user ${user}...`);
+ const start = Date.now();
+
+ const result = await (() => {
+ if (isAuthenticated) {
+ return octokit.paginate(octokit.repos.listForAuthenticatedUser, {
+ username: user,
+ visibility: 'all',
+ affiliation: 'owner',
+ per_page: 100,
+ request: {
+ signal,
+ },
+ });
+ } else {
+ return octokit.paginate(octokit.repos.listForUser, {
+ username: user,
+ per_page: 100,
+ request: {
+ signal,
+ },
+ });
+ }
+ })();
+
+ const duration = Date.now() - start;
+ logger.debug(`Found ${result.length} owned by user ${user} in ${duration}ms.`);
+
+ return result;
+ }))).flat();
+
+ return repos;
+}
+
+const getReposForOrgs = async (orgs: string[], octokit: Octokit, signal: AbortSignal) => {
+ // @todo : error handling
+ const repos = (await Promise.all(orgs.map(async (org) => {
+ logger.debug(`Fetching repository info for org ${org}...`);
+ const start = Date.now();
+
+ const result = await octokit.paginate(octokit.repos.listForOrg, {
+ org: org,
+ per_page: 100,
+ request: {
+ signal
+ }
+ });
+
+ const duration = Date.now() - start;
+ logger.debug(`Found ${result.length} in org ${org} in ${duration}ms.`);
+
+ return result;
+ }))).flat();
+
+ return repos;
+}
+
+const getRepos = async (repoList: string[], octokit: Octokit, signal: AbortSignal) => {
+ // @todo : error handling
+ const repos = await Promise.all(repoList.map(async (repo) => {
+ logger.debug(`Fetching repository info for ${repo}...`);
+ const start = Date.now();
+
+ const [owner, repoName] = repo.split('/');
+ const result = await octokit.repos.get({
+ owner,
+ repo: repoName,
+ request: {
+ signal
+ }
+ });
+
+ const duration = Date.now() - start;
+ logger.debug(`Found info for repository ${repo} in ${duration}ms`);
+
+ return result.data;
+ }));
+
+ return repos;
+}
\ No newline at end of file
diff --git a/packages/backend/src/gitlab.ts b/packages/backend/src/gitlab.ts
new file mode 100644
index 00000000..18ffd8ba
--- /dev/null
+++ b/packages/backend/src/gitlab.ts
@@ -0,0 +1,114 @@
+import { Gitlab, ProjectSchema } from "@gitbeaker/rest";
+import { GitLabConfig } from "./schemas/v2.js";
+import { excludeArchivedRepos, excludeForkedRepos, excludeReposByName, getTokenFromConfig, marshalBool, measure } from "./utils.js";
+import { createLogger } from "./logger.js";
+import { AppContext, Repository } from "./types.js";
+import path from 'path';
+
+const logger = createLogger("GitLab");
+
+export const getGitLabReposFromConfig = async (config: GitLabConfig, ctx: AppContext) => {
+ const token = config.token ? getTokenFromConfig(config.token, ctx) : undefined;
+ const api = new Gitlab({
+ ...(config.token ? {
+ token,
+ } : {}),
+ ...(config.url ? {
+ host: config.url,
+ } : {}),
+ });
+
+ let allProjects: ProjectSchema[] = [];
+
+ if (config.groups) {
+ const _projects = (await Promise.all(config.groups.map(async (group) => {
+ logger.debug(`Fetching project info for group ${group}...`);
+ const { durationMs, data } = await measure(() => api.Groups.allProjects(group, {
+ perPage: 100,
+ owned: true,
+ }));
+ logger.debug(`Found ${data.length} projects in group ${group} in ${durationMs}ms.`);
+
+ return data;
+ }))).flat();
+
+ allProjects = allProjects.concat(_projects);
+ }
+
+ if (config.users) {
+ const _projects = (await Promise.all(config.users.map(async (user) => {
+ logger.debug(`Fetching project info for user ${user}...`);
+ const { durationMs, data } = await measure(() => api.Users.allProjects(user, {
+ perPage: 100,
+ owned: true,
+ }));
+ logger.debug(`Found ${data.length} projects owned by user ${user} in ${durationMs}ms.`);
+ return data;
+ }))).flat();
+
+ allProjects = allProjects.concat(_projects);
+ }
+
+ if (config.projects) {
+ const _projects = await Promise.all(config.projects.map(async (project) => {
+ logger.debug(`Fetching project info for project ${project}...`);
+ const { durationMs, data } = await measure(() => api.Projects.show(project));
+ logger.debug(`Found project ${project} in ${durationMs}ms.`);
+ return data;
+ }));
+
+ allProjects = allProjects.concat(_projects);
+ }
+
+ let repos: Repository[] = allProjects
+ .map((project) => {
+ const hostname = config.url ? new URL(config.url).hostname : "gitlab.com";
+ const repoId = `${hostname}/${project.path_with_namespace}`;
+ const repoPath = path.resolve(path.join(ctx.reposPath, `${repoId}.git`))
+ const isFork = project.forked_from_project !== undefined;
+
+ const cloneUrl = new URL(project.http_url_to_repo);
+ if (token) {
+ cloneUrl.username = 'oauth2';
+ cloneUrl.password = token;
+ }
+
+ return {
+ name: project.path_with_namespace,
+ id: repoId,
+ cloneUrl: cloneUrl.toString(),
+ path: repoPath,
+ isStale: false,
+ isFork,
+ isArchived: project.archived,
+ gitConfigMetadata: {
+ 'zoekt.web-url-type': 'gitlab',
+ 'zoekt.web-url': project.web_url,
+ 'zoekt.name': repoId,
+ 'zoekt.gitlab-stars': project.star_count.toString(),
+ 'zoekt.gitlab-forks': project.forks_count.toString(),
+ 'zoekt.archived': marshalBool(project.archived),
+ 'zoekt.fork': marshalBool(isFork),
+ 'zoekt.public': marshalBool(project.visibility === 'public'),
+ }
+ } satisfies Repository;
+ });
+
+ if (config.exclude) {
+ if (!!config.exclude.forks) {
+ repos = excludeForkedRepos(repos, logger);
+ }
+
+ if (!!config.exclude.archived) {
+ repos = excludeArchivedRepos(repos, logger);
+ }
+
+ if (config.exclude.projects) {
+ repos = excludeReposByName(repos, config.exclude.projects, logger);
+ }
+ }
+
+ logger.debug(`Found ${repos.length} total repositories.`);
+
+ return repos;
+}
diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts
new file mode 100644
index 00000000..02645b15
--- /dev/null
+++ b/packages/backend/src/index.ts
@@ -0,0 +1,235 @@
+import { ArgumentParser } from "argparse";
+import { mkdir, readFile } from 'fs/promises';
+import { existsSync, watch } from 'fs';
+import { exec } from "child_process";
+import path from 'path';
+import { SourcebotConfigurationSchema } from "./schemas/v2.js";
+import { getGitHubReposFromConfig } from "./github.js";
+import { getGitLabReposFromConfig } from "./gitlab.js";
+import { AppContext, Repository } from "./types.js";
+import { cloneRepository, fetchRepository } from "./git.js";
+import { createLogger } from "./logger.js";
+import { createRepository, Database, loadDB, updateRepository } from './db.js';
+import { measure } from "./utils.js";
+import { REINDEX_INTERVAL_MS, RESYNC_CONFIG_INTERVAL_MS } from "./constants.js";
+import stripJsonComments from 'strip-json-comments';
+
+const logger = createLogger('main');
+
+const parser = new ArgumentParser({
+ description: "Sourcebot backend tool",
+});
+
+type Arguments = {
+ configPath: string;
+ cacheDir: string;
+}
+
+const indexRepository = async (repo: Repository, ctx: AppContext) => {
+ return new Promise<{ stdout: string, stderr: string }>((resolve, reject) => {
+ exec(`zoekt-git-index -index ${ctx.indexPath} ${repo.path}`, (error, stdout, stderr) => {
+ if (error) {
+ reject(error);
+ return;
+ }
+ resolve({
+ stdout,
+ stderr
+ });
+ })
+ });
+}
+
+const syncConfig = async (configPath: string, db: Database, signal: AbortSignal, ctx: AppContext) => {
+ const configContent = await readFile(configPath, {
+ encoding: 'utf-8',
+ signal,
+ });
+
+ // @todo: we should validate the configuration file's structure here.
+ const config = JSON.parse(stripJsonComments(configContent)) as SourcebotConfigurationSchema;
+
+ // Fetch all repositories from the config file
+ let configRepos: Repository[] = [];
+ for (const repoConfig of config.repos ?? []) {
+ switch (repoConfig.type) {
+ case 'github': {
+ const gitHubRepos = await getGitHubReposFromConfig(repoConfig, signal, ctx);
+ configRepos.push(...gitHubRepos);
+ break;
+ }
+ case 'gitlab': {
+ const gitLabRepos = await getGitLabReposFromConfig(repoConfig, ctx);
+ configRepos.push(...gitLabRepos);
+ break;
+ }
+ }
+ }
+
+ // De-duplicate on id
+ configRepos.sort((a, b) => {
+ return a.id.localeCompare(b.id);
+ });
+ configRepos = configRepos.filter((item, index, self) => {
+ if (index === 0) return true;
+ if (item.id === self[index - 1].id) {
+ logger.debug(`Duplicate repository ${item.id} found in config file.`);
+ return false;
+ }
+ return true;
+ });
+
+ logger.info(`Discovered ${configRepos.length} unique repositories from config.`);
+
+ // Merge the repositories into the database
+ for (const newRepo of configRepos) {
+ if (newRepo.id in db.data.repos) {
+ await updateRepository(newRepo.id, newRepo, db);
+ } else {
+ await createRepository(newRepo, db);
+ }
+ }
+
+ // Find repositories that are in the database, but not in the configuration file
+ {
+ const a = configRepos.map(repo => repo.id);
+ const b = Object.keys(db.data.repos);
+ const diff = b.filter(x => !a.includes(x));
+
+ for (const id of diff) {
+ await db.update(({ repos }) => {
+ const repo = repos[id];
+ if (repo.isStale) {
+ return;
+ }
+
+ logger.warn(`Repository ${id} is no longer listed in the configuration file or was not found. Marking as stale.`);
+ repo.isStale = true;
+ });
+ }
+ }
+}
+
+(async () => {
+ parser.add_argument("--configPath", {
+ help: "Path to config file",
+ required: true,
+ });
+
+ parser.add_argument("--cacheDir", {
+ help: "Path to .sourcebot cache directory",
+ required: true,
+ });
+ const args = parser.parse_args() as Arguments;
+
+ if (!existsSync(args.configPath)) {
+ console.error(`Config file ${args.configPath} does not exist`);
+ process.exit(1);
+ }
+
+ const cacheDir = args.cacheDir;
+ const reposPath = path.join(cacheDir, 'repos');
+ const indexPath = path.join(cacheDir, 'index');
+
+ if (!existsSync(reposPath)) {
+ await mkdir(reposPath, { recursive: true });
+ }
+ if (!existsSync(indexPath)) {
+ await mkdir(indexPath, { recursive: true });
+ }
+
+ const context: AppContext = {
+ indexPath,
+ reposPath,
+ cachePath: cacheDir,
+ configPath: args.configPath,
+ }
+
+ const db = await loadDB(context);
+
+ let abortController = new AbortController();
+ let isSyncing = false;
+ const _syncConfig = () => {
+ if (isSyncing) {
+ abortController.abort();
+ abortController = new AbortController();
+ }
+
+ logger.info(`Syncing configuration file ${args.configPath} ...`);
+ isSyncing = true;
+ measure(() => syncConfig(args.configPath, db, abortController.signal, context))
+ .then(({ durationMs }) => {
+ logger.info(`Synced configuration file ${args.configPath} in ${durationMs / 1000}s`);
+ isSyncing = false;
+ })
+ .catch((err) => {
+ if (err.name === "AbortError") {
+ // @note: If we're aborting, we don't want to set isSyncing to false
+ // since it implies another sync is in progress.
+ } else {
+ isSyncing = false;
+ logger.error(`Failed to sync configuration file ${args.configPath} with error:\n`, err);
+ }
+ });
+ }
+
+ // Re-sync on file changes
+ watch(args.configPath, () => {
+ logger.info(`Config file ${args.configPath} changed. Re-syncing...`);
+ _syncConfig();
+ });
+
+ // Re-sync every 24 hours
+ setInterval(() => {
+ logger.info(`Re-syncing configuration file ${args.configPath}`);
+ _syncConfig();
+ }, RESYNC_CONFIG_INTERVAL_MS);
+
+ // Sync immediately on startup
+ _syncConfig();
+
+ while (true) {
+ const repos = db.data.repos;
+
+ for (const [_, repo] of Object.entries(repos)) {
+ const lastIndexed = repo.lastIndexedDate ? new Date(repo.lastIndexedDate) : new Date(0);
+
+ if (
+ repo.isStale ||
+ lastIndexed.getTime() > Date.now() - REINDEX_INTERVAL_MS
+ ) {
+ continue;
+ }
+
+ try {
+ if (existsSync(repo.path)) {
+ logger.info(`Fetching ${repo.id}...`);
+ const { durationMs } = await measure(() => fetchRepository(repo, ({ method, stage , progress}) => {
+ logger.info(`git.${method} ${stage} stage ${progress}% complete for ${repo.id}`)
+ }));
+ process.stdout.write('\n');
+ logger.info(`Fetched ${repo.id} in ${durationMs / 1000}s`);
+ } else {
+ logger.info(`Cloning ${repo.id}...`);
+ const { durationMs } = await measure(() => cloneRepository(repo, ({ method, stage, progress }) => {
+ logger.info(`git.${method} ${stage} stage ${progress}% complete for ${repo.id}`)
+ }));
+ process.stdout.write('\n');
+ logger.info(`Cloned ${repo.id} in ${durationMs / 1000}s`);
+ }
+
+ logger.info(`Indexing ${repo.id}...`);
+ const { durationMs } = await measure(() => indexRepository(repo, context));
+ logger.info(`Indexed ${repo.id} in ${durationMs / 1000}s`);
+ } catch (err: any) {
+ // @todo : better error handling here..
+ logger.error(err);
+ continue;
+ }
+
+ await db.update(({ repos }) => repos[repo.id].lastIndexedDate = new Date().toUTCString());
+ }
+
+ await new Promise(resolve => setTimeout(resolve, 1000));
+ }
+})();
diff --git a/packages/backend/src/logger.ts b/packages/backend/src/logger.ts
new file mode 100644
index 00000000..8a90a666
--- /dev/null
+++ b/packages/backend/src/logger.ts
@@ -0,0 +1,38 @@
+import winston, { format } from 'winston';
+import { SOURCEBOT_LOG_LEVEL } from './environment.js';
+
+const { combine, colorize, timestamp, prettyPrint, errors, printf, label: labelFn } = format;
+
+const createLogger = (label: string) => {
+ return winston.createLogger({
+ // @todo: Make log level configurable
+ level: SOURCEBOT_LOG_LEVEL,
+ format: combine(
+ errors({ stack: true }),
+ timestamp(),
+ prettyPrint(),
+ labelFn({
+ label: label,
+ })
+ ),
+ transports: [
+ new winston.transports.Console({
+ format: combine(
+ errors({ stack: true }),
+ colorize(),
+ printf(({ level, message, timestamp, stack, label: _label }) => {
+ const label = `[${_label}] `;
+ if (stack) {
+ return `${timestamp} ${level}: ${label}${message}\n${stack}`;
+ }
+ return `${timestamp} ${level}: ${label}${message}`;
+ }),
+ ),
+ }),
+ ]
+ });
+}
+
+export {
+ createLogger
+};
\ No newline at end of file
diff --git a/packages/backend/src/schemas/v2.ts b/packages/backend/src/schemas/v2.ts
new file mode 100644
index 00000000..0da2d047
--- /dev/null
+++ b/packages/backend/src/schemas/v2.ts
@@ -0,0 +1,108 @@
+// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!
+
+export type Repos = GitHubConfig | GitLabConfig;
+
+/**
+ * A Sourcebot configuration file outlines which repositories Sourcebot should sync and index.
+ */
+export interface SourcebotConfigurationSchema {
+ $schema?: string;
+ /**
+ * Defines a collection of repositories from varying code hosts that Sourcebot should sync with.
+ */
+ repos?: Repos[];
+}
+export interface GitHubConfig {
+ /**
+ * GitHub Configuration
+ */
+ type: "github";
+ /**
+ * A Personal Access Token (PAT).
+ */
+ token?:
+ | string
+ | {
+ /**
+ * The name of the environment variable that contains the token.
+ */
+ env: string;
+ };
+ /**
+ * The URL of the GitHub host. Defaults to https://github.com
+ */
+ url?: string;
+ /**
+ * List of users to sync with. All repositories that the user owns will be synced, unless explicitly defined in the `exclude` property.
+ */
+ users?: string[];
+ /**
+ * List of organizations to sync with. All repositories in the organization visible to the provided `token` (if any) will be synced, unless explicitly defined in the `exclude` property.
+ */
+ orgs?: string[];
+ /**
+ * List of individual repositories to sync with. Expected to be formatted as '{orgName}/{repoName}' or '{userName}/{repoName}'.
+ */
+ repos?: string[];
+ exclude?: {
+ /**
+ * Exlcude forked repositories from syncing.
+ */
+ forks?: boolean;
+ /**
+ * Exlcude archived repositories from syncing.
+ */
+ archived?: boolean;
+ /**
+ * List of individual repositories to exclude from syncing. Expected to be formatted as '{orgName}/{repoName}' or '{userName}/{repoName}'.
+ */
+ repos?: string[];
+ };
+}
+export interface GitLabConfig {
+ /**
+ * GitLab Configuration
+ */
+ type: "gitlab";
+ /**
+ * An authentication token.
+ */
+ token?:
+ | string
+ | {
+ /**
+ * The name of the environment variable that contains the token.
+ */
+ env: string;
+ };
+ /**
+ * The URL of the GitLab host. Defaults to https://gitlab.com
+ */
+ url?: string;
+ /**
+ * List of users to sync with. All personal projects that the user owns will be synced, unless explicitly defined in the `exclude` property.
+ */
+ users?: string[];
+ /**
+ * List of groups to sync with. All projects in the group visible to the provided `token` (if any) will be synced, unless explicitly defined in the `exclude` property. Subgroups can be specified by providing the path to the subgroup (e.g. `my-group/sub-group-a`).
+ */
+ groups?: string[];
+ /**
+ * List of individual projects to sync with. The project's namespace must be specified. See: https://docs.gitlab.com/ee/user/namespace/
+ */
+ projects?: string[];
+ exclude?: {
+ /**
+ * Exlcude forked projects from syncing.
+ */
+ forks?: boolean;
+ /**
+ * Exlcude archived projects from syncing.
+ */
+ archived?: boolean;
+ /**
+ * List of individual projects to exclude from syncing. The project's namespace must be specified. See: https://docs.gitlab.com/ee/user/namespace/
+ */
+ projects?: string[];
+ };
+}
diff --git a/packages/backend/src/types.ts b/packages/backend/src/types.ts
new file mode 100644
index 00000000..6d8253b9
--- /dev/null
+++ b/packages/backend/src/types.ts
@@ -0,0 +1,46 @@
+
+export type Repository = {
+ /**
+ * Name of the repository (e.g., 'sourcebot-dev/sourcebot')
+ */
+ name: string;
+
+ /**
+ * The unique identifier for the repository. (e.g., `github.com/sourcebot-dev/sourcebot`)
+ */
+ id: string;
+
+ /**
+ * The .git url for the repository
+ */
+ cloneUrl: string;
+
+ /**
+ * Path to where the repository is cloned
+ */
+ path: string;
+
+ gitConfigMetadata?: Record;
+
+ lastIndexedDate?: string;
+
+ isStale: boolean;
+ isFork: boolean;
+ isArchived: boolean;
+}
+
+export type AppContext = {
+ /**
+ * Path to the repos cache directory.
+ */
+ reposPath: string;
+
+ /**
+ * Path to the index cache directory;
+ */
+ indexPath: string;
+
+ cachePath: string;
+
+ configPath: string;
+}
diff --git a/packages/backend/src/utils.ts b/packages/backend/src/utils.ts
new file mode 100644
index 00000000..7c53d66a
--- /dev/null
+++ b/packages/backend/src/utils.ts
@@ -0,0 +1,58 @@
+import { Logger } from "winston";
+import { AppContext, Repository } from "./types.js";
+
+export const measure = async (cb : () => Promise) => {
+ const start = Date.now();
+ const data = await cb();
+ const durationMs = Date.now() - start;
+ return {
+ data,
+ durationMs
+ }
+}
+
+export const marshalBool = (value?: boolean) => {
+ return !!value ? '1' : '0';
+}
+
+export const excludeForkedRepos = (repos: Repository[], logger?: Logger) => {
+ return repos.filter((repo) => {
+ if (repo.isFork) {
+ logger?.debug(`Excluding repo ${repo.id}. Reason: exclude.forks is true`);
+ return false;
+ }
+ return true;
+ });
+}
+
+export const excludeArchivedRepos = (repos: Repository[], logger?: Logger) => {
+ return repos.filter((repo) => {
+ if (repo.isArchived) {
+ logger?.debug(`Excluding repo ${repo.id}. Reason: exclude.archived is true`);
+ return false;
+ }
+ return true;
+ });
+}
+
+export const excludeReposByName = (repos: Repository[], excludedRepoNames: string[], logger?: Logger) => {
+ const excludedRepos = new Set(excludedRepoNames);
+ return repos.filter((repo) => {
+ if (excludedRepos.has(repo.name)) {
+ logger?.debug(`Excluding repo ${repo.id}. Reason: exclude.repos contains ${repo.name}`);
+ return false;
+ }
+ return true;
+ });
+}
+
+export const getTokenFromConfig = (token: string | { env: string }, ctx: AppContext) => {
+ if (typeof token === 'string') {
+ return token;
+ }
+ const tokenValue = process.env[token.env];
+ if (!tokenValue) {
+ throw new Error(`The environment variable '${token.env}' was referenced in ${ctx.configPath}, but was not set.`);
+ }
+ return tokenValue;
+}
\ No newline at end of file
diff --git a/packages/backend/tools/generateTypes.ts b/packages/backend/tools/generateTypes.ts
new file mode 100644
index 00000000..d8a75460
--- /dev/null
+++ b/packages/backend/tools/generateTypes.ts
@@ -0,0 +1,22 @@
+import { compileFromFile } from 'json-schema-to-typescript'
+import path from 'path';
+import fs from 'fs';
+
+const BANNER_COMMENT = '// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!\n';
+
+(async () => {
+ const cwd = process.cwd();
+ const schemaPath = path.resolve(`${cwd}/../../schemas/v2/index.json`);
+ const outputPath = path.resolve(`${cwd}/src/schemas/v2.ts`);
+
+ const content = await compileFromFile(schemaPath, {
+ bannerComment: BANNER_COMMENT,
+ cwd,
+ });
+
+ await fs.promises.writeFile(
+ outputPath,
+ content,
+ "utf-8"
+ );
+})();
\ No newline at end of file
diff --git a/packages/backend/tsconfig.json b/packages/backend/tsconfig.json
new file mode 100644
index 00000000..a0f422f5
--- /dev/null
+++ b/packages/backend/tsconfig.json
@@ -0,0 +1,26 @@
+{
+ "compilerOptions": {
+ "outDir": "dist",
+ "incremental": true,
+ "declaration": true,
+ "emitDecoratorMetadata": true,
+ "esModuleInterop": true,
+ "experimentalDecorators": true,
+ "forceConsistentCasingInFileNames": true,
+ "isolatedModules": true,
+ "module": "Node16",
+ "moduleResolution": "Node16",
+ "target": "ES2022",
+ "noEmitOnError": false,
+ "noImplicitAny": true,
+ "noUnusedLocals": false,
+ "pretty": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "sourceMap": true,
+ "inlineSources": true
+ },
+ "include": ["src/index.ts"],
+ "exclude": ["node_modules"]
+}
\ No newline at end of file
diff --git a/.env b/packages/web/.env
similarity index 100%
rename from .env
rename to packages/web/.env
diff --git a/.eslintignore b/packages/web/.eslintignore
similarity index 100%
rename from .eslintignore
rename to packages/web/.eslintignore
diff --git a/.eslintrc.json b/packages/web/.eslintrc.json
similarity index 100%
rename from .eslintrc.json
rename to packages/web/.eslintrc.json
diff --git a/packages/web/.gitignore b/packages/web/.gitignore
new file mode 100644
index 00000000..4ac2a3ad
--- /dev/null
+++ b/packages/web/.gitignore
@@ -0,0 +1,42 @@
+# Created by https://www.toptal.com/developers/gitignore/api/nextjs
+# Edit at https://www.toptal.com/developers/gitignore?templates=nextjs
+
+### NextJS ###
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+.pnpm-debug.log*
+
+# local env files
+.env*.local
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
+
+# End of https://www.toptal.com/developers/gitignore/api/nextjs
+
+!.env
\ No newline at end of file
diff --git a/components.json b/packages/web/components.json
similarity index 100%
rename from components.json
rename to packages/web/components.json
diff --git a/fly.toml b/packages/web/fly.toml
similarity index 100%
rename from fly.toml
rename to packages/web/fly.toml
diff --git a/next.config.mjs b/packages/web/next.config.mjs
similarity index 100%
rename from next.config.mjs
rename to packages/web/next.config.mjs
diff --git a/packages/web/package.json b/packages/web/package.json
new file mode 100644
index 00000000..0f17fe04
--- /dev/null
+++ b/packages/web/package.json
@@ -0,0 +1,80 @@
+{
+ "name": "@sourcebot/web",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint"
+ },
+ "dependencies": {
+ "@codemirror/commands": "^6.6.0",
+ "@codemirror/lang-cpp": "^6.0.2",
+ "@codemirror/lang-css": "^6.3.0",
+ "@codemirror/lang-go": "^6.0.1",
+ "@codemirror/lang-html": "^6.4.9",
+ "@codemirror/lang-java": "^6.0.1",
+ "@codemirror/lang-javascript": "^6.2.2",
+ "@codemirror/lang-json": "^6.0.1",
+ "@codemirror/lang-markdown": "^6.2.5",
+ "@codemirror/lang-php": "^6.0.1",
+ "@codemirror/lang-python": "^6.1.6",
+ "@codemirror/lang-rust": "^6.0.1",
+ "@codemirror/lang-sql": "^6.7.1",
+ "@codemirror/search": "^6.5.6",
+ "@codemirror/state": "^6.4.1",
+ "@codemirror/view": "^6.33.0",
+ "@hookform/resolvers": "^3.9.0",
+ "@radix-ui/react-dropdown-menu": "^2.1.1",
+ "@radix-ui/react-icons": "^1.3.0",
+ "@radix-ui/react-label": "^2.1.0",
+ "@radix-ui/react-navigation-menu": "^1.2.0",
+ "@radix-ui/react-scroll-area": "^1.1.0",
+ "@radix-ui/react-separator": "^1.1.0",
+ "@radix-ui/react-slot": "^1.1.0",
+ "@replit/codemirror-lang-csharp": "^6.2.0",
+ "@replit/codemirror-vim": "^6.2.1",
+ "@tanstack/react-query": "^5.53.3",
+ "@tanstack/react-table": "^8.20.5",
+ "@uiw/react-codemirror": "^4.23.0",
+ "class-variance-authority": "^0.7.0",
+ "client-only": "^0.0.1",
+ "clsx": "^2.1.1",
+ "embla-carousel-auto-scroll": "^8.3.0",
+ "embla-carousel-react": "^8.3.0",
+ "escape-string-regexp": "^5.0.0",
+ "http-status-codes": "^2.3.0",
+ "lucide-react": "^0.435.0",
+ "next": "14.2.10",
+ "next-themes": "^0.3.0",
+ "posthog-js": "^1.161.5",
+ "pretty-bytes": "^6.1.1",
+ "react": "^18",
+ "react-dom": "^18",
+ "react-hook-form": "^7.53.0",
+ "react-hotkeys-hook": "^4.5.1",
+ "react-resizable-panels": "^2.1.1",
+ "server-only": "^0.0.1",
+ "sharp": "^0.33.5",
+ "tailwind-merge": "^2.5.2",
+ "tailwindcss-animate": "^1.0.7",
+ "usehooks-ts": "^3.1.0",
+ "zod": "^3.23.8"
+ },
+ "devDependencies": {
+ "@types/node": "^20",
+ "@types/react": "^18",
+ "@types/react-dom": "^18",
+ "@typescript-eslint/eslint-plugin": "^8.3.0",
+ "@typescript-eslint/parser": "^8.3.0",
+ "eslint": "^8",
+ "eslint-config-next": "14.2.6",
+ "eslint-plugin-react": "^7.35.0",
+ "eslint-plugin-react-hooks": "^4.6.2",
+ "npm-run-all": "^4.1.5",
+ "postcss": "^8",
+ "tailwindcss": "^3.4.1",
+ "typescript": "^5"
+ }
+}
diff --git a/postcss.config.mjs b/packages/web/postcss.config.mjs
similarity index 100%
rename from postcss.config.mjs
rename to packages/web/postcss.config.mjs
diff --git a/public/github.svg b/packages/web/public/github.svg
similarity index 100%
rename from public/github.svg
rename to packages/web/public/github.svg
diff --git a/public/gitlab.svg b/packages/web/public/gitlab.svg
similarity index 100%
rename from public/gitlab.svg
rename to packages/web/public/gitlab.svg
diff --git a/public/sb_logo_dark.png b/packages/web/public/sb_logo_dark.png
similarity index 100%
rename from public/sb_logo_dark.png
rename to packages/web/public/sb_logo_dark.png
diff --git a/public/sb_logo_dark_large.png b/packages/web/public/sb_logo_dark_large.png
similarity index 100%
rename from public/sb_logo_dark_large.png
rename to packages/web/public/sb_logo_dark_large.png
diff --git a/public/sb_logo_dark_small.png b/packages/web/public/sb_logo_dark_small.png
similarity index 100%
rename from public/sb_logo_dark_small.png
rename to packages/web/public/sb_logo_dark_small.png
diff --git a/public/sb_logo_light.png b/packages/web/public/sb_logo_light.png
similarity index 100%
rename from public/sb_logo_light.png
rename to packages/web/public/sb_logo_light.png
diff --git a/public/sb_logo_light_large.png b/packages/web/public/sb_logo_light_large.png
similarity index 100%
rename from public/sb_logo_light_large.png
rename to packages/web/public/sb_logo_light_large.png
diff --git a/public/sb_logo_light_small.png b/packages/web/public/sb_logo_light_small.png
similarity index 100%
rename from public/sb_logo_light_small.png
rename to packages/web/public/sb_logo_light_small.png
diff --git a/src/app/api/(client)/client.ts b/packages/web/src/app/api/(client)/client.ts
similarity index 100%
rename from src/app/api/(client)/client.ts
rename to packages/web/src/app/api/(client)/client.ts
diff --git a/src/app/api/(server)/repos/route.ts b/packages/web/src/app/api/(server)/repos/route.ts
similarity index 100%
rename from src/app/api/(server)/repos/route.ts
rename to packages/web/src/app/api/(server)/repos/route.ts
diff --git a/src/app/api/(server)/search/route.ts b/packages/web/src/app/api/(server)/search/route.ts
similarity index 100%
rename from src/app/api/(server)/search/route.ts
rename to packages/web/src/app/api/(server)/search/route.ts
diff --git a/src/app/api/(server)/source/route.ts b/packages/web/src/app/api/(server)/source/route.ts
similarity index 100%
rename from src/app/api/(server)/source/route.ts
rename to packages/web/src/app/api/(server)/source/route.ts
diff --git a/src/app/favicon.ico b/packages/web/src/app/favicon.ico
similarity index 100%
rename from src/app/favicon.ico
rename to packages/web/src/app/favicon.ico
diff --git a/src/app/globals.css b/packages/web/src/app/globals.css
similarity index 100%
rename from src/app/globals.css
rename to packages/web/src/app/globals.css
diff --git a/src/app/layout.tsx b/packages/web/src/app/layout.tsx
similarity index 100%
rename from src/app/layout.tsx
rename to packages/web/src/app/layout.tsx
diff --git a/src/app/navigationMenu.tsx b/packages/web/src/app/navigationMenu.tsx
similarity index 100%
rename from src/app/navigationMenu.tsx
rename to packages/web/src/app/navigationMenu.tsx
diff --git a/src/app/page.tsx b/packages/web/src/app/page.tsx
similarity index 100%
rename from src/app/page.tsx
rename to packages/web/src/app/page.tsx
diff --git a/src/app/posthogProvider.tsx b/packages/web/src/app/posthogProvider.tsx
similarity index 100%
rename from src/app/posthogProvider.tsx
rename to packages/web/src/app/posthogProvider.tsx
diff --git a/src/app/queryClientProvider.tsx b/packages/web/src/app/queryClientProvider.tsx
similarity index 100%
rename from src/app/queryClientProvider.tsx
rename to packages/web/src/app/queryClientProvider.tsx
diff --git a/src/app/repos/columns.tsx b/packages/web/src/app/repos/columns.tsx
similarity index 100%
rename from src/app/repos/columns.tsx
rename to packages/web/src/app/repos/columns.tsx
diff --git a/src/app/repos/page.tsx b/packages/web/src/app/repos/page.tsx
similarity index 100%
rename from src/app/repos/page.tsx
rename to packages/web/src/app/repos/page.tsx
diff --git a/src/app/repos/repositoryTable.tsx b/packages/web/src/app/repos/repositoryTable.tsx
similarity index 100%
rename from src/app/repos/repositoryTable.tsx
rename to packages/web/src/app/repos/repositoryTable.tsx
diff --git a/src/app/repositoryCarousel.tsx b/packages/web/src/app/repositoryCarousel.tsx
similarity index 100%
rename from src/app/repositoryCarousel.tsx
rename to packages/web/src/app/repositoryCarousel.tsx
diff --git a/src/app/search/components/codePreviewPanel/codePreview.tsx b/packages/web/src/app/search/components/codePreviewPanel/codePreview.tsx
similarity index 100%
rename from src/app/search/components/codePreviewPanel/codePreview.tsx
rename to packages/web/src/app/search/components/codePreviewPanel/codePreview.tsx
diff --git a/src/app/search/components/codePreviewPanel/index.tsx b/packages/web/src/app/search/components/codePreviewPanel/index.tsx
similarity index 100%
rename from src/app/search/components/codePreviewPanel/index.tsx
rename to packages/web/src/app/search/components/codePreviewPanel/index.tsx
diff --git a/src/app/search/components/searchResultsPanel/codePreview.tsx b/packages/web/src/app/search/components/searchResultsPanel/codePreview.tsx
similarity index 100%
rename from src/app/search/components/searchResultsPanel/codePreview.tsx
rename to packages/web/src/app/search/components/searchResultsPanel/codePreview.tsx
diff --git a/src/app/search/components/searchResultsPanel/fileMatch.tsx b/packages/web/src/app/search/components/searchResultsPanel/fileMatch.tsx
similarity index 100%
rename from src/app/search/components/searchResultsPanel/fileMatch.tsx
rename to packages/web/src/app/search/components/searchResultsPanel/fileMatch.tsx
diff --git a/src/app/search/components/searchResultsPanel/fileMatchContainer.tsx b/packages/web/src/app/search/components/searchResultsPanel/fileMatchContainer.tsx
similarity index 100%
rename from src/app/search/components/searchResultsPanel/fileMatchContainer.tsx
rename to packages/web/src/app/search/components/searchResultsPanel/fileMatchContainer.tsx
diff --git a/src/app/search/components/searchResultsPanel/index.tsx b/packages/web/src/app/search/components/searchResultsPanel/index.tsx
similarity index 100%
rename from src/app/search/components/searchResultsPanel/index.tsx
rename to packages/web/src/app/search/components/searchResultsPanel/index.tsx
diff --git a/src/app/search/page.tsx b/packages/web/src/app/search/page.tsx
similarity index 100%
rename from src/app/search/page.tsx
rename to packages/web/src/app/search/page.tsx
diff --git a/src/app/searchBar.tsx b/packages/web/src/app/searchBar.tsx
similarity index 100%
rename from src/app/searchBar.tsx
rename to packages/web/src/app/searchBar.tsx
diff --git a/src/app/settingsDropdown.tsx b/packages/web/src/app/settingsDropdown.tsx
similarity index 100%
rename from src/app/settingsDropdown.tsx
rename to packages/web/src/app/settingsDropdown.tsx
diff --git a/src/app/themeProvider.tsx b/packages/web/src/app/themeProvider.tsx
similarity index 100%
rename from src/app/themeProvider.tsx
rename to packages/web/src/app/themeProvider.tsx
diff --git a/src/components/README.md b/packages/web/src/components/README.md
similarity index 100%
rename from src/components/README.md
rename to packages/web/src/components/README.md
diff --git a/src/components/ui/button.tsx b/packages/web/src/components/ui/button.tsx
similarity index 100%
rename from src/components/ui/button.tsx
rename to packages/web/src/components/ui/button.tsx
diff --git a/src/components/ui/carousel.tsx b/packages/web/src/components/ui/carousel.tsx
similarity index 100%
rename from src/components/ui/carousel.tsx
rename to packages/web/src/components/ui/carousel.tsx
diff --git a/src/components/ui/data-table.tsx b/packages/web/src/components/ui/data-table.tsx
similarity index 100%
rename from src/components/ui/data-table.tsx
rename to packages/web/src/components/ui/data-table.tsx
diff --git a/src/components/ui/dropdown-menu.tsx b/packages/web/src/components/ui/dropdown-menu.tsx
similarity index 100%
rename from src/components/ui/dropdown-menu.tsx
rename to packages/web/src/components/ui/dropdown-menu.tsx
diff --git a/src/components/ui/form.tsx b/packages/web/src/components/ui/form.tsx
similarity index 100%
rename from src/components/ui/form.tsx
rename to packages/web/src/components/ui/form.tsx
diff --git a/src/components/ui/input.tsx b/packages/web/src/components/ui/input.tsx
similarity index 100%
rename from src/components/ui/input.tsx
rename to packages/web/src/components/ui/input.tsx
diff --git a/src/components/ui/label.tsx b/packages/web/src/components/ui/label.tsx
similarity index 100%
rename from src/components/ui/label.tsx
rename to packages/web/src/components/ui/label.tsx
diff --git a/src/components/ui/navigation-menu.tsx b/packages/web/src/components/ui/navigation-menu.tsx
similarity index 100%
rename from src/components/ui/navigation-menu.tsx
rename to packages/web/src/components/ui/navigation-menu.tsx
diff --git a/src/components/ui/resizable.tsx b/packages/web/src/components/ui/resizable.tsx
similarity index 100%
rename from src/components/ui/resizable.tsx
rename to packages/web/src/components/ui/resizable.tsx
diff --git a/src/components/ui/scroll-area.tsx b/packages/web/src/components/ui/scroll-area.tsx
similarity index 100%
rename from src/components/ui/scroll-area.tsx
rename to packages/web/src/components/ui/scroll-area.tsx
diff --git a/src/components/ui/separator.tsx b/packages/web/src/components/ui/separator.tsx
similarity index 100%
rename from src/components/ui/separator.tsx
rename to packages/web/src/components/ui/separator.tsx
diff --git a/src/components/ui/table.tsx b/packages/web/src/components/ui/table.tsx
similarity index 100%
rename from src/components/ui/table.tsx
rename to packages/web/src/components/ui/table.tsx
diff --git a/src/hooks/useCaptureEvent.ts b/packages/web/src/hooks/useCaptureEvent.ts
similarity index 100%
rename from src/hooks/useCaptureEvent.ts
rename to packages/web/src/hooks/useCaptureEvent.ts
diff --git a/src/hooks/useExtensionWithDependency.ts b/packages/web/src/hooks/useExtensionWithDependency.ts
similarity index 100%
rename from src/hooks/useExtensionWithDependency.ts
rename to packages/web/src/hooks/useExtensionWithDependency.ts
diff --git a/src/hooks/useKeymapType.ts b/packages/web/src/hooks/useKeymapType.ts
similarity index 100%
rename from src/hooks/useKeymapType.ts
rename to packages/web/src/hooks/useKeymapType.ts
diff --git a/src/hooks/useNonEmptyQueryParam.ts b/packages/web/src/hooks/useNonEmptyQueryParam.ts
similarity index 100%
rename from src/hooks/useNonEmptyQueryParam.ts
rename to packages/web/src/hooks/useNonEmptyQueryParam.ts
diff --git a/src/hooks/useSyntaxHighlightingExtension.ts b/packages/web/src/hooks/useSyntaxHighlightingExtension.ts
similarity index 100%
rename from src/hooks/useSyntaxHighlightingExtension.ts
rename to packages/web/src/hooks/useSyntaxHighlightingExtension.ts
diff --git a/src/hooks/useThemeNormalized.ts b/packages/web/src/hooks/useThemeNormalized.ts
similarity index 100%
rename from src/hooks/useThemeNormalized.ts
rename to packages/web/src/hooks/useThemeNormalized.ts
diff --git a/src/lib/environment.client.ts b/packages/web/src/lib/environment.client.ts
similarity index 100%
rename from src/lib/environment.client.ts
rename to packages/web/src/lib/environment.client.ts
diff --git a/src/lib/environment.ts b/packages/web/src/lib/environment.ts
similarity index 100%
rename from src/lib/environment.ts
rename to packages/web/src/lib/environment.ts
diff --git a/src/lib/errorCodes.ts b/packages/web/src/lib/errorCodes.ts
similarity index 100%
rename from src/lib/errorCodes.ts
rename to packages/web/src/lib/errorCodes.ts
diff --git a/src/lib/extensions/gutterWidthExtension.ts b/packages/web/src/lib/extensions/gutterWidthExtension.ts
similarity index 100%
rename from src/lib/extensions/gutterWidthExtension.ts
rename to packages/web/src/lib/extensions/gutterWidthExtension.ts
diff --git a/src/lib/extensions/lineOffsetExtension.ts b/packages/web/src/lib/extensions/lineOffsetExtension.ts
similarity index 100%
rename from src/lib/extensions/lineOffsetExtension.ts
rename to packages/web/src/lib/extensions/lineOffsetExtension.ts
diff --git a/src/lib/extensions/searchResultHighlightExtension.ts b/packages/web/src/lib/extensions/searchResultHighlightExtension.ts
similarity index 100%
rename from src/lib/extensions/searchResultHighlightExtension.ts
rename to packages/web/src/lib/extensions/searchResultHighlightExtension.ts
diff --git a/src/lib/posthogEvents.ts b/packages/web/src/lib/posthogEvents.ts
similarity index 100%
rename from src/lib/posthogEvents.ts
rename to packages/web/src/lib/posthogEvents.ts
diff --git a/src/lib/schemas.ts b/packages/web/src/lib/schemas.ts
similarity index 100%
rename from src/lib/schemas.ts
rename to packages/web/src/lib/schemas.ts
diff --git a/src/lib/server/searchService.ts b/packages/web/src/lib/server/searchService.ts
similarity index 100%
rename from src/lib/server/searchService.ts
rename to packages/web/src/lib/server/searchService.ts
diff --git a/src/lib/server/zoektClient.ts b/packages/web/src/lib/server/zoektClient.ts
similarity index 78%
rename from src/lib/server/zoektClient.ts
rename to packages/web/src/lib/server/zoektClient.ts
index 1b9a80ce..7f3979c3 100644
--- a/src/lib/server/zoektClient.ts
+++ b/packages/web/src/lib/server/zoektClient.ts
@@ -14,8 +14,6 @@ export const zoektFetch = async ({
method,
cache,
}: ZoektRequest) => {
- const start = Date.now();
-
const response = await fetch(
new URL(path, ZOEKT_WEBSERVER_URL),
{
@@ -28,8 +26,6 @@ export const zoektFetch = async ({
}
);
- const duration = Date.now() - start;
- console.log(`[zoektClient] ${method} ${path} ${response.status} ${duration}ms`);
// @todo : add metrics
return response;
diff --git a/src/lib/serviceError.ts b/packages/web/src/lib/serviceError.ts
similarity index 100%
rename from src/lib/serviceError.ts
rename to packages/web/src/lib/serviceError.ts
diff --git a/src/lib/types.ts b/packages/web/src/lib/types.ts
similarity index 100%
rename from src/lib/types.ts
rename to packages/web/src/lib/types.ts
diff --git a/src/lib/utils.ts b/packages/web/src/lib/utils.ts
similarity index 100%
rename from src/lib/utils.ts
rename to packages/web/src/lib/utils.ts
diff --git a/tailwind.config.ts b/packages/web/tailwind.config.ts
similarity index 100%
rename from tailwind.config.ts
rename to packages/web/tailwind.config.ts
diff --git a/tsconfig.json b/packages/web/tsconfig.json
similarity index 100%
rename from tsconfig.json
rename to packages/web/tsconfig.json
diff --git a/prefix-output.sh b/prefix-output.sh
new file mode 100644
index 00000000..0364bfd7
--- /dev/null
+++ b/prefix-output.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# @see : https://github.com/Supervisor/supervisor/issues/553#issuecomment-1353523182
+exec 1> >( perl -ne '$| = 1; print "['"${SUPERVISOR_PROCESS_NAME}"'] | $_"' >&1)
+exec 2> >( perl -ne '$| = 1; print "['"${SUPERVISOR_PROCESS_NAME}"'] | $_"' >&2)
+
+exec "$@"
\ No newline at end of file
diff --git a/schemas/v1/index.json b/schemas/v1/index.json
new file mode 100644
index 00000000..2fe2195a
--- /dev/null
+++ b/schemas/v1/index.json
@@ -0,0 +1,135 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "object",
+ "definitions": {
+ "RepoNameRegexIncludeFilter": {
+ "type": "string",
+ "description": "Only clone repos whose name matches the given regexp.",
+ "format": "regexp",
+ "default": "^(foo|bar)$"
+ },
+ "RepoNameRegexExcludeFilter": {
+ "type": "string",
+ "description": "Don't mirror repos whose names match this regexp.",
+ "format": "regexp",
+ "default": "^(fizz|buzz)$"
+ },
+ "ZoektConfig": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/GitHubConfig"
+ },
+ {
+ "$ref": "#/definitions/GitLabConfig"
+ }
+ ]
+ },
+ "GitHubConfig": {
+ "type": "object",
+ "properties": {
+ "Type": {
+ "const": "github"
+ },
+ "GitHubUrl": {
+ "type": "string",
+ "description": "GitHub Enterprise url. If not set github.com will be used as the host."
+ },
+ "GitHubUser": {
+ "type": "string",
+ "description": "The GitHub user to mirror"
+ },
+ "GitHubOrg": {
+ "type": "string",
+ "description": "The GitHub organization to mirror"
+ },
+ "Name": {
+ "$ref": "#/definitions/RepoNameRegexIncludeFilter"
+ },
+ "Exclude": {
+ "$ref": "#/definitions/RepoNameRegexExcludeFilter"
+ },
+ "CredentialPath": {
+ "type": "string",
+ "description": "Path to a file containing a GitHub access token.",
+ "default": "~/.github-token"
+ },
+ "Topics": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Only mirror repos that have one of the given topics"
+ },
+ "ExcludeTopics": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Don't mirror repos that have one of the given topics"
+ },
+ "NoArchived": {
+ "type": "boolean",
+ "description": "Mirror repos that are _not_ archived",
+ "default": false
+ },
+ "IncludeForks": {
+ "type": "boolean",
+ "description": "Also mirror forks",
+ "default": false
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "additionalProperties": false
+ },
+ "GitLabConfig": {
+ "type": "object",
+ "properties": {
+ "Type": {
+ "const": "gitlab"
+ },
+ "GitLabURL": {
+ "type": "string",
+ "description": "The GitLab API url.",
+ "default": "https://gitlab.com/api/v4/"
+ },
+ "Name": {
+ "$ref": "#/definitions/RepoNameRegexIncludeFilter"
+ },
+ "Exclude": {
+ "$ref": "#/definitions/RepoNameRegexExcludeFilter"
+ },
+ "OnlyPublic": {
+ "type": "boolean",
+ "description": "Only mirror public repos",
+ "default": false
+ },
+ "CredentialPath": {
+ "type": "string",
+ "description": "Path to a file containing a GitLab access token.",
+ "default": "~/.gitlab-token"
+ }
+ },
+ "required": [
+ "Type"
+ ],
+ "additionalProperties": false
+ }
+ },
+ "properties": {
+ "$schema": {
+ "type": "string"
+ },
+ "Configs": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ZoektConfig"
+ }
+ }
+ },
+ "required": [
+ "Configs"
+ ],
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/schemas/v2/index.json b/schemas/v2/index.json
new file mode 100644
index 00000000..292fd0fd
--- /dev/null
+++ b/schemas/v2/index.json
@@ -0,0 +1,241 @@
+{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "type": "object",
+ "title": "Sourcebot configuration schema",
+ "description": "A Sourcebot configuration file outlines which repositories Sourcebot should sync and index.",
+ "definitions": {
+ "Token": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "object",
+ "properties": {
+ "env": {
+ "type": "string",
+ "description": "The name of the environment variable that contains the token."
+ }
+ },
+ "required": [
+ "env"
+ ],
+ "additionalProperties": false
+ }
+ ]
+ },
+ "GitHubConfig": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "const": "github",
+ "description": "GitHub Configuration"
+ },
+ "token": {
+ "$ref": "#/definitions/Token",
+ "description": "A Personal Access Token (PAT).",
+ "examples": [
+ "secret-token",
+ { "env": "ENV_VAR_CONTAINING_TOKEN" }
+ ]
+ },
+ "url": {
+ "type": "string",
+ "format": "url",
+ "default": "https://github.com",
+ "description": "The URL of the GitHub host. Defaults to https://github.com",
+ "examples": [
+ "https://github.com",
+ "https://github.example.com"
+ ],
+ "pattern": "^https?:\\/\\/[^\\s/$.?#].[^\\s]*$"
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "pattern": "^[\\w.-]+$"
+ },
+ "examples": [
+ [
+ "torvalds",
+ "DHH"
+ ]
+ ],
+ "description": "List of users to sync with. All repositories that the user owns will be synced, unless explicitly defined in the `exclude` property."
+ },
+ "orgs": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "pattern": "^[\\w.-]+$"
+ },
+ "examples": [
+ [
+ "my-org-name"
+ ],
+ [
+ "sourcebot-dev",
+ "commaai"
+ ]
+ ],
+ "description": "List of organizations to sync with. All repositories in the organization visible to the provided `token` (if any) will be synced, unless explicitly defined in the `exclude` property."
+ },
+ "repos": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "pattern": "^[\\w.-]+\\/[\\w.-]+$"
+ },
+ "description": "List of individual repositories to sync with. Expected to be formatted as '{orgName}/{repoName}' or '{userName}/{repoName}'."
+ },
+ "exclude": {
+ "type": "object",
+ "properties": {
+ "forks": {
+ "type": "boolean",
+ "default": false,
+ "description": "Exlcude forked repositories from syncing."
+ },
+ "archived": {
+ "type": "boolean",
+ "default": false,
+ "description": "Exlcude archived repositories from syncing."
+ },
+ "repos": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "pattern": "^[\\w.-]+\\/[\\w.-]+$"
+ },
+ "default": [],
+ "description": "List of individual repositories to exclude from syncing. Expected to be formatted as '{orgName}/{repoName}' or '{userName}/{repoName}'."
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "type"
+ ],
+ "additionalProperties": false
+ },
+ "GitLabConfig": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "const": "gitlab",
+ "description": "GitLab Configuration"
+ },
+ "token": {
+ "$ref": "#/definitions/Token",
+ "description": "An authentication token.",
+ "examples": [
+ "secret-token",
+ { "env": "ENV_VAR_CONTAINING_TOKEN" }
+ ]
+ },
+ "url": {
+ "type": "string",
+ "format": "url",
+ "default": "https://gitlab.com",
+ "description": "The URL of the GitLab host. Defaults to https://gitlab.com",
+ "examples": [
+ "https://gitlab.com",
+ "https://gitlab.example.com"
+ ],
+ "pattern": "^https?:\\/\\/[^\\s/$.?#].[^\\s]*$"
+ },
+ "users": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of users to sync with. All personal projects that the user owns will be synced, unless explicitly defined in the `exclude` property."
+ },
+ "groups": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "examples": [
+ ["my-group"],
+ [
+ "my-group/sub-group-a",
+ "my-group/sub-group-b"
+ ]
+ ],
+ "description": "List of groups to sync with. All projects in the group visible to the provided `token` (if any) will be synced, unless explicitly defined in the `exclude` property. Subgroups can be specified by providing the path to the subgroup (e.g. `my-group/sub-group-a`)."
+ },
+ "projects": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "examples": [
+ ["my-group/my-project"],
+ ["my-group/my-sub-group/my-project"]
+ ],
+ "description": "List of individual projects to sync with. The project's namespace must be specified. See: https://docs.gitlab.com/ee/user/namespace/"
+ },
+ "exclude": {
+ "type": "object",
+ "properties": {
+ "forks": {
+ "type": "boolean",
+ "default": false,
+ "description": "Exlcude forked projects from syncing."
+ },
+ "archived": {
+ "type": "boolean",
+ "default": false,
+ "description": "Exlcude archived projects from syncing."
+ },
+ "projects": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "pattern": "^[\\w.-]+\\/[\\w.-]+$"
+ },
+ "default": [],
+ "examples": [
+ [
+ "my-group/my-project"
+ ]
+ ],
+ "description": "List of individual projects to exclude from syncing. The project's namespace must be specified. See: https://docs.gitlab.com/ee/user/namespace/"
+ }
+ },
+ "additionalProperties": false
+ }
+ },
+ "required": [
+ "type"
+ ],
+ "additionalProperties": false
+ },
+ "Repos": {
+ "anyOf": [
+ {
+ "$ref": "#/definitions/GitHubConfig"
+ },
+ {
+ "$ref": "#/definitions/GitLabConfig"
+ }
+ ]
+ }
+ },
+ "properties": {
+ "$schema": {
+ "type": "string"
+ },
+ "repos": {
+ "type": "array",
+ "description": "Defines a collection of repositories from varying code hosts that Sourcebot should sync with.",
+ "items": {
+ "$ref": "#/definitions/Repos"
+ }
+ }
+ },
+ "additionalProperties": false
+}
\ No newline at end of file
diff --git a/supervisord.conf b/supervisord.conf
index ee3b6d8c..246a618c 100644
--- a/supervisord.conf
+++ b/supervisord.conf
@@ -3,8 +3,8 @@ nodaemon=true
logfile=/dev/null
logfile_maxbytes=0
-[program:zoekt-indexserver]
-command=zoekt-indexserver -data_dir %(ENV_DATA_CACHE_DIR)s -mirror_config %(ENV_CONFIG_PATH)s
+[program:zoekt]
+command=./prefix-output.sh zoekt-webserver -index %(ENV_DATA_CACHE_DIR)s/index -rpc
autostart=true
autorestart=true
startretries=3
@@ -12,8 +12,8 @@ stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true
-[program:zoekt-webserver]
-command=zoekt-webserver -index %(ENV_DATA_CACHE_DIR)s/index -rpc
+[program:web]
+command=./prefix-output.sh node packages/web/server.js
autostart=true
autorestart=true
startretries=3
@@ -21,8 +21,9 @@ stdout_logfile=/dev/fd/1
stdout_logfile_maxbytes=0
redirect_stderr=true
-[program:node-server]
-command=node server.js
+
+[program:backend]
+command=./prefix-output.sh node packages/backend/dist/index.js --configPath %(ENV_CONFIG_PATH)s --cacheDir %(ENV_DATA_CACHE_DIR)s
autostart=true
autorestart=true
startretries=3
diff --git a/yarn.lock b/yarn.lock
index 583b40da..1bb06ae1 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -7,24 +7,23 @@
resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30"
integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
+"@apidevtools/json-schema-ref-parser@^11.5.5":
+ version "11.7.0"
+ resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.0.tgz#228d72018a0e7cbee744b677eaa01a8968f302d9"
+ integrity sha512-pRrmXMCwnmrkS3MLgAIW5dXRzeTv6GLjkjb4HmxNnvAKXN1Nfzp4KmGADBQvlVUcqi+a5D+hfGDLLnd5NnYxog==
+ dependencies:
+ "@jsdevtools/ono" "^7.1.3"
+ "@types/json-schema" "^7.0.15"
+ js-yaml "^4.1.0"
+
"@babel/runtime@^7.18.6":
- version "7.25.4"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.4.tgz#6ef37d678428306e7d75f054d5b1bdb8cf8aa8ee"
- integrity sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==
+ version "7.25.7"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6"
+ integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==
dependencies:
regenerator-runtime "^0.14.0"
-"@codemirror/autocomplete@^6.0.0":
- version "6.18.0"
- resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.18.0.tgz#5f39b05daca04c95e990b70024144df47b2aa635"
- integrity sha512-5DbOvBbY4qW5l57cjDsmmpDh3/TeK1vXfTHa+BUMrRzdWdcxKZ4U4V7vQaTtOpApNU4kLS4FQ6cINtLg245LXA==
- dependencies:
- "@codemirror/language" "^6.0.0"
- "@codemirror/state" "^6.0.0"
- "@codemirror/view" "^6.17.0"
- "@lezer/common" "^1.0.0"
-
-"@codemirror/autocomplete@^6.3.2", "@codemirror/autocomplete@^6.7.1":
+"@codemirror/autocomplete@^6.0.0", "@codemirror/autocomplete@^6.3.2", "@codemirror/autocomplete@^6.7.1":
version "6.18.1"
resolved "https://registry.yarnpkg.com/@codemirror/autocomplete/-/autocomplete-6.18.1.tgz#3bd8d62c9c9a14d0706ab0a8adac139eaf1a41f1"
integrity sha512-iWHdj/B1ethnHRTwZj+C1obmmuCzquH29EbcKr0qIjA9NfDeBDJ7vs+WOHsFeLeflE4o+dHfYndJloMKHUkWUA==
@@ -35,9 +34,9 @@
"@lezer/common" "^1.0.0"
"@codemirror/commands@^6.0.0", "@codemirror/commands@^6.1.0", "@codemirror/commands@^6.6.0":
- version "6.6.0"
- resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.6.0.tgz#d308f143fe1b8896ca25fdb855f66acdaf019dd4"
- integrity sha512-qnY+b7j1UNcTS31Eenuc/5YJB6gQOzkUoNmJQc0rznwqSRpeaWWpjkWy2C/MPTcePpsKJEM26hXrOXl1+nceXg==
+ version "6.6.2"
+ resolved "https://registry.yarnpkg.com/@codemirror/commands/-/commands-6.6.2.tgz#a8ddb191e00dcc0efa03ea1ff8dc486f902dab91"
+ integrity sha512-Fq7eWOl1Rcbrfn6jD8FPCj9Auaxdm5nIK5RYOeW7ughnd/rY5AmPg6b+CfsG39ZHdwiwe8lde3q8uR7CF5S0yQ==
dependencies:
"@codemirror/language" "^6.0.0"
"@codemirror/state" "^6.4.0"
@@ -119,9 +118,9 @@
"@lezer/json" "^1.0.0"
"@codemirror/lang-markdown@^6.2.5":
- version "6.2.5"
- resolved "https://registry.yarnpkg.com/@codemirror/lang-markdown/-/lang-markdown-6.2.5.tgz#451941bf743d3788e73598f1aedb71cbeb6f71ba"
- integrity sha512-Hgke565YcO4fd9pe2uLYxnMufHO5rQwRr+AAhFq8ABuhkrjyX8R5p5s+hZUTdV60O0dMRjxKhBLxz8pu/MkUVA==
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/@codemirror/lang-markdown/-/lang-markdown-6.3.0.tgz#949f8803332441705ed6def34c565f2166479538"
+ integrity sha512-lYrI8SdL/vhd0w0aHIEvIRLRecLF7MiiRfzXFZY94dFwHqC9HtgxgagJ8fyYNBldijGatf9wkms60d8SrAj6Nw==
dependencies:
"@codemirror/autocomplete" "^6.7.1"
"@codemirror/lang-html" "^6.0.0"
@@ -162,9 +161,9 @@
"@lezer/rust" "^1.0.0"
"@codemirror/lang-sql@^6.7.1":
- version "6.7.1"
- resolved "https://registry.yarnpkg.com/@codemirror/lang-sql/-/lang-sql-6.7.1.tgz#314211eb79fbba96b4dd0d24fa954be9803368ab"
- integrity sha512-flQa7zemrLKk0TIrOJnpeyH/b29BcVybtsTeZMgAo40O6kGbrnUSCgwI3TF5iJY3O9VXJKKCA+i0CBVvDfr88w==
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/@codemirror/lang-sql/-/lang-sql-6.8.0.tgz#1ae68ad49f378605ff88a4cc428ba667ce056068"
+ integrity sha512-aGLmY4OwGqN3TdSx3h6QeA1NrvaYtF7kkoWR/+W7/JzB0gQtJ+VJxewlnE3+VImhA4WVlhmkJr109PefOOhjLg==
dependencies:
"@codemirror/autocomplete" "^6.0.0"
"@codemirror/language" "^6.0.0"
@@ -174,9 +173,9 @@
"@lezer/lr" "^1.0.0"
"@codemirror/language@^6.0.0", "@codemirror/language@^6.3.0", "@codemirror/language@^6.4.0", "@codemirror/language@^6.6.0", "@codemirror/language@^6.8.0":
- version "6.10.2"
- resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.10.2.tgz#4056dc219619627ffe995832eeb09cea6060be61"
- integrity sha512-kgbTYTo0Au6dCSc/TFy7fK3fpJmgHDv1sG1KNQKJXVi+xBTEeBPY/M30YXiU6mMXeH+YIDLsbrT4ZwNRdtF+SA==
+ version "6.10.3"
+ resolved "https://registry.yarnpkg.com/@codemirror/language/-/language-6.10.3.tgz#eb25fc5ade19032e7bf1dcaa957804e5f1660585"
+ integrity sha512-kDqEU5sCP55Oabl6E7m5N+vZRoc0iWqgDVhEKifcHzPzjqCegcO4amfrYVL9PmPZpl4G0yjkpTpUO/Ui8CzO8A==
dependencies:
"@codemirror/state" "^6.0.0"
"@codemirror/view" "^6.23.0"
@@ -186,9 +185,9 @@
style-mod "^4.0.0"
"@codemirror/lint@^6.0.0":
- version "6.8.1"
- resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.8.1.tgz#6427848815baaf68c08e98c7673b804d3d8c0e7f"
- integrity sha512-IZ0Y7S4/bpaunwggW2jYqwLuHj0QtESf5xcROewY6+lDNwZ/NzvR4t+vpYgg9m7V8UXLPYqG+lu3DF470E5Oxg==
+ version "6.8.2"
+ resolved "https://registry.yarnpkg.com/@codemirror/lint/-/lint-6.8.2.tgz#7864b03583e9efd18554cff1dd4504da10338ab1"
+ integrity sha512-PDFG5DjHxSEjOXk9TQYYVjZDqlZTFaDBfhQixHnQOEVDDNHUbEh/hstAjcQJaA6FQdZTD1hquXTK0rVBLADR1g==
dependencies:
"@codemirror/state" "^6.0.0"
"@codemirror/view" "^6.0.0"
@@ -219,21 +218,155 @@
"@lezer/highlight" "^1.0.0"
"@codemirror/view@^6.0.0", "@codemirror/view@^6.17.0", "@codemirror/view@^6.23.0", "@codemirror/view@^6.27.0", "@codemirror/view@^6.33.0":
- version "6.33.0"
- resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.33.0.tgz#51e270410fc3af92a6e38798e80ebf8add7dc3ec"
- integrity sha512-AroaR3BvnjRW8fiZBalAaK+ZzB5usGgI014YKElYZvQdNH5ZIidHlO+cyf/2rWzyBFRkvG6VhiXeAEbC53P2YQ==
+ version "6.34.1"
+ resolved "https://registry.yarnpkg.com/@codemirror/view/-/view-6.34.1.tgz#b17ed29c563e4adc60086233f2d3e7197e2dc33e"
+ integrity sha512-t1zK/l9UiRqwUNPm+pdIT0qzJlzuVckbTEMVNFhfWkGiBQClstzg+78vedCvLSX0xJEZ6lwZbPpnljL7L6iwMQ==
dependencies:
"@codemirror/state" "^6.4.0"
style-mod "^4.1.0"
w3c-keyname "^2.2.4"
+"@colors/colors@1.6.0", "@colors/colors@^1.6.0":
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.6.0.tgz#ec6cd237440700bc23ca23087f513c75508958b0"
+ integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==
+
+"@dabh/diagnostics@^2.0.2":
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a"
+ integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==
+ dependencies:
+ colorspace "1.1.x"
+ enabled "2.0.x"
+ kuler "^2.0.0"
+
"@emnapi/runtime@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.2.0.tgz#71d018546c3a91f3b51106530edbc056b9f2f2e3"
- integrity sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.0.tgz#63ebb77b9212ef7334f19ab8842ff76039c4f953"
+ integrity sha512-XMBySMuNZs3DM96xcJmLW4EfGnf+uGmFNjzpehMjuX5PLB5j87ar2Zc4e3PVeZ3I5g3tYtAqskB28manlF69Zw==
dependencies:
tslib "^2.4.0"
+"@esbuild/aix-ppc64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz#51299374de171dbd80bb7d838e1cfce9af36f353"
+ integrity sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==
+
+"@esbuild/android-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz#58565291a1fe548638adb9c584237449e5e14018"
+ integrity sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==
+
+"@esbuild/android-arm@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.23.1.tgz#5eb8c652d4c82a2421e3395b808e6d9c42c862ee"
+ integrity sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==
+
+"@esbuild/android-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.23.1.tgz#ae19d665d2f06f0f48a6ac9a224b3f672e65d517"
+ integrity sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==
+
+"@esbuild/darwin-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz#05b17f91a87e557b468a9c75e9d85ab10c121b16"
+ integrity sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==
+
+"@esbuild/darwin-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz#c58353b982f4e04f0d022284b8ba2733f5ff0931"
+ integrity sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==
+
+"@esbuild/freebsd-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz#f9220dc65f80f03635e1ef96cfad5da1f446f3bc"
+ integrity sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==
+
+"@esbuild/freebsd-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz#69bd8511fa013b59f0226d1609ac43f7ce489730"
+ integrity sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==
+
+"@esbuild/linux-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz#8050af6d51ddb388c75653ef9871f5ccd8f12383"
+ integrity sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==
+
+"@esbuild/linux-arm@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz#ecaabd1c23b701070484990db9a82f382f99e771"
+ integrity sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==
+
+"@esbuild/linux-ia32@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz#3ed2273214178109741c09bd0687098a0243b333"
+ integrity sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==
+
+"@esbuild/linux-loong64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz#a0fdf440b5485c81b0fbb316b08933d217f5d3ac"
+ integrity sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==
+
+"@esbuild/linux-mips64el@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz#e11a2806346db8375b18f5e104c5a9d4e81807f6"
+ integrity sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==
+
+"@esbuild/linux-ppc64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz#06a2744c5eaf562b1a90937855b4d6cf7c75ec96"
+ integrity sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==
+
+"@esbuild/linux-riscv64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz#65b46a2892fc0d1af4ba342af3fe0fa4a8fe08e7"
+ integrity sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==
+
+"@esbuild/linux-s390x@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz#e71ea18c70c3f604e241d16e4e5ab193a9785d6f"
+ integrity sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==
+
+"@esbuild/linux-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz#d47f97391e80690d4dfe811a2e7d6927ad9eed24"
+ integrity sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==
+
+"@esbuild/netbsd-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz#44e743c9778d57a8ace4b72f3c6b839a3b74a653"
+ integrity sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==
+
+"@esbuild/openbsd-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz#05c5a1faf67b9881834758c69f3e51b7dee015d7"
+ integrity sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==
+
+"@esbuild/openbsd-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz#2e58ae511bacf67d19f9f2dcd9e8c5a93f00c273"
+ integrity sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==
+
+"@esbuild/sunos-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz#adb022b959d18d3389ac70769cef5a03d3abd403"
+ integrity sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==
+
+"@esbuild/win32-arm64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz#84906f50c212b72ec360f48461d43202f4c8b9a2"
+ integrity sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==
+
+"@esbuild/win32-ia32@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz#5e3eacc515820ff729e90d0cb463183128e82fac"
+ integrity sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==
+
+"@esbuild/win32-x64@0.23.1":
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz#81fd50d11e2c32b2d6241470e3185b70c7b30699"
+ integrity sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==
+
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
@@ -242,9 +375,9 @@
eslint-visitor-keys "^3.3.0"
"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1":
- version "4.11.0"
- resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae"
- integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==
+ version "4.11.1"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f"
+ integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==
"@eslint/eslintrc@^2.1.4":
version "2.1.4"
@@ -261,49 +394,76 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
-"@eslint/js@8.57.0":
- version "8.57.0"
- resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
- integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
+"@eslint/js@8.57.1":
+ version "8.57.1"
+ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2"
+ integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
"@floating-ui/core@^1.6.0":
- version "1.6.7"
- resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.7.tgz#7602367795a390ff0662efd1c7ae8ca74e75fb12"
- integrity sha512-yDzVT/Lm101nQ5TCVeK65LtdN7Tj4Qpr9RTXJ2vPFLqtLxwOrpoxAHAJI8J3yYWUc40J0BDBheaitK5SJmno2g==
+ version "1.6.8"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12"
+ integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==
dependencies:
- "@floating-ui/utils" "^0.2.7"
+ "@floating-ui/utils" "^0.2.8"
"@floating-ui/dom@^1.0.0":
- version "1.6.10"
- resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.10.tgz#b74c32f34a50336c86dcf1f1c845cf3a39e26d6f"
- integrity sha512-fskgCFv8J8OamCmyun8MfjB1Olfn+uZKjOKZ0vhYF3gRmEUXcGOjxWL8bBr7i4kIuPZ2KD2S3EUIOxnjC8kl2A==
+ version "1.6.11"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.11.tgz#8631857838d34ee5712339eb7cbdfb8ad34da723"
+ integrity sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==
dependencies:
"@floating-ui/core" "^1.6.0"
- "@floating-ui/utils" "^0.2.7"
+ "@floating-ui/utils" "^0.2.8"
"@floating-ui/react-dom@^2.0.0":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.1.tgz#cca58b6b04fc92b4c39288252e285e0422291fb0"
- integrity sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31"
+ integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==
dependencies:
"@floating-ui/dom" "^1.0.0"
-"@floating-ui/utils@^0.2.7":
- version "0.2.7"
- resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.7.tgz#d0ece53ce99ab5a8e37ebdfe5e32452a2bfc073e"
- integrity sha512-X8R8Oj771YRl/w+c1HqAC1szL8zWQRwFvgDwT129k9ACdBoud/+/rX9V0qiMl6LWUdP9voC2nDVZYPMQQsb6eA==
+"@floating-ui/utils@^0.2.8":
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62"
+ integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==
+
+"@gitbeaker/core@^40.5.1":
+ version "40.5.1"
+ resolved "https://registry.yarnpkg.com/@gitbeaker/core/-/core-40.5.1.tgz#79b2925628d72b0c54e969b7d147339ab4c2cffe"
+ integrity sha512-VS9Fi625WZu76xmx3U5ZXgs4bHI6ovN52Ih738w6+DhxArCKG1ix/GgVwxtQOSsu5ddu1lNhM+SkeaETcjKUFw==
+ dependencies:
+ "@gitbeaker/requester-utils" "^40.5.1"
+ qs "^6.12.2"
+ xcase "^2.0.1"
+
+"@gitbeaker/requester-utils@^40.5.1":
+ version "40.5.1"
+ resolved "https://registry.yarnpkg.com/@gitbeaker/requester-utils/-/requester-utils-40.5.1.tgz#d203af5d1e8a1231f3df35b5c01d9841e85c6ef4"
+ integrity sha512-Q5zudgBD81RqOBQ0o8yjRtjzZiFIxEVQIsw8qsI8kCFqWVxhYE5LfmLZouIumbYlcm4BgWmWAwvkQAJF5UjJ2A==
+ dependencies:
+ picomatch-browser "^2.2.6"
+ qs "^6.12.2"
+ rate-limiter-flexible "^4.0.1"
+ xcase "^2.0.1"
+
+"@gitbeaker/rest@^40.5.1":
+ version "40.5.1"
+ resolved "https://registry.yarnpkg.com/@gitbeaker/rest/-/rest-40.5.1.tgz#fcaa62902269b7e925f8ee78e550d25cd0cb301e"
+ integrity sha512-XBgylz2nhy+H7MFMVLiYhbkDRh07HwHgKmHp3bvChVZu3EVX7L765PpW3l9ix58fk5qZWJoOJoRJ183Ga4a+Aw==
+ dependencies:
+ "@gitbeaker/core" "^40.5.1"
+ "@gitbeaker/requester-utils" "^40.5.1"
"@hookform/resolvers@^3.9.0":
version "3.9.0"
resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-3.9.0.tgz#cf540ac21c6c0cd24a40cf53d8e6d64391fb753d"
integrity sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==
-"@humanwhocodes/config-array@^0.11.14":
- version "0.11.14"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"
- integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
+"@humanwhocodes/config-array@^0.13.0":
+ version "0.13.0"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748"
+ integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==
dependencies:
- "@humanwhocodes/object-schema" "^2.0.2"
+ "@humanwhocodes/object-schema" "^2.0.3"
debug "^4.3.1"
minimatch "^3.0.5"
@@ -312,7 +472,7 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-"@humanwhocodes/object-schema@^2.0.2":
+"@humanwhocodes/object-schema@^2.0.3":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
@@ -474,10 +634,27 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
+"@jsdevtools/ono@^7.1.3":
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796"
+ integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
+
+"@kwsites/file-exists@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99"
+ integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==
+ dependencies:
+ debug "^4.1.1"
+
+"@kwsites/promise-deferred@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919"
+ integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==
+
"@lezer/common@^1.0.0", "@lezer/common@^1.0.2", "@lezer/common@^1.1.0", "@lezer/common@^1.2.0", "@lezer/common@^1.2.1":
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.1.tgz#198b278b7869668e1bebbe687586e12a42731049"
- integrity sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/@lezer/common/-/common-1.2.2.tgz#33cb2de75d72602d3ca905cdf7e32049fbe7402c"
+ integrity sha512-Z+R3hN6kXbgBWAuejUNPihylAL1Z5CaFqnIe0nTX8Ej+XlIy3EGtXxn6WtLMO+os2hRkQvm2yvaGMYliUzlJaw==
"@lezer/cpp@^1.0.0":
version "1.1.2"
@@ -523,18 +700,18 @@
"@lezer/lr" "^1.0.0"
"@lezer/java@^1.0.0":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@lezer/java/-/java-1.1.2.tgz#01a6ffefa9a692ac6cd492f8b924009edcb903d7"
- integrity sha512-3j8X70JvYf0BZt8iSRLXLkt0Ry1hVUgH6wT32yBxH/Xi55nW2VMhc1Az4SKwu4YGSmxCm1fsqDDcHTuFjC8pmg==
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/@lezer/java/-/java-1.1.3.tgz#9efd6a29b4142d07f211076a6fb5e8061c85e147"
+ integrity sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==
dependencies:
"@lezer/common" "^1.2.0"
"@lezer/highlight" "^1.0.0"
"@lezer/lr" "^1.0.0"
"@lezer/javascript@^1.0.0":
- version "1.4.17"
- resolved "https://registry.yarnpkg.com/@lezer/javascript/-/javascript-1.4.17.tgz#8456e369f960c328b9e823342d0c72d704238c31"
- integrity sha512-bYW4ctpyGK+JMumDApeUzuIezX01H76R1foD6LcRX224FWfyYit/HYxiPGDjXXe/wQWASjCvVGoukTH68+0HIA==
+ version "1.4.18"
+ resolved "https://registry.yarnpkg.com/@lezer/javascript/-/javascript-1.4.18.tgz#8768336d877d2cdadc35642deb55a6ad33c09b06"
+ integrity sha512-Y8BeHOt4LtcxJgXwadtfSeWPrh0XzklcCHnCVT+vOsxqH4gWmunP2ykX+VVOlM/dusyVyiNfG3lv0f10UK+mgA==
dependencies:
"@lezer/common" "^1.2.0"
"@lezer/highlight" "^1.1.3"
@@ -669,6 +846,104 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
+"@nolyfill/is-core-module@1.0.39":
+ version "1.0.39"
+ resolved "https://registry.yarnpkg.com/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz#3dc35ba0f1e66b403c00b39344f870298ebb1c8e"
+ integrity sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==
+
+"@octokit/auth-token@^5.0.0":
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-5.1.1.tgz#3bbfe905111332a17f72d80bd0b51a3e2fa2cf07"
+ integrity sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA==
+
+"@octokit/core@^6.1.2":
+ version "6.1.2"
+ resolved "https://registry.yarnpkg.com/@octokit/core/-/core-6.1.2.tgz#20442d0a97c411612da206411e356014d1d1bd17"
+ integrity sha512-hEb7Ma4cGJGEUNOAVmyfdB/3WirWMg5hDuNFVejGEDFqupeOysLc2sG6HJxY2etBp5YQu5Wtxwi020jS9xlUwg==
+ dependencies:
+ "@octokit/auth-token" "^5.0.0"
+ "@octokit/graphql" "^8.0.0"
+ "@octokit/request" "^9.0.0"
+ "@octokit/request-error" "^6.0.1"
+ "@octokit/types" "^13.0.0"
+ before-after-hook "^3.0.2"
+ universal-user-agent "^7.0.0"
+
+"@octokit/endpoint@^10.0.0":
+ version "10.1.1"
+ resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-10.1.1.tgz#1a9694e7aef6aa9d854dc78dd062945945869bcc"
+ integrity sha512-JYjh5rMOwXMJyUpj028cu0Gbp7qe/ihxfJMLc8VZBMMqSwLgOxDI1911gV4Enl1QSavAQNJcwmwBF9M0VvLh6Q==
+ dependencies:
+ "@octokit/types" "^13.0.0"
+ universal-user-agent "^7.0.2"
+
+"@octokit/graphql@^8.0.0":
+ version "8.1.1"
+ resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-8.1.1.tgz#3cacab5f2e55d91c733e3bf481d3a3f8a5f639c4"
+ integrity sha512-ukiRmuHTi6ebQx/HFRCXKbDlOh/7xEV6QUXaE7MJEKGNAncGI/STSbOkl12qVXZrfZdpXctx5O9X1AIaebiDBg==
+ dependencies:
+ "@octokit/request" "^9.0.0"
+ "@octokit/types" "^13.0.0"
+ universal-user-agent "^7.0.0"
+
+"@octokit/openapi-types@^22.2.0":
+ version "22.2.0"
+ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-22.2.0.tgz#75aa7dcd440821d99def6a60b5f014207ae4968e"
+ integrity sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==
+
+"@octokit/plugin-paginate-rest@^11.0.0":
+ version "11.3.5"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.5.tgz#a1929b3ba3dc7b63bc73bb6d3c7a3faf2a9c7649"
+ integrity sha512-cgwIRtKrpwhLoBi0CUNuY83DPGRMaWVjqVI/bGKsLJ4PzyWZNaEmhHroI2xlrVXkk6nFv0IsZpOp+ZWSWUS2AQ==
+ dependencies:
+ "@octokit/types" "^13.6.0"
+
+"@octokit/plugin-request-log@^5.3.1":
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-5.3.1.tgz#ccb75d9705de769b2aa82bcd105cc96eb0c00f69"
+ integrity sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==
+
+"@octokit/plugin-rest-endpoint-methods@^13.0.0":
+ version "13.2.6"
+ resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.6.tgz#b9d343dbe88a6cb70cc7fa16faa98f0a29ffe654"
+ integrity sha512-wMsdyHMjSfKjGINkdGKki06VEkgdEldIGstIEyGX0wbYHGByOwN/KiM+hAAlUwAtPkP3gvXtVQA9L3ITdV2tVw==
+ dependencies:
+ "@octokit/types" "^13.6.1"
+
+"@octokit/request-error@^6.0.1":
+ version "6.1.5"
+ resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-6.1.5.tgz#907099e341c4e6179db623a0328d678024f54653"
+ integrity sha512-IlBTfGX8Yn/oFPMwSfvugfncK2EwRLjzbrpifNaMY8o/HTEAFqCA1FZxjD9cWvSKBHgrIhc4CSBIzMxiLsbzFQ==
+ dependencies:
+ "@octokit/types" "^13.0.0"
+
+"@octokit/request@^9.0.0":
+ version "9.1.3"
+ resolved "https://registry.yarnpkg.com/@octokit/request/-/request-9.1.3.tgz#42b693bc06238f43af3c037ebfd35621c6457838"
+ integrity sha512-V+TFhu5fdF3K58rs1pGUJIDH5RZLbZm5BI+MNF+6o/ssFNT4vWlCh/tVpF3NxGtP15HUxTTMUbsG5llAuU2CZA==
+ dependencies:
+ "@octokit/endpoint" "^10.0.0"
+ "@octokit/request-error" "^6.0.1"
+ "@octokit/types" "^13.1.0"
+ universal-user-agent "^7.0.2"
+
+"@octokit/rest@^21.0.2":
+ version "21.0.2"
+ resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-21.0.2.tgz#9b767dbc1098daea8310fd8b76bf7a97215d5972"
+ integrity sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==
+ dependencies:
+ "@octokit/core" "^6.1.2"
+ "@octokit/plugin-paginate-rest" "^11.0.0"
+ "@octokit/plugin-request-log" "^5.3.1"
+ "@octokit/plugin-rest-endpoint-methods" "^13.0.0"
+
+"@octokit/types@^13.0.0", "@octokit/types@^13.1.0", "@octokit/types@^13.6.0", "@octokit/types@^13.6.1":
+ version "13.6.1"
+ resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.6.1.tgz#432fc6c0aaae54318e5b2d3e15c22ac97fc9b15f"
+ integrity sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==
+ dependencies:
+ "@octokit/openapi-types" "^22.2.0"
+
"@pkgjs/parseargs@^0.11.0":
version "0.11.0"
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
@@ -711,15 +986,20 @@
resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.0.tgz#6df8d983546cfd1999c8512f3a8ad85a6e7fcee8"
integrity sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==
+"@radix-ui/react-context@1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.1.tgz#82074aa83a472353bb22e86f11bcbd1c61c4c71a"
+ integrity sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==
+
"@radix-ui/react-direction@1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.1.0.tgz#a7d39855f4d077adc2a1922f9c353c5977a09cdc"
integrity sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==
-"@radix-ui/react-dismissable-layer@1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz#2cd0a49a732372513733754e6032d3fb7988834e"
- integrity sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==
+"@radix-ui/react-dismissable-layer@1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz#cbdcb739c5403382bdde5f9243042ba643883396"
+ integrity sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==
dependencies:
"@radix-ui/primitive" "1.1.0"
"@radix-ui/react-compose-refs" "1.1.0"
@@ -728,22 +1008,22 @@
"@radix-ui/react-use-escape-keydown" "1.1.0"
"@radix-ui/react-dropdown-menu@^2.1.1":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.1.tgz#3dc578488688250dbbe109d9ff2ca28a9bca27ec"
- integrity sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz#acc49577130e3c875ef0133bd1e271ea3392d924"
+ integrity sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==
dependencies:
"@radix-ui/primitive" "1.1.0"
"@radix-ui/react-compose-refs" "1.1.0"
- "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-context" "1.1.1"
"@radix-ui/react-id" "1.1.0"
- "@radix-ui/react-menu" "2.1.1"
+ "@radix-ui/react-menu" "2.1.2"
"@radix-ui/react-primitive" "2.0.0"
"@radix-ui/react-use-controllable-state" "1.1.0"
-"@radix-ui/react-focus-guards@1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz#8e9abb472a9a394f59a1b45f3dd26cfe3fc6da13"
- integrity sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==
+"@radix-ui/react-focus-guards@1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz#8635edd346304f8b42cae86b05912b61aef27afe"
+ integrity sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==
"@radix-ui/react-focus-scope@1.1.0":
version "1.1.0"
@@ -773,43 +1053,43 @@
dependencies:
"@radix-ui/react-primitive" "2.0.0"
-"@radix-ui/react-menu@2.1.1":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.1.1.tgz#bd623ace0e1ae1ac78023a505fec0541d59fb346"
- integrity sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==
+"@radix-ui/react-menu@2.1.2":
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.1.2.tgz#91f6815845a4298dde775563ed2d80b7ad667899"
+ integrity sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==
dependencies:
"@radix-ui/primitive" "1.1.0"
"@radix-ui/react-collection" "1.1.0"
"@radix-ui/react-compose-refs" "1.1.0"
- "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-context" "1.1.1"
"@radix-ui/react-direction" "1.1.0"
- "@radix-ui/react-dismissable-layer" "1.1.0"
- "@radix-ui/react-focus-guards" "1.1.0"
+ "@radix-ui/react-dismissable-layer" "1.1.1"
+ "@radix-ui/react-focus-guards" "1.1.1"
"@radix-ui/react-focus-scope" "1.1.0"
"@radix-ui/react-id" "1.1.0"
"@radix-ui/react-popper" "1.2.0"
- "@radix-ui/react-portal" "1.1.1"
- "@radix-ui/react-presence" "1.1.0"
+ "@radix-ui/react-portal" "1.1.2"
+ "@radix-ui/react-presence" "1.1.1"
"@radix-ui/react-primitive" "2.0.0"
"@radix-ui/react-roving-focus" "1.1.0"
"@radix-ui/react-slot" "1.1.0"
"@radix-ui/react-use-callback-ref" "1.1.0"
aria-hidden "^1.1.1"
- react-remove-scroll "2.5.7"
+ react-remove-scroll "2.6.0"
"@radix-ui/react-navigation-menu@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.0.tgz#884c9b9fd141cc5db257bd3f6bf3b84e349c6617"
- integrity sha512-OQ8tcwAOR0DhPlSY3e4VMXeHiol7la4PPdJWhhwJiJA+NLX0SaCaonOkRnI3gCDHoZ7Fo7bb/G6q25fRM2Y+3Q==
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.1.tgz#31989e026adecfbb2f7bd1108ee6fffb830b2ec1"
+ integrity sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==
dependencies:
"@radix-ui/primitive" "1.1.0"
"@radix-ui/react-collection" "1.1.0"
"@radix-ui/react-compose-refs" "1.1.0"
- "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-context" "1.1.1"
"@radix-ui/react-direction" "1.1.0"
- "@radix-ui/react-dismissable-layer" "1.1.0"
+ "@radix-ui/react-dismissable-layer" "1.1.1"
"@radix-ui/react-id" "1.1.0"
- "@radix-ui/react-presence" "1.1.0"
+ "@radix-ui/react-presence" "1.1.1"
"@radix-ui/react-primitive" "2.0.0"
"@radix-ui/react-use-callback-ref" "1.1.0"
"@radix-ui/react-use-controllable-state" "1.1.0"
@@ -833,18 +1113,18 @@
"@radix-ui/react-use-size" "1.1.0"
"@radix-ui/rect" "1.1.0"
-"@radix-ui/react-portal@1.1.1":
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.1.tgz#1957f1eb2e1aedfb4a5475bd6867d67b50b1d15f"
- integrity sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==
+"@radix-ui/react-portal@1.1.2":
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.2.tgz#51eb46dae7505074b306ebcb985bf65cc547d74e"
+ integrity sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==
dependencies:
"@radix-ui/react-primitive" "2.0.0"
"@radix-ui/react-use-layout-effect" "1.1.0"
-"@radix-ui/react-presence@1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.0.tgz#227d84d20ca6bfe7da97104b1a8b48a833bfb478"
- integrity sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==
+"@radix-ui/react-presence@1.1.1":
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.1.tgz#98aba423dba5e0c687a782c0669dcd99de17f9b1"
+ integrity sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==
dependencies:
"@radix-ui/react-compose-refs" "1.1.0"
"@radix-ui/react-use-layout-effect" "1.1.0"
@@ -872,16 +1152,16 @@
"@radix-ui/react-use-controllable-state" "1.1.0"
"@radix-ui/react-scroll-area@^1.1.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.1.0.tgz#50b24b0fc9ada151d176395bcf47b2ec68feada5"
- integrity sha512-9ArIZ9HWhsrfqS765h+GZuLoxaRHD/j0ZWOWilsCvYTpYJp8XwCqNG7Dt9Nu/TItKOdgLGkOPCodQvDc+UMwYg==
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.0.tgz#d09fd693728b09c50145935bec6f91efc2661729"
+ integrity sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ==
dependencies:
"@radix-ui/number" "1.1.0"
"@radix-ui/primitive" "1.1.0"
"@radix-ui/react-compose-refs" "1.1.0"
- "@radix-ui/react-context" "1.1.0"
+ "@radix-ui/react-context" "1.1.1"
"@radix-ui/react-direction" "1.1.0"
- "@radix-ui/react-presence" "1.1.0"
+ "@radix-ui/react-presence" "1.1.1"
"@radix-ui/react-primitive" "2.0.0"
"@radix-ui/react-use-callback-ref" "1.1.0"
"@radix-ui/react-use-layout-effect" "1.1.0"
@@ -965,6 +1245,11 @@
resolved "https://registry.yarnpkg.com/@replit/codemirror-vim/-/codemirror-vim-6.2.1.tgz#6673ff4be93b7da03d303ef37d6cbfa5f647b74b"
integrity sha512-qDAcGSHBYU5RrdO//qCmD8K9t6vbP327iCj/iqrkVnjbrpFhrjOt92weGXGHmTNRh16cUtkUZ7Xq7rZf+8HVow==
+"@rtsao/scc@^1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8"
+ integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==
+
"@rushstack/eslint-patch@^1.3.3":
version "1.10.4"
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz#427d5549943a9c6fce808e39ea64dbe60d4047f1"
@@ -983,17 +1268,17 @@
"@swc/counter" "^0.1.3"
tslib "^2.4.0"
-"@tanstack/query-core@5.53.3":
- version "5.53.3"
- resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.53.3.tgz#ada02058ee79fe4482c0aa6967408f22a6af2a0f"
- integrity sha512-ZfjAgd7NpqDx0e4aYBt7EmS2enbulPrJwowTy+mayRE93WUUH+sIYHun1TdRjpGwDPMNNZ5D6goh7n3CwoO+HA==
+"@tanstack/query-core@5.59.0":
+ version "5.59.0"
+ resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.59.0.tgz#d8323f1c6eb0e573ab0aa85a7b7690d0c263818a"
+ integrity sha512-WGD8uIhX6/deH/tkZqPNcRyAhDUqs729bWKoByYHSogcshXfFbppOdTER5+qY7mFvu8KEFJwT0nxr8RfPTVh0Q==
"@tanstack/react-query@^5.53.3":
- version "5.53.3"
- resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.53.3.tgz#f4ee3effe6f2fe584da2f58dc7c0316876fa9028"
- integrity sha512-286mN/91CeM7vC6CZFLKYDHSw+WyMX6ekIvzoTbpM4xyPb99VSyCKPLyPgaOatKqYm6ooMBquSq9NGRdKgsJfg==
+ version "5.59.0"
+ resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.59.0.tgz#5dcc21cfb85ecad6dcb1bf2a616d2820c0b49754"
+ integrity sha512-YDXp3OORbYR+8HNQx+lf4F73NoiCmCcSvZvgxE29OifmQFk0sBlO26NWLHpcNERo92tVk3w+JQ53/vkcRUY1hA==
dependencies:
- "@tanstack/query-core" "5.53.3"
+ "@tanstack/query-core" "5.59.0"
"@tanstack/react-table@^8.20.5":
version "8.20.5"
@@ -1007,22 +1292,44 @@
resolved "https://registry.yarnpkg.com/@tanstack/table-core/-/table-core-8.20.5.tgz#3974f0b090bed11243d4107283824167a395cf1d"
integrity sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==
+"@types/argparse@^2.0.16":
+ version "2.0.16"
+ resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-2.0.16.tgz#3bb7ccd2844b3a8bcd6efbd217f6c0ea06a80d22"
+ integrity sha512-aMqBra2JlqpFeCWOinCtpRpiCkPIXH8hahW2+FkGzvWjfE5sAqtOcrjN5DRcMnTQqFDe6gb1CVYuGnBH0lhXwA==
+
+"@types/json-schema@^7.0.15":
+ version "7.0.15"
+ resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
+ integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
+
"@types/json5@^0.0.29":
version "0.0.29"
resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
+"@types/lodash@^4.17.7":
+ version "4.17.10"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.10.tgz#64f3edf656af2fe59e7278b73d3e62404144a6e6"
+ integrity sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==
+
"@types/node@^20":
- version "20.16.1"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.1.tgz#0b44b15271d0e2191ca68faf1fbe506e06aed732"
- integrity sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==
+ version "20.16.10"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-20.16.10.tgz#0cc3fdd3daf114a4776f54ba19726a01c907ef71"
+ integrity sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==
+ dependencies:
+ undici-types "~6.19.2"
+
+"@types/node@^22.7.5":
+ version "22.7.5"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b"
+ integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==
dependencies:
undici-types "~6.19.2"
"@types/prop-types@*":
- version "15.7.12"
- resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6"
- integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==
+ version "15.7.13"
+ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451"
+ integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==
"@types/react-dom@^18":
version "18.3.0"
@@ -1032,23 +1339,28 @@
"@types/react" "*"
"@types/react@*", "@types/react@^18":
- version "18.3.4"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.4.tgz#dfdd534a1d081307144c00e325c06e00312c93a3"
- integrity sha512-J7W30FTdfCxDDjmfRM+/JqLHBIyl7xUIp9kwK637FGmY7+mkSFSe6L4jpZzhj5QMfLssSDP4/i75AKkrdC7/Jw==
+ version "18.3.11"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.11.tgz#9d530601ff843ee0d7030d4227ea4360236bd537"
+ integrity sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==
dependencies:
"@types/prop-types" "*"
csstype "^3.0.2"
+"@types/triple-beam@^1.3.2":
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.5.tgz#74fef9ffbaa198eb8b588be029f38b00299caa2c"
+ integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==
+
"@typescript-eslint/eslint-plugin@^8.3.0":
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.3.0.tgz#726627fad16d41d20539637efee8c2329fe6be32"
- integrity sha512-FLAIn63G5KH+adZosDYiutqkOkYEx0nvcwNNfJAf+c7Ae/H35qWwTYvPZUKFj5AS+WfHG/WJJfWnDnyNUlp8UA==
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz#b2b02a5447cdc885950eb256b3b8a97b92031bd3"
+ integrity sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
- "@typescript-eslint/scope-manager" "8.3.0"
- "@typescript-eslint/type-utils" "8.3.0"
- "@typescript-eslint/utils" "8.3.0"
- "@typescript-eslint/visitor-keys" "8.3.0"
+ "@typescript-eslint/scope-manager" "8.8.0"
+ "@typescript-eslint/type-utils" "8.8.0"
+ "@typescript-eslint/utils" "8.8.0"
+ "@typescript-eslint/visitor-keys" "8.8.0"
graphemer "^1.4.0"
ignore "^5.3.1"
natural-compare "^1.4.0"
@@ -1066,14 +1378,14 @@
debug "^4.3.4"
"@typescript-eslint/parser@^8.3.0":
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.3.0.tgz#3c72c32bc909cb91ce3569e7d11d729ad84deafa"
- integrity sha512-h53RhVyLu6AtpUzVCYLPhZGL5jzTD9fZL+SYf/+hYOx2bDkyQXztXSc4tbvKYHzfMXExMLiL9CWqJmVz6+78IQ==
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.8.0.tgz#ee4397c70230c4eee030456924c0fba480072f5e"
+ integrity sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==
dependencies:
- "@typescript-eslint/scope-manager" "8.3.0"
- "@typescript-eslint/types" "8.3.0"
- "@typescript-eslint/typescript-estree" "8.3.0"
- "@typescript-eslint/visitor-keys" "8.3.0"
+ "@typescript-eslint/scope-manager" "8.8.0"
+ "@typescript-eslint/types" "8.8.0"
+ "@typescript-eslint/typescript-estree" "8.8.0"
+ "@typescript-eslint/visitor-keys" "8.8.0"
debug "^4.3.4"
"@typescript-eslint/scope-manager@7.2.0":
@@ -1084,21 +1396,21 @@
"@typescript-eslint/types" "7.2.0"
"@typescript-eslint/visitor-keys" "7.2.0"
-"@typescript-eslint/scope-manager@8.3.0":
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.3.0.tgz#834301d2e70baf924c26818b911bdc40086f7468"
- integrity sha512-mz2X8WcN2nVu5Hodku+IR8GgCOl4C0G/Z1ruaWN4dgec64kDBabuXyPAr+/RgJtumv8EEkqIzf3X2U5DUKB2eg==
+"@typescript-eslint/scope-manager@8.8.0":
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz#30b23a6ae5708bd7882e40675ef2f1b2beac741f"
+ integrity sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==
dependencies:
- "@typescript-eslint/types" "8.3.0"
- "@typescript-eslint/visitor-keys" "8.3.0"
+ "@typescript-eslint/types" "8.8.0"
+ "@typescript-eslint/visitor-keys" "8.8.0"
-"@typescript-eslint/type-utils@8.3.0":
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.3.0.tgz#c1ae6af8c21a27254321016b052af67ddb44a9ac"
- integrity sha512-wrV6qh//nLbfXZQoj32EXKmwHf4b7L+xXLrP3FZ0GOUU72gSvLjeWUl5J5Ue5IwRxIV1TfF73j/eaBapxx99Lg==
+"@typescript-eslint/type-utils@8.8.0":
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz#a0ca1c8a90d94b101176a169d7a0958187408d33"
+ integrity sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==
dependencies:
- "@typescript-eslint/typescript-estree" "8.3.0"
- "@typescript-eslint/utils" "8.3.0"
+ "@typescript-eslint/typescript-estree" "8.8.0"
+ "@typescript-eslint/utils" "8.8.0"
debug "^4.3.4"
ts-api-utils "^1.3.0"
@@ -1107,10 +1419,10 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.2.0.tgz#0feb685f16de320e8520f13cca30779c8b7c403f"
integrity sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==
-"@typescript-eslint/types@8.3.0":
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.3.0.tgz#378e62447c2d7028236e55a81d3391026600563b"
- integrity sha512-y6sSEeK+facMaAyixM36dQ5NVXTnKWunfD1Ft4xraYqxP0lC0POJmIaL/mw72CUMqjY9qfyVfXafMeaUj0noWw==
+"@typescript-eslint/types@8.8.0":
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.8.0.tgz#08ea5df6c01984d456056434641491fbf7a1bf43"
+ integrity sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==
"@typescript-eslint/typescript-estree@7.2.0":
version "7.2.0"
@@ -1126,13 +1438,13 @@
semver "^7.5.4"
ts-api-utils "^1.0.1"
-"@typescript-eslint/typescript-estree@8.3.0":
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.3.0.tgz#3e3d38af101ba61a8568f034733b72bfc9f176b9"
- integrity sha512-Mq7FTHl0R36EmWlCJWojIC1qn/ZWo2YiWYc1XVtasJ7FIgjo0MVv9rZWXEE7IK2CGrtwe1dVOxWwqXUdNgfRCA==
+"@typescript-eslint/typescript-estree@8.8.0":
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz#072eaab97fdb63513fabfe1cf271812affe779e3"
+ integrity sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==
dependencies:
- "@typescript-eslint/types" "8.3.0"
- "@typescript-eslint/visitor-keys" "8.3.0"
+ "@typescript-eslint/types" "8.8.0"
+ "@typescript-eslint/visitor-keys" "8.8.0"
debug "^4.3.4"
fast-glob "^3.3.2"
is-glob "^4.0.3"
@@ -1140,15 +1452,15 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"
-"@typescript-eslint/utils@8.3.0":
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.3.0.tgz#b10972319deac5959c7a7075d0cf2b5e1de7ec08"
- integrity sha512-F77WwqxIi/qGkIGOGXNBLV7nykwfjLsdauRB/DOFPdv6LTF3BHHkBpq81/b5iMPSF055oO2BiivDJV4ChvNtXA==
+"@typescript-eslint/utils@8.8.0":
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.8.0.tgz#bd8607e3a68c461b69169c7a5824637dc9e8b3f1"
+ integrity sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
- "@typescript-eslint/scope-manager" "8.3.0"
- "@typescript-eslint/types" "8.3.0"
- "@typescript-eslint/typescript-estree" "8.3.0"
+ "@typescript-eslint/scope-manager" "8.8.0"
+ "@typescript-eslint/types" "8.8.0"
+ "@typescript-eslint/typescript-estree" "8.8.0"
"@typescript-eslint/visitor-keys@7.2.0":
version "7.2.0"
@@ -1158,18 +1470,18 @@
"@typescript-eslint/types" "7.2.0"
eslint-visitor-keys "^3.4.1"
-"@typescript-eslint/visitor-keys@8.3.0":
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.3.0.tgz#320d747d107af1eef1eb43fbc4ccdbddda13068b"
- integrity sha512-RmZwrTbQ9QveF15m/Cl28n0LXD6ea2CjkhH5rQ55ewz3H24w+AMCJHPVYaZ8/0HoG8Z3cLLFFycRXxeO2tz9FA==
+"@typescript-eslint/visitor-keys@8.8.0":
+ version "8.8.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz#f93965abd38c82a1a1f5574290a50d02daf1cd2e"
+ integrity sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==
dependencies:
- "@typescript-eslint/types" "8.3.0"
+ "@typescript-eslint/types" "8.8.0"
eslint-visitor-keys "^3.4.3"
-"@uiw/codemirror-extensions-basic-setup@4.23.0":
- version "4.23.0"
- resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.23.0.tgz#c3c181153335c208a25d59b8ecbc7fc87fe85356"
- integrity sha512-+k5nkRpUWGaHr1JWT8jcKsVewlXw5qBgSopm9LW8fZ6KnSNZBycz8kHxh0+WSvckmXEESGptkIsb7dlkmJT/hQ==
+"@uiw/codemirror-extensions-basic-setup@4.23.5":
+ version "4.23.5"
+ resolved "https://registry.yarnpkg.com/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.23.5.tgz#02ebe9c44f76609f15295e1ff9c83e770140c369"
+ integrity sha512-eTMfT8TejVN/D5vvuz9Lab+MIoRYdtqa2ftZZmU3JpcDIXf9KaExPo+G2Rl9HqySzaasgGXOOG164MAnj3MSIw==
dependencies:
"@codemirror/autocomplete" "^6.0.0"
"@codemirror/commands" "^6.0.0"
@@ -1180,15 +1492,15 @@
"@codemirror/view" "^6.0.0"
"@uiw/react-codemirror@^4.23.0":
- version "4.23.0"
- resolved "https://registry.yarnpkg.com/@uiw/react-codemirror/-/react-codemirror-4.23.0.tgz#5eeadcd5de61213ad76ac3c772fffb7e5b54b465"
- integrity sha512-MnqTXfgeLA3fsUUQjqjJgemEuNyoGALgsExVm0NQAllAAi1wfj+IoKFeK+h3XXMlTFRCFYOUh4AHDv0YXJLsOg==
+ version "4.23.5"
+ resolved "https://registry.yarnpkg.com/@uiw/react-codemirror/-/react-codemirror-4.23.5.tgz#6a16c23062067732cba105ac33ad69cf8e5c2111"
+ integrity sha512-2zzGpx61L4mq9zDG/hfsO4wAH209TBE8VVsoj/qrccRe6KfcneCwKgRxtQjxBCCnO0Q5S+IP+uwCx5bXRzgQFQ==
dependencies:
"@babel/runtime" "^7.18.6"
"@codemirror/commands" "^6.1.0"
"@codemirror/state" "^6.1.1"
"@codemirror/theme-one-dark" "^6.0.0"
- "@uiw/codemirror-extensions-basic-setup" "4.23.0"
+ "@uiw/codemirror-extensions-basic-setup" "4.23.5"
codemirror "^6.0.0"
"@ungap/structured-clone@^1.2.0":
@@ -1196,6 +1508,13 @@
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
+abort-controller@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392"
+ integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==
+ dependencies:
+ event-target-shim "^5.0.0"
+
acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
@@ -1222,9 +1541,9 @@ ansi-regex@^5.0.1:
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
ansi-regex@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
- integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654"
+ integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
ansi-styles@^3.2.1:
version "3.2.1"
@@ -1290,7 +1609,7 @@ array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1:
call-bind "^1.0.5"
is-array-buffer "^3.0.4"
-array-includes@^3.1.6, array-includes@^3.1.7, array-includes@^3.1.8:
+array-includes@^3.1.6, array-includes@^3.1.8:
version "3.1.8"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d"
integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==
@@ -1319,7 +1638,7 @@ array.prototype.findlast@^1.2.5:
es-object-atoms "^1.0.0"
es-shim-unscopables "^1.0.2"
-array.prototype.findlastindex@^1.2.3:
+array.prototype.findlastindex@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d"
integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==
@@ -1381,6 +1700,11 @@ ast-types-flow@^0.0.8:
resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.8.tgz#0a85e1c92695769ac13a428bb653e7538bea27d6"
integrity sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==
+async@^3.2.3:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce"
+ integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==
+
available-typed-arrays@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
@@ -1388,23 +1712,31 @@ available-typed-arrays@^1.0.7:
dependencies:
possible-typed-array-names "^1.0.0"
-axe-core@^4.9.1:
+axe-core@^4.10.0:
version "4.10.0"
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.0.tgz#d9e56ab0147278272739a000880196cdfe113b59"
integrity sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==
-axobject-query@~3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1"
- integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==
- dependencies:
- deep-equal "^2.0.5"
+axobject-query@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee"
+ integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+base64-js@^1.3.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
+before-after-hook@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-3.0.2.tgz#d5665a5fa8b62294a5aa0a499f933f4a1016195d"
+ integrity sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==
+
binary-extensions@^2.0.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
@@ -1432,6 +1764,14 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
+buffer@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6"
+ integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.2.1"
+
busboy@1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
@@ -1461,9 +1801,9 @@ camelcase-css@^2.0.1:
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
caniuse-lite@^1.0.30001579:
- version "1.0.30001651"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz#52de59529e8b02b1aedcaaf5c05d9e23c0c28138"
- integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==
+ version "1.0.30001667"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz#99fc5ea0d9c6e96897a104a8352604378377f949"
+ integrity sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==
chalk@^2.4.1:
version "2.4.2"
@@ -1532,7 +1872,7 @@ codemirror@^6.0.0:
"@codemirror/state" "^6.0.0"
"@codemirror/view" "^6.0.0"
-color-convert@^1.9.0:
+color-convert@^1.9.0, color-convert@^1.9.3:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -1556,7 +1896,7 @@ color-name@^1.0.0, color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-color-string@^1.9.0:
+color-string@^1.6.0, color-string@^1.9.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
@@ -1564,6 +1904,14 @@ color-string@^1.9.0:
color-name "^1.0.0"
simple-swizzle "^0.2.2"
+color@^3.1.3:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164"
+ integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
+ dependencies:
+ color-convert "^1.9.3"
+ color-string "^1.6.0"
+
color@^4.2.3:
version "4.2.3"
resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a"
@@ -1572,6 +1920,14 @@ color@^4.2.3:
color-convert "^2.0.1"
color-string "^1.9.0"
+colorspace@1.1.x:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243"
+ integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==
+ dependencies:
+ color "^3.1.3"
+ text-hex "1.0.x"
+
commander@^4.0.0:
version "4.1.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
@@ -1598,7 +1954,7 @@ cross-spawn@^6.0.5:
shebang-command "^1.2.0"
which "^1.2.9"
-cross-spawn@^7.0.0, cross-spawn@^7.0.2:
+cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -1656,12 +2012,12 @@ debug@^3.2.7:
dependencies:
ms "^2.1.1"
-debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
- version "4.3.6"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b"
- integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==
+debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5:
+ version "4.3.7"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
+ integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
dependencies:
- ms "2.1.2"
+ ms "^2.1.3"
deep-equal@^2.0.5:
version "2.2.3"
@@ -1751,6 +2107,11 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
+duplexer@~0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
eastasianwidth@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
@@ -1789,7 +2150,12 @@ emoji-regex@^9.2.2:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
-enhanced-resolve@^5.12.0:
+enabled@2.0.x:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2"
+ integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
+
+enhanced-resolve@^5.15.0:
version "5.17.1"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15"
integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==
@@ -1935,6 +2301,36 @@ es-to-primitive@^1.2.1:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
+esbuild@~0.23.0:
+ version "0.23.1"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.23.1.tgz#40fdc3f9265ec0beae6f59824ade1bd3d3d2dab8"
+ integrity sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==
+ optionalDependencies:
+ "@esbuild/aix-ppc64" "0.23.1"
+ "@esbuild/android-arm" "0.23.1"
+ "@esbuild/android-arm64" "0.23.1"
+ "@esbuild/android-x64" "0.23.1"
+ "@esbuild/darwin-arm64" "0.23.1"
+ "@esbuild/darwin-x64" "0.23.1"
+ "@esbuild/freebsd-arm64" "0.23.1"
+ "@esbuild/freebsd-x64" "0.23.1"
+ "@esbuild/linux-arm" "0.23.1"
+ "@esbuild/linux-arm64" "0.23.1"
+ "@esbuild/linux-ia32" "0.23.1"
+ "@esbuild/linux-loong64" "0.23.1"
+ "@esbuild/linux-mips64el" "0.23.1"
+ "@esbuild/linux-ppc64" "0.23.1"
+ "@esbuild/linux-riscv64" "0.23.1"
+ "@esbuild/linux-s390x" "0.23.1"
+ "@esbuild/linux-x64" "0.23.1"
+ "@esbuild/netbsd-x64" "0.23.1"
+ "@esbuild/openbsd-arm64" "0.23.1"
+ "@esbuild/openbsd-x64" "0.23.1"
+ "@esbuild/sunos-x64" "0.23.1"
+ "@esbuild/win32-arm64" "0.23.1"
+ "@esbuild/win32-ia32" "0.23.1"
+ "@esbuild/win32-x64" "0.23.1"
+
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
@@ -1975,59 +2371,62 @@ eslint-import-resolver-node@^0.3.6, eslint-import-resolver-node@^0.3.9:
resolve "^1.22.4"
eslint-import-resolver-typescript@^3.5.2:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz#7b983680edd3f1c5bce1a5829ae0bc2d57fe9efa"
- integrity sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==
+ version "3.6.3"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz#bb8e388f6afc0f940ce5d2c5fd4a3d147f038d9e"
+ integrity sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==
dependencies:
- debug "^4.3.4"
- enhanced-resolve "^5.12.0"
- eslint-module-utils "^2.7.4"
- fast-glob "^3.3.1"
- get-tsconfig "^4.5.0"
- is-core-module "^2.11.0"
+ "@nolyfill/is-core-module" "1.0.39"
+ debug "^4.3.5"
+ enhanced-resolve "^5.15.0"
+ eslint-module-utils "^2.8.1"
+ fast-glob "^3.3.2"
+ get-tsconfig "^4.7.5"
+ is-bun-module "^1.0.2"
is-glob "^4.0.3"
-eslint-module-utils@^2.7.4, eslint-module-utils@^2.8.0:
- version "2.8.1"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz#52f2404300c3bd33deece9d7372fb337cc1d7c34"
- integrity sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==
+eslint-module-utils@^2.12.0, eslint-module-utils@^2.8.1:
+ version "2.12.0"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b"
+ integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==
dependencies:
debug "^3.2.7"
eslint-plugin-import@^2.28.1:
- version "2.29.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz#d45b37b5ef5901d639c15270d74d46d161150643"
- integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==
+ version "2.31.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7"
+ integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==
dependencies:
- array-includes "^3.1.7"
- array.prototype.findlastindex "^1.2.3"
+ "@rtsao/scc" "^1.1.0"
+ array-includes "^3.1.8"
+ array.prototype.findlastindex "^1.2.5"
array.prototype.flat "^1.3.2"
array.prototype.flatmap "^1.3.2"
debug "^3.2.7"
doctrine "^2.1.0"
eslint-import-resolver-node "^0.3.9"
- eslint-module-utils "^2.8.0"
- hasown "^2.0.0"
- is-core-module "^2.13.1"
+ eslint-module-utils "^2.12.0"
+ hasown "^2.0.2"
+ is-core-module "^2.15.1"
is-glob "^4.0.3"
minimatch "^3.1.2"
- object.fromentries "^2.0.7"
- object.groupby "^1.0.1"
- object.values "^1.1.7"
+ object.fromentries "^2.0.8"
+ object.groupby "^1.0.3"
+ object.values "^1.2.0"
semver "^6.3.1"
+ string.prototype.trimend "^1.0.8"
tsconfig-paths "^3.15.0"
eslint-plugin-jsx-a11y@^6.7.1:
- version "6.9.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#67ab8ff460d4d3d6a0b4a570e9c1670a0a8245c8"
- integrity sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==
+ version "6.10.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz#36fb9dead91cafd085ddbe3829602fb10ef28339"
+ integrity sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==
dependencies:
aria-query "~5.1.3"
array-includes "^3.1.8"
array.prototype.flatmap "^1.3.2"
ast-types-flow "^0.0.8"
- axe-core "^4.9.1"
- axobject-query "~3.1.1"
+ axe-core "^4.10.0"
+ axobject-query "^4.1.0"
damerau-levenshtein "^1.0.8"
emoji-regex "^9.2.2"
es-iterator-helpers "^1.0.19"
@@ -2045,9 +2444,9 @@ eslint-plugin-jsx-a11y@^6.7.1:
integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==
eslint-plugin-react@^7.33.2, eslint-plugin-react@^7.35.0:
- version "7.35.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz#00b1e4559896710e58af6358898f2ff917ea4c41"
- integrity sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==
+ version "7.37.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz#56493d7d69174d0d828bc83afeffe96903fdadbd"
+ integrity sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==
dependencies:
array-includes "^3.1.8"
array.prototype.findlast "^1.2.5"
@@ -2082,15 +2481,15 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint@^8:
- version "8.57.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668"
- integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
+ version "8.57.1"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9"
+ integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.6.1"
"@eslint/eslintrc" "^2.1.4"
- "@eslint/js" "8.57.0"
- "@humanwhocodes/config-array" "^0.11.14"
+ "@eslint/js" "8.57.1"
+ "@humanwhocodes/config-array" "^0.13.0"
"@humanwhocodes/module-importer" "^1.0.1"
"@nodelib/fs.walk" "^1.2.8"
"@ungap/structured-clone" "^1.2.0"
@@ -2158,12 +2557,35 @@ esutils@^2.0.2:
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
+event-stream@=3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.4.tgz#4ab4c9a0f5a54db9338b4c34d86bfce8f4b35571"
+ integrity sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==
+ dependencies:
+ duplexer "~0.1.1"
+ from "~0"
+ map-stream "~0.1.0"
+ pause-stream "0.0.11"
+ split "0.3"
+ stream-combiner "~0.0.4"
+ through "~2.3.1"
+
+event-target-shim@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
+ integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+
+events@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1, fast-glob@^3.3.2:
+fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
@@ -2191,6 +2613,11 @@ fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
+fecha@^4.2.0:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd"
+ integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==
+
fflate@^0.4.8:
version "0.4.8"
resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.4.8.tgz#f90b82aefbd8ac174213abb338bd7ef848f0f5ae"
@@ -2232,6 +2659,11 @@ flatted@^3.2.9:
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a"
integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
+fn.name@1.x.x:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
+ integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
+
for-each@^0.3.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e"
@@ -2247,12 +2679,17 @@ foreground-child@^3.1.0:
cross-spawn "^7.0.0"
signal-exit "^4.0.1"
+from@~0:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe"
+ integrity sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==
+
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-fsevents@~2.3.2:
+fsevents@~2.3.2, fsevents@~2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
@@ -2302,10 +2739,10 @@ get-symbol-description@^1.0.2:
es-errors "^1.3.0"
get-intrinsic "^1.2.4"
-get-tsconfig@^4.5.0:
- version "4.7.6"
- resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.7.6.tgz#118fd5b7b9bae234cc7705a00cd771d7eb65d62a"
- integrity sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==
+get-tsconfig@^4.7.5:
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471"
+ integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==
dependencies:
resolve-pkg-maps "^1.0.0"
@@ -2334,7 +2771,7 @@ glob@10.3.10:
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
path-scurry "^1.10.1"
-glob@^10.3.10:
+glob@^10.3.10, glob@^10.3.12:
version "10.4.5"
resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
@@ -2458,6 +2895,11 @@ http-status-codes@^2.3.0:
resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.3.0.tgz#987fefb28c69f92a43aecc77feec2866349a8bfc"
integrity sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==
+ieee754@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
ignore@^5.2.0, ignore@^5.3.1:
version "5.3.2"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
@@ -2484,7 +2926,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2:
+inherits@2, inherits@^2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -2560,12 +3002,19 @@ is-boolean-object@^1.1.0:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
+is-bun-module@^1.0.2:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/is-bun-module/-/is-bun-module-1.2.1.tgz#495e706f42e29f086fd5fe1ac3c51f106062b9fc"
+ integrity sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==
+ dependencies:
+ semver "^7.6.3"
+
is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
version "1.2.7"
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1:
+is-core-module@^2.13.0, is-core-module@^2.15.1:
version "2.15.1"
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
@@ -2664,6 +3113,11 @@ is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
dependencies:
call-bind "^1.0.7"
+is-stream@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+ integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
is-string@^1.0.5, is-string@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd"
@@ -2771,6 +3225,21 @@ json-parse-better-errors@^1.0.1:
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
+json-schema-to-typescript@^15.0.2:
+ version "15.0.2"
+ resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-15.0.2.tgz#afd87ba8d3140bc8c1822fcbd1f94dc10c1bd034"
+ integrity sha512-+cRBw+bBJ3k783mZroDIgz1pLNPB4hvj6nnbHTWwEVl0dkW8qdZ+M9jWhBb+Y0FAdHvNsXACga3lewGO8lktrw==
+ dependencies:
+ "@apidevtools/json-schema-ref-parser" "^11.5.5"
+ "@types/json-schema" "^7.0.15"
+ "@types/lodash" "^4.17.7"
+ glob "^10.3.12"
+ is-glob "^4.0.3"
+ js-yaml "^4.1.0"
+ lodash "^4.17.21"
+ minimist "^1.2.8"
+ prettier "^3.2.5"
+
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
@@ -2805,6 +3274,11 @@ keyv@^4.5.3:
dependencies:
json-buffer "3.0.1"
+kuler@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
+ integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
+
language-subtag-registry@^0.3.20:
version "0.3.23"
resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7"
@@ -2867,6 +3341,23 @@ lodash.merge@^4.6.2:
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+lodash@^4.17.21:
+ version "4.17.21"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+ integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
+logform@^2.6.0, logform@^2.6.1:
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/logform/-/logform-2.6.1.tgz#71403a7d8cae04b2b734147963236205db9b3df0"
+ integrity sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==
+ dependencies:
+ "@colors/colors" "1.6.0"
+ "@types/triple-beam" "^1.3.2"
+ fecha "^4.2.0"
+ ms "^2.1.1"
+ safe-stable-stringify "^2.3.1"
+ triple-beam "^1.3.0"
+
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
@@ -2874,6 +3365,13 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
+lowdb@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.yarnpkg.com/lowdb/-/lowdb-7.0.1.tgz#7354a684547d76206b1c730b9434604235b125e5"
+ integrity sha512-neJAj8GwF0e8EpycYIDFqEPcx9Qz4GUho20jWFR7YiFeXzF1YMLdxB36PypcTSPMA+4+LvgyMacYhlr18Zlymw==
+ dependencies:
+ steno "^4.0.2"
+
lru-cache@^10.2.0:
version "10.4.3"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
@@ -2884,6 +3382,11 @@ lucide-react@^0.435.0:
resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.435.0.tgz#88c5cc6de61b89e42cbef309a38f100deee1bb32"
integrity sha512-we5GKfzjMDw9m9SsyZJvWim9qaT+Ya5kaRS+OGFqgLqXUrPM1h+7CiMw5pKdEIoaBqfXz2pyv9TASAdpIAJs0Q==
+map-stream@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194"
+ integrity sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==
+
memorystream@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
@@ -2923,7 +3426,7 @@ minimatch@^9.0.1, minimatch@^9.0.4:
dependencies:
brace-expansion "^2.0.1"
-minimist@^1.2.0, minimist@^1.2.6:
+minimist@^1.2.0, minimist@^1.2.6, minimist@^1.2.8:
version "1.2.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
@@ -2933,12 +3436,7 @@ minimist@^1.2.0, minimist@^1.2.6:
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-ms@^2.1.1:
+ms@^2.1.1, ms@^2.1.3:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
@@ -2995,6 +3493,11 @@ nice-try@^1.0.4:
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
+node-cleanup@^2.1.2:
+ version "2.1.2"
+ resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c"
+ integrity sha512-qN8v/s2PAJwGUtr1/hYTpNKlD6Y9rc4p8KSmJXyGdYGZsDGKXrGThikLFP9OCHFeLeEpQzPwiAtdIvBLqm//Hw==
+
normalize-package-data@^2.3.2:
version "2.5.0"
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
@@ -3072,7 +3575,7 @@ object.entries@^1.1.8:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
-object.fromentries@^2.0.7, object.fromentries@^2.0.8:
+object.fromentries@^2.0.8:
version "2.0.8"
resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65"
integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==
@@ -3082,7 +3585,7 @@ object.fromentries@^2.0.7, object.fromentries@^2.0.8:
es-abstract "^1.23.2"
es-object-atoms "^1.0.0"
-object.groupby@^1.0.1:
+object.groupby@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e"
integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==
@@ -3091,7 +3594,7 @@ object.groupby@^1.0.1:
define-properties "^1.2.1"
es-abstract "^1.23.2"
-object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0:
+object.values@^1.1.6, object.values@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b"
integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==
@@ -3107,6 +3610,13 @@ once@^1.3.0:
dependencies:
wrappy "1"
+one-time@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45"
+ integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==
+ dependencies:
+ fn.name "1.x.x"
+
optionator@^0.9.3:
version "0.9.4"
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734"
@@ -3134,9 +3644,9 @@ p-locate@^5.0.0:
p-limit "^3.0.2"
package-json-from-dist@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00"
- integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
+ integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
parent-module@^1.0.0:
version "1.0.1"
@@ -3198,10 +3708,22 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-picocolors@^1.0.0, picocolors@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
- integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==
+pause-stream@0.0.11:
+ version "0.0.11"
+ resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
+ integrity sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==
+ dependencies:
+ through "~2.3"
+
+picocolors@^1.0.0, picocolors@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
+ integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
+
+picomatch-browser@^2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/picomatch-browser/-/picomatch-browser-2.2.6.tgz#e0626204575eb49f019f2f2feac24fc3b53e7a8a"
+ integrity sha512-0ypsOQt9D4e3hziV8O4elD9uN0z/jtUEfxVRtNaAAtXIyUx9m/SzlO020i8YNL2aL/E6blOvvHQcin6HZlFy/w==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
version "2.3.1"
@@ -3287,38 +3809,48 @@ postcss@8.4.31:
source-map-js "^1.0.2"
postcss@^8, postcss@^8.4.23:
- version "8.4.41"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681"
- integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==
+ version "8.4.47"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365"
+ integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==
dependencies:
nanoid "^3.3.7"
- picocolors "^1.0.1"
- source-map-js "^1.2.0"
+ picocolors "^1.1.0"
+ source-map-js "^1.2.1"
posthog-js@^1.161.5:
- version "1.161.5"
- resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.161.5.tgz#3c07acf622c0719cd8e0e78ab4b0f3e85914c7ef"
- integrity sha512-KGkb12grSQvGRauH6z+AUB83c4dgWqzmJFDjyMXarWRafaLN80HzjN1jk806x27HvdDXi21jtwiXekioWzEQ9g==
+ version "1.166.1"
+ resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.166.1.tgz#94524d9d8b696b8e99f7f746b69c5741d334de03"
+ integrity sha512-K8IpV8FJTCdwhsXFSbKj5vZ6IXNV079lukpG3cRtst2q5vMmUXRQiks7W3lOZLrjWyuJLKZDUiCeeDIUFORRuQ==
dependencies:
fflate "^0.4.8"
preact "^10.19.3"
web-vitals "^4.0.1"
preact@^10.19.3:
- version "10.24.0"
- resolved "https://registry.yarnpkg.com/preact/-/preact-10.24.0.tgz#bd8139bee35aafede3c6de96d2453982610dfeef"
- integrity sha512-aK8Cf+jkfyuZ0ZZRG9FbYqwmEiGQ4y/PUO4SuTWoyWL244nZZh7bd5h2APd4rSNDYTBNghg1L+5iJN3Skxtbsw==
+ version "10.24.2"
+ resolved "https://registry.yarnpkg.com/preact/-/preact-10.24.2.tgz#42179771d3b06e7adb884e3f8127ddd3d99b78f6"
+ integrity sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q==
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+prettier@^3.2.5:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.3.tgz#30c54fe0be0d8d12e6ae61dbb10109ea00d53105"
+ integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
+
pretty-bytes@^6.1.1:
version "6.1.1"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-6.1.1.tgz#38cd6bb46f47afbf667c202cfc754bffd2016a3b"
integrity sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==
+process@^0.11.10:
+ version "0.11.10"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
+ integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
+
prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
@@ -3328,16 +3860,35 @@ prop-types@^15.8.1:
object-assign "^4.1.1"
react-is "^16.13.1"
+ps-tree@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/ps-tree/-/ps-tree-1.2.0.tgz#5e7425b89508736cdd4f2224d028f7bb3f722ebd"
+ integrity sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==
+ dependencies:
+ event-stream "=3.3.4"
+
punycode@^2.1.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
+qs@^6.12.2:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
+ integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
+ dependencies:
+ side-channel "^1.0.6"
+
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+rate-limiter-flexible@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/rate-limiter-flexible/-/rate-limiter-flexible-4.0.1.tgz#79b0ce111abe9c5da41d6fddf7cca93cedd3a8fc"
+ integrity sha512-2/dGHpDFpeA0+755oUkW+EKyklqLS9lu0go9pDsbhqQjZcxfRyJ6LA4JI0+HAdZ2bemD/oOjUeZQB2lCZqXQfQ==
+
react-dom@^18:
version "18.3.1"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4"
@@ -3361,7 +3912,7 @@ react-is@^16.13.1:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
-react-remove-scroll-bar@^2.3.4:
+react-remove-scroll-bar@^2.3.6:
version "2.3.6"
resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c"
integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==
@@ -3369,21 +3920,21 @@ react-remove-scroll-bar@^2.3.4:
react-style-singleton "^2.2.1"
tslib "^2.0.0"
-react-remove-scroll@2.5.7:
- version "2.5.7"
- resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz#15a1fd038e8497f65a695bf26a4a57970cac1ccb"
- integrity sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==
+react-remove-scroll@2.6.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz#fb03a0845d7768a4f1519a99fdb84983b793dc07"
+ integrity sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==
dependencies:
- react-remove-scroll-bar "^2.3.4"
+ react-remove-scroll-bar "^2.3.6"
react-style-singleton "^2.2.1"
tslib "^2.1.0"
use-callback-ref "^1.3.0"
use-sidecar "^1.1.2"
react-resizable-panels@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/react-resizable-panels/-/react-resizable-panels-2.1.1.tgz#efcf4ee0d7b45d9617db2f2e3de1ca04589e6b7f"
- integrity sha512-+cUV/yZBYfiBj+WJtpWDJ3NtR4zgDZfHt3+xtaETKE+FCvp+RK/NJxacDQKxMHgRUTSkfA6AnGljQ5QZNsCQoA==
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/react-resizable-panels/-/react-resizable-panels-2.1.4.tgz#ae1803a916ba759e483336c7bd49830f1b0cd16f"
+ integrity sha512-kzue8lsoSBdyyd2IfXLQMMhNujOxRoGVus+63K95fQqleGxTfvgYLTzbwYMOODeAHqnkjb3WV/Ks7f5+gDYZuQ==
react-style-singleton@^2.2.1:
version "2.2.1"
@@ -3417,6 +3968,26 @@ read-pkg@^3.0.0:
normalize-package-data "^2.3.2"
path-type "^3.0.0"
+readable-stream@^3.4.0:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
+ integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
+readable-stream@^4.5.2:
+ version "4.5.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09"
+ integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==
+ dependencies:
+ abort-controller "^3.0.0"
+ buffer "^6.0.3"
+ events "^3.3.0"
+ process "^0.11.10"
+ string_decoder "^1.3.0"
+
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -3443,14 +4014,14 @@ regenerator-runtime@^0.14.0:
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2:
- version "1.5.2"
- resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334"
- integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42"
+ integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==
dependencies:
- call-bind "^1.0.6"
+ call-bind "^1.0.7"
define-properties "^1.2.1"
es-errors "^1.3.0"
- set-function-name "^2.0.1"
+ set-function-name "^2.0.2"
resolve-from@^4.0.0:
version "4.0.0"
@@ -3509,6 +4080,11 @@ safe-array-concat@^1.1.2:
has-symbols "^1.0.3"
isarray "^2.0.5"
+safe-buffer@~5.2.0:
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
safe-regex-test@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.3.tgz#a5b4c0f06e0ab50ea2c395c14d8371232924c377"
@@ -3518,6 +4094,11 @@ safe-regex-test@^1.0.3:
es-errors "^1.3.0"
is-regex "^1.1.4"
+safe-stable-stringify@^2.3.1:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd"
+ integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==
+
scheduler@^0.23.2:
version "0.23.2"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3"
@@ -3640,6 +4221,15 @@ signal-exit@^4.0.1:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+simple-git@^3.27.0:
+ version "3.27.0"
+ resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.27.0.tgz#f4b09e807bda56a4a3968f635c0e4888d3decbd5"
+ integrity sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==
+ dependencies:
+ "@kwsites/file-exists" "^1.1.1"
+ "@kwsites/promise-deferred" "^1.1.1"
+ debug "^4.3.5"
+
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
@@ -3652,10 +4242,10 @@ slash@^3.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-source-map-js@^1.0.2, source-map-js@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
- integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
+source-map-js@^1.0.2, source-map-js@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
+ integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
spdx-correct@^3.0.0:
version "3.2.0"
@@ -3683,6 +4273,23 @@ spdx-license-ids@^3.0.0:
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89"
integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==
+split@0.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/split/-/split-0.3.3.tgz#cd0eea5e63a211dfff7eb0f091c4133e2d0dd28f"
+ integrity sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==
+ dependencies:
+ through "2"
+
+stack-trace@0.0.x:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
+ integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==
+
+steno@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/steno/-/steno-4.0.2.tgz#9bd9b0ffc226a1f9436f29132c8b8e7199d22c50"
+ integrity sha512-yhPIQXjrlt1xv7dyPQg2P17URmXbuM5pdGkpiMB3RenprfiBlvK415Lctfe0eshk90oA7/tNq7WEiMK8RSP39A==
+
stop-iteration-iterator@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
@@ -3690,12 +4297,25 @@ stop-iteration-iterator@^1.0.0:
dependencies:
internal-slot "^1.0.4"
+stream-combiner@~0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14"
+ integrity sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==
+ dependencies:
+ duplexer "~0.1.1"
+
streamsearch@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
+string-argv@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6"
+ integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==
+
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0:
+ name string-width-cjs
version "4.2.3"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -3785,6 +4405,13 @@ string.prototype.trimstart@^1.0.8:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
+string_decoder@^1.1.1, string_decoder@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
@@ -3809,6 +4436,11 @@ strip-json-comments@^3.1.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
+strip-json-comments@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-5.0.1.tgz#0d8b7d01b23848ed7dbdf4baaaa31a8250d8cfa0"
+ integrity sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==
+
style-mod@^4.0.0, style-mod@^4.1.0:
version "4.1.2"
resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.1.2.tgz#ca238a1ad4786520f7515a8539d5a63691d7bf67"
@@ -3854,9 +4486,9 @@ supports-preserve-symlinks-flag@^1.0.0:
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
tailwind-merge@^2.5.2:
- version "2.5.2"
- resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.5.2.tgz#000f05a703058f9f9f3829c644235f81d4c08a1f"
- integrity sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==
+ version "2.5.3"
+ resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.5.3.tgz#579546e14ddda24462e0303acd8798c50f5511bb"
+ integrity sha512-d9ZolCAIzom1nf/5p4LdD5zvjmgSxY0BGgdSvmXIoMYAiPdAW/dSpP7joCDYFY7r/HkEa2qmPtkgsu0xjQeQtw==
tailwindcss-animate@^1.0.7:
version "1.0.7"
@@ -3864,9 +4496,9 @@ tailwindcss-animate@^1.0.7:
integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==
tailwindcss@^3.4.1:
- version "3.4.10"
- resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.10.tgz#70442d9aeb78758d1f911af29af8255ecdb8ffef"
- integrity sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==
+ version "3.4.13"
+ resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.13.tgz#3d11e5510660f99df4f1bfb2d78434666cb8f831"
+ integrity sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==
dependencies:
"@alloc/quick-lru" "^5.2.0"
arg "^5.0.2"
@@ -3896,6 +4528,11 @@ tapable@^2.2.0:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
+text-hex@1.0.x:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
+ integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
+
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -3915,6 +4552,11 @@ thenify-all@^1.0.0:
dependencies:
any-promise "^1.0.0"
+through@2, through@~2.3, through@~2.3.1:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+
to-regex-range@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
@@ -3922,6 +4564,11 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
+triple-beam@^1.3.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984"
+ integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==
+
ts-api-utils@^1.0.1, ts-api-utils@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.3.0.tgz#4b490e27129f1e8e686b45cc4ab63714dc60eea1"
@@ -3932,6 +4579,16 @@ ts-interface-checker@^0.1.9:
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
+tsc-watch@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/tsc-watch/-/tsc-watch-6.2.0.tgz#4b191c36c6ed24c2bf6e721013af0825cd73d217"
+ integrity sha512-2LBhf9kjKXnz7KQ/puLHlozMzzUNHAdYBNMkg3eksQJ9GBAgMg8czznM83T5PmsoUvDnXzfIeQn2lNcIYDr8LA==
+ dependencies:
+ cross-spawn "^7.0.3"
+ node-cleanup "^2.1.2"
+ ps-tree "^1.2.0"
+ string-argv "^0.3.1"
+
tsconfig-paths@^3.15.0:
version "3.15.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4"
@@ -3947,6 +4604,16 @@ tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
+tsx@^4.19.1:
+ version "4.19.1"
+ resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.1.tgz#b7bffdf4b565813e4dea14b90872af279cd0090b"
+ integrity sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==
+ dependencies:
+ esbuild "~0.23.0"
+ get-tsconfig "^4.7.5"
+ optionalDependencies:
+ fsevents "~2.3.3"
+
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
@@ -4003,10 +4670,10 @@ typed-array-length@^1.0.6:
is-typed-array "^1.1.13"
possible-typed-array-names "^1.0.0"
-typescript@^5:
- version "5.5.4"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba"
- integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==
+typescript@^5, typescript@^5.6.2:
+ version "5.6.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0"
+ integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==
unbox-primitive@^1.0.2:
version "1.0.2"
@@ -4023,6 +4690,11 @@ undici-types@~6.19.2:
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
+universal-user-agent@^7.0.0, universal-user-agent@^7.0.2:
+ version "7.0.2"
+ resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-7.0.2.tgz#52e7d0e9b3dc4df06cc33cb2b9fd79041a54827e"
+ integrity sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==
+
uri-js@^4.2.2:
version "4.4.1"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
@@ -4052,7 +4724,7 @@ usehooks-ts@^3.1.0:
dependencies:
lodash.debounce "^4.0.8"
-util-deprecate@^1.0.2:
+util-deprecate@^1.0.1, util-deprecate@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
@@ -4139,6 +4811,32 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
+winston-transport@^4.7.0:
+ version "4.8.0"
+ resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.8.0.tgz#a15080deaeb80338455ac52c863418c74fcf38ea"
+ integrity sha512-qxSTKswC6llEMZKgCQdaWgDuMJQnhuvF5f2Nk3SNXc4byfQ+voo2mX1Px9dkNOuR8p0KAjfPG29PuYUSIb+vSA==
+ dependencies:
+ logform "^2.6.1"
+ readable-stream "^4.5.2"
+ triple-beam "^1.3.0"
+
+winston@^3.15.0:
+ version "3.15.0"
+ resolved "https://registry.yarnpkg.com/winston/-/winston-3.15.0.tgz#4df7b70be091bc1a38a4f45b969fa79589b73ff5"
+ integrity sha512-RhruH2Cj0bV0WgNL+lOfoUBI4DVfdUNjVnJGVovWZmrcKtrFTTRzgXYK2O9cymSGjrERCtaAeHwMNnUWXlwZow==
+ dependencies:
+ "@colors/colors" "^1.6.0"
+ "@dabh/diagnostics" "^2.0.2"
+ async "^3.2.3"
+ is-stream "^2.0.0"
+ logform "^2.6.0"
+ one-time "^1.0.0"
+ readable-stream "^3.4.0"
+ safe-stable-stringify "^2.3.1"
+ stack-trace "0.0.x"
+ triple-beam "^1.3.0"
+ winston-transport "^4.7.0"
+
word-wrap@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"
@@ -4167,10 +4865,15 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
+xcase@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/xcase/-/xcase-2.0.1.tgz#c7fa72caa0f440db78fd5673432038ac984450b9"
+ integrity sha512-UmFXIPU+9Eg3E9m/728Bii0lAIuoc+6nbrNUKaRPJOFp91ih44qqGlWtxMB6kXFrRD6po+86ksHM5XHCfk6iPw==
+
yaml@^2.3.4:
- version "2.5.0"
- resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d"
- integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==
+ version "2.5.1"
+ resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130"
+ integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==
yocto-queue@^0.1.0:
version "0.1.0"