mirror of
https://github.com/sourcebot-dev/sourcebot.git
synced 2025-12-12 12:25:22 +00:00
Add @sourcebot/schemas package (#177)
This commit is contained in:
parent
78c9111fa0
commit
bae7ca3438
31 changed files with 1490 additions and 217 deletions
25
Dockerfile
25
Dockerfile
|
|
@ -10,13 +10,15 @@ RUN go mod download
|
||||||
COPY vendor/zoekt ./
|
COPY vendor/zoekt ./
|
||||||
RUN CGO_ENABLED=0 GOOS=linux go build -o /cmd/ ./cmd/...
|
RUN CGO_ENABLED=0 GOOS=linux go build -o /cmd/ ./cmd/...
|
||||||
|
|
||||||
# ------ Build Database ------
|
# ------ Build shared libraries ------
|
||||||
FROM node-alpine AS database-builder
|
FROM node-alpine AS shared-libs-builder
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
COPY package.json yarn.lock* ./
|
COPY package.json yarn.lock* ./
|
||||||
COPY ./packages/db ./packages/db
|
COPY ./packages/db ./packages/db
|
||||||
|
COPY ./packages/schemas ./packages/schemas
|
||||||
RUN yarn workspace @sourcebot/db install --frozen-lockfile
|
RUN yarn workspace @sourcebot/db install --frozen-lockfile
|
||||||
|
RUN yarn workspace @sourcebot/schemas install --frozen-lockfile
|
||||||
|
|
||||||
# ------ Build Web ------
|
# ------ Build Web ------
|
||||||
FROM node-alpine AS web-builder
|
FROM node-alpine AS web-builder
|
||||||
|
|
@ -25,8 +27,9 @@ WORKDIR /app
|
||||||
|
|
||||||
COPY package.json yarn.lock* ./
|
COPY package.json yarn.lock* ./
|
||||||
COPY ./packages/web ./packages/web
|
COPY ./packages/web ./packages/web
|
||||||
COPY --from=database-builder /app/node_modules ./node_modules
|
COPY --from=shared-libs-builder /app/node_modules ./node_modules
|
||||||
COPY --from=database-builder /app/packages/db ./packages/db
|
COPY --from=shared-libs-builder /app/packages/db ./packages/db
|
||||||
|
COPY --from=shared-libs-builder /app/packages/schemas ./packages/schemas
|
||||||
|
|
||||||
# Fixes arm64 timeouts
|
# Fixes arm64 timeouts
|
||||||
RUN yarn config set registry https://registry.npmjs.org/
|
RUN yarn config set registry https://registry.npmjs.org/
|
||||||
|
|
@ -54,8 +57,9 @@ WORKDIR /app
|
||||||
COPY package.json yarn.lock* ./
|
COPY package.json yarn.lock* ./
|
||||||
COPY ./schemas ./schemas
|
COPY ./schemas ./schemas
|
||||||
COPY ./packages/backend ./packages/backend
|
COPY ./packages/backend ./packages/backend
|
||||||
COPY --from=database-builder /app/node_modules ./node_modules
|
COPY --from=shared-libs-builder /app/node_modules ./node_modules
|
||||||
COPY --from=database-builder /app/packages/db ./packages/db
|
COPY --from=shared-libs-builder /app/packages/db ./packages/db
|
||||||
|
COPY --from=shared-libs-builder /app/packages/schemas ./packages/schemas
|
||||||
RUN yarn workspace @sourcebot/backend install --frozen-lockfile
|
RUN yarn workspace @sourcebot/backend install --frozen-lockfile
|
||||||
RUN yarn workspace @sourcebot/backend build
|
RUN yarn workspace @sourcebot/backend build
|
||||||
|
|
||||||
|
|
@ -114,21 +118,22 @@ COPY --from=zoekt-builder \
|
||||||
/cmd/zoekt-index \
|
/cmd/zoekt-index \
|
||||||
/usr/local/bin/
|
/usr/local/bin/
|
||||||
|
|
||||||
# Configure the webapp
|
# Copy all of the things
|
||||||
COPY --from=web-builder /app/packages/web/public ./packages/web/public
|
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/standalone ./
|
||||||
COPY --from=web-builder /app/packages/web/.next/static ./packages/web/.next/static
|
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/node_modules ./node_modules
|
||||||
COPY --from=backend-builder /app/packages/backend ./packages/backend
|
COPY --from=backend-builder /app/packages/backend ./packages/backend
|
||||||
|
|
||||||
|
COPY --from=shared-libs-builder /app/node_modules ./node_modules
|
||||||
|
COPY --from=shared-libs-builder /app/packages/db ./packages/db
|
||||||
|
COPY --from=shared-libs-builder /app/packages/schemas ./packages/schemas
|
||||||
|
|
||||||
# Configure the database
|
# Configure the database
|
||||||
RUN mkdir -p /run/postgresql && \
|
RUN mkdir -p /run/postgresql && \
|
||||||
chown -R postgres:postgres /run/postgresql && \
|
chown -R postgres:postgres /run/postgresql && \
|
||||||
chmod 775 /run/postgresql
|
chmod 775 /run/postgresql
|
||||||
COPY --from=database-builder /app/node_modules ./node_modules
|
|
||||||
COPY --from=database-builder /app/packages/db ./packages/db
|
|
||||||
|
|
||||||
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
|
||||||
COPY prefix-output.sh ./prefix-output.sh
|
COPY prefix-output.sh ./prefix-output.sh
|
||||||
|
|
|
||||||
2
Makefile
2
Makefile
|
|
@ -22,6 +22,8 @@ clean:
|
||||||
packages/backend/node_modules \
|
packages/backend/node_modules \
|
||||||
packages/db/node_modules \
|
packages/db/node_modules \
|
||||||
packages/db/dist \
|
packages/db/dist \
|
||||||
|
packages/schemas/node_modules \
|
||||||
|
packages/schemas/dist \
|
||||||
.sourcebot
|
.sourcebot
|
||||||
|
|
||||||
.PHONY: bin
|
.PHONY: bin
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,9 @@
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev:watch": "yarn generate:types && tsc-watch --preserveWatchOutput --onSuccess \"yarn dev --configPath ../../config.json --cacheDir ../../.sourcebot\"",
|
"dev:watch": "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",
|
"dev": "export PATH=\"$PWD/../../bin:$PATH\" && export CTAGS_COMMAND=ctags && node ./dist/index.js",
|
||||||
"build": "yarn generate:types && tsc",
|
"build": "tsc",
|
||||||
"generate:types": "tsx tools/generateTypes.ts",
|
|
||||||
"test": "vitest --config ./vitest.config.ts"
|
"test": "vitest --config ./vitest.config.ts"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
@ -33,6 +32,7 @@
|
||||||
"micromatch": "^4.0.8",
|
"micromatch": "^4.0.8",
|
||||||
"posthog-node": "^4.2.1",
|
"posthog-node": "^4.2.1",
|
||||||
"@sourcebot/db": "^0.1.0",
|
"@sourcebot/db": "^0.1.0",
|
||||||
|
"@sourcebot/schemas": "^0.1.0",
|
||||||
"simple-git": "^3.27.0",
|
"simple-git": "^3.27.0",
|
||||||
"strip-json-comments": "^5.0.1",
|
"strip-json-comments": "^5.0.1",
|
||||||
"winston": "^3.15.0",
|
"winston": "^3.15.0",
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import { readFile } from 'fs/promises';
|
||||||
import stripJsonComments from 'strip-json-comments';
|
import stripJsonComments from 'strip-json-comments';
|
||||||
import { getGitHubReposFromConfig } from "./github.js";
|
import { getGitHubReposFromConfig } from "./github.js";
|
||||||
import { getGitLabReposFromConfig, GITLAB_CLOUD_HOSTNAME } from "./gitlab.js";
|
import { getGitLabReposFromConfig, GITLAB_CLOUD_HOSTNAME } from "./gitlab.js";
|
||||||
import { SourcebotConfigurationSchema } from "./schemas/v2.js";
|
import { SourcebotConfigurationSchema } from "@sourcebot/schemas/v2/index.type";
|
||||||
import { AppContext } from "./types.js";
|
import { AppContext } from "./types.js";
|
||||||
import { getTokenFromConfig, isRemotePath, marshalBool } from "./utils.js";
|
import { getTokenFromConfig, isRemotePath, marshalBool } from "./utils.js";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import fetch from 'cross-fetch';
|
import fetch from 'cross-fetch';
|
||||||
import { GerritConfig } from './schemas/v2.js';
|
import { GerritConfig } from "@sourcebot/schemas/v2/index.type"
|
||||||
import { AppContext, GitRepository } from './types.js';
|
import { AppContext, GitRepository } from './types.js';
|
||||||
import { createLogger } from './logger.js';
|
import { createLogger } from './logger.js';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { GitRepository, AppContext } from './types.js';
|
import { GitRepository, AppContext } from './types.js';
|
||||||
import { simpleGit, SimpleGitProgressEvent } from 'simple-git';
|
import { simpleGit, SimpleGitProgressEvent } from 'simple-git';
|
||||||
import { createLogger } from './logger.js';
|
import { createLogger } from './logger.js';
|
||||||
import { GitConfig } from './schemas/v2.js';
|
import { GitConfig } from "@sourcebot/schemas/v2/index.type"
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
|
|
||||||
const logger = createLogger('git');
|
const logger = createLogger('git');
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { Api, giteaApi, HttpResponse, Repository as GiteaRepository } from 'gitea-js';
|
import { Api, giteaApi, HttpResponse, Repository as GiteaRepository } from 'gitea-js';
|
||||||
import { GiteaConfig } from './schemas/v2.js';
|
import { GiteaConfig } from "@sourcebot/schemas/v2/index.type"
|
||||||
import { excludeArchivedRepos, excludeForkedRepos, excludeReposByName, getTokenFromConfig, marshalBool, measure } from './utils.js';
|
import { excludeArchivedRepos, excludeForkedRepos, excludeReposByName, getTokenFromConfig, marshalBool, measure } from './utils.js';
|
||||||
import { AppContext, GitRepository } from './types.js';
|
import { AppContext, GitRepository } from './types.js';
|
||||||
import fetch from 'cross-fetch';
|
import fetch from 'cross-fetch';
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { Octokit } from "@octokit/rest";
|
import { Octokit } from "@octokit/rest";
|
||||||
import { GitHubConfig } from "./schemas/v2.js";
|
import { GitHubConfig } from "@sourcebot/schemas/v2/index.type"
|
||||||
import { createLogger } from "./logger.js";
|
import { createLogger } from "./logger.js";
|
||||||
import { AppContext } from "./types.js";
|
import { AppContext } from "./types.js";
|
||||||
import { getTokenFromConfig, measure } from "./utils.js";
|
import { getTokenFromConfig, measure } from "./utils.js";
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { Gitlab, ProjectSchema } from "@gitbeaker/rest";
|
import { Gitlab, ProjectSchema } from "@gitbeaker/rest";
|
||||||
import micromatch from "micromatch";
|
import micromatch from "micromatch";
|
||||||
import { createLogger } from "./logger.js";
|
import { createLogger } from "./logger.js";
|
||||||
import { GitLabConfig } from "./schemas/v2.js";
|
import { GitLabConfig } from "@sourcebot/schemas/v2/index.type"
|
||||||
import { AppContext } from "./types.js";
|
import { AppContext } from "./types.js";
|
||||||
import { getTokenFromConfig, measure } from "./utils.js";
|
import { getTokenFromConfig, measure } from "./utils.js";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { existsSync, FSWatcher, statSync, watch } from "fs";
|
import { existsSync, FSWatcher, statSync, watch } from "fs";
|
||||||
import { createLogger } from "./logger.js";
|
import { createLogger } from "./logger.js";
|
||||||
import { LocalConfig } from "./schemas/v2.js";
|
import { LocalConfig } from "@sourcebot/schemas/v2/index.type"
|
||||||
import { AppContext, LocalRepository } from "./types.js";
|
import { AppContext, LocalRepository } from "./types.js";
|
||||||
import { resolvePathRelativeToConfig } from "./utils.js";
|
import { resolvePathRelativeToConfig } from "./utils.js";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import { Queue, Worker, Job } from 'bullmq';
|
||||||
import { Redis } from 'ioredis';
|
import { Redis } from 'ioredis';
|
||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
import { SOURCEBOT_TENANT_MODE } from './environment.js';
|
import { SOURCEBOT_TENANT_MODE } from './environment.js';
|
||||||
import { SourcebotConfigurationSchema } from './schemas/v2.js';
|
import { SourcebotConfigurationSchema } from "@sourcebot/schemas/v2/index.type"
|
||||||
|
|
||||||
const logger = createLogger('main');
|
const logger = createLogger('main');
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
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,
|
|
||||||
ignoreMinAndMaxItems: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
await fs.promises.writeFile(
|
|
||||||
outputPath,
|
|
||||||
content,
|
|
||||||
"utf-8"
|
|
||||||
);
|
|
||||||
})();
|
|
||||||
21
packages/schemas/package.json
Normal file
21
packages/schemas/package.json
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"name": "@sourcebot/schemas",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"build": "yarn generate && tsc",
|
||||||
|
"generate": "tsx tools/generate.ts",
|
||||||
|
"postinstall": "yarn build"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@apidevtools/json-schema-ref-parser": "^11.7.3",
|
||||||
|
"glob": "^11.0.1",
|
||||||
|
"json-schema-to-typescript": "^15.0.4",
|
||||||
|
"tsx": "^4.19.2",
|
||||||
|
"typescript": "^5.7.3"
|
||||||
|
},
|
||||||
|
"exports": {
|
||||||
|
"./v2/*": "./dist/v2/*.js",
|
||||||
|
"./v3/*": "./dist/v3/*.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
137
packages/schemas/src/v1/index.schema.ts
Normal file
137
packages/schemas/src/v1/index.schema.ts
Normal file
|
|
@ -0,0 +1,137 @@
|
||||||
|
// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!
|
||||||
|
const schema = {
|
||||||
|
"$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
|
||||||
|
} as const;
|
||||||
|
export { schema as indexSchema };
|
||||||
88
packages/schemas/src/v1/index.type.ts
Normal file
88
packages/schemas/src/v1/index.type.ts
Normal file
|
|
@ -0,0 +1,88 @@
|
||||||
|
// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Index`'s JSON-Schema
|
||||||
|
* via the `definition` "ZoektConfig".
|
||||||
|
*/
|
||||||
|
export type ZoektConfig = GitHubConfig | GitLabConfig;
|
||||||
|
/**
|
||||||
|
* Only clone repos whose name matches the given regexp.
|
||||||
|
*
|
||||||
|
* This interface was referenced by `Index`'s JSON-Schema
|
||||||
|
* via the `definition` "RepoNameRegexIncludeFilter".
|
||||||
|
*/
|
||||||
|
export type RepoNameRegexIncludeFilter = string;
|
||||||
|
/**
|
||||||
|
* Don't mirror repos whose names match this regexp.
|
||||||
|
*
|
||||||
|
* This interface was referenced by `Index`'s JSON-Schema
|
||||||
|
* via the `definition` "RepoNameRegexExcludeFilter".
|
||||||
|
*/
|
||||||
|
export type RepoNameRegexExcludeFilter = string;
|
||||||
|
|
||||||
|
export interface Index {
|
||||||
|
$schema?: string;
|
||||||
|
Configs: ZoektConfig[];
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Index`'s JSON-Schema
|
||||||
|
* via the `definition` "GitHubConfig".
|
||||||
|
*/
|
||||||
|
export interface GitHubConfig {
|
||||||
|
Type: "github";
|
||||||
|
/**
|
||||||
|
* GitHub Enterprise url. If not set github.com will be used as the host.
|
||||||
|
*/
|
||||||
|
GitHubUrl?: string;
|
||||||
|
/**
|
||||||
|
* The GitHub user to mirror
|
||||||
|
*/
|
||||||
|
GitHubUser?: string;
|
||||||
|
/**
|
||||||
|
* The GitHub organization to mirror
|
||||||
|
*/
|
||||||
|
GitHubOrg?: string;
|
||||||
|
Name?: RepoNameRegexIncludeFilter;
|
||||||
|
Exclude?: RepoNameRegexExcludeFilter;
|
||||||
|
/**
|
||||||
|
* Path to a file containing a GitHub access token.
|
||||||
|
*/
|
||||||
|
CredentialPath?: string;
|
||||||
|
/**
|
||||||
|
* Only mirror repos that have one of the given topics
|
||||||
|
*/
|
||||||
|
Topics?: string[];
|
||||||
|
/**
|
||||||
|
* Don't mirror repos that have one of the given topics
|
||||||
|
*/
|
||||||
|
ExcludeTopics?: string[];
|
||||||
|
/**
|
||||||
|
* Mirror repos that are _not_ archived
|
||||||
|
*/
|
||||||
|
NoArchived?: boolean;
|
||||||
|
/**
|
||||||
|
* Also mirror forks
|
||||||
|
*/
|
||||||
|
IncludeForks?: boolean;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Index`'s JSON-Schema
|
||||||
|
* via the `definition` "GitLabConfig".
|
||||||
|
*/
|
||||||
|
export interface GitLabConfig {
|
||||||
|
Type: "gitlab";
|
||||||
|
/**
|
||||||
|
* The GitLab API url.
|
||||||
|
*/
|
||||||
|
GitLabURL?: string;
|
||||||
|
Name?: RepoNameRegexIncludeFilter;
|
||||||
|
Exclude?: RepoNameRegexExcludeFilter;
|
||||||
|
/**
|
||||||
|
* Only mirror public repos
|
||||||
|
*/
|
||||||
|
OnlyPublic?: boolean;
|
||||||
|
/**
|
||||||
|
* Path to a file containing a GitLab access token.
|
||||||
|
*/
|
||||||
|
CredentialPath?: string;
|
||||||
|
}
|
||||||
640
packages/schemas/src/v2/index.schema.ts
Normal file
640
packages/schemas/src/v2/index.schema.ts
Normal file
|
|
@ -0,0 +1,640 @@
|
||||||
|
// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!
|
||||||
|
const schema = {
|
||||||
|
"$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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"GitRevisions": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "The revisions (branches, tags) that should be included when indexing. The default branch (HEAD) is always indexed.",
|
||||||
|
"properties": {
|
||||||
|
"branches": {
|
||||||
|
"type": "array",
|
||||||
|
"description": "List of branches to include when indexing. For a given repo, only the branches that exist on the repo's remote *and* match at least one of the provided `branches` will be indexed. The default branch (HEAD) is always indexed. Glob patterns are supported.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"main",
|
||||||
|
"release/*"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"**"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"default": []
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"type": "array",
|
||||||
|
"description": "List of tags to include when indexing. For a given repo, only the tags that exist on the repo's remote *and* match at least one of the provided `tags` will be indexed. Glob patterns are supported.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"latest",
|
||||||
|
"v2.*.*"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"**"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"default": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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}'."
|
||||||
|
},
|
||||||
|
"topics": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"minItems": 1,
|
||||||
|
"description": "List of repository topics to include when syncing. Only repositories that match at least one of the provided `topics` will be synced. If not specified, all repositories will be synced, unless explicitly defined in the `exclude` property. Glob patterns are supported.",
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"docs",
|
||||||
|
"core"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tenantId": {
|
||||||
|
"type": "number",
|
||||||
|
"description": "@nocheckin"
|
||||||
|
},
|
||||||
|
"exclude": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"forks": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Exclude forked repositories from syncing."
|
||||||
|
},
|
||||||
|
"archived": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Exclude archived repositories from syncing."
|
||||||
|
},
|
||||||
|
"repos": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"default": [],
|
||||||
|
"description": "List of individual repositories to exclude from syncing. Glob patterns are supported."
|
||||||
|
},
|
||||||
|
"topics": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": "List of repository topics to exclude when syncing. Repositories that match one of the provided `topics` will be excluded from syncing. Glob patterns are supported.",
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"tests",
|
||||||
|
"ci"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Exclude repositories based on their disk usage. Note: the disk usage is calculated by GitHub and may not reflect the actual disk usage when cloned.",
|
||||||
|
"properties": {
|
||||||
|
"min": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Minimum repository size (in bytes) to sync (inclusive). Repositories less than this size will be excluded from syncing."
|
||||||
|
},
|
||||||
|
"max": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Maximum repository size (in bytes) to sync (inclusive). Repositories greater than this size will be excluded from syncing."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"revisions": {
|
||||||
|
"$ref": "#/definitions/GitRevisions"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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]*$"
|
||||||
|
},
|
||||||
|
"all": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Sync all projects visible to the provided `token` (if any) in the GitLab instance. This option is ignored if `url` is either unset or set to https://gitlab.com ."
|
||||||
|
},
|
||||||
|
"users": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": "List of users to sync with. All projects owned by the user and visible to the provided `token` (if any) 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 (and recursive subgroups) 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/"
|
||||||
|
},
|
||||||
|
"topics": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"minItems": 1,
|
||||||
|
"description": "List of project topics to include when syncing. Only projects that match at least one of the provided `topics` will be synced. If not specified, all projects will be synced, unless explicitly defined in the `exclude` property. Glob patterns are supported.",
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"docs",
|
||||||
|
"core"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"exclude": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"forks": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Exclude forked projects from syncing."
|
||||||
|
},
|
||||||
|
"archived": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Exclude archived projects from syncing."
|
||||||
|
},
|
||||||
|
"projects": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"default": [],
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"my-group/my-project"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"description": "List of projects to exclude from syncing. Glob patterns are supported. The project's namespace must be specified, see: https://docs.gitlab.com/ee/user/namespace/"
|
||||||
|
},
|
||||||
|
"topics": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": "List of project topics to exclude when syncing. Projects that match one of the provided `topics` will be excluded from syncing. Glob patterns are supported.",
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"tests",
|
||||||
|
"ci"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"revisions": {
|
||||||
|
"$ref": "#/definitions/GitRevisions"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"GiteaConfig": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"const": "gitea",
|
||||||
|
"description": "Gitea Configuration"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"$ref": "#/definitions/Token",
|
||||||
|
"description": "An access token.",
|
||||||
|
"examples": [
|
||||||
|
"secret-token",
|
||||||
|
{
|
||||||
|
"env": "ENV_VAR_CONTAINING_TOKEN"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "url",
|
||||||
|
"default": "https://gitea.com",
|
||||||
|
"description": "The URL of the Gitea host. Defaults to https://gitea.com",
|
||||||
|
"examples": [
|
||||||
|
"https://gitea.com",
|
||||||
|
"https://gitea.example.com"
|
||||||
|
],
|
||||||
|
"pattern": "^https?:\\/\\/[^\\s/$.?#].[^\\s]*$"
|
||||||
|
},
|
||||||
|
"orgs": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"my-org-name"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"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. If a `token` is provided, it must have the read:organization scope."
|
||||||
|
},
|
||||||
|
"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}'."
|
||||||
|
},
|
||||||
|
"users": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"username-1",
|
||||||
|
"username-2"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"description": "List of users to sync with. All repositories that the user owns will be synced, unless explicitly defined in the `exclude` property. If a `token` is provided, it must have the read:user scope."
|
||||||
|
},
|
||||||
|
"exclude": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"forks": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Exclude forked repositories from syncing."
|
||||||
|
},
|
||||||
|
"archived": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Exclude archived repositories from syncing."
|
||||||
|
},
|
||||||
|
"repos": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"default": [],
|
||||||
|
"description": "List of individual repositories to exclude from syncing. Glob patterns are supported."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"revisions": {
|
||||||
|
"$ref": "#/definitions/GitRevisions"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"GerritConfig": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"const": "gerrit",
|
||||||
|
"description": "Gerrit Configuration"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "url",
|
||||||
|
"description": "The URL of the Gerrit host.",
|
||||||
|
"examples": [
|
||||||
|
"https://gerrit.example.com"
|
||||||
|
],
|
||||||
|
"pattern": "^https?:\\/\\/[^\\s/$.?#].[^\\s]*$"
|
||||||
|
},
|
||||||
|
"projects": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": "List of specific projects to sync. If not specified, all projects will be synced. Glob patterns are supported",
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"project1/repo1",
|
||||||
|
"project2/**"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"exclude": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"projects": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"project1/repo1",
|
||||||
|
"project2/**"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"description": "List of specific projects to exclude from syncing."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type",
|
||||||
|
"url"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"LocalConfig": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"const": "local",
|
||||||
|
"description": "Local Configuration"
|
||||||
|
},
|
||||||
|
"path": {
|
||||||
|
"type": "string",
|
||||||
|
"description": "Path to the local directory to sync with. Relative paths are relative to the configuration file's directory.",
|
||||||
|
"pattern": ".+"
|
||||||
|
},
|
||||||
|
"watch": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true,
|
||||||
|
"description": "Enables a file watcher that will automatically re-sync when changes are made within `path` (recursively). Defaults to true."
|
||||||
|
},
|
||||||
|
"exclude": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"paths": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"pattern": ".+"
|
||||||
|
},
|
||||||
|
"description": "List of paths relative to the provided `path` to exclude from the index. .git, .hg, and .svn are always exluded.",
|
||||||
|
"default": [],
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"node_modules",
|
||||||
|
"bin",
|
||||||
|
"dist",
|
||||||
|
"build",
|
||||||
|
"out"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type",
|
||||||
|
"path"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"GitConfig": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"const": "git",
|
||||||
|
"description": "Git Configuration"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "url",
|
||||||
|
"description": "The URL to the git repository."
|
||||||
|
},
|
||||||
|
"revisions": {
|
||||||
|
"$ref": "#/definitions/GitRevisions"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type",
|
||||||
|
"url"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"Repos": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/definitions/GitHubConfig"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/definitions/GitLabConfig"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/definitions/GiteaConfig"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/definitions/GerritConfig"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/definitions/LocalConfig"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/definitions/GitConfig"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Settings": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Global settings. These settings are applied to all repositories.",
|
||||||
|
"properties": {
|
||||||
|
"maxFileSize": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "The maximum size of a file (in bytes) to be indexed. Files that exceed this maximum will not be inexed. Defaults to 2MB (2097152 bytes).",
|
||||||
|
"default": 2097152,
|
||||||
|
"minimum": 1
|
||||||
|
},
|
||||||
|
"autoDeleteStaleRepos": {
|
||||||
|
"type": "boolean",
|
||||||
|
"description": "Automatically delete stale repositories from the index. Defaults to true.",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
"reindexInterval": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "The interval (in milliseconds) at which the indexer should re-index all repositories. Repositories are always indexed when first added. Defaults to 1 hour (3600000 milliseconds).",
|
||||||
|
"default": 3600000,
|
||||||
|
"minimum": 1
|
||||||
|
},
|
||||||
|
"resyncInterval": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "The interval (in milliseconds) at which the configuration file should be re-synced. The configuration file is always synced on startup. Defaults to 24 hours (86400000 milliseconds).",
|
||||||
|
"default": 86400000,
|
||||||
|
"minimum": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"properties": {
|
||||||
|
"$schema": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"$ref": "#/definitions/Settings"
|
||||||
|
},
|
||||||
|
"repos": {
|
||||||
|
"type": "array",
|
||||||
|
"description": "Defines a collection of repositories from varying code hosts that Sourcebot should sync with.",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/Repos"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
} as const;
|
||||||
|
export { schema as indexSchema };
|
||||||
|
|
@ -1,6 +1,22 @@
|
||||||
// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!
|
// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `SourcebotConfigurationSchema`'s JSON-Schema
|
||||||
|
* via the `definition` "Repos".
|
||||||
|
*/
|
||||||
export type Repos = GitHubConfig | GitLabConfig | GiteaConfig | GerritConfig | LocalConfig | GitConfig;
|
export type Repos = GitHubConfig | GitLabConfig | GiteaConfig | GerritConfig | LocalConfig | GitConfig;
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `SourcebotConfigurationSchema`'s JSON-Schema
|
||||||
|
* via the `definition` "Token".
|
||||||
|
*/
|
||||||
|
export type Token =
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
/**
|
||||||
|
* The name of the environment variable that contains the token.
|
||||||
|
*/
|
||||||
|
env: string;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Sourcebot configuration file outlines which repositories Sourcebot should sync and index.
|
* A Sourcebot configuration file outlines which repositories Sourcebot should sync and index.
|
||||||
|
|
@ -15,6 +31,9 @@ export interface SourcebotConfigurationSchema {
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Global settings. These settings are applied to all repositories.
|
* Global settings. These settings are applied to all repositories.
|
||||||
|
*
|
||||||
|
* This interface was referenced by `SourcebotConfigurationSchema`'s JSON-Schema
|
||||||
|
* via the `definition` "Settings".
|
||||||
*/
|
*/
|
||||||
export interface Settings {
|
export interface Settings {
|
||||||
/**
|
/**
|
||||||
|
|
@ -34,6 +53,10 @@ export interface Settings {
|
||||||
*/
|
*/
|
||||||
resyncInterval?: number;
|
resyncInterval?: number;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `SourcebotConfigurationSchema`'s JSON-Schema
|
||||||
|
* via the `definition` "GitHubConfig".
|
||||||
|
*/
|
||||||
export interface GitHubConfig {
|
export interface GitHubConfig {
|
||||||
/**
|
/**
|
||||||
* GitHub Configuration
|
* GitHub Configuration
|
||||||
|
|
@ -111,6 +134,9 @@ export interface GitHubConfig {
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* The revisions (branches, tags) that should be included when indexing. The default branch (HEAD) is always indexed.
|
* The revisions (branches, tags) that should be included when indexing. The default branch (HEAD) is always indexed.
|
||||||
|
*
|
||||||
|
* This interface was referenced by `SourcebotConfigurationSchema`'s JSON-Schema
|
||||||
|
* via the `definition` "GitRevisions".
|
||||||
*/
|
*/
|
||||||
export interface GitRevisions {
|
export interface GitRevisions {
|
||||||
/**
|
/**
|
||||||
|
|
@ -122,6 +148,10 @@ export interface GitRevisions {
|
||||||
*/
|
*/
|
||||||
tags?: string[];
|
tags?: string[];
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `SourcebotConfigurationSchema`'s JSON-Schema
|
||||||
|
* via the `definition` "GitLabConfig".
|
||||||
|
*/
|
||||||
export interface GitLabConfig {
|
export interface GitLabConfig {
|
||||||
/**
|
/**
|
||||||
* GitLab Configuration
|
* GitLab Configuration
|
||||||
|
|
@ -184,6 +214,10 @@ export interface GitLabConfig {
|
||||||
};
|
};
|
||||||
revisions?: GitRevisions;
|
revisions?: GitRevisions;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `SourcebotConfigurationSchema`'s JSON-Schema
|
||||||
|
* via the `definition` "GiteaConfig".
|
||||||
|
*/
|
||||||
export interface GiteaConfig {
|
export interface GiteaConfig {
|
||||||
/**
|
/**
|
||||||
* Gitea Configuration
|
* Gitea Configuration
|
||||||
|
|
@ -232,6 +266,10 @@ export interface GiteaConfig {
|
||||||
};
|
};
|
||||||
revisions?: GitRevisions;
|
revisions?: GitRevisions;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `SourcebotConfigurationSchema`'s JSON-Schema
|
||||||
|
* via the `definition` "GerritConfig".
|
||||||
|
*/
|
||||||
export interface GerritConfig {
|
export interface GerritConfig {
|
||||||
/**
|
/**
|
||||||
* Gerrit Configuration
|
* Gerrit Configuration
|
||||||
|
|
@ -252,6 +290,10 @@ export interface GerritConfig {
|
||||||
projects?: string[];
|
projects?: string[];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `SourcebotConfigurationSchema`'s JSON-Schema
|
||||||
|
* via the `definition` "LocalConfig".
|
||||||
|
*/
|
||||||
export interface LocalConfig {
|
export interface LocalConfig {
|
||||||
/**
|
/**
|
||||||
* Local Configuration
|
* Local Configuration
|
||||||
|
|
@ -272,6 +314,10 @@ export interface LocalConfig {
|
||||||
paths?: string[];
|
paths?: string[];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `SourcebotConfigurationSchema`'s JSON-Schema
|
||||||
|
* via the `definition` "GitConfig".
|
||||||
|
*/
|
||||||
export interface GitConfig {
|
export interface GitConfig {
|
||||||
/**
|
/**
|
||||||
* Git Configuration
|
* Git Configuration
|
||||||
205
packages/schemas/src/v3/github.schema.ts
Normal file
205
packages/schemas/src/v3/github.schema.ts
Normal file
|
|
@ -0,0 +1,205 @@
|
||||||
|
// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!
|
||||||
|
const schema = {
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"type": "object",
|
||||||
|
"title": "GitHubConfig",
|
||||||
|
"properties": {
|
||||||
|
"type": {
|
||||||
|
"const": "github",
|
||||||
|
"description": "GitHub Configuration"
|
||||||
|
},
|
||||||
|
"token": {
|
||||||
|
"description": "A Personal Access Token (PAT).",
|
||||||
|
"examples": [
|
||||||
|
"secret-token",
|
||||||
|
{
|
||||||
|
"env": "ENV_VAR_CONTAINING_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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"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}'."
|
||||||
|
},
|
||||||
|
"topics": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"minItems": 1,
|
||||||
|
"description": "List of repository topics to include when syncing. Only repositories that match at least one of the provided `topics` will be synced. If not specified, all repositories will be synced, unless explicitly defined in the `exclude` property. Glob patterns are supported.",
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"docs",
|
||||||
|
"core"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"tenantId": {
|
||||||
|
"type": "number",
|
||||||
|
"description": "@nocheckin"
|
||||||
|
},
|
||||||
|
"exclude": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"forks": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Exclude forked repositories from syncing."
|
||||||
|
},
|
||||||
|
"archived": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false,
|
||||||
|
"description": "Exclude archived repositories from syncing."
|
||||||
|
},
|
||||||
|
"repos": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"default": [],
|
||||||
|
"description": "List of individual repositories to exclude from syncing. Glob patterns are supported."
|
||||||
|
},
|
||||||
|
"topics": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": "List of repository topics to exclude when syncing. Repositories that match one of the provided `topics` will be excluded from syncing. Glob patterns are supported.",
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"tests",
|
||||||
|
"ci"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "Exclude repositories based on their disk usage. Note: the disk usage is calculated by GitHub and may not reflect the actual disk usage when cloned.",
|
||||||
|
"properties": {
|
||||||
|
"min": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Minimum repository size (in bytes) to sync (inclusive). Repositories less than this size will be excluded from syncing."
|
||||||
|
},
|
||||||
|
"max": {
|
||||||
|
"type": "integer",
|
||||||
|
"description": "Maximum repository size (in bytes) to sync (inclusive). Repositories greater than this size will be excluded from syncing."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"revisions": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "The revisions (branches, tags) that should be included when indexing. The default branch (HEAD) is always indexed.",
|
||||||
|
"properties": {
|
||||||
|
"branches": {
|
||||||
|
"type": "array",
|
||||||
|
"description": "List of branches to include when indexing. For a given repo, only the branches that exist on the repo's remote *and* match at least one of the provided `branches` will be indexed. The default branch (HEAD) is always indexed. Glob patterns are supported.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"main",
|
||||||
|
"release/*"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"**"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"default": []
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"type": "array",
|
||||||
|
"description": "List of tags to include when indexing. For a given repo, only the tags that exist on the repo's remote *and* match at least one of the provided `tags` will be indexed. Glob patterns are supported.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"latest",
|
||||||
|
"v2.*.*"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"**"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"default": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
} as const;
|
||||||
|
export { schema as githubSchema };
|
||||||
90
packages/schemas/src/v3/github.type.ts
Normal file
90
packages/schemas/src/v3/github.type.ts
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!
|
||||||
|
|
||||||
|
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[];
|
||||||
|
/**
|
||||||
|
* List of repository topics to include when syncing. Only repositories that match at least one of the provided `topics` will be synced. If not specified, all repositories will be synced, unless explicitly defined in the `exclude` property. Glob patterns are supported.
|
||||||
|
*
|
||||||
|
* @minItems 1
|
||||||
|
*/
|
||||||
|
topics?: string[];
|
||||||
|
/**
|
||||||
|
* @nocheckin
|
||||||
|
*/
|
||||||
|
tenantId?: number;
|
||||||
|
exclude?: {
|
||||||
|
/**
|
||||||
|
* Exclude forked repositories from syncing.
|
||||||
|
*/
|
||||||
|
forks?: boolean;
|
||||||
|
/**
|
||||||
|
* Exclude archived repositories from syncing.
|
||||||
|
*/
|
||||||
|
archived?: boolean;
|
||||||
|
/**
|
||||||
|
* List of individual repositories to exclude from syncing. Glob patterns are supported.
|
||||||
|
*/
|
||||||
|
repos?: string[];
|
||||||
|
/**
|
||||||
|
* List of repository topics to exclude when syncing. Repositories that match one of the provided `topics` will be excluded from syncing. Glob patterns are supported.
|
||||||
|
*/
|
||||||
|
topics?: string[];
|
||||||
|
/**
|
||||||
|
* Exclude repositories based on their disk usage. Note: the disk usage is calculated by GitHub and may not reflect the actual disk usage when cloned.
|
||||||
|
*/
|
||||||
|
size?: {
|
||||||
|
/**
|
||||||
|
* Minimum repository size (in bytes) to sync (inclusive). Repositories less than this size will be excluded from syncing.
|
||||||
|
*/
|
||||||
|
min?: number;
|
||||||
|
/**
|
||||||
|
* Maximum repository size (in bytes) to sync (inclusive). Repositories greater than this size will be excluded from syncing.
|
||||||
|
*/
|
||||||
|
max?: number;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
revisions?: GitRevisions;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* The revisions (branches, tags) that should be included when indexing. The default branch (HEAD) is always indexed.
|
||||||
|
*/
|
||||||
|
export interface GitRevisions {
|
||||||
|
/**
|
||||||
|
* List of branches to include when indexing. For a given repo, only the branches that exist on the repo's remote *and* match at least one of the provided `branches` will be indexed. The default branch (HEAD) is always indexed. Glob patterns are supported.
|
||||||
|
*/
|
||||||
|
branches?: string[];
|
||||||
|
/**
|
||||||
|
* List of tags to include when indexing. For a given repo, only the tags that exist on the repo's remote *and* match at least one of the provided `tags` will be indexed. Glob patterns are supported.
|
||||||
|
*/
|
||||||
|
tags?: string[];
|
||||||
|
}
|
||||||
69
packages/schemas/src/v3/shared.schema.ts
Normal file
69
packages/schemas/src/v3/shared.schema.ts
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!
|
||||||
|
const schema = {
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"type": "object",
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"GitRevisions": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "The revisions (branches, tags) that should be included when indexing. The default branch (HEAD) is always indexed.",
|
||||||
|
"properties": {
|
||||||
|
"branches": {
|
||||||
|
"type": "array",
|
||||||
|
"description": "List of branches to include when indexing. For a given repo, only the branches that exist on the repo's remote *and* match at least one of the provided `branches` will be indexed. The default branch (HEAD) is always indexed. Glob patterns are supported.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"main",
|
||||||
|
"release/*"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"**"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"default": []
|
||||||
|
},
|
||||||
|
"tags": {
|
||||||
|
"type": "array",
|
||||||
|
"description": "List of tags to include when indexing. For a given repo, only the tags that exist on the repo's remote *and* match at least one of the provided `tags` will be indexed. Glob patterns are supported.",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"examples": [
|
||||||
|
[
|
||||||
|
"latest",
|
||||||
|
"v2.*.*"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"**"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"default": []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"additionalProperties": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} as const;
|
||||||
|
export { schema as sharedSchema };
|
||||||
34
packages/schemas/src/v3/shared.type.ts
Normal file
34
packages/schemas/src/v3/shared.type.ts
Normal file
|
|
@ -0,0 +1,34 @@
|
||||||
|
// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This interface was referenced by `Shared`'s JSON-Schema
|
||||||
|
* via the `definition` "Token".
|
||||||
|
*/
|
||||||
|
export type Token =
|
||||||
|
| string
|
||||||
|
| {
|
||||||
|
/**
|
||||||
|
* The name of the environment variable that contains the token.
|
||||||
|
*/
|
||||||
|
env: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export interface Shared {
|
||||||
|
[k: string]: unknown;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* The revisions (branches, tags) that should be included when indexing. The default branch (HEAD) is always indexed.
|
||||||
|
*
|
||||||
|
* This interface was referenced by `Shared`'s JSON-Schema
|
||||||
|
* via the `definition` "GitRevisions".
|
||||||
|
*/
|
||||||
|
export interface GitRevisions {
|
||||||
|
/**
|
||||||
|
* List of branches to include when indexing. For a given repo, only the branches that exist on the repo's remote *and* match at least one of the provided `branches` will be indexed. The default branch (HEAD) is always indexed. Glob patterns are supported.
|
||||||
|
*/
|
||||||
|
branches?: string[];
|
||||||
|
/**
|
||||||
|
* List of tags to include when indexing. For a given repo, only the tags that exist on the repo's remote *and* match at least one of the provided `tags` will be indexed. Glob patterns are supported.
|
||||||
|
*/
|
||||||
|
tags?: string[];
|
||||||
|
}
|
||||||
48
packages/schemas/tools/generate.ts
Normal file
48
packages/schemas/tools/generate.ts
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
import path, { dirname } from "path";
|
||||||
|
import { mkdir, rm, writeFile } from "fs/promises";
|
||||||
|
import $RefParser from "@apidevtools/json-schema-ref-parser";
|
||||||
|
import { compileFromFile } from "json-schema-to-typescript";
|
||||||
|
import { glob } from "glob";
|
||||||
|
|
||||||
|
|
||||||
|
const BANNER_COMMENT = '// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!\n';
|
||||||
|
// const SCHEMAS: string[] = ["github.json", "shared.json"];
|
||||||
|
|
||||||
|
(async () => {
|
||||||
|
const cwd = process.cwd();
|
||||||
|
const schemasBasePath = path.resolve(`${cwd}/../../schemas`);
|
||||||
|
const schemas = await glob(`${schemasBasePath}/**/*.json`)
|
||||||
|
|
||||||
|
await Promise.all(schemas.map(async (schemaPath) => {
|
||||||
|
const name = path.parse(schemaPath).name;
|
||||||
|
const version = path.basename(path.dirname(schemaPath));
|
||||||
|
const outDir = path.join(cwd, `src/${version}`);
|
||||||
|
|
||||||
|
// Clean output directory first
|
||||||
|
await rm(outDir, { recursive: true, force: true });
|
||||||
|
await mkdir(outDir, { recursive: true });
|
||||||
|
|
||||||
|
// Generate schema
|
||||||
|
const schema = JSON.stringify(await $RefParser.bundle(schemaPath), null, 2);
|
||||||
|
await writeFile(
|
||||||
|
path.join(outDir, `${name}.schema.ts`),
|
||||||
|
BANNER_COMMENT +
|
||||||
|
'const schema = ' +
|
||||||
|
schema +
|
||||||
|
` as const;\nexport { schema as ${name}Schema };`,
|
||||||
|
);
|
||||||
|
|
||||||
|
// Generate types
|
||||||
|
const content = await compileFromFile(schemaPath, {
|
||||||
|
bannerComment: BANNER_COMMENT,
|
||||||
|
cwd: dirname(schemaPath),
|
||||||
|
ignoreMinAndMaxItems: true,
|
||||||
|
declareExternallyReferenced: true,
|
||||||
|
unreachableDefinitions: true,
|
||||||
|
});
|
||||||
|
await writeFile(
|
||||||
|
path.join(outDir, `${name}.type.ts`),
|
||||||
|
content,
|
||||||
|
)
|
||||||
|
}));
|
||||||
|
})();
|
||||||
30
packages/schemas/tsconfig.json
Normal file
30
packages/schemas/tsconfig.json
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "dist",
|
||||||
|
"incremental": true,
|
||||||
|
"declaration": true,
|
||||||
|
"emitDecoratorMetadata": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"experimentalDecorators": true,
|
||||||
|
"forceConsistentCasingInFileNames": true,
|
||||||
|
"isolatedModules": false,
|
||||||
|
"module": "CommonJS",
|
||||||
|
"moduleResolution": "node",
|
||||||
|
"noEmitOnError": false,
|
||||||
|
"noImplicitAny": true,
|
||||||
|
"noUnusedLocals": true,
|
||||||
|
"pretty": true,
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"strict": true,
|
||||||
|
"sourceMap": true,
|
||||||
|
"target": "ES2017",
|
||||||
|
"rootDir": "src",
|
||||||
|
"baseUrl": ".",
|
||||||
|
// This is needed otherwise .tsbuildinfo wasn't being written
|
||||||
|
// into the dist folder for some reason.
|
||||||
|
"tsBuildInfoFile": "./dist/.tsbuildinfo"
|
||||||
|
},
|
||||||
|
"include": ["src/**/*.ts"],
|
||||||
|
"exclude": ["node_modules"]
|
||||||
|
}
|
||||||
|
|
@ -3,12 +3,11 @@
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "yarn generate:schemas && next dev",
|
"dev": "next dev",
|
||||||
"build": "yarn generate:schemas && next build",
|
"build": "next build",
|
||||||
"start": "next start",
|
"start": "next start",
|
||||||
"lint": "next lint",
|
"lint": "next lint",
|
||||||
"test": "vitest",
|
"test": "vitest"
|
||||||
"generate:schemas": "tsx tools/generateSchemas.ts"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@auth/prisma-adapter": "^2.7.4",
|
"@auth/prisma-adapter": "^2.7.4",
|
||||||
|
|
@ -59,6 +58,8 @@
|
||||||
"@replit/codemirror-lang-svelte": "^6.0.0",
|
"@replit/codemirror-lang-svelte": "^6.0.0",
|
||||||
"@replit/codemirror-vim": "^6.2.1",
|
"@replit/codemirror-vim": "^6.2.1",
|
||||||
"@shopify/lang-jsonc": "^1.0.0",
|
"@shopify/lang-jsonc": "^1.0.0",
|
||||||
|
"@sourcebot/schemas": "^0.1.0",
|
||||||
|
"@sourcebot/db": "^0.1.0",
|
||||||
"@ssddanbrown/codemirror-lang-twig": "^1.0.0",
|
"@ssddanbrown/codemirror-lang-twig": "^1.0.0",
|
||||||
"@tanstack/react-query": "^5.53.3",
|
"@tanstack/react-query": "^5.53.3",
|
||||||
"@tanstack/react-table": "^8.20.5",
|
"@tanstack/react-table": "^8.20.5",
|
||||||
|
|
@ -115,8 +116,6 @@
|
||||||
"zod": "^3.23.8"
|
"zod": "^3.23.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@apidevtools/json-schema-ref-parser": "^11.7.3",
|
|
||||||
"@sourcebot/db": "^0.1.0",
|
|
||||||
"@types/node": "^20",
|
"@types/node": "^20",
|
||||||
"@types/react": "^18",
|
"@types/react": "^18",
|
||||||
"@types/react-dom": "^18",
|
"@types/react-dom": "^18",
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,9 @@ import { getUser } from "./data/user";
|
||||||
import { auth } from "./auth";
|
import { auth } from "./auth";
|
||||||
import { notAuthenticated, notFound, ServiceError, unexpectedError } from "./lib/serviceError";
|
import { notAuthenticated, notFound, ServiceError, unexpectedError } from "./lib/serviceError";
|
||||||
import { prisma } from "@/prisma";
|
import { prisma } from "@/prisma";
|
||||||
import { githubSchema } from "./schemas/github.schema";
|
|
||||||
import { StatusCodes } from "http-status-codes";
|
import { StatusCodes } from "http-status-codes";
|
||||||
import { ErrorCode } from "./lib/errorCodes";
|
import { ErrorCode } from "./lib/errorCodes";
|
||||||
|
import { githubSchema } from "@sourcebot/schemas/v3/github.schema";
|
||||||
|
|
||||||
const ajv = new Ajv({
|
const ajv = new Ajv({
|
||||||
validateFormats: false,
|
validateFormats: false,
|
||||||
|
|
|
||||||
|
|
@ -21,12 +21,12 @@ import {
|
||||||
import { useCallback, useRef } from "react";
|
import { useCallback, useRef } from "react";
|
||||||
import { useForm } from "react-hook-form";
|
import { useForm } from "react-hook-form";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { githubSchema } from "@/schemas/github.schema";
|
|
||||||
import { Input } from "@/components/ui/input";
|
import { Input } from "@/components/ui/input";
|
||||||
import { createConnection } from "@/actions";
|
import { createConnection } from "@/actions";
|
||||||
import { useToast } from "@/components/hooks/use-toast";
|
import { useToast } from "@/components/hooks/use-toast";
|
||||||
import { isServiceError } from "@/lib/utils";
|
import { isServiceError } from "@/lib/utils";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
|
import { githubSchema } from "@sourcebot/schemas/v3/github.schema";
|
||||||
|
|
||||||
const ajv = new Ajv({
|
const ajv = new Ajv({
|
||||||
validateFormats: false,
|
validateFormats: false,
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
const schema = {
|
const schema = {
|
||||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
"title": "GitHubConfig",
|
||||||
"properties": {
|
"properties": {
|
||||||
"type": {
|
"type": {
|
||||||
"const": "github",
|
"const": "github",
|
||||||
|
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
import $RefParser from "@apidevtools/json-schema-ref-parser";
|
|
||||||
import path from "path";
|
|
||||||
import { writeFile } from "fs/promises";
|
|
||||||
|
|
||||||
const BANNER_COMMENT = '// THIS IS A AUTO-GENERATED FILE. DO NOT MODIFY MANUALLY!\n';
|
|
||||||
const SCHEMAS: string[] = ["github.json"];
|
|
||||||
|
|
||||||
(async () => {
|
|
||||||
|
|
||||||
const cwd = process.cwd();
|
|
||||||
const schemasPath = path.resolve(`${cwd}/../../schemas/v3`);
|
|
||||||
const outDir = path.resolve(`${cwd}/src/schemas`);
|
|
||||||
console.log(outDir);
|
|
||||||
|
|
||||||
SCHEMAS.forEach(async (schemaName) => {
|
|
||||||
const schemaPath = path.resolve(`${schemasPath}/${schemaName}`);
|
|
||||||
const name = path.parse(schemaPath).name;
|
|
||||||
console.log(name);
|
|
||||||
|
|
||||||
const schema = JSON.stringify(await $RefParser.bundle(schemaPath), null, 2);
|
|
||||||
|
|
||||||
await writeFile(
|
|
||||||
path.join(outDir, `${name}.schema.ts`),
|
|
||||||
BANNER_COMMENT +
|
|
||||||
'const schema = ' +
|
|
||||||
schema +
|
|
||||||
` as const;\nexport { schema as ${name}Schema };`,
|
|
||||||
);
|
|
||||||
});
|
|
||||||
})();
|
|
||||||
|
|
@ -1,135 +0,0 @@
|
||||||
{
|
|
||||||
"$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
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
"title": "GitHubConfig",
|
||||||
"properties": {
|
"properties": {
|
||||||
"type": {
|
"type": {
|
||||||
"const": "github",
|
"const": "github",
|
||||||
|
|
|
||||||
45
yarn.lock
45
yarn.lock
|
|
@ -4172,6 +4172,11 @@ fastq@^1.6.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
reusify "^1.0.4"
|
reusify "^1.0.4"
|
||||||
|
|
||||||
|
fdir@^6.4.2:
|
||||||
|
version "6.4.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72"
|
||||||
|
integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==
|
||||||
|
|
||||||
fecha@^4.2.0:
|
fecha@^4.2.0:
|
||||||
version "4.2.3"
|
version "4.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd"
|
resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd"
|
||||||
|
|
@ -4378,6 +4383,18 @@ glob@^11.0.0:
|
||||||
package-json-from-dist "^1.0.0"
|
package-json-from-dist "^1.0.0"
|
||||||
path-scurry "^2.0.0"
|
path-scurry "^2.0.0"
|
||||||
|
|
||||||
|
glob@^11.0.1:
|
||||||
|
version "11.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.1.tgz#1c3aef9a59d680e611b53dcd24bb8639cef064d9"
|
||||||
|
integrity sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==
|
||||||
|
dependencies:
|
||||||
|
foreground-child "^3.1.0"
|
||||||
|
jackspeak "^4.0.1"
|
||||||
|
minimatch "^10.0.0"
|
||||||
|
minipass "^7.1.2"
|
||||||
|
package-json-from-dist "^1.0.0"
|
||||||
|
path-scurry "^2.0.0"
|
||||||
|
|
||||||
glob@^7.1.3:
|
glob@^7.1.3:
|
||||||
version "7.2.3"
|
version "7.2.3"
|
||||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
|
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
|
||||||
|
|
@ -4985,6 +5002,21 @@ json-schema-to-typescript@^15.0.2:
|
||||||
minimist "^1.2.8"
|
minimist "^1.2.8"
|
||||||
prettier "^3.2.5"
|
prettier "^3.2.5"
|
||||||
|
|
||||||
|
json-schema-to-typescript@^15.0.4:
|
||||||
|
version "15.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/json-schema-to-typescript/-/json-schema-to-typescript-15.0.4.tgz#a530c7f17312503b262ae12233749732171840f3"
|
||||||
|
integrity sha512-Su9oK8DR4xCmDsLlyvadkXzX6+GGXJpbhwoLtOGArAG61dvbW4YQmSEno2y66ahpIdmLMg6YUf/QHLgiwvkrHQ==
|
||||||
|
dependencies:
|
||||||
|
"@apidevtools/json-schema-ref-parser" "^11.5.5"
|
||||||
|
"@types/json-schema" "^7.0.15"
|
||||||
|
"@types/lodash" "^4.17.7"
|
||||||
|
is-glob "^4.0.3"
|
||||||
|
js-yaml "^4.1.0"
|
||||||
|
lodash "^4.17.21"
|
||||||
|
minimist "^1.2.8"
|
||||||
|
prettier "^3.2.5"
|
||||||
|
tinyglobby "^0.2.9"
|
||||||
|
|
||||||
json-schema-traverse@^0.4.1:
|
json-schema-traverse@^0.4.1:
|
||||||
version "0.4.1"
|
version "0.4.1"
|
||||||
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
|
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
|
||||||
|
|
@ -5756,6 +5788,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
|
||||||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||||
|
|
||||||
|
picomatch@^4.0.2:
|
||||||
|
version "4.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab"
|
||||||
|
integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
|
||||||
|
|
||||||
pidtree@^0.3.0:
|
pidtree@^0.3.0:
|
||||||
version "0.3.1"
|
version "0.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
|
resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a"
|
||||||
|
|
@ -6868,6 +6905,14 @@ tinyexec@^0.3.1:
|
||||||
resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.1.tgz#0ab0daf93b43e2c211212396bdb836b468c97c98"
|
resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-0.3.1.tgz#0ab0daf93b43e2c211212396bdb836b468c97c98"
|
||||||
integrity sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==
|
integrity sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==
|
||||||
|
|
||||||
|
tinyglobby@^0.2.9:
|
||||||
|
version "0.2.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.10.tgz#e712cf2dc9b95a1f5c5bbd159720e15833977a0f"
|
||||||
|
integrity sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==
|
||||||
|
dependencies:
|
||||||
|
fdir "^6.4.2"
|
||||||
|
picomatch "^4.0.2"
|
||||||
|
|
||||||
tinypool@^1.0.1:
|
tinypool@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.1.tgz#c64233c4fac4304e109a64340178760116dbe1fe"
|
resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.0.1.tgz#c64233c4fac4304e109a64340178760116dbe1fe"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue