mirror of
https://github.com/sourcebot-dev/sourcebot.git
synced 2025-12-12 04:15:30 +00:00
move @sourcebot/logger into the shared package
This commit is contained in:
parent
c8fecc02fe
commit
484c9fc6b1
62 changed files with 90 additions and 197 deletions
|
|
@ -44,14 +44,12 @@ COPY ./packages/db ./packages/db
|
|||
COPY ./packages/schemas ./packages/schemas
|
||||
COPY ./packages/crypto ./packages/crypto
|
||||
COPY ./packages/error ./packages/error
|
||||
COPY ./packages/logger ./packages/logger
|
||||
COPY ./packages/shared ./packages/shared
|
||||
|
||||
RUN yarn workspace @sourcebot/db install
|
||||
RUN yarn workspace @sourcebot/schemas install
|
||||
RUN yarn workspace @sourcebot/crypto install
|
||||
RUN yarn workspace @sourcebot/error install
|
||||
RUN yarn workspace @sourcebot/logger install
|
||||
RUN yarn workspace @sourcebot/shared install
|
||||
# ------------------------------------
|
||||
|
||||
|
|
@ -99,7 +97,6 @@ COPY --from=shared-libs-builder /app/packages/db ./packages/db
|
|||
COPY --from=shared-libs-builder /app/packages/schemas ./packages/schemas
|
||||
COPY --from=shared-libs-builder /app/packages/crypto ./packages/crypto
|
||||
COPY --from=shared-libs-builder /app/packages/error ./packages/error
|
||||
COPY --from=shared-libs-builder /app/packages/logger ./packages/logger
|
||||
COPY --from=shared-libs-builder /app/packages/shared ./packages/shared
|
||||
|
||||
# Fixes arm64 timeouts
|
||||
|
|
@ -140,7 +137,6 @@ COPY --from=shared-libs-builder /app/packages/db ./packages/db
|
|||
COPY --from=shared-libs-builder /app/packages/schemas ./packages/schemas
|
||||
COPY --from=shared-libs-builder /app/packages/crypto ./packages/crypto
|
||||
COPY --from=shared-libs-builder /app/packages/error ./packages/error
|
||||
COPY --from=shared-libs-builder /app/packages/logger ./packages/logger
|
||||
COPY --from=shared-libs-builder /app/packages/shared ./packages/shared
|
||||
RUN yarn workspace @sourcebot/backend install
|
||||
RUN yarn workspace @sourcebot/backend build
|
||||
|
|
@ -227,7 +223,6 @@ COPY --from=shared-libs-builder /app/packages/db ./packages/db
|
|||
COPY --from=shared-libs-builder /app/packages/schemas ./packages/schemas
|
||||
COPY --from=shared-libs-builder /app/packages/crypto ./packages/crypto
|
||||
COPY --from=shared-libs-builder /app/packages/error ./packages/error
|
||||
COPY --from=shared-libs-builder /app/packages/logger ./packages/logger
|
||||
COPY --from=shared-libs-builder /app/packages/shared ./packages/shared
|
||||
|
||||
# Configure dependencies
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@
|
|||
"@sourcebot/crypto": "workspace:*",
|
||||
"@sourcebot/db": "workspace:*",
|
||||
"@sourcebot/error": "workspace:*",
|
||||
"@sourcebot/logger": "workspace:*",
|
||||
"@sourcebot/schemas": "workspace:*",
|
||||
"@sourcebot/shared": "workspace:*",
|
||||
"@t3-oss/env-core": "^0.12.0",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { AzureDevOpsConnectionConfig } from "@sourcebot/schemas/v3/azuredevops.type";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { measure, fetchWithRetry } from "./utils.js";
|
||||
import micromatch from "micromatch";
|
||||
import { BackendException, BackendError } from "@sourcebot/error";
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { createBitbucketCloudClient } from "@coderabbitai/bitbucket/cloud";
|
|||
import { createBitbucketServerClient } from "@coderabbitai/bitbucket/server";
|
||||
import { BitbucketConnectionConfig } from "@sourcebot/schemas/v3/bitbucket.type";
|
||||
import type { ClientOptions, ClientPathsWithMethod } from "openapi-fetch";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { measure, fetchWithRetry } from "./utils.js";
|
||||
import * as Sentry from "@sentry/node";
|
||||
import {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { Prisma, PrismaClient } from "@sourcebot/db";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { ConnectionConfig } from "@sourcebot/schemas/v3/connection.type";
|
||||
import { loadConfig } from "@sourcebot/shared";
|
||||
import chokidar, { FSWatcher } from 'chokidar';
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import * as Sentry from "@sentry/node";
|
||||
import { Connection, ConnectionSyncJobStatus, PrismaClient } from "@sourcebot/db";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { ConnectionConfig } from "@sourcebot/schemas/v3/connection.type";
|
||||
import { loadConfig, env } from "@sourcebot/shared";
|
||||
import { Job, Queue, ReservedJob, Worker } from "groupmq";
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import * as Sentry from "@sentry/node";
|
||||
import { PrismaClient, AccountPermissionSyncJobStatus, Account } from "@sourcebot/db";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { env, hasEntitlement } from "@sourcebot/shared";
|
||||
import { PrismaClient, AccountPermissionSyncJobStatus, Account} from "@sourcebot/db";
|
||||
import { env, hasEntitlement, createLogger } from "@sourcebot/shared";
|
||||
import { Job, Queue, Worker } from "bullmq";
|
||||
import { Redis } from "ioredis";
|
||||
import { PERMISSION_SYNC_SUPPORTED_CODE_HOST_TYPES } from "../constants.js";
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { App } from "@octokit/app";
|
||||
import { getTokenFromConfig } from "@sourcebot/crypto";
|
||||
import { PrismaClient } from "@sourcebot/db";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { GitHubAppConfig } from "@sourcebot/schemas/v3/index.type";
|
||||
import { env, loadConfig } from "@sourcebot/shared";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import * as Sentry from "@sentry/node";
|
||||
import { PrismaClient, Repo, RepoPermissionSyncJobStatus } from "@sourcebot/db";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { env, hasEntitlement } from "@sourcebot/shared";
|
||||
import { Job, Queue, Worker } from 'bullmq';
|
||||
import { Redis } from 'ioredis';
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import micromatch from "micromatch";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { PrismaClient } from "@sourcebot/db";
|
||||
import { getPlan, hasEntitlement, SOURCEBOT_SUPPORT_EMAIL } from "@sourcebot/shared";
|
||||
import { SearchContext } from "@sourcebot/schemas/v3/index.type";
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import fetch from 'cross-fetch';
|
||||
import { GerritConnectionConfig } from "@sourcebot/schemas/v3/index.type"
|
||||
import { createLogger } from '@sourcebot/logger';
|
||||
import { createLogger } from '@sourcebot/shared';
|
||||
import micromatch from "micromatch";
|
||||
import { measure, fetchWithRetry } from './utils.js';
|
||||
import { BackendError } from '@sourcebot/error';
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import * as Sentry from "@sentry/node";
|
||||
import { getTokenFromConfig } from "@sourcebot/crypto";
|
||||
import { createLogger } from '@sourcebot/logger';
|
||||
import { createLogger } from '@sourcebot/shared';
|
||||
import { GiteaConnectionConfig } from '@sourcebot/schemas/v3/gitea.type';
|
||||
import { env } from "@sourcebot/shared";
|
||||
import fetch from 'cross-fetch';
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Octokit } from "@octokit/rest";
|
||||
import * as Sentry from "@sentry/node";
|
||||
import { getTokenFromConfig } from "@sourcebot/crypto";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { GithubConnectionConfig } from "@sourcebot/schemas/v3/github.type";
|
||||
import { env, hasEntitlement } from "@sourcebot/shared";
|
||||
import micromatch from "micromatch";
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { Gitlab, ProjectSchema } from "@gitbeaker/rest";
|
||||
import * as Sentry from "@sentry/node";
|
||||
import { getTokenFromConfig } from "@sourcebot/crypto";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { GitlabConnectionConfig } from "@sourcebot/schemas/v3/gitlab.type";
|
||||
import { env } from "@sourcebot/shared";
|
||||
import micromatch from "micromatch";
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import "./instrument.js";
|
||||
|
||||
import { PrismaClient } from "@sourcebot/db";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { env, getConfigSettings, hasEntitlement } from '@sourcebot/shared';
|
||||
import { existsSync } from 'fs';
|
||||
import { mkdir } from 'fs/promises';
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import * as Sentry from "@sentry/node";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { env } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('instrument');
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import express, { Request, Response } from 'express';
|
||||
import { Server } from 'http';
|
||||
import client, { Registry, Counter, Gauge } from 'prom-client';
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('prometheus-client');
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import { SchemaRepository as BitbucketCloudRepository } from "@coderabbitai/bitb
|
|||
import { CodeHostType, Prisma } from '@sourcebot/db';
|
||||
import { WithRequired } from "./types.js"
|
||||
import { marshalBool } from "./utils.js";
|
||||
import { createLogger } from '@sourcebot/logger';
|
||||
import { createLogger } from '@sourcebot/shared';
|
||||
import { BitbucketConnectionConfig, GerritConnectionConfig, GiteaConnectionConfig, GitlabConnectionConfig, GenericGitHostConnectionConfig, AzureDevOpsConnectionConfig } from '@sourcebot/schemas/v3/connection.type';
|
||||
import { ProjectVisibility } from "azure-devops-node-api/interfaces/CoreInterfaces.js";
|
||||
import path from 'path';
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import * as Sentry from '@sentry/node';
|
||||
import { PrismaClient, Repo, RepoIndexingJobStatus, RepoIndexingJobType } from "@sourcebot/db";
|
||||
import { createLogger, Logger } from "@sourcebot/logger";
|
||||
import { createLogger, Logger } from "@sourcebot/shared";
|
||||
import { env, RepoIndexingJobMetadata, repoIndexingJobMetadataSchema, RepoMetadata, repoMetadataSchema } from '@sourcebot/shared';
|
||||
import { existsSync } from 'fs';
|
||||
import { readdir, rm } from 'fs/promises';
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import { Repo } from "@sourcebot/db";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { exec } from "child_process";
|
||||
import { INDEX_CACHE_DIR } from "./constants.js";
|
||||
import { Settings } from "./types.js";
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@prisma/client": "6.2.1",
|
||||
"@sourcebot/logger": "workspace:*",
|
||||
"@types/readline-sync": "^1.4.8",
|
||||
"readline-sync": "^1.4.10"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ import { ArgumentParser } from "argparse";
|
|||
import { migrateDuplicateConnections } from "./scripts/migrate-duplicate-connections";
|
||||
import { injectAuditData } from "./scripts/inject-audit-data";
|
||||
import { confirmAction } from "./utils";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { injectRepoData } from "./scripts/inject-repo-data";
|
||||
import { testRepoQueryPerf } from "./scripts/test-repo-query-perf";
|
||||
|
||||
|
|
@ -23,19 +22,17 @@ parser.add_argument("--url", { required: true, help: "Database URL" });
|
|||
parser.add_argument("--script", { required: true, help: "Script to run" });
|
||||
const args = parser.parse_args();
|
||||
|
||||
const logger = createLogger('db-script-runner');
|
||||
|
||||
(async () => {
|
||||
if (!(args.script in scripts)) {
|
||||
logger.error("Invalid script");
|
||||
console.error("Invalid script");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const selectedScript = scripts[args.script];
|
||||
|
||||
logger.info("\nTo confirm:");
|
||||
logger.info(`- Database URL: ${args.url}`);
|
||||
logger.info(`- Script: ${args.script}`);
|
||||
console.log("\nTo confirm:");
|
||||
console.log(`- Database URL: ${args.url}`);
|
||||
console.log(`- Script: ${args.script}`);
|
||||
|
||||
confirmAction();
|
||||
|
||||
|
|
@ -45,7 +42,7 @@ const logger = createLogger('db-script-runner');
|
|||
|
||||
await selectedScript.run(prisma);
|
||||
|
||||
logger.info("\nDone.");
|
||||
console.log("\nDone.");
|
||||
process.exit(0);
|
||||
})();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
import { Script } from "../scriptRunner";
|
||||
import { PrismaClient } from "../../dist";
|
||||
import { confirmAction } from "../utils";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
|
||||
const logger = createLogger('inject-audit-data');
|
||||
|
||||
// Generate realistic audit data for analytics testing
|
||||
// Simulates 50 engineers with varying activity patterns
|
||||
|
|
@ -17,11 +14,11 @@ export const injectAuditData: Script = {
|
|||
});
|
||||
|
||||
if (!org) {
|
||||
logger.error(`Organization with id ${orgId} not found. Please create it first.`);
|
||||
console.error(`Organization with id ${orgId} not found. Please create it first.`);
|
||||
return;
|
||||
}
|
||||
|
||||
logger.info(`Injecting audit data for organization: ${org.name} (${org.domain})`);
|
||||
console.log(`Injecting audit data for organization: ${org.name} (${org.domain})`);
|
||||
|
||||
// Generate 50 fake user IDs
|
||||
const userIds = Array.from({ length: 50 }, (_, i) => `user_${String(i + 1).padStart(3, '0')}`);
|
||||
|
|
@ -38,7 +35,7 @@ export const injectAuditData: Script = {
|
|||
const startDate = new Date();
|
||||
startDate.setDate(startDate.getDate() - 90);
|
||||
|
||||
logger.info(`Generating data from ${startDate.toISOString().split('T')[0]} to ${endDate.toISOString().split('T')[0]}`);
|
||||
console.log(`Generating data from ${startDate.toISOString().split('T')[0]} to ${endDate.toISOString().split('T')[0]}`);
|
||||
|
||||
confirmAction();
|
||||
|
||||
|
|
@ -125,9 +122,9 @@ export const injectAuditData: Script = {
|
|||
}
|
||||
}
|
||||
|
||||
logger.info(`\nAudit data injection complete!`);
|
||||
logger.info(`Users: ${userIds.length}`);
|
||||
logger.info(`Date range: ${startDate.toISOString().split('T')[0]} to ${endDate.toISOString().split('T')[0]}`);
|
||||
console.log(`\nAudit data injection complete!`);
|
||||
console.log(`Users: ${userIds.length}`);
|
||||
console.log(`Date range: ${startDate.toISOString().split('T')[0]} to ${endDate.toISOString().split('T')[0]}`);
|
||||
|
||||
// Show some statistics
|
||||
const stats = await prisma.audit.groupBy({
|
||||
|
|
@ -136,9 +133,9 @@ export const injectAuditData: Script = {
|
|||
_count: { action: true }
|
||||
});
|
||||
|
||||
logger.info('\nAction breakdown:');
|
||||
console.log('\nAction breakdown:');
|
||||
stats.forEach(stat => {
|
||||
logger.info(` ${stat.action}: ${stat._count.action}`);
|
||||
console.log(` ${stat.action}: ${stat._count.action}`);
|
||||
});
|
||||
},
|
||||
};
|
||||
|
|
@ -1,8 +1,5 @@
|
|||
import { Script } from "../scriptRunner";
|
||||
import { PrismaClient } from "../../dist";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
|
||||
const logger = createLogger('inject-repo-data');
|
||||
|
||||
const NUM_REPOS = 100000;
|
||||
|
||||
|
|
@ -35,7 +32,7 @@ export const injectRepoData: Script = {
|
|||
});
|
||||
|
||||
|
||||
logger.info(`Creating ${NUM_REPOS} repos...`);
|
||||
console.log(`Creating ${NUM_REPOS} repos...`);
|
||||
|
||||
for (let i = 0; i < NUM_REPOS; i++) {
|
||||
await prisma.repo.create({
|
||||
|
|
@ -59,6 +56,6 @@ export const injectRepoData: Script = {
|
|||
});
|
||||
}
|
||||
|
||||
logger.info(`Created ${NUM_REPOS} repos.`);
|
||||
console.log(`Created ${NUM_REPOS} repos.`);
|
||||
}
|
||||
};
|
||||
|
|
@ -1,9 +1,6 @@
|
|||
import { Script } from "../scriptRunner";
|
||||
import { PrismaClient } from "../../dist";
|
||||
import { confirmAction } from "../utils";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
|
||||
const logger = createLogger('migrate-duplicate-connections');
|
||||
|
||||
// Handles duplicate connections by renaming them to be unique.
|
||||
// @see: 20250320215449_unique_connection_name_constraint_within_org
|
||||
|
|
@ -18,7 +15,7 @@ export const migrateDuplicateConnections: Script = {
|
|||
},
|
||||
})).filter(({ _count }) => _count._all > 1);
|
||||
|
||||
logger.info(`Found ${duplicates.reduce((acc, { _count }) => acc + _count._all, 0)} duplicate connections.`);
|
||||
console.log(`Found ${duplicates.reduce((acc, { _count }) => acc + _count._all, 0)} duplicate connections.`);
|
||||
|
||||
confirmAction();
|
||||
|
||||
|
|
@ -40,7 +37,7 @@ export const migrateDuplicateConnections: Script = {
|
|||
const connection = connections[i];
|
||||
const newName = `${name}-${i + 1}`;
|
||||
|
||||
logger.info(`Migrating connection with id ${connection.id} from name=${name} to name=${newName}`);
|
||||
console.log(`Migrating connection with id ${connection.id} from name=${name} to name=${newName}`);
|
||||
|
||||
await prisma.connection.update({
|
||||
where: { id: connection.id },
|
||||
|
|
@ -50,6 +47,6 @@ export const migrateDuplicateConnections: Script = {
|
|||
}
|
||||
}
|
||||
|
||||
logger.info(`Migrated ${migrated} connections.`);
|
||||
console.log(`Migrated ${migrated} connections.`);
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,8 +1,5 @@
|
|||
import { Script } from "../scriptRunner";
|
||||
import { PrismaClient } from "../../dist";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
|
||||
const logger = createLogger('test-repo-query-perf');
|
||||
|
||||
export const testRepoQueryPerf: Script = {
|
||||
run: async (prisma: PrismaClient) => {
|
||||
|
|
@ -23,6 +20,6 @@ export const testRepoQueryPerf: Script = {
|
|||
});
|
||||
|
||||
const durationMs = Date.now() - start;
|
||||
logger.info(`Found ${allRepos.length} repos in ${durationMs}ms`);
|
||||
console.log(`Found ${allRepos.length} repos in ${durationMs}ms`);
|
||||
}
|
||||
};
|
||||
|
|
@ -1,17 +1,14 @@
|
|||
import readline from 'readline-sync';
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
|
||||
const logger = createLogger('db-utils');
|
||||
|
||||
export const confirmAction = (message: string = "Are you sure you want to proceed? [N/y]") => {
|
||||
const response = readline.question(message).toLowerCase();
|
||||
if (response !== 'y') {
|
||||
logger.info("Aborted.");
|
||||
console.log("Aborted.");
|
||||
process.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
export const abort = () => {
|
||||
logger.info("Aborted.");
|
||||
console.log("Aborted.");
|
||||
process.exit(0);
|
||||
};
|
||||
|
|
|
|||
2
packages/logger/.gitignore
vendored
2
packages/logger/.gitignore
vendored
|
|
@ -1,2 +0,0 @@
|
|||
dist/
|
||||
*.tsbuildinfo
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
{
|
||||
"name": "@sourcebot/logger",
|
||||
"version": "0.1.0",
|
||||
"main": "dist/index.js",
|
||||
"type": "module",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"postinstall": "yarn build"
|
||||
},
|
||||
"dependencies": {
|
||||
"@logtail/node": "^0.5.2",
|
||||
"@logtail/winston": "^0.5.2",
|
||||
"@t3-oss/env-core": "^0.12.0",
|
||||
"dotenv": "^16.4.5",
|
||||
"triple-beam": "^1.4.1",
|
||||
"winston": "^3.15.0",
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^22.7.5",
|
||||
"typescript": "^5.7.3"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
import { createEnv } from "@t3-oss/env-core";
|
||||
import { z } from "zod";
|
||||
import dotenv from 'dotenv';
|
||||
|
||||
// Booleans are specified as 'true' or 'false' strings.
|
||||
const booleanSchema = z.enum(["true", "false"]);
|
||||
|
||||
dotenv.config({
|
||||
path: './.env',
|
||||
});
|
||||
|
||||
dotenv.config({
|
||||
path: './.env.local',
|
||||
override: true
|
||||
});
|
||||
|
||||
export const env = createEnv({
|
||||
server: {
|
||||
SOURCEBOT_LOG_LEVEL: z.enum(["info", "debug", "warn", "error"]).default("info"),
|
||||
SOURCEBOT_STRUCTURED_LOGGING_ENABLED: booleanSchema.default("false"),
|
||||
SOURCEBOT_STRUCTURED_LOGGING_FILE: z.string().optional(),
|
||||
LOGTAIL_TOKEN: z.string().optional(),
|
||||
LOGTAIL_HOST: z.string().url().optional(),
|
||||
},
|
||||
runtimeEnv: process.env,
|
||||
emptyStringAsUndefined: true,
|
||||
skipValidation: process.env.SKIP_ENV_VALIDATION === "1",
|
||||
});
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2022",
|
||||
"module": "Node16",
|
||||
"moduleResolution": "Node16",
|
||||
"lib": ["ES2023"],
|
||||
"outDir": "dist",
|
||||
"rootDir": "src",
|
||||
"declaration": true,
|
||||
"declarationMap": true,
|
||||
"sourceMap": true,
|
||||
"strict": true,
|
||||
"noImplicitAny": true,
|
||||
"strictNullChecks": true,
|
||||
"esModuleInterop": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"skipLibCheck": true,
|
||||
"isolatedModules": true,
|
||||
"resolveJsonModule": true
|
||||
},
|
||||
"include": ["src/**/*"],
|
||||
"exclude": ["node_modules", "dist"]
|
||||
}
|
||||
|
|
@ -9,14 +9,17 @@
|
|||
"postinstall": "yarn build"
|
||||
},
|
||||
"dependencies": {
|
||||
"@logtail/node": "^0.5.2",
|
||||
"@logtail/winston": "^0.5.2",
|
||||
"@sourcebot/crypto": "workspace:*",
|
||||
"@sourcebot/db": "workspace:*",
|
||||
"@sourcebot/logger": "workspace:*",
|
||||
"@sourcebot/schemas": "workspace:*",
|
||||
"@t3-oss/env-core": "^0.12.0",
|
||||
"ajv": "^8.17.1",
|
||||
"micromatch": "^4.0.8",
|
||||
"strip-json-comments": "^5.0.1",
|
||||
"triple-beam": "^1.4.1",
|
||||
"winston": "^3.15.0",
|
||||
"zod": "^3.24.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { base64Decode } from "./utils.js";
|
||||
import { z } from "zod";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "./logger.js";
|
||||
import { verifySignature } from "@sourcebot/crypto";
|
||||
import { env } from "./env.js";
|
||||
import { SOURCEBOT_SUPPORT_EMAIL, SOURCEBOT_UNLIMITED_SEATS } from "./constants.js";
|
||||
|
|
|
|||
|
|
@ -72,16 +72,13 @@ export const env = createEnv({
|
|||
FALLBACK_GITLAB_CLOUD_TOKEN: z.string().optional(),
|
||||
FALLBACK_GITEA_CLOUD_TOKEN: z.string().optional(),
|
||||
|
||||
REDIS_URL: z.string().url(),
|
||||
REDIS_URL: z.string().url().default("redis://localhost:6379"),
|
||||
REDIS_REMOVE_ON_COMPLETE: numberSchema.default(0),
|
||||
REDIS_REMOVE_ON_FAIL: numberSchema.default(100),
|
||||
|
||||
LOGTAIL_TOKEN: z.string().optional(),
|
||||
LOGTAIL_HOST: z.string().url().optional(),
|
||||
SOURCEBOT_LOG_LEVEL: z.enum(["info", "debug", "warn", "error"]).default("info"),
|
||||
DEBUG_ENABLE_GROUPMQ_LOGGING: booleanSchema.default('false'),
|
||||
|
||||
DATABASE_URL: z.string().url(),
|
||||
DATABASE_URL: z.string().url().default("postgresql://postgres:postgres@localhost:5432/postgres"),
|
||||
CONFIG_PATH: z.string(),
|
||||
|
||||
CONNECTION_MANAGER_UPSERT_TIMEOUT_MS: numberSchema.default(300000),
|
||||
|
|
@ -92,6 +89,12 @@ export const env = createEnv({
|
|||
EXPERIMENT_EE_PERMISSION_SYNC_ENABLED: booleanSchema.default('false'),
|
||||
AUTH_EE_GITHUB_BASE_URL: z.string().optional(),
|
||||
AUTH_EE_GITLAB_BASE_URL: z.string().default("https://gitlab.com"),
|
||||
|
||||
SOURCEBOT_LOG_LEVEL: z.enum(["info", "debug", "warn", "error"]).default("info"),
|
||||
SOURCEBOT_STRUCTURED_LOGGING_ENABLED: booleanSchema.default("false"),
|
||||
SOURCEBOT_STRUCTURED_LOGGING_FILE: z.string().optional(),
|
||||
LOGTAIL_TOKEN: z.string().optional(),
|
||||
LOGTAIL_HOST: z.string().url().optional(),
|
||||
},
|
||||
client: {
|
||||
NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT: z.enum(SOURCEBOT_CLOUD_ENVIRONMENT).optional(),
|
||||
|
|
|
|||
|
|
@ -27,4 +27,10 @@ export {
|
|||
export * from "./constants.js";
|
||||
export {
|
||||
env
|
||||
} from "./env.js";
|
||||
} from "./env.js";
|
||||
export {
|
||||
createLogger,
|
||||
} from "./logger.js";
|
||||
export type {
|
||||
Logger,
|
||||
} from "./logger.js";
|
||||
|
|
@ -16,7 +16,7 @@ import { env } from './env.js';
|
|||
* - Logs will be formatted as: "timestamp level: [label] message"
|
||||
*/
|
||||
|
||||
const { combine, colorize, timestamp, prettyPrint, errors, printf, label: labelFn, json } = format;
|
||||
const { combine, colorize, timestamp, errors, printf, label: labelFn, json } = format;
|
||||
|
||||
const datadogFormat = format((info) => {
|
||||
info.status = info.level.toLowerCase();
|
||||
|
|
@ -93,7 +93,6 @@
|
|||
"@sourcebot/crypto": "workspace:*",
|
||||
"@sourcebot/db": "workspace:*",
|
||||
"@sourcebot/error": "workspace:*",
|
||||
"@sourcebot/logger": "workspace:*",
|
||||
"@sourcebot/schemas": "workspace:*",
|
||||
"@sourcebot/shared": "workspace:*",
|
||||
"@ssddanbrown/codemirror-lang-twig": "^1.0.0",
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
|
||||
|
||||
import * as Sentry from "@sentry/nextjs";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('sentry-server-config');
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import { render } from "@react-email/components";
|
|||
import * as Sentry from '@sentry/nextjs';
|
||||
import { generateApiKey, getTokenFromConfig, hashSecret } from "@sourcebot/crypto";
|
||||
import { ApiKey, ConnectionSyncJobStatus, Org, OrgRole, Prisma, RepoIndexingJobStatus, RepoIndexingJobType, StripeSubscriptionStatus } from "@sourcebot/db";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { GiteaConnectionConfig } from "@sourcebot/schemas/v3/gitea.type";
|
||||
import { GithubConnectionConfig } from "@sourcebot/schemas/v3/github.type";
|
||||
import { GitlabConnectionConfig } from "@sourcebot/schemas/v3/gitlab.type";
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import { prisma } from "@/prisma";
|
|||
import { LanguageModelV2 as AISDKLanguageModelV2 } from "@ai-sdk/provider";
|
||||
import * as Sentry from "@sentry/nextjs";
|
||||
import { OrgRole } from "@sourcebot/db";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import {
|
||||
createUIMessageStream,
|
||||
createUIMessageStreamResponse,
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { withAuthV2, withMinimumOrgRole } from "@/withAuthV2";
|
|||
import { OrgRole } from "@sourcebot/db";
|
||||
import { isServiceError } from "@/lib/utils";
|
||||
import { serviceErrorResponse, missingQueryParam, notFound } from "@/lib/serviceError";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { NextRequest } from "next/server";
|
||||
import { StatusCodes } from "http-status-codes";
|
||||
import { ErrorCode } from "@/lib/errorCodes";
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { withAuthV2, withMinimumOrgRole } from "@/withAuthV2";
|
|||
import { OrgRole } from "@sourcebot/db";
|
||||
import { isServiceError } from "@/lib/utils";
|
||||
import { serviceErrorResponse } from "@/lib/serviceError";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { getAuditService } from "@/ee/features/audit/factory";
|
||||
|
||||
const logger = createLogger('ee-users-api');
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
'use server';
|
||||
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('health-check');
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { prisma } from '@/prisma';
|
|||
import { StripeSubscriptionStatus } from '@sourcebot/db';
|
||||
import { stripeClient } from '@/ee/features/billing/stripe';
|
||||
import { env } from '@/env.mjs';
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('stripe-webhook');
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import { processGitHubPullRequest } from "@/features/agents/review-agent/app";
|
|||
import { throttling } from "@octokit/plugin-throttling";
|
||||
import fs from "fs";
|
||||
import { GitHubPullRequest } from "@/features/agents/review-agent/types";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('github-webhook');
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@ import { auth } from "@/auth";
|
|||
import { LoginForm } from "../login/components/loginForm";
|
||||
import { redirect } from "next/navigation";
|
||||
import { Footer } from "@/app/components/footer";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { getIdentityProviderMetadata } from "@/lib/identityProviders";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { getAuthProviders } from "@/lib/authProviders";
|
||||
import { getOrgFromDomain } from "@/data/org";
|
||||
import { SINGLE_TENANT_ORG_DOMAIN } from "@/lib/constants";
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { ErrorCode } from "@/lib/errorCodes";
|
|||
import { StatusCodes } from "http-status-codes";
|
||||
import { sew, withAuth, withOrgMembership } from "@/actions";
|
||||
import { OrgRole } from "@sourcebot/db";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { ServiceError } from "@/lib/serviceError";
|
||||
import { getAuditService } from "@/ee/features/audit/factory";
|
||||
import { AuditEvent } from "./types";
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import { IAuditService, AuditEvent } from '@/ee/features/audit/types';
|
||||
import { prisma } from '@/prisma';
|
||||
import { Audit } from '@prisma/client';
|
||||
import { createLogger } from '@sourcebot/logger';
|
||||
import { createLogger } from '@sourcebot/shared';
|
||||
|
||||
const logger = createLogger('audit-service');
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import { StatusCodes } from "http-status-codes";
|
|||
import { ErrorCode } from "@/lib/errorCodes";
|
||||
import { headers } from "next/headers";
|
||||
import { getSubscriptionForOrg } from "./serverUtils";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('billing-actions');
|
||||
|
||||
|
|
|
|||
|
|
@ -11,11 +11,11 @@ import Credentials from "next-auth/providers/credentials";
|
|||
import type { User as AuthJsUser } from "next-auth";
|
||||
import type { Provider } from "next-auth/providers";
|
||||
import { onCreateUser } from "@/lib/authUtils";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { hasEntitlement, loadConfig } from "@sourcebot/shared";
|
||||
import { getTokenFromConfig } from "@sourcebot/crypto";
|
||||
import type { IdentityProvider } from "@/auth";
|
||||
import { GCPIAPIdentityProviderConfig, GitHubIdentityProviderConfig, GitLabIdentityProviderConfig, GoogleIdentityProviderConfig, KeycloakIdentityProviderConfig, MicrosoftEntraIDIdentityProviderConfig, OktaIdentityProviderConfig } from "@sourcebot/schemas/v3/index.type";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('web-sso');
|
||||
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import { env } from "@/env.mjs";
|
|||
import { GitHubPullRequest } from "@/features/agents/review-agent/types";
|
||||
import path from "path";
|
||||
import fs from "fs";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const rules = [
|
||||
"Do NOT provide general feedback, summaries, explanations of changes, or praises for making good additions.",
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { sourcebot_context, sourcebot_pr_payload } from "@/features/agents/revie
|
|||
import { getFileSource } from "@/features/search/fileSourceApi";
|
||||
import { fileSourceResponseSchema } from "@/features/search/schemas";
|
||||
import { isServiceError } from "@/lib/utils";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('fetch-file-content');
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { sourcebot_diff, sourcebot_context, sourcebot_file_diff_review_schema } from "@/features/agents/review-agent/types";
|
||||
import { zodToJsonSchema } from "zod-to-json-schema";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('generate-diff-review-prompt');
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { sourcebot_pr_payload, sourcebot_diff_review, sourcebot_file_diff_review
|
|||
import { generateDiffReviewPrompt } from "@/features/agents/review-agent/nodes/generateDiffReviewPrompt";
|
||||
import { invokeDiffReviewLlm } from "@/features/agents/review-agent/nodes/invokeDiffReviewLlm";
|
||||
import { fetchFileContent } from "@/features/agents/review-agent/nodes/fetchFileContent";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('generate-pr-review');
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { sourcebot_pr_payload, sourcebot_file_diff, sourcebot_diff } from "@/fea
|
|||
import parse from "parse-diff";
|
||||
import { Octokit } from "octokit";
|
||||
import { GitHubPullRequest } from "@/features/agents/review-agent/types";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('github-pr-parser');
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { Octokit } from "octokit";
|
||||
import { sourcebot_pr_payload, sourcebot_file_diff_review } from "@/features/agents/review-agent/types";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('github-push-pr-reviews');
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import OpenAI from "openai";
|
|||
import { sourcebot_file_diff_review, sourcebot_file_diff_review_schema } from "@/features/agents/review-agent/types";
|
||||
import { env } from "@/env.mjs";
|
||||
import fs from "fs";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
|
||||
const logger = createLogger('invoke-diff-review-llm');
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { env } from "@/env.mjs";
|
|||
import { getFileSource } from "@/features/search/fileSourceApi";
|
||||
import { isServiceError } from "@/lib/utils";
|
||||
import { ProviderOptions } from "@ai-sdk/provider-utils";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { LanguageModel, ModelMessage, StopCondition, streamText } from "ai";
|
||||
import { ANSWER_TAG, FILE_REFERENCE_PREFIX, toolNames } from "./constants";
|
||||
import { createCodeSearchTool, findSymbolDefinitionsTool, findSymbolReferencesTool, readFilesTool, searchReposTool, listAllReposTool } from "./tools";
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { env } from '@/env.mjs';
|
|||
import { notFound, unexpectedError } from '@/lib/serviceError';
|
||||
import { withOptionalAuthV2 } from '@/withAuthV2';
|
||||
import { Repo } from '@sourcebot/db';
|
||||
import { createLogger } from '@sourcebot/logger';
|
||||
import { createLogger } from '@sourcebot/shared';
|
||||
import path from 'path';
|
||||
import { simpleGit } from 'simple-git';
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import { createGuestUser } from '@/lib/authUtils';
|
|||
import { SOURCEBOT_SUPPORT_EMAIL } from "@/lib/constants";
|
||||
import { prisma } from "@/prisma";
|
||||
import { OrgRole } from '@sourcebot/db';
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { hasEntitlement, loadConfig } from '@sourcebot/shared';
|
||||
import { getOrgFromDomain } from './data/org';
|
||||
import { env } from './env.mjs';
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { SINGLE_TENANT_ORG_ID, SOURCEBOT_GUEST_USER_EMAIL, SOURCEBOT_GUEST_USER_
|
|||
import { getPlan, getSeats, hasEntitlement, SOURCEBOT_UNLIMITED_SEATS } from "@sourcebot/shared";
|
||||
import { isServiceError } from "@/lib/utils";
|
||||
import { orgNotFound, ServiceError, userNotFound } from "@/lib/serviceError";
|
||||
import { createLogger } from "@sourcebot/logger";
|
||||
import { createLogger } from "@sourcebot/shared";
|
||||
import { getAuditService } from "@/ee/features/audit/factory";
|
||||
import { StatusCodes } from "http-status-codes";
|
||||
import { ErrorCode } from "./errorCodes";
|
||||
|
|
|
|||
24
yarn.lock
24
yarn.lock
|
|
@ -7896,7 +7896,6 @@ __metadata:
|
|||
"@sourcebot/crypto": "workspace:*"
|
||||
"@sourcebot/db": "workspace:*"
|
||||
"@sourcebot/error": "workspace:*"
|
||||
"@sourcebot/logger": "workspace:*"
|
||||
"@sourcebot/schemas": "workspace:*"
|
||||
"@sourcebot/shared": "workspace:*"
|
||||
"@t3-oss/env-core": "npm:^0.12.0"
|
||||
|
|
@ -7964,7 +7963,6 @@ __metadata:
|
|||
resolution: "@sourcebot/db@workspace:packages/db"
|
||||
dependencies:
|
||||
"@prisma/client": "npm:6.2.1"
|
||||
"@sourcebot/logger": "workspace:*"
|
||||
"@types/argparse": "npm:^2.0.16"
|
||||
"@types/readline-sync": "npm:^1.4.8"
|
||||
argparse: "npm:^2.0.1"
|
||||
|
|
@ -7984,22 +7982,6 @@ __metadata:
|
|||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@sourcebot/logger@workspace:*, @sourcebot/logger@workspace:packages/logger":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@sourcebot/logger@workspace:packages/logger"
|
||||
dependencies:
|
||||
"@logtail/node": "npm:^0.5.2"
|
||||
"@logtail/winston": "npm:^0.5.2"
|
||||
"@t3-oss/env-core": "npm:^0.12.0"
|
||||
"@types/node": "npm:^22.7.5"
|
||||
dotenv: "npm:^16.4.5"
|
||||
triple-beam: "npm:^1.4.1"
|
||||
typescript: "npm:^5.7.3"
|
||||
winston: "npm:^3.15.0"
|
||||
zod: "npm:^3.24.3"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
"@sourcebot/mcp@workspace:packages/mcp":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "@sourcebot/mcp@workspace:packages/mcp"
|
||||
|
|
@ -8036,9 +8018,10 @@ __metadata:
|
|||
version: 0.0.0-use.local
|
||||
resolution: "@sourcebot/shared@workspace:packages/shared"
|
||||
dependencies:
|
||||
"@logtail/node": "npm:^0.5.2"
|
||||
"@logtail/winston": "npm:^0.5.2"
|
||||
"@sourcebot/crypto": "workspace:*"
|
||||
"@sourcebot/db": "workspace:*"
|
||||
"@sourcebot/logger": "workspace:*"
|
||||
"@sourcebot/schemas": "workspace:*"
|
||||
"@t3-oss/env-core": "npm:^0.12.0"
|
||||
"@types/micromatch": "npm:^4.0.9"
|
||||
|
|
@ -8046,8 +8029,10 @@ __metadata:
|
|||
ajv: "npm:^8.17.1"
|
||||
micromatch: "npm:^4.0.8"
|
||||
strip-json-comments: "npm:^5.0.1"
|
||||
triple-beam: "npm:^1.4.1"
|
||||
tsc-watch: "npm:6.2.1"
|
||||
typescript: "npm:^5.7.3"
|
||||
winston: "npm:^3.15.0"
|
||||
zod: "npm:^3.24.3"
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
|
@ -8138,7 +8123,6 @@ __metadata:
|
|||
"@sourcebot/crypto": "workspace:*"
|
||||
"@sourcebot/db": "workspace:*"
|
||||
"@sourcebot/error": "workspace:*"
|
||||
"@sourcebot/logger": "workspace:*"
|
||||
"@sourcebot/schemas": "workspace:*"
|
||||
"@sourcebot/shared": "workspace:*"
|
||||
"@ssddanbrown/codemirror-lang-twig": "npm:^1.0.0"
|
||||
|
|
|
|||
Loading…
Reference in a new issue