SYMBOL INDEX (1357 symbols across 267 files) FILE: apps/cli/src/commands/history.ts type HistoryCommandInput (line 7) | type HistoryCommandInput = { function formatStackSummary (line 13) | function formatStackSummary(entry: ProjectHistoryEntry): string { function formatDate (line 35) | function formatDate(isoString: string): string { function historyHandler (line 46) | async function historyHandler(input: HistoryCommandInput): Promise { FILE: apps/cli/src/commands/meta.ts constant DOCS_URL (line 10) | const DOCS_URL = "https://better-t-stack.dev/docs"; constant BUILDER_URL (line 11) | const BUILDER_URL = "https://better-t-stack.dev/new"; function openExternalUrl (line 13) | async function openExternalUrl(url: string, successMessage: string) { function showSponsorsCommand (line 26) | async function showSponsorsCommand() { function openDocsCommand (line 40) | async function openDocsCommand() { function openBuilderCommand (line 44) | async function openBuilderCommand() { FILE: apps/cli/src/constants.ts constant PKG_ROOT (line 16) | const PKG_ROOT = path.join(distPath, "../"); constant DEFAULT_CONFIG_BASE (line 18) | const DEFAULT_CONFIG_BASE = { function getDefaultConfig (line 38) | function getDefaultConfig() { constant DEFAULT_CONFIG (line 49) | const DEFAULT_CONFIG = getDefaultConfig(); constant ADDON_COMPATIBILITY (line 53) | const ADDON_COMPATIBILITY = { FILE: apps/cli/src/helpers/addons/addons-setup.ts function runSetup (line 23) | async function runSetup( function runAddonStep (line 37) | async function runAddonStep(addon: string, step: () => Promise): P... function setupAddons (line 53) | async function setupAddons(config: ProjectConfig) { function setupBiome (line 128) | async function setupBiome(projectDir: string) { function setupHusky (line 147) | async function setupHusky(projectDir: string, linter?: "biome" | "oxlint... function setupLefthook (line 180) | async function setupLefthook(projectDir: string) { FILE: apps/cli/src/helpers/addons/evlog-setup.ts type EvlogBackend (line 9) | type EvlogBackend = Extract; type McpServerKey (line 17) | type McpServerKey = NonNullable[number]; type McpAgent (line 18) | type McpAgent = NonNullable[number]; type InstallScope (line 19) | type InstallScope = NonNullable; type McpServerDef (line 21) | type McpServerDef = { type AgentScope (line 30) | type AgentScope = "project" | "global" | "both"; type AgentOption (line 32) | type AgentOption = { constant MCP_AGENTS (line 38) | const MCP_AGENTS: AgentOption[] = [ constant DEFAULT_SCOPE (line 55) | const DEFAULT_SCOPE: InstallScope = "project"; constant DEFAULT_AGENTS (line 56) | const DEFAULT_AGENTS: McpAgent[] = ["cursor", "claude-code", "vscode"]; function uniqueValues (line 58) | function uniqueValues(values: T[]): T[] { function hasReactBasedFrontend (line 62) | function hasReactBasedFrontend(frontend: ProjectConfig["frontend"]): boo... function hasNativeFrontend (line 71) | function hasNativeFrontend(frontend: ProjectConfig["frontend"]): boolean { function getAllMcpServers (line 79) | function getAllMcpServers(config: ProjectConfig): McpServerDef[] { function getRecommendedMcpServers (line 193) | function getRecommendedMcpServers( function filterAgentsForScope (line 269) | function filterAgentsForScope(scope: InstallScope): AgentOption[] { function setupMcp (line 273) | async function setupMcp( FILE: apps/cli/src/helpers/addons/oxlint-setup.ts function setupOxlint (line 14) | async function setupOxlint( FILE: apps/cli/src/helpers/addons/skills-setup.ts type SkillSource (line 15) | type SkillSource = { type AgentOption (line 19) | type AgentOption = { type SkillsOptions (line 24) | type SkillsOptions = NonNullable; type SkillAgent (line 25) | type SkillAgent = NonNullable[number]; type InstallScope (line 26) | type InstallScope = NonNullable; constant SKILL_SOURCES (line 29) | const SKILL_SOURCES = { type SourceKey (line 92) | type SourceKey = keyof typeof SKILL_SOURCES; constant AVAILABLE_AGENTS (line 95) | const AVAILABLE_AGENTS: AgentOption[] = [ constant DEFAULT_SCOPE (line 123) | const DEFAULT_SCOPE: InstallScope = "project"; constant DEFAULT_AGENTS (line 124) | const DEFAULT_AGENTS: SkillAgent[] = ["cursor", "claude-code", "github-c... function hasReactBasedFrontend (line 126) | function hasReactBasedFrontend(frontend: ProjectConfig["frontend"]): boo... function hasNativeFrontend (line 135) | function hasNativeFrontend(frontend: ProjectConfig["frontend"]): boolean { function getRecommendedSourceKeys (line 143) | function getRecommendedSourceKeys(config: ProjectConfig): SourceKey[] { constant CURATED_SKILLS_BY_SOURCE (line 227) | const CURATED_SKILLS_BY_SOURCE: Record(values: T[]): T[] { function setupSkills (line 331) | async function setupSkills( FILE: apps/cli/src/helpers/addons/starlight-setup.ts function setupStarlight (line 13) | async function setupStarlight( FILE: apps/cli/src/helpers/addons/tauri-setup.ts function getWebFrontend (line 13) | function getWebFrontend(frontend: Pick["front... function getTauriDevUrl (line 17) | function getTauriDevUrl(frontend: Pick["front... function getTauriFrontendDist (line 31) | function getTauriFrontendDist(frontend: Pick[... function getTauriBeforeBuildCommand (line 50) | function getTauriBeforeBuildCommand( function buildTauriInitArgs (line 59) | function buildTauriInitArgs( function setupTauri (line 84) | async function setupTauri(config: ProjectConfig): Promise; constant TEMPLATES (line 20) | const TEMPLATES = { constant DEFAULT_TEMPLATE (line 35) | const DEFAULT_TEMPLATE: TuiTemplate = "core"; constant TUI_LOCKFILES (line 36) | const TUI_LOCKFILES = ["bun.lock", "package-lock.json", "pnpm-lock.yaml"... function resolveTuiTemplate (line 38) | function resolveTuiTemplate(config: ProjectConfig): TuiTemplate | undefi... function setupTui (line 52) | async function setupTui(config: ProjectConfig): Promise { function postProcessTuiWorkspace (line 134) | async function postProcessTuiWorkspace( FILE: apps/cli/src/helpers/addons/ultracite-setup.ts type UltraciteLinter (line 14) | type UltraciteLinter = "biome" | "eslint" | "oxlint"; type UltraciteEditor (line 16) | type UltraciteEditor = type UltraciteAgent (line 28) | type UltraciteAgent = type UltraciteHook (line 72) | type UltraciteHook = "cursor" | "windsurf" | "codebuddy" | "claude" | "c... type UltraciteSetupResult (line 74) | type UltraciteSetupResult = Result; constant TEMPLATES (line 20) | const TEMPLATES = { constant DEFAULT_TEMPLATE (line 43) | const DEFAULT_TEMPLATE: WxtTemplate = "react"; constant DEFAULT_DEV_PORT (line 44) | const DEFAULT_DEV_PORT = 5555; function setupWxt (line 46) | async function setupWxt(config: ProjectConfig): Promise { FILE: apps/cli/src/helpers/core/add-handler.ts type AddHandlerOptions (line 27) | interface AddHandlerOptions { type AddResult (line 31) | interface AddResult { function mergeAddonOptions (line 40) | function mergeAddonOptions( function addHandler (line 73) | async function addHandler( function addHandlerInternal (line 114) | async function addHandlerInternal( FILE: apps/cli/src/helpers/core/command-handlers.ts type CreateHandlerOptions (line 41) | interface CreateHandlerOptions { type CreateProjectResult (line 48) | interface CreateProjectResult { function createEmptyResult (line 62) | function createEmptyResult( type CreateHandlerError (line 99) | type CreateHandlerError = function createProjectHandler (line 106) | async function createProjectHandler( function createProjectHandlerInternal (line 147) | async function createProjectHandlerInternal( type DirectoryConflictResult (line 436) | interface DirectoryConflictResult { function isPathWithinCwd (line 441) | function isPathWithinCwd(targetPath: string) { function validateResolvedProjectPathInput (line 447) | function validateResolvedProjectPathInput(candidate: string): Result; constant REMOTE_PROVISIONING_DB_SETUPS (line 11) | const REMOTE_PROVISIONING_DB_SETUPS: DatabaseSetup[] = [ function requiresProvisioningGuardrails (line 19) | function requiresProvisioningGuardrails(dbSetup: DatabaseSetup): boolean { function resolveDbSetupMode (line 23) | function resolveDbSetupMode( function mergeResolvedDbSetupOptions (line 47) | function mergeResolvedDbSetupOptions( FILE: apps/cli/src/helpers/core/db-setup.ts function setupDatabase (line 26) | async function setupDatabase(config: ProjectConfig, cliInput?: DatabaseS... FILE: apps/cli/src/helpers/core/detect-project-config.ts function detectProjectConfig (line 8) | async function detectProjectConfig(projectDir: string) { function isBetterTStackProject (line 43) | async function isBetterTStackProject(projectDir: string): Promise { function initMongoDBAtlas (line 42) | async function initMongoDBAtlas( function writeEnvFile (line 96) | async function writeEnvFile( function displayManualSetupInstructions (line 123) | function displayManualSetupInstructions() { function setupMongoDBAtlas (line 141) | async function setupMongoDBAtlas( FILE: apps/cli/src/helpers/database-providers/neon-setup.ts type NeonConfig (line 26) | type NeonConfig = { type NeonRegion (line 33) | type NeonRegion = { type NeonSetupResult (line 38) | type NeonSetupResult = Result { function isTursoLoggedIn (line 32) | async function isTursoLoggedIn(): Promise { function loginToTurso (line 43) | async function loginToTurso(): Promise> { function installTursoCLI (line 63) | async function installTursoCLI(isMac: boolean): Promise { function selectTursoGroup (line 133) | async function selectTursoGroup(): Promise; function getCliSchemaJson (line 94) | function getCliSchemaJson(): unknown { function getSchemaResult (line 102) | function getSchemaResult(name: SchemaName): unknown { function createBtsCli (line 270) | function createBtsCli(): ReturnType { type CreateError (line 284) | type CreateError = UserCancelledError | CLIError | ProjectCreationError; function create (line 311) | async function create( function sponsors (line 350) | async function sponsors() { function docs (line 354) | async function docs() { function builder (line 358) | async function builder() { function createVirtual (line 407) | async function createVirtual( function add (line 513) | async function add( FILE: apps/cli/src/mcp.ts function formatToolSuccess (line 64) | function formatToolSuccess(data: unknown) { function formatToolError (line 79) | function formatToolError(error: unknown) { function getProjectToolAnnotations (line 96) | function getProjectToolAnnotations() { function getMcpInstallTimeoutMessage (line 104) | function getMcpInstallTimeoutMessage(packageManager: string) { function getStackGuidance (line 112) | function getStackGuidance() { function createBtsMcpServer (line 170) | function createBtsMcpServer() { function startBtsMcpServer (line 383) | async function startBtsMcpServer() { FILE: apps/cli/src/prompts/addons.ts type AddonOption (line 15) | type AddonOption = { type AddonProjectConfig (line 21) | type AddonProjectConfig = Pick< function getAddonDisplay (line 26) | function getAddonDisplay(addon: Addons): { label: string; hint: string } { constant ADDON_GROUPS (line 107) | const ADDON_GROUPS = { function createGroupedOptions (line 116) | function createGroupedOptions(): Record { function addOptionToGroup (line 120) | function addOptionToGroup(groupedOptions: Record,... function sortAndPruneGroupedOptions (line 129) | function sortAndPruneGroupedOptions(groupedOptions: Record = { type PromptGroupAwaitedReturn (line 13) | type PromptGroupAwaitedReturn = { type NavigablePromptGroupOptions (line 17) | interface NavigablePromptGroupOptions { type NavigablePromptGroup (line 25) | type NavigablePromptGroup = { function navigableGroup (line 35) | async function navigableGroup( FILE: apps/cli/src/prompts/navigable.ts constant S_STEP_ACTIVE (line 26) | const S_STEP_ACTIVE = unicode ? "◆" : "*"; constant S_STEP_CANCEL (line 27) | const S_STEP_CANCEL = unicode ? "■" : "x"; constant S_STEP_ERROR (line 28) | const S_STEP_ERROR = unicode ? "▲" : "x"; constant S_STEP_SUBMIT (line 29) | const S_STEP_SUBMIT = unicode ? "◇" : "o"; constant S_BAR (line 30) | const S_BAR = unicode ? "│" : "|"; constant S_BAR_END (line 31) | const S_BAR_END = unicode ? "└" : "—"; constant S_RADIO_ACTIVE (line 32) | const S_RADIO_ACTIVE = unicode ? "●" : ">"; constant S_RADIO_INACTIVE (line 33) | const S_RADIO_INACTIVE = unicode ? "○" : " "; constant S_CHECKBOX_ACTIVE (line 34) | const S_CHECKBOX_ACTIVE = unicode ? "◻" : "[•]"; constant S_CHECKBOX_SELECTED (line 35) | const S_CHECKBOX_SELECTED = unicode ? "◼" : "[+]"; constant S_CHECKBOX_INACTIVE (line 36) | const S_CHECKBOX_INACTIVE = unicode ? "◻" : "[ ]"; function symbol (line 38) | function symbol(state: State) { constant KEYBOARD_HINT (line 52) | const KEYBOARD_HINT = pc.dim( constant KEYBOARD_HINT_FIRST (line 56) | const KEYBOARD_HINT_FIRST = pc.dim( constant KEYBOARD_HINT_MULTI (line 60) | const KEYBOARD_HINT_MULTI = pc.dim( constant KEYBOARD_HINT_MULTI_FIRST (line 64) | const KEYBOARD_HINT_MULTI_FIRST = pc.dim( function getHint (line 72) | function getHint(): string { function getMultiHint (line 76) | function getMultiHint(): string { function normalizeValidationMessage (line 80) | function normalizeValidationMessage( function runWithNavigation (line 86) | async function runWithNavigation(prompt: any): Promise { type SelectOption (line 102) | interface SelectOption { type NavigableSelectOptions (line 109) | interface NavigableSelectOptions { function navigableSelect (line 115) | async function navigableSelect(opts: NavigableSelectOptions): Prom... type NavigableMultiselectOptions (line 164) | interface NavigableMultiselectOptions { function navigableMultiselect (line 172) | async function navigableMultiselect( type NavigableConfirmOptions (line 278) | interface NavigableConfirmOptions { function navigableConfirm (line 285) | async function navigableConfirm(opts: NavigableConfirmOptions): Promise<... type NavigableTextOptions (line 321) | interface NavigableTextOptions { function navigableText (line 329) | async function navigableText(opts: NavigableTextOptions): Promise { type NavigableGroupMultiselectOptions (line 376) | interface NavigableGroupMultiselectOptions { function navigableGroupMultiselect (line 384) | async function navigableGroupMultiselect( FILE: apps/cli/src/prompts/orm.ts function getORMChoice (line 25) | async function getORMChoice( FILE: apps/cli/src/prompts/package-manager.ts function getPackageManagerChoice (line 6) | async function getPackageManagerChoice(packageManager?: PackageManager) { FILE: apps/cli/src/prompts/payments.ts function getPaymentsChoice (line 7) | async function getPaymentsChoice( FILE: apps/cli/src/prompts/project-name.ts function isPathWithinCwd (line 12) | function isPathWithinCwd(targetPath: string) { function validateDirectoryName (line 18) | function validateDirectoryName(name: string) { function getProjectName (line 28) | async function getProjectName(initialName?: string): Promise { FILE: apps/cli/src/prompts/runtime.ts function getRuntimeChoice (line 6) | async function getRuntimeChoice(runtime?: Runtime, backend?: Backend) { FILE: apps/cli/src/prompts/server-deploy.ts type DeploymentOption (line 6) | type DeploymentOption = { function getDeploymentDisplay (line 12) | function getDeploymentDisplay(deployment: ServerDeploy): { function getServerDeploymentChoice (line 28) | async function getServerDeploymentChoice( function getServerDeploymentToAdd (line 52) | async function getServerDeploymentToAdd( FILE: apps/cli/src/prompts/web-deploy.ts function hasWebFrontend (line 7) | function hasWebFrontend(frontends: Frontend[]) { type DeploymentOption (line 11) | type DeploymentOption = { function getDeploymentDisplay (line 17) | function getDeploymentDisplay(deployment: WebDeploy): { function getDeploymentChoice (line 33) | async function getDeploymentChoice( function getDeploymentToAdd (line 71) | async function getDeploymentToAdd(frontend: Frontend[], existingDeployme... FILE: apps/cli/src/utils/analytics.ts constant CONVEX_INGEST_URL (line 7) | const CONVEX_INGEST_URL = process.env.CONVEX_INGEST_URL; function sendConvexEvent (line 9) | async function sendConvexEvent(payload: Record): Promis... function trackProjectCreation (line 25) | async function trackProjectCreation( FILE: apps/cli/src/utils/bts-config.ts constant BTS_CONFIG_FILE (line 7) | const BTS_CONFIG_FILE = "bts.jsonc"; function readBtsConfig (line 12) | async function readBtsConfig(projectDir: string): Promise { FILE: apps/cli/src/utils/compatibility-rules.ts type ValidationResult (line 20) | type ValidationResult = Result; type AddonCompatibilityConfig (line 21) | type AddonCompatibilityConfig = Pick(options: (T | "none")[] | undefined) { function deriveProjectName (line 28) | function deriveProjectName(projectName?: string, projectDirectory?: stri... function processFlags (line 38) | function processFlags(options: CLIInput, projectName?: string) { function getProvidedFlags (line 121) | function getProvidedFlags(options: CLIInput) { function validateNoneExclusivity (line 127) | function validateNoneExclusivity( function validateArrayOptions (line 143) | function validateArrayOptions(options: CLIInput): Result; function validationErr (line 23) | function validationErr(message: string): ValidationResult { function hasResolvedWorkersD1Target (line 27) | function hasResolvedWorkersD1Target(config: Partial) { function hasResolvedSelfCloudflareD1Target (line 35) | function hasResolvedSelfCloudflareD1Target(config: Partial) { function canResolveSelfCloudflareD1Target (line 49) | function canResolveSelfCloudflareD1Target(config: Partial) { function validateOrmDatabaseCompat (line 63) | function validateOrmDatabaseCompat( function validateDatabaseOrmAuth (line 100) | function validateDatabaseOrmAuth( function validateDatabaseSetup (line 109) | function validateDatabaseSetup( function validateConvexConstraints (line 223) | function validateConvexConstraints( function validateBackendNoneConstraints (line 300) | function validateBackendNoneConstraints( function validateSelfBackendConstraints (line 363) | function validateSelfBackendConstraints( function validateBackendConstraints (line 384) | function validateBackendConstraints( function validateFrontendConstraints (line 432) | function validateFrontendConstraints( function validateApiConstraints (line 464) | function validateApiConstraints( function validateFullConfig (line 483) | function validateFullConfig( function validateConfigForProgrammaticUse (line 552) | function validateConfigForProgrammaticUse(config: Partial... FILE: apps/cli/src/utils/context.ts type NavigationState (line 5) | type NavigationState = { type CLIContext (line 10) | type CLIContext = { function defaultContext (line 21) | function defaultContext(): CLIContext { function getContext (line 32) | function getContext(): CLIContext { function tryGetContext (line 40) | function tryGetContext(): CLIContext | undefined { function isSilent (line 44) | function isSilent(): boolean { function isVerbose (line 48) | function isVerbose(): boolean { function getNavigation (line 52) | function getNavigation(): NavigationState { function isFirstPrompt (line 56) | function isFirstPrompt(): boolean { function didLastPromptShowUI (line 60) | function didLastPromptShowUI(): boolean { function getProjectDir (line 64) | function getProjectDir(): string | undefined { function getPackageManager (line 68) | function getPackageManager(): PackageManager | undefined { function setIsFirstPrompt (line 72) | function setIsFirstPrompt(value: boolean): void { function setLastPromptShownUI (line 79) | function setLastPromptShownUI(value: boolean): void { function setProjectInfo (line 86) | function setProjectInfo(info: { type ContextOptions (line 99) | type ContextOptions = { function runWithContext (line 107) | function runWithContext(options: ContextOptions, fn: () => T): T { function runWithContextAsync (line 123) | async function runWithContextAsync( FILE: apps/cli/src/utils/display-config.ts function displayConfig (line 5) | function displayConfig(config: Partial) { FILE: apps/cli/src/utils/docker-utils.ts function isDockerInstalled (line 10) | async function isDockerInstalled() { function isDockerRunning (line 14) | async function isDockerRunning(): Promise { function getDockerInstallInstructions (line 26) | function getDockerInstallInstructions(platform: string, database: Databa... function getDockerStatus (line 51) | async function getDockerStatus(database: Database) { FILE: apps/cli/src/utils/env-utils.ts type EnvVariable (line 3) | interface EnvVariable { function addEnvVariablesToFile (line 9) | async function addEnvVariablesToFile( FILE: apps/cli/src/utils/errors.ts class UserCancelledError (line 14) | class UserCancelledError extends TaggedError("UserCancelledError")<{ method constructor (line 17) | constructor(args?: { message?: string }) { class CLIError (line 25) | class CLIError extends TaggedError("CLIError")<{ class ValidationError (line 33) | class ValidationError extends TaggedError("ValidationError")<{ method constructor (line 38) | constructor(args: { field?: string; value?: unknown; message: string }) { class CompatibilityError (line 46) | class CompatibilityError extends TaggedError("CompatibilityError")<{ method constructor (line 50) | constructor(args: { options: string[]; message: string }) { class DirectoryConflictError (line 58) | class DirectoryConflictError extends TaggedError("DirectoryConflictError... method constructor (line 62) | constructor(args: { directory: string }) { class ProjectCreationError (line 73) | class ProjectCreationError extends TaggedError("ProjectCreationError")<{ method constructor (line 78) | constructor(args: { phase: string; message: string; cause?: unknown }) { class DatabaseSetupError (line 86) | class DatabaseSetupError extends TaggedError("DatabaseSetupError")<{ method constructor (line 91) | constructor(args: { provider: string; message: string; cause?: unknown... class AddonSetupError (line 99) | class AddonSetupError extends TaggedError("AddonSetupError")<{ method constructor (line 104) | constructor(args: { addon: string; message: string; cause?: unknown }) { type AppError (line 116) | type AppError = function cliError (line 133) | function cliError(message: string): Result { function validationError (line 140) | function validationError( function compatibilityError (line 151) | function compatibilityError( function userCancelled (line 161) | function userCancelled(message?: string): Result { function getLatestCLIVersion (line 25) | function getLatestCLIVersion(): string { FILE: apps/cli/src/utils/input-hardening.ts type ValidationResult (line 5) | type ValidationResult = Result; function hasControlCharacters (line 7) | function hasControlCharacters(value: string): boolean { function hardeningError (line 17) | function hardeningError(field: string, value: string, message: string): ... function validateAgentSafePathInput (line 27) | function validateAgentSafePathInput(value: string, field: string): Valid... FILE: apps/cli/src/utils/navigation.ts constant GO_BACK_SYMBOL (line 1) | const GO_BACK_SYMBOL = Symbol("clack:goBack"); function isGoBack (line 3) | function isGoBack(value: unknown): value is symbol { FILE: apps/cli/src/utils/open-url.ts function openUrl (line 3) | async function openUrl(url: string): Promise { FILE: apps/cli/src/utils/package-runner.ts function splitCommandArgs (line 3) | function splitCommandArgs(commandWithArgs: string): string[] { function getPackageExecutionCommand (line 59) | function getPackageExecutionCommand( function getPackageExecutionArgs (line 81) | function getPackageExecutionArgs( function getPackageRunnerPrefix (line 108) | function getPackageRunnerPrefix( FILE: apps/cli/src/utils/project-directory.ts function handleDirectoryConflict (line 12) | async function handleDirectoryConflict(currentPathInput: string): Promise<{ function setupProjectDirectory (line 84) | async function setupProjectDirectory( FILE: apps/cli/src/utils/project-history.ts constant HISTORY_FILE (line 11) | const HISTORY_FILE = "history.json"; class HistoryError (line 13) | class HistoryError extends TaggedError("HistoryError")<{ type ProjectHistoryEntry (line 18) | type ProjectHistoryEntry = { type HistoryData (line 41) | type HistoryData = { function getHistoryDir (line 46) | function getHistoryDir(): string { function getHistoryPath (line 50) | function getHistoryPath(): string { function generateId (line 54) | function generateId(): string { function emptyHistory (line 58) | function emptyHistory(): HistoryData { function ensureHistoryDir (line 62) | async function ensureHistoryDir(): Promise> { function readHistory (line 75) | async function readHistory(): Promise> { function writeHistory (line 112) | async function writeHistory(history: HistoryData): Promise> { function removeFromHistory (line 199) | async function removeFromHistory(id: string): Promise = Result; function validateProjectName (line 11) | function validateProjectName(name: string): ValidationResult { function extractAndValidateProjectName (line 30) | function extractAndValidateProjectName( FILE: apps/cli/src/utils/render-title.ts constant TITLE_TEXT (line 3) | const TITLE_TEXT = ` FILE: apps/cli/src/utils/sponsors.ts constant SPONSORS_JSON_URL (line 9) | const SPONSORS_JSON_URL = "https://sponsors.better-t-stack.dev/sponsors.... constant GITHUB_SPONSOR_URL (line 10) | const GITHUB_SPONSOR_URL = "https://github.com/sponsors/AmanVarshney01"; type SponsorSummary (line 12) | type SponsorSummary = { type Sponsor (line 26) | type Sponsor = { type SponsorEntry (line 39) | type SponsorEntry = { type FetchSponsorsOptions (line 48) | type FetchSponsorsOptions = { function fetchSponsors (line 102) | async function fetchSponsors(url: string = SPONSORS_JSON_URL) { function fetchSponsorsQuietly (line 106) | async function fetchSponsorsQuietly({ function displaySponsors (line 113) | function displaySponsors(sponsors: SponsorEntry) { function displaySponsorsBox (line 131) | function displaySponsorsBox(sponsors: SponsorEntry) { function formatPostInstallSpecialSponsorsSection (line 158) | function formatPostInstallSpecialSponsorsSection(sponsors: SponsorEntry)... function getPostInstallSponsorLineWidth (line 176) | function getPostInstallSponsorLineWidth(): number { function wrapSponsorTokens (line 187) | function wrapSponsorTokens(tokens: string[], maxLineWidth: number): stri... function fetchSponsorsData (line 216) | async function fetchSponsorsData({ function normalizeSponsorFetchError (line 273) | function normalizeSponsorFetchError(error: unknown): CLIError { FILE: apps/cli/src/utils/telemetry.ts function isTelemetryEnabled (line 7) | function isTelemetryEnabled() { FILE: apps/cli/src/utils/templates.ts constant TEMPLATE_PRESETS (line 3) | const TEMPLATE_PRESETS: Record = { function getTemplateConfig (line 67) | function getTemplateConfig(template: Template) { function getTemplateDescription (line 80) | function getTemplateDescription(template: Template) { function listAvailableTemplates (line 92) | function listAvailableTemplates() { FILE: apps/cli/src/utils/terminal-output.ts type SpinnerLike (line 6) | type SpinnerLike = { method start (line 13) | start() {} method stop (line 14) | stop() {} method message (line 15) | message() {} function createSpinner (line 18) | function createSpinner(): SpinnerLike { method info (line 31) | info(message: string) { method warn (line 34) | warn(message: string) { method success (line 37) | success(message: string) { method error (line 40) | error(message: string) { method message (line 43) | message(message: string) { method error (line 49) | error(message: string) { method warn (line 52) | warn(message: string) { method info (line 55) | info(message: string) { method fatal (line 58) | fatal(message: string) { method box (line 61) | box(message: string) { FILE: apps/cli/src/utils/ts-morph.ts function ensureArrayProperty (line 19) | function ensureArrayProperty(obj: ObjectLiteralExpression, name: string) { FILE: apps/cli/src/validation.ts type ValidationResult (line 9) | type ValidationResult = Result; constant CORE_STACK_FLAGS (line 11) | const CORE_STACK_FLAGS = new Set([ function validateYesFlagCombination (line 27) | function validateYesFlagCombination( function processAndValidateFlags (line 54) | function processAndValidateFlags( function processProvidedFlagsWithoutValidation (line 102) | function processProvidedFlagsWithoutValidation( function validateConfigCompatibility (line 130) | function validateConfigCompatibility( FILE: apps/cli/test/addon-options.test.ts constant SMOKE_DIR_PATH (line 9) | const SMOKE_DIR_PATH = path.join(import.meta.dir, "..", ".smoke"); FILE: apps/cli/test/addon-setup-regressions.test.ts function createProjectConfig (line 12) | function createProjectConfig(overrides: Partial = {}): Pr... function writeFakeBunx (line 37) | async function writeFakeBunx(binDir: string, markerFile: string, exitCod... function runWithFakeBunx (line 50) | async function runWithFakeBunx( FILE: apps/cli/test/addons.test.ts function readSourceFiles (line 18) | async function readSourceFiles(dir: string): Promise<{ path: string; con... function expectParseableTypeScript (line 34) | function expectParseableTypeScript(content: string) { function expectDocsShapedEvlogAuth (line 49) | function expectDocsShapedEvlogAuth(content: string) { FILE: apps/cli/test/clerk-matrix.test.ts function buildFrontendCombos (line 29) | function buildFrontendCombos( function expectedContextImport (line 47) | function expectedContextImport(backend: string) { function usesBackendClerkClient (line 53) | function usesBackendClerkClient(backend: string, api: string) { function needsServerClerkPublishableKey (line 57) | function needsServerClerkPublishableKey(backend: string, api: string) { FILE: apps/cli/test/cloudflare-db-clients.test.ts function createVirtualFiles (line 6) | async function createVirtualFiles(config: Parameters[0... FILE: apps/cli/test/setup.ts constant SMOKE_DIR (line 5) | const SMOKE_DIR = join(import.meta.dir, "..", ".smoke"); type VirtualFileNode (line 7) | type VirtualFileNode = { type VirtualDirectoryNode (line 13) | type VirtualDirectoryNode = { type VirtualNode (line 19) | type VirtualNode = VirtualFileNode | VirtualDirectoryNode; function ensureSmokeDirectory (line 21) | async function ensureSmokeDirectory() { function cleanupSmokeDirectory (line 25) | async function cleanupSmokeDirectory() { function collectFiles (line 29) | function collectFiles( FILE: apps/cli/test/silent-create-output.test.ts constant CLI_INDEX_PATH (line 9) | const CLI_INDEX_PATH = path.join(import.meta.dir, "..", "src", "index.ts"); type SilentCreateCase (line 11) | type SilentCreateCase = { function runSilentCreate (line 17) | async function runSilentCreate(testCase: SilentCreateCase) { FILE: apps/cli/test/sponsors.test.ts function createSponsorsFixture (line 6) | function createSponsorsFixture(): SponsorEntry { FILE: apps/cli/test/test-utils.ts constant SMOKE_DIR_PATH (line 41) | const SMOKE_DIR_PATH = join(import.meta.dir, "..", ".smoke"); type TestResult (line 43) | interface TestResult { type TestConfig (line 51) | interface TestConfig extends CreateInput { function runTRPCTest (line 61) | async function runTRPCTest(config: TestConfig): Promise { function expectSuccess (line 167) | function expectSuccess(result: TestResult) { function expectError (line 179) | function expectError(result: TestResult, expectedMessage?: string) { function createTestConfig (line 187) | function createTestConfig( function extractEnumValues (line 196) | function extractEnumValues(schema: { options: readonly... constant PACKAGE_MANAGERS (line 201) | const PACKAGE_MANAGERS = extractEnumValues(PackageManagerSchema); constant DATABASES (line 202) | const DATABASES = extractEnumValues(DatabaseSchema); constant ORMS (line 203) | const ORMS = extractEnumValues(ORMSchema); constant BACKENDS (line 204) | const BACKENDS = extractEnumValues(BackendSchema); constant RUNTIMES (line 205) | const RUNTIMES = extractEnumValues(RuntimeSchema); constant FRONTENDS (line 206) | const FRONTENDS = extractEnumValues(FrontendSchema); constant ADDONS (line 207) | const ADDONS = extractEnumValues(AddonsSchema); constant EXAMPLES (line 208) | const EXAMPLES = extractEnumValues(ExamplesSchema); constant AUTH_PROVIDERS (line 209) | const AUTH_PROVIDERS = extractEnumValues(AuthSchema); constant PAYMENTS_PROVIDERS (line 210) | const PAYMENTS_PROVIDERS = extractEnumValues(PaymentsSchema); constant API_TYPES (line 211) | const API_TYPES = extractEnumValues(APISchema); constant WEB_DEPLOYS (line 212) | const WEB_DEPLOYS = extractEnumValues(WebDeploySchema); constant SERVER_DEPLOYS (line 213) | const SERVER_DEPLOYS = extractEnumValues(ServerDeploySchema); constant DB_SETUPS (line 214) | const DB_SETUPS = extractEnumValues(DatabaseSetupSchema); function createBasicConfig (line 217) | function createBasicConfig(overrides: Partial = {}): TestCon... function createCustomConfig (line 227) | function createCustomConfig(config: Partial): TestConfig { FILE: apps/cli/test/tui-setup.test.ts function createTuiConfig (line 11) | function createTuiConfig(overrides: Partial = {}): Projec... FILE: apps/web/next.config.ts method rewrites (line 20) | async rewrites() { FILE: apps/web/src/app/(home)/_components/FeatureCard.tsx type TechOption (line 10) | type TechOption = { type FeatureCardProps (line 16) | type FeatureCardProps = { function TechIcon (line 23) | function TechIcon({ icon, name, className }: { icon: string; name: strin... function FeatureCard (line 59) | function FeatureCard({ title, options, className }: FeatureCardProps) { FILE: apps/web/src/app/(home)/_components/command-section.tsx function CommandSection (line 16) | function CommandSection() { FILE: apps/web/src/app/(home)/_components/hero-section.tsx function HeroSection (line 3) | function HeroSection() { FILE: apps/web/src/app/(home)/_components/shiny-text.tsx type ShinyTextProps (line 1) | interface ShinyTextProps { FILE: apps/web/src/app/(home)/_components/sponsors-section.tsx function SponsorsSection (line 15) | function SponsorsSection({ sponsorsData }: { sponsorsData: SponsorsData ... FILE: apps/web/src/app/(home)/_components/stats-section.tsx function StatsSection (line 10) | function StatsSection() { FILE: apps/web/src/app/(home)/_components/testimonials.tsx function ArchiveToggleButton (line 33) | function ArchiveToggleButton({ function Testimonials (line 129) | function Testimonials({ FILE: apps/web/src/app/(home)/analytics/_components/analytics-header.tsx function formatUtcDateTime (line 24) | function formatUtcDateTime(value: string) { function formatUtcDate (line 28) | function formatUtcDate(value: string) { function HeaderStat (line 32) | function HeaderStat({ function AnalyticsHeader (line 52) | function AnalyticsHeader({ FILE: apps/web/src/app/(home)/analytics/_components/analytics-helpers.ts constant MILLISECONDS_PER_DAY (line 29) | const MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1000; function formatCompactNumber (line 31) | function formatCompactNumber(value: number): string { function formatCount (line 35) | function formatCount(value: number): string { function formatPercent (line 39) | function formatPercent(value: number, precise = value > 0 && value < 0.1... function formatDelta (line 43) | function formatDelta(value: number | null): string { function formatDateLabel (line 50) | function formatDateLabel(date: string): string { function formatMonthLabel (line 54) | function formatMonthLabel(month: string, pattern = "MMM yyyy"): string { function formatHourLabel (line 58) | function formatHourLabel(hour: string): string { function shortenLabel (line 62) | function shortenLabel(value: string, maxLength = 18): string { function shortenMiddleLabel (line 66) | function shortenMiddleLabel(value: string, maxLength = 18): string { function buildCompactCategoryLabels (line 76) | function buildCompactCategoryLabels(values: string[], maxLength = 12): s... function withShare (line 108) | function withShare(items: Distribution, total?: number): ShareDistributi... function versionWithShare (line 120) | function versionWithShare( function buildWeekdayDistribution (line 135) | function buildWeekdayDistribution(timeSeries: TimeSeriesPoint[]): Weekda... type MatrixOptions (line 180) | type MatrixOptions = { function buildComboMatrix (line 189) | function buildComboMatrix({ function splitComboLabel (line 246) | function splitComboLabel(value: string): [string, string] { function getTrendTone (line 251) | function getTrendTone(deltaPercentage: number | null): "up" | "down" | "... FILE: apps/web/src/app/(home)/analytics/_components/analytics-page.tsx function AnalyticsPage (line 13) | function AnalyticsPage({ FILE: apps/web/src/app/(home)/analytics/_components/analytics-sources.tsx function AnalyticsSources (line 4) | function AnalyticsSources() { FILE: apps/web/src/app/(home)/analytics/_components/chart-card.tsx function ChartCard (line 5) | function ChartCard({ FILE: apps/web/src/app/(home)/analytics/_components/dev-environment-charts.tsx function SplitMeterCard (line 13) | function SplitMeterCard({ function DevToolsSection (line 74) | function DevToolsSection({ data }: { data: AggregatedAnalyticsData }) { FILE: apps/web/src/app/(home)/analytics/_components/evil-chart-utils.ts type EvilTone (line 5) | type EvilTone = "blue" | "teal" | "amber" | "rose" | "violet" | "slate"; function seriesConfig (line 36) | function seriesConfig( function multiSeriesConfig (line 49) | function multiSeriesConfig( function slugify (line 63) | function slugify(value: string): string { type KeyedShareItem (line 72) | type KeyedShareItem = ShareDistributionItem & { function toKeyedShareItems (line 76) | function toKeyedShareItems( function categoryConfig (line 94) | function categoryConfig(items: KeyedShareItem[], toneOffset = 0): ChartC... function getTone (line 110) | function getTone(index: number): EvilTone { FILE: apps/web/src/app/(home)/analytics/_components/live-logs.tsx constant LOG_FIELD_ORDER (line 13) | const LOG_FIELD_ORDER = [ function formatValue (line 43) | function formatValue(value: unknown): string { function hasLogValue (line 50) | function hasLogValue(value: unknown): boolean { function formatStackSummary (line 56) | function formatStackSummary(event: Record) { function LiveLogs (line 69) | function LiveLogs() { FILE: apps/web/src/app/(home)/analytics/_components/metrics-cards.tsx function MetricTile (line 20) | function MetricTile({ function MetricsCards (line 53) | function MetricsCards({ data }: { data: AggregatedAnalyticsData }) { FILE: apps/web/src/app/(home)/analytics/_components/preference-chart-card.tsx function chunkItems (line 16) | function chunkItems(items: T[], chunkCount: number) { type PreferenceChartCardProps (line 27) | type PreferenceChartCardProps = { function PreferenceChartCard (line 48) | function PreferenceChartCard({ FILE: apps/web/src/app/(home)/analytics/_components/section-header.tsx function SectionHeader (line 3) | function SectionHeader({ FILE: apps/web/src/app/(home)/analytics/_components/stack-configuration-charts.tsx function StackSection (line 8) | function StackSection({ data }: { data: AggregatedAnalyticsData }) { FILE: apps/web/src/app/(home)/analytics/_components/timeline-charts.tsx function TimelineSection (line 17) | function TimelineSection({ data }: { data: AggregatedAnalyticsData }) { FILE: apps/web/src/app/(home)/analytics/_components/types.ts type DistributionItem (line 1) | type DistributionItem = { name: string; value: number }; type Distribution (line 2) | type Distribution = DistributionItem[]; type ShareDistributionItem (line 4) | type ShareDistributionItem = DistributionItem & { type VersionDistributionItem (line 8) | type VersionDistributionItem = { type VersionDistribution (line 14) | type VersionDistribution = VersionDistributionItem[]; type TimeSeriesPoint (line 16) | type TimeSeriesPoint = { type MonthlyPoint (line 24) | type MonthlyPoint = { type HourlyPoint (line 31) | type HourlyPoint = { type WeekdayPoint (line 38) | type WeekdayPoint = { type ComboMatrixPoint (line 46) | type ComboMatrixPoint = { type ComboMatrix (line 53) | type ComboMatrix = { type MomentumSnapshot (line 60) | type MomentumSnapshot = { type AggregatedAnalyticsData (line 71) | type AggregatedAnalyticsData = { FILE: apps/web/src/app/(home)/analytics/analytics-client.tsx type PrecomputedStats (line 17) | type PrecomputedStats = { type DailyStats (line 44) | type DailyStats = { date: string; count: number }; type MonthlyStats (line 45) | type MonthlyStats = { type ConnectionStatus (line 50) | type ConnectionStatus = "online" | "connecting" | "reconnecting" | "offl... constant MILLISECONDS_PER_DAY (line 52) | const MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1000; function getConnectionStatus (line 54) | function getConnectionStatus({ function recordToDistribution (line 69) | function recordToDistribution(record: Record): Distribut... function getMostPopular (line 75) | function getMostPopular(dist: Distribution) { function getCalendarDaySpan (line 79) | function getCalendarDaySpan(timeSeries: DailyStats[]): number { function getCalendarDaySpanFromRange (line 96) | function getCalendarDaySpanFromRange( function buildTimeSeries (line 115) | function buildTimeSeries(dailyStats: DailyStats[]): TimeSeriesPoint[] { function buildMonthlyTimeSeries (line 135) | function buildMonthlyTimeSeries(monthlyStats: MonthlyStats["monthly"]) { function buildFromPrecomputed (line 151) | function buildFromPrecomputed( function AnalyticsClient (line 354) | function AnalyticsClient({ FILE: apps/web/src/app/(home)/analytics/page.tsx function Analytics (line 31) | async function Analytics() { FILE: apps/web/src/app/(home)/layout.tsx function Layout (line 8) | function Layout({ children }: { children: ReactNode }) { FILE: apps/web/src/app/(home)/new/_components/action-buttons.tsx type ActionButtonsProps (line 5) | type ActionButtonsProps = { function ActionButtons (line 13) | function ActionButtons({ FILE: apps/web/src/app/(home)/new/_components/code-viewer.tsx type CodeViewerProps (line 17) | interface CodeViewerProps { function getLanguage (line 24) | function getLanguage(extension: string): BundledLanguage { type EmptyStateProps (line 114) | interface EmptyStateProps { function CodeViewerEmpty (line 118) | function CodeViewerEmpty({ FILE: apps/web/src/app/(home)/new/_components/file-explorer.tsx type VirtualFile (line 7) | interface VirtualFile { type VirtualDirectory (line 15) | interface VirtualDirectory { type VirtualNode (line 22) | type VirtualNode = VirtualFile | VirtualDirectory; type FileExplorerProps (line 24) | interface FileExplorerProps { function collectInitialExpandedItems (line 30) | function collectInitialExpandedItems(node: VirtualDirectory, depth: numb... function FileExplorer (line 43) | function FileExplorer({ root, selectedPath, onSelectFile }: FileExplorer... type DirectoryContentsProps (line 60) | interface DirectoryContentsProps { function DirectoryContents (line 66) | function DirectoryContents({ node, selectedPath, onSelectFile }: Directo... FILE: apps/web/src/app/(home)/new/_components/preset-dropdown.tsx type PresetDropdownProps (line 14) | type PresetDropdownProps = { function PresetDropdown (line 18) | function PresetDropdown({ onApplyPreset }: PresetDropdownProps) { FILE: apps/web/src/app/(home)/new/_components/preview-panel.tsx type PreviewPanelProps (line 13) | interface PreviewPanelProps { type PreviewResponse (line 19) | interface PreviewResponse { function PreviewPanel (line 29) | function PreviewPanel({ stack, selectedFilePath, onSelectFile }: Preview... FILE: apps/web/src/app/(home)/new/_components/share-button.tsx type ShareButtonProps (line 8) | interface ShareButtonProps { function ShareButton (line 13) | function ShareButton({ stackUrl, stackState }: ShareButtonProps) { FILE: apps/web/src/app/(home)/new/_components/special-sponsors-panel.tsx type SpecialSponsorsPanelProps (line 12) | type SpecialSponsorsPanelProps = { constant SPONSOR_ME_URL (line 17) | const SPONSOR_ME_URL = "https://github.com/sponsors/AmanVarshney01"; function SpecialSponsorsPanel (line 19) | function SpecialSponsorsPanel({ sponsors, compact = false }: SpecialSpon... FILE: apps/web/src/app/(home)/new/_components/stack-builder/index.tsx type StackBuilderProps (line 36) | type StackBuilderProps = { function StackBuilder (line 40) | function StackBuilder({ specialSponsors = [] }: StackBuilderProps) { FILE: apps/web/src/app/(home)/new/_components/stack-builder/selected-stack-badges.tsx type SelectedStackBadgesProps (line 13) | type SelectedStackBadgesProps = { function SelectedStackBadges (line 18) | function SelectedStackBadges({ stack, onRemove }: SelectedStackBadgesPro... FILE: apps/web/src/app/(home)/new/_components/stack-builder/tech-categories.tsx type TechCategoriesProps (line 14) | type TechCategoriesProps = { function getIsSelected (line 22) | function getIsSelected(stack: StackState, category: keyof StackState, te... function TechCategories (line 37) | function TechCategories({ FILE: apps/web/src/app/(home)/new/_components/stack-builder/use-stack-builder.ts type MobileTab (line 12) | type MobileTab = "build" | "preview"; type CategoryProgressItem (line 14) | type CategoryProgressItem = { constant CATEGORY_LIST (line 21) | const CATEGORY_LIST = CATEGORY_ORDER as TechCategory[]; function formatProjectName (line 23) | function formatProjectName(name: string) { function withFormattedProjectName (line 27) | function withFormattedProjectName(stack: StackState) { function getCompatibilityAdjustmentKey (line 35) | function getCompatibilityAdjustmentKey(stack: StackState, adjustedStack:... function getCompatibilityAdjustmentState (line 39) | function getCompatibilityAdjustmentState( function useStackBuilder (line 58) | function useStackBuilder() { FILE: apps/web/src/app/(home)/new/_components/tech-icon.tsx function TechIcon (line 6) | function TechIcon({ FILE: apps/web/src/app/(home)/new/_components/utils.ts function validateProjectName (line 6) | function validateProjectName(name: string): string | undefined { type CompatibilityResult (line 109) | interface CompatibilityResult { FILE: apps/web/src/app/(home)/new/_components/yolo-toggle.tsx type YoloToggleProps (line 10) | interface YoloToggleProps { function YoloToggle (line 15) | function YoloToggle({ stack, onToggle }: YoloToggleProps) { FILE: apps/web/src/app/(home)/new/page.tsx function FullScreenStackBuilder (line 32) | async function FullScreenStackBuilder() { FILE: apps/web/src/app/(home)/page.tsx function HomePage (line 15) | async function HomePage() { FILE: apps/web/src/app/(home)/showcase/_components/ShowcaseItem.tsx type ShowcaseItemProps (line 8) | interface ShowcaseItemProps { function ShowcaseItem (line 18) | function ShowcaseItem({ FILE: apps/web/src/app/(home)/showcase/_components/showcase-page.tsx type ShowcaseProject (line 8) | type ShowcaseProject = { function ShowcasePage (line 18) | function ShowcasePage({ showcaseProjects }: { showcaseProjects: Array { function normalizeBoolean (line 74) | function normalizeBoolean(value: boolean | string | undefined, fallback:... function normalizeBackend (line 80) | function normalizeBackend(value?: string): ProjectConfig["backend"] { function stackStateToConfig (line 86) | function stackStateToConfig(state: StackState): ProjectConfig { FILE: apps/web/src/app/docs/[[...slug]]/page.tsx function Page (line 12) | async function Page(props: PageProps<"/docs/[[...slug]]">) { function generateStaticParams (line 60) | async function generateStaticParams() { function generateMetadata (line 64) | async function generateMetadata({ FILE: apps/web/src/app/docs/layout.tsx function Layout (line 17) | function Layout({ children }: { children: ReactNode }) { FILE: apps/web/src/app/layout.tsx function Layout (line 113) | function Layout({ children }: { children: ReactNode }) { FILE: apps/web/src/app/llms-full.txt/route.ts function GET (line 7) | async function GET() { FILE: apps/web/src/app/llms.mdx/[[...slug]]/route.ts function GET (line 8) | async function GET(_req: Request, { params }: RouteContext<"/llms.mdx/[[... function generateStaticParams (line 20) | function generateStaticParams() { FILE: apps/web/src/app/manifest.ts function manifest (line 5) | function manifest(): MetadataRoute.Manifest { FILE: apps/web/src/app/not-found.tsx function NotFound (line 6) | function NotFound() { FILE: apps/web/src/app/og/docs/[...slug]/route.tsx function GET (line 8) | async function GET(_req: Request, { params }: RouteContext<"/og/docs/[..... function generateStaticParams (line 174) | function generateStaticParams() { FILE: apps/web/src/app/sitemap.ts function sitemap (line 5) | function sitemap(): MetadataRoute.Sitemap { FILE: apps/web/src/components/ai/page-actions.tsx function LLMCopyButton (line 13) | function LLMCopyButton({ function ViewOptions (line 67) | function ViewOptions({ FILE: apps/web/src/components/evilcharts/charts/area-chart.tsx constant STROKE_WIDTH (line 35) | const STROKE_WIDTH = 0.8; constant LOADING_AREA_DATA_KEY (line 36) | const LOADING_AREA_DATA_KEY = "loading"; constant LOADING_ANIMATION_DURATION (line 37) | const LOADING_ANIMATION_DURATION = 2000; type ChartProps (line 39) | type ChartProps = ComponentProps; type XAxisProps (line 40) | type XAxisProps = ComponentProps; type YAxisProps (line 41) | type YAxisProps = ComponentProps; type AreaType (line 42) | type AreaType = ComponentProps["type"]; type AreaVariant (line 43) | type AreaVariant = "gradient" | "gradient-reverse" | "solid" | "dotted" ... type StrokeVariant (line 44) | type StrokeVariant = "solid" | "dashed" | "animated-dashed"; type StackType (line 45) | type StackType = "default" | "expanded" | "stacked"; type ValidateConfigKeys (line 48) | type ValidateConfigKeys = { type BaseEvilAreaChartProps (line 52) | type BaseEvilAreaChartProps< type EvilAreaChartClickable (line 94) | type EvilAreaChartClickable = { type EvilAreaChartNotClickable (line 99) | type EvilAreaChartNotClickable = { type EvilAreaChartProps (line 104) | type EvilAreaChartProps< function EvilAreaChart (line 109) | function EvilAreaChart< function useLoadingData (line 867) | function useLoadingData(isLoading: boolean, loadingPoints: number = 14) { FILE: apps/web/src/components/evilcharts/charts/bar-chart.tsx constant DEFAULT_BAR_RADIUS (line 34) | const DEFAULT_BAR_RADIUS = 2; constant LOADING_BAR_DATA_KEY (line 35) | const LOADING_BAR_DATA_KEY = "loading"; constant LOADING_ANIMATION_DURATION (line 36) | const LOADING_ANIMATION_DURATION = 2000; type ChartProps (line 38) | type ChartProps = ComponentProps; type XAxisProps (line 39) | type XAxisProps = ComponentProps; type YAxisProps (line 40) | type YAxisProps = ComponentProps; type BarVariant (line 41) | type BarVariant = "default" | "hatched" | "duotone" | "duotone-reverse" ... type StackType (line 42) | type StackType = "default" | "stacked" | "percent"; type BarLayout (line 43) | type BarLayout = "vertical" | "horizontal"; type ValidateConfigKeys (line 46) | type ValidateConfigKeys = { type NumericDataKeys (line 51) | type NumericDataKeys = { type EvilBarChartProps (line 55) | type EvilBarChartProps< type EvilBarChartClickable (line 101) | type EvilBarChartClickable = { type EvilBarChartNotClickable (line 106) | type EvilBarChartNotClickable = { type EvilBarChartPropsWithCallback (line 111) | type EvilBarChartPropsWithCallback< function EvilBarChart (line 116) | function EvilBarChart< type BarShapeProps (line 374) | type BarShapeProps = { type CustomBarProps (line 386) | type CustomBarProps = { function useLoadingData (line 970) | function useLoadingData(isLoading: boolean, loadingBars: number = 12) { FILE: apps/web/src/components/evilcharts/charts/line-chart.tsx constant STROKE_WIDTH (line 43) | const STROKE_WIDTH = 1; constant LOADING_LINE_DATA_KEY (line 44) | const LOADING_LINE_DATA_KEY = "loading"; constant LOADING_ANIMATION_DURATION (line 45) | const LOADING_ANIMATION_DURATION = 2000; type ChartProps (line 47) | type ChartProps = ComponentProps; type XAxisProps (line 48) | type XAxisProps = ComponentProps; type YAxisProps (line 49) | type YAxisProps = ComponentProps; type LineType (line 50) | type LineType = ComponentProps["type"]; type StrokeVariant (line 51) | type StrokeVariant = "solid" | "dashed" | "animated-dashed"; type ValidateConfigKeys (line 54) | type ValidateConfigKeys = { type NumericDataKeys (line 59) | type NumericDataKeys = { type EvilLineChartProps (line 63) | type EvilLineChartProps< type EvilLineChartClickable (line 108) | type EvilLineChartClickable = { type EvilLineChartNotClickable (line 113) | type EvilLineChartNotClickable = { type EvilLineChartPropsWithCallback (line 118) | type EvilLineChartPropsWithCallback< function EvilLineChart (line 123) | function EvilLineChart< type CurvePoint (line 391) | type CurvePoint = NonNullable[number]>; type DrawableCurvePoint (line 392) | type DrawableCurvePoint = CurvePoint & { x: number; y: number }; constant BUFFER_DASH_SIZE (line 398) | const BUFFER_DASH_SIZE = 4; constant BUFFER_GAP_SIZE (line 399) | const BUFFER_GAP_SIZE = 3; function useLoadingData (line 617) | function useLoadingData(isLoading: boolean, loadingPoints: number = 14) { FILE: apps/web/src/components/evilcharts/charts/pie-chart.tsx constant LOADING_SECTORS (line 27) | const LOADING_SECTORS = 5; constant LOADING_ANIMATION_DURATION (line 28) | const LOADING_ANIMATION_DURATION = 2000; constant DEFAULT_INNER_RADIUS (line 31) | const DEFAULT_INNER_RADIUS = 0; constant DEFAULT_OUTER_RADIUS (line 32) | const DEFAULT_OUTER_RADIUS = "80%"; constant DEFAULT_CORNER_RADIUS (line 33) | const DEFAULT_CORNER_RADIUS = 0; constant DEFAULT_PADDING_ANGLE (line 34) | const DEFAULT_PADDING_ANGLE = 0; type ChartProps (line 36) | type ChartProps = ComponentProps; type PieProps (line 37) | type PieProps = ComponentProps; type LabelListProps (line 38) | type LabelListProps = ComponentProps; type EvilPieChartProps (line 40) | type EvilPieChartProps> = { type EvilPieChartClickable (line 81) | type EvilPieChartClickable = { type EvilPieChartNotClickable (line 86) | type EvilPieChartNotClickable = { type EvilPieChartPropsWithCallback (line 91) | type EvilPieChartPropsWithCallback> = function EvilPieChart (line 94) | function EvilPieChart>({ constant LOADING_PIE_DATA (line 280) | const LOADING_PIE_DATA = Array.from({ length: LOADING_SECTORS }, (_, i) ... FILE: apps/web/src/components/evilcharts/charts/radar-chart.tsx constant LOADING_POINTS (line 28) | const LOADING_POINTS = 6; constant LOADING_ANIMATION_DURATION (line 29) | const LOADING_ANIMATION_DURATION = 1500; constant DEFAULT_FILL_OPACITY (line 32) | const DEFAULT_FILL_OPACITY = 0.3; type ChartProps (line 34) | type ChartProps = ComponentProps; type RadarProps (line 35) | type RadarProps = ComponentProps; type PolarGridProps (line 36) | type PolarGridProps = ComponentProps; type RadarVariant (line 38) | type RadarVariant = "filled" | "lines"; type NumericDataKeys (line 41) | type NumericDataKeys = { type EvilRadarChartProps (line 45) | type EvilRadarChartProps< type EvilRadarChartClickable (line 89) | type EvilRadarChartClickable = { type EvilRadarChartNotClickable (line 94) | type EvilRadarChartNotClickable = { type EvilRadarChartPropsWithCallback (line 99) | type EvilRadarChartPropsWithCallback< function EvilRadarChart (line 104) | function EvilRadarChart< function generateLoadingData (line 316) | function generateLoadingData(dataKey: string) { function useLoadingData (line 324) | function useLoadingData(isLoading: boolean, dataKey: string) { FILE: apps/web/src/components/evilcharts/charts/radial-chart.tsx constant LOADING_BARS (line 27) | const LOADING_BARS = 5; constant LOADING_ANIMATION_DURATION (line 28) | const LOADING_ANIMATION_DURATION = 1500; constant DEFAULT_INNER_RADIUS (line 31) | const DEFAULT_INNER_RADIUS = "30%"; constant DEFAULT_OUTER_RADIUS (line 32) | const DEFAULT_OUTER_RADIUS = "100%"; constant DEFAULT_CORNER_RADIUS (line 33) | const DEFAULT_CORNER_RADIUS = 5; constant DEFAULT_BAR_SIZE (line 34) | const DEFAULT_BAR_SIZE = 14; type ChartProps (line 36) | type ChartProps = ComponentProps; type RadialBarProps (line 37) | type RadialBarProps = ComponentProps; type RadialVariant (line 39) | type RadialVariant = "full" | "semi"; type EvilRadialChartProps (line 41) | type EvilRadialChartProps> = { type EvilRadialChartClickable (line 79) | type EvilRadialChartClickable = { type EvilRadialChartNotClickable (line 84) | type EvilRadialChartNotClickable = { type EvilRadialChartPropsWithCallback (line 89) | type EvilRadialChartPropsWithCallback>({ function getVariantConfig (line 270) | function getVariantConfig(variant: RadialVariant) { function generateLoadingData (line 291) | function generateLoadingData() { function useLoadingData (line 299) | function useLoadingData(isLoading: boolean) { FILE: apps/web/src/components/evilcharts/ui/background.tsx type BackgroundVariant (line 12) | type BackgroundVariant = type PatternProps (line 27) | type PatternProps = { id: string }; constant PATTERN_MAP (line 184) | const PATTERN_MAP: Record> = { type ChartBackgroundProps (line 202) | interface ChartBackgroundProps { function ChartBackground (line 206) | function ChartBackground({ variant }: ChartBackgroundProps) { FILE: apps/web/src/components/evilcharts/ui/chart.tsx constant THEMES (line 9) | const THEMES = { light: "", dark: ".dark" } as const; type ThemeKey (line 11) | type ThemeKey = keyof typeof THEMES; type ThemeColorsBase (line 14) | type ThemeColorsBase = { type AtLeastOneThemeColor (line 19) | type AtLeastOneThemeColor = { constant VALID_THEME_KEYS (line 23) | const VALID_THEME_KEYS = Object.keys(THEMES) as ThemeKey[]; function validateChartConfigColors (line 26) | function validateChartConfigColors(config: ChartConfig): void { type ChartConfig (line 42) | type ChartConfig = Record< type ChartContextProps (line 51) | interface ChartContextProps { function useChart (line 57) | function useChart() { type ChartContainerProps (line 67) | interface ChartContainerProps function ChartContainer (line 91) | function ChartContainer({ function LoadingIndicator (line 133) | function LoadingIndicator({ isLoading }: { isLoading: boolean }) { function distributeColors (line 151) | function distributeColors(colorsArray: string[], maxCount: number): stri... function getPayloadConfigFromPayload (line 211) | function getPayloadConfigFromPayload(config: ChartConfig, payload: unkno... function axisValueToPercentFormatter (line 237) | function axisValueToPercentFormatter(value: number) { function getColorsCount (line 242) | function getColorsCount(config: ChartConfig[string]): number { FILE: apps/web/src/components/evilcharts/ui/dot.tsx type DotVariant (line 5) | type DotVariant = "default" | "border" | "colored-border"; type ChartDotProps (line 7) | type ChartDotProps = { type DotVariantProps (line 68) | type DotVariantProps = { FILE: apps/web/src/components/evilcharts/ui/evil-brush.tsx type EvilBrushVariant (line 14) | type EvilBrushVariant = "line" | "area" | "bar"; type CurveType (line 15) | type CurveType = ComponentProps["type"]; type EvilBrushRange (line 17) | interface EvilBrushRange { type EvilBrushProps (line 22) | interface EvilBrushProps { constant SPRING_CONFIG (line 74) | const SPRING_CONFIG = { stiffness: 300, damping: 35, mass: 0.8 }; type DragType (line 81) | type DragType = "left" | "right" | "middle"; type DragState (line 83) | interface DragState { function useBrushDrag (line 89) | function useBrushDrag({ function EvilBrush (line 174) | function EvilBrush({ function BrushHandle (line 409) | function BrushHandle({ function MiniChart (line 465) | function MiniChart({ function useEvilBrush (line 644) | function useEvilBrush>({ FILE: apps/web/src/components/evilcharts/ui/legend.tsx type ChartLegendVariant (line 11) | type ChartLegendVariant = function ChartLegendContent (line 20) | function ChartLegendContent({ function LegendIndicator (line 105) | function LegendIndicator({ function getLegendFillStyle (line 147) | function getLegendFillStyle(dataKey: string, colorsCount: number): React... function getLegendOutlineStyle (line 166) | function getLegendOutlineStyle(dataKey: string, colorsCount: number): Re... FILE: apps/web/src/components/evilcharts/ui/tooltip.tsx type TooltipRoundness (line 12) | type TooltipRoundness = "sm" | "md" | "lg" | "xl"; type TooltipVariant (line 13) | type TooltipVariant = "default" | "frosted-glass"; function ChartTooltipContent (line 27) | function ChartTooltipContent({ function getIndicatorColorStyle (line 176) | function getIndicatorColorStyle(dataKey: string, colorsCount: number): R... FILE: apps/web/src/components/providers.tsx function Providers (line 10) | function Providers({ children }: { children: React.ReactNode }) { FILE: apps/web/src/components/special-sponsor-banner.tsx function SpecialSponsorBanner (line 9) | async function SpecialSponsorBanner() { FILE: apps/web/src/components/theme-toggle.tsx function ThemeToggle (line 10) | function ThemeToggle({ className }: { className?: string }) { FILE: apps/web/src/components/ui/accordion.tsx function Accordion (line 8) | function Accordion({ className, ...props }: AccordionPrimitive.Root.Prop... function AccordionItem (line 18) | function AccordionItem({ className, ...props }: AccordionPrimitive.Item.... function AccordionTrigger (line 28) | function AccordionTrigger({ className, children, ...props }: AccordionPr... function AccordionContent (line 53) | function AccordionContent({ className, children, ...props }: AccordionPr... FILE: apps/web/src/components/ui/button.tsx function Button (line 41) | function Button({ FILE: apps/web/src/components/ui/card.tsx function Card (line 5) | function Card({ function CardHeader (line 23) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 36) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 46) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 56) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 66) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 76) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: apps/web/src/components/ui/dialog.tsx function Dialog (line 10) | function Dialog({ ...props }: DialogPrimitive.Root.Props) { function DialogTrigger (line 14) | function DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props) { function DialogPortal (line 18) | function DialogPortal({ ...props }: DialogPrimitive.Portal.Props) { function DialogClose (line 22) | function DialogClose({ ...props }: DialogPrimitive.Close.Props) { function DialogOverlay (line 26) | function DialogOverlay({ className, ...props }: DialogPrimitive.Backdrop... function DialogContent (line 39) | function DialogContent({ function DialogHeader (line 73) | function DialogHeader({ className, ...props }: React.ComponentProps<"div... function DialogFooter (line 83) | function DialogFooter({ function DialogTitle (line 105) | function DialogTitle({ className, ...props }: DialogPrimitive.Title.Prop... function DialogDescription (line 115) | function DialogDescription({ className, ...props }: DialogPrimitive.Desc... FILE: apps/web/src/components/ui/dropdown-menu.tsx function DropdownMenu (line 9) | function DropdownMenu({ ...props }: MenuPrimitive.Root.Props) { function DropdownMenuPortal (line 13) | function DropdownMenuPortal({ ...props }: MenuPrimitive.Portal.Props) { function DropdownMenuTrigger (line 17) | function DropdownMenuTrigger({ ...props }: MenuPrimitive.Trigger.Props) { function DropdownMenuContent (line 21) | function DropdownMenuContent({ function DropdownMenuGroup (line 52) | function DropdownMenuGroup({ ...props }: MenuPrimitive.Group.Props) { function DropdownMenuLabel (line 56) | function DropdownMenuLabel({ function DropdownMenuItem (line 73) | function DropdownMenuItem({ function DropdownMenuSub (line 96) | function DropdownMenuSub({ ...props }: MenuPrimitive.SubmenuRoot.Props) { function DropdownMenuSubTrigger (line 100) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 124) | function DropdownMenuSubContent({ function DropdownMenuCheckboxItem (line 148) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioGroup (line 177) | function DropdownMenuRadioGroup({ ...props }: MenuPrimitive.RadioGroup.P... function DropdownMenuRadioItem (line 181) | function DropdownMenuRadioItem({ className, children, ...props }: MenuPr... function DropdownMenuSeparator (line 204) | function DropdownMenuSeparator({ className, ...props }: MenuPrimitive.Se... function DropdownMenuShortcut (line 214) | function DropdownMenuShortcut({ className, ...props }: React.ComponentPr... FILE: apps/web/src/components/ui/file-tree.tsx type TreeViewElement (line 11) | type TreeViewElement = { type TreeContextProps (line 18) | type TreeContextProps = { type Direction (line 40) | type Direction = "rtl" | "ltr" | undefined; type TreeViewProps (line 42) | type TreeViewProps = { function Tree (line 52) | function Tree({ function TreeIndicator (line 143) | function TreeIndicator({ className, ...props }: React.HTMLAttributes & { type CodeBlockHeaderProps (line 333) | type CodeBlockHeaderProps = HTMLAttributes; type CodeBlockFilesProps (line 339) | type CodeBlockFilesProps = Omit, "childre... type CodeBlockFilenameProps (line 353) | type CodeBlockFilenameProps = HTMLAttributes & { type CodeBlockSelectProps (line 386) | type CodeBlockSelectProps = ComponentProps; type CodeBlockSelectTriggerProps (line 406) | type CodeBlockSelectTriggerProps = ComponentProps; type CodeBlockSelectValueProps (line 415) | type CodeBlockSelectValueProps = ComponentProps; type CodeBlockSelectContentProps (line 421) | type CodeBlockSelectContentProps = Omit; type CodeBlockCopyButtonProps (line 437) | type CodeBlockCopyButtonProps = Omit, "onC... type CodeBlockFallbackProps (line 483) | type CodeBlockFallbackProps = HTMLAttributes & { type CodeBlockBodyProps (line 504) | type CodeBlockBodyProps = Omit, "children... type CodeBlockItemProps (line 514) | type CodeBlockItemProps = HTMLAttributes & { type CodeBlockContentProps (line 551) | type CodeBlockContentProps = HTMLAttributes & { FILE: apps/web/src/components/ui/kibo-ui/code-block/server.tsx type CodeBlockContentProps (line 11) | type CodeBlockContentProps = HTMLAttributes & { FILE: apps/web/src/components/ui/kibo-ui/qr-code/index.tsx type QRCodeProps (line 9) | type QRCodeProps = HTMLAttributes & { FILE: apps/web/src/components/ui/kibo-ui/qr-code/server.tsx type QRCodeProps (line 6) | type QRCodeProps = HTMLAttributes & { FILE: apps/web/src/components/ui/scroll-area.tsx function ScrollArea (line 8) | function ScrollArea({ className, children, ...props }: ScrollAreaPrimiti... function ScrollBar (line 28) | function ScrollBar({ FILE: apps/web/src/components/ui/select.tsx function SelectGroup (line 11) | function SelectGroup({ className, ...props }: SelectPrimitive.Group.Prop... function SelectValue (line 21) | function SelectValue({ className, ...props }: SelectPrimitive.Value.Prop... function SelectTrigger (line 31) | function SelectTrigger({ function SelectContent (line 57) | function SelectContent({ function SelectLabel (line 98) | function SelectLabel({ className, ...props }: SelectPrimitive.GroupLabel... function SelectItem (line 108) | function SelectItem({ className, children, ...props }: SelectPrimitive.I... function SelectSeparator (line 132) | function SelectSeparator({ className, ...props }: SelectPrimitive.Separa... function SelectScrollUpButton (line 142) | function SelectScrollUpButton({ function SelectScrollDownButton (line 160) | function SelectScrollDownButton({ FILE: apps/web/src/components/ui/share-dialog.tsx type ShareDialogProps (line 25) | interface ShareDialogProps { function ShareDialog (line 31) | function ShareDialog({ children, stackUrl, stackState }: ShareDialogProp... FILE: apps/web/src/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.ComponentProps<"div">) { FILE: apps/web/src/components/ui/spinner.tsx function Spinner (line 5) | function Spinner({ className, ...props }: React.ComponentProps<"svg">) { FILE: apps/web/src/components/ui/switch.tsx function Switch (line 7) | function Switch({ FILE: apps/web/src/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ className, orientation = "horizontal", ...props }: TabsP... function TabsList (line 34) | function TabsList({ function TabsTrigger (line 49) | function TabsTrigger({ className, ...props }: TabsPrimitive.Tab.Props) { function TabsContent (line 65) | function TabsContent({ className, ...props }: TabsPrimitive.Panel.Props) { FILE: apps/web/src/components/ui/tech-badge.tsx type TechBadgeProps (line 8) | interface TechBadgeProps { function TechIcon (line 50) | function TechIcon({ icon, name, className }: { icon: string; name: strin... function TechBadge (line 87) | function TechBadge({ icon, name, category, className }: TechBadgeProps) { FILE: apps/web/src/components/ui/toggle.tsx function Toggle (line 29) | function Toggle({ FILE: apps/web/src/components/ui/tooltip.tsx function TooltipProvider (line 7) | function TooltipProvider({ delay = 0, ...props }: TooltipPrimitive.Provi... function Tooltip (line 11) | function Tooltip({ delay, ...props }: TooltipPrimitive.Root.Props & { de... function TooltipTrigger (line 19) | function TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) { function TooltipContent (line 23) | function TooltipContent({ FILE: apps/web/src/lib/constant.ts constant ICON_BASE_URL (line 3) | const ICON_BASE_URL = "https://r2.better-t-stack.dev/icons"; constant TECH_OPTIONS (line 5) | const TECH_OPTIONS: Record< constant PRESET_TEMPLATES (line 692) | const PRESET_TEMPLATES = [ type StackState (line 799) | type StackState = { constant DEFAULT_STACK (line 821) | const DEFAULT_STACK: StackState = { FILE: apps/web/src/lib/get-llm-text.ts function getLLMText (line 5) | async function getLLMText(page: InferPageType) { FILE: apps/web/src/lib/sanitize-stack-addons.ts function sanitizeSingleSelection (line 8) | function sanitizeSingleSelection( function sanitizeMultiSelection (line 21) | function sanitizeMultiSelection( function resolveMonorepoAddonConflicts (line 38) | function resolveMonorepoAddonConflicts(addons: readonly string[]): strin... function sanitizeAddons (line 60) | function sanitizeAddons(addons: readonly string[] | null | undefined): s... function sanitizeExamples (line 65) | function sanitizeExamples(examples: readonly string[] | null | undefined... function sanitizeWebFrontends (line 69) | function sanitizeWebFrontends(webFrontend: readonly string[] | null | un... function sanitizeNativeFrontends (line 73) | function sanitizeNativeFrontends( function sanitizeStackState (line 83) | function sanitizeStackState(stack: StackState): StackState { function sanitizeStackAddons (line 93) | function sanitizeStackAddons(stack: StackState): StackState { FILE: apps/web/src/lib/search-config.ts type CustomSearchItem (line 1) | interface CustomSearchItem { function filterCustomItems (line 53) | function filterCustomItems( FILE: apps/web/src/lib/source.ts function getPageImage (line 9) | function getPageImage(page: InferPageType) { FILE: apps/web/src/lib/sponsor-utils.ts constant SPECIAL_SPONSOR_THRESHOLD (line 3) | const SPECIAL_SPONSOR_THRESHOLD = 100; FILE: apps/web/src/lib/sponsors.ts constant SPONSORS_URL (line 3) | const SPONSORS_URL = "https://sponsors.better-t-stack.dev/sponsors.json"; function fetchSponsors (line 5) | async function fetchSponsors() { FILE: apps/web/src/lib/stack-url-state.client.ts function useStackState (line 64) | function useStackState() { FILE: apps/web/src/lib/stack-url-state.ts function loadStackParams (line 76) | async function loadStackParams( type LoadedStackState (line 83) | type LoadedStackState = Awaited>; FILE: apps/web/src/lib/stack-utils.ts constant CATEGORY_ORDER (line 4) | const CATEGORY_ORDER: Array = [ function generateStackSummary (line 37) | function generateStackSummary(stack: StackState) { function getDesktopBuildNote (line 63) | function getDesktopBuildNote(stack: Pick = {}): StackState { FILE: packages/backend/convex/_generated/dataModel.d.ts type TableNames (line 23) | type TableNames = TableNamesInDataModel; type Doc (line 30) | type Doc = DocumentByName< type Id (line 48) | type Id = type DataModel (line 60) | type DataModel = DataModelFromSchemaDefinition; FILE: packages/backend/convex/_generated/server.d.ts type QueryCtx (line 107) | type QueryCtx = GenericQueryCtx; type MutationCtx (line 115) | type MutationCtx = GenericMutationCtx; type ActionCtx (line 123) | type ActionCtx = GenericActionCtx; type DatabaseReader (line 132) | type DatabaseReader = GenericDatabaseReader; type DatabaseWriter (line 143) | type DatabaseWriter = GenericDatabaseWriter; FILE: packages/backend/convex/analytics.ts constant MAX_DAILY_STATS_WINDOW (line 6) | const MAX_DAILY_STATS_WINDOW = 366; function incrementKey (line 8) | function incrementKey( function incrementKeys (line 16) | function incrementKeys( function incrementBool (line 28) | function incrementBool( function getMajorVersion (line 37) | function getMajorVersion(version: string | undefined): string | undefined { FILE: packages/backend/convex/analytics_date_utils.ts type DailyCount (line 1) | type DailyCount = { constant MILLISECONDS_PER_DAY (line 6) | const MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1000; function parseUtcDate (line 8) | function parseUtcDate(date: string): number | null { function formatUtcDate (line 13) | function formatUtcDate(timestamp: number): string { function buildDailyWindow (line 17) | function buildDailyWindow( FILE: packages/template-generator/scripts/generate-templates.ts constant TEMPLATES_DIR (line 11) | const TEMPLATES_DIR = path.join(__dirname, "../templates"); constant OUTPUT_FILE (line 12) | const OUTPUT_FILE = path.join(__dirname, "../src/templates.generated.ts"); constant BINARY_OUTPUT_DIR (line 13) | const BINARY_OUTPUT_DIR = path.join(__dirname, "../templates-binary"); function generateTemplates (line 15) | async function generateTemplates() { function copyBinaryFiles (line 66) | async function copyBinaryFiles(binaryFiles: string[]) { FILE: packages/template-generator/src/bts-config.ts constant BTS_CONFIG_FILE (line 5) | const BTS_CONFIG_FILE = "bts.jsonc"; function writeBtsConfigToVfs (line 11) | function writeBtsConfigToVfs( FILE: packages/template-generator/src/core/template-processor.ts function processTemplateString (line 11) | function processTemplateString(content: string, context: ProjectConfig):... function isBinaryFile (line 15) | function isBinaryFile(filePath: string): boolean { function transformFilename (line 19) | function transformFilename(filename: string): string { function processFileContent (line 29) | function processFileContent( FILE: packages/template-generator/src/core/template-reader.ts function getTemplatesRoot (line 11) | function getTemplatesRoot(): string { function getBinaryTemplatesRoot (line 25) | function getBinaryTemplatesRoot(): string { function loadTemplates (line 39) | async function loadTemplates(prefix?: string): Promise { FILE: packages/template-generator/src/core/virtual-fs.ts class VirtualFileSystem (line 8) | class VirtualFileSystem { method constructor (line 13) | constructor() { method writeFile (line 19) | writeFile(filePath: string, content: string, sourcePath?: string): void { method readFile (line 31) | readFile(filePath: string): string | undefined { method exists (line 39) | exists(path: string): boolean { method fileExists (line 48) | fileExists(filePath: string): boolean { method directoryExists (line 56) | directoryExists(dirPath: string): boolean { method mkdir (line 64) | mkdir(dirPath: string): void { method deleteFile (line 68) | deleteFile(filePath: string): boolean { method listDir (line 77) | listDir(dirPath: string): string[] { method readJson (line 85) | readJson(filePath: string): T | undefined { method writeJson (line 95) | writeJson(filePath: string, data: unknown, spaces = 2): void { method getAllFiles (line 99) | getAllFiles(): string[] { method getAllDirectories (line 105) | getAllDirectories(): string[] { method getFileCount (line 111) | getFileCount(): number { method getDirectoryCount (line 115) | getDirectoryCount(): number { method toTree (line 119) | toTree(rootName = "project"): VirtualDirectory { method clear (line 126) | clear(): void { method getVolume (line 133) | getVolume() { method getFs (line 136) | getFs() { method walkDir (line 140) | private walkDir(dir: string, results: string[], filesOnly: boolean): v... method buildTree (line 155) | private buildTree(dir: string, parent: VirtualDirectory): void { method sortChildren (line 188) | private sortChildren(node: VirtualDirectory): void { method normalizePath (line 199) | private normalizePath(p: string): string { FILE: packages/template-generator/src/fs-writer.ts constant BINARY_FILE_MARKER (line 9) | const BINARY_FILE_MARKER = "[Binary file]"; class FileWriteError (line 14) | class FileWriteError extends TaggedError("FileWriteError")<{ function writeTree (line 24) | async function writeTree( function writeNodeInternal (line 44) | async function writeNodeInternal( function writeSelected (line 73) | async function writeSelected( function writeSelectedNodeInternal (line 94) | async function writeSelectedNodeInternal( function copyBinaryFile (line 122) | async function copyBinaryFile(templatePath: string, destPath: string): P... FILE: packages/template-generator/src/generator.ts function generate (line 50) | async function generate( FILE: packages/template-generator/src/post-process/catalogs.ts type PackageJson (line 11) | type PackageJson = { type CatalogEntry (line 21) | type CatalogEntry = { type PackageInfo (line 26) | type PackageInfo = { constant PACKAGE_PATHS (line 32) | const PACKAGE_PATHS = [ function processCatalogs (line 53) | function processCatalogs(vfs: VirtualFileSystem, config: ProjectConfig):... function findDuplicateDependencies (line 84) | function findDuplicateDependencies( function setupBunCatalogs (line 124) | function setupBunCatalogs(vfs: VirtualFileSystem, catalog: Record { function getDatabaseTargets (line 81) | function getDatabaseTargets(dbSupport: DbScriptSupport): Record { function getSqliteLocalTarget (line 112) | function getSqliteLocalTarget(): Record { function getDeployTargets (line 118) | function getDeployTargets(): Record { FILE: packages/template-generator/src/processors/payments-deps.ts function processPaymentsDeps (line 6) | function processPaymentsDeps(vfs: VirtualFileSystem, config: ProjectConf... FILE: packages/template-generator/src/processors/pwa-plugins.ts function processPwaPlugins (line 6) | function processPwaPlugins(vfs: VirtualFileSystem, config: ProjectConfig... FILE: packages/template-generator/src/processors/readme-generator.ts function getDesktopStaticBuildNote (line 6) | function getDesktopStaticBuildNote(frontend: ProjectConfig["frontend"]):... function getClerkQuickstartUrl (line 25) | function getClerkQuickstartUrl(frontend: ProjectConfig["frontend"]): str... function getClerkFrontendEnvLines (line 47) | function getClerkFrontendEnvLines(frontend: ProjectConfig["frontend"]): ... function getClerkSetupLines (line 69) | function getClerkSetupLines( function hasNativeFrontend (line 125) | function hasNativeFrontend(frontend: ProjectConfig["frontend"]): boolean { function hasWebFrontend (line 131) | function hasWebFrontend(frontend: ProjectConfig["frontend"]): boolean { function processReadme (line 146) | function processReadme(vfs: VirtualFileSystem, config: ProjectConfig): v... function generateReadmeContent (line 151) | function generateReadmeContent(options: ProjectConfig): string { function generateStackDescription (line 262) | function generateStackDescription( function generateRunningInstructions (line 302) | function generateRunningInstructions( function generateReactUiSection (line 333) | function generateReactUiSection(hasReactWeb: boolean, projectName: strin... function generateProjectStructure (line 365) | function generateProjectStructure(config: ProjectConfig): string { function generateFeaturesList (line 445) | function generateFeaturesList( function generateDatabaseSetup (line 565) | function generateDatabaseSetup(config: ProjectConfig, packageManagerRunC... function generateScriptsList (line 627) | function generateScriptsList( function generateDeploymentCommands (line 724) | function generateDeploymentCommands( function generateGitHooksSection (line 757) | function generateGitHooksSection( FILE: packages/template-generator/src/processors/runtime-deps.ts type PackageJson (line 6) | type PackageJson = { function processRuntimeDeps (line 11) | function processRuntimeDeps(vfs: VirtualFileSystem, config: ProjectConfi... FILE: packages/template-generator/src/processors/turbo-generator.ts type TurboTask (line 11) | interface TurboTask { type TurboConfig (line 19) | interface TurboConfig { function processTurboConfig (line 25) | function processTurboConfig(vfs: VirtualFileSystem, config: ProjectConfi... function generateTurboConfig (line 32) | function generateTurboConfig(config: ProjectConfig): TurboConfig { function getBaseTasks (line 58) | function getBaseTasks(frontend: string[]): Record { function getConvexTasks (line 102) | function getConvexTasks(): Record { function getDatabaseTasks (line 111) | function getDatabaseTasks(dbSupport: DbScriptSupport): Record { function getSqliteLocalTask (line 152) | function getSqliteLocalTask(): Record { function getDeployTasks (line 160) | function getDeployTasks(): Record { FILE: packages/template-generator/src/processors/workspace-deps.ts constant NATIVE_TYPESCRIPT_VERSION (line 7) | const NATIVE_TYPESCRIPT_VERSION = "~5.9.2"; function processWorkspaceDeps (line 9) | function processWorkspaceDeps(vfs: VirtualFileSystem, config: ProjectCon... function getRuntimeDevDeps (line 191) | function getRuntimeDevDeps( FILE: packages/template-generator/src/template-handlers/addons.ts function processAddonTemplates (line 6) | async function processAddonTemplates( FILE: packages/template-generator/src/template-handlers/api.ts function processApiTemplates (line 6) | async function processApiTemplates( FILE: packages/template-generator/src/template-handlers/auth.ts function processAuthTemplates (line 6) | async function processAuthTemplates( FILE: packages/template-generator/src/template-handlers/backend.ts function processBackendTemplates (line 6) | async function processBackendTemplates( FILE: packages/template-generator/src/template-handlers/base.ts function processBaseTemplate (line 6) | async function processBaseTemplate( FILE: packages/template-generator/src/template-handlers/database.ts function processDbTemplates (line 6) | async function processDbTemplates( FILE: packages/template-generator/src/template-handlers/deploy.ts function processDeployTemplates (line 6) | async function processDeployTemplates( FILE: packages/template-generator/src/template-handlers/examples.ts function processExampleTemplates (line 6) | async function processExampleTemplates( FILE: packages/template-generator/src/template-handlers/extras.ts function processExtrasTemplates (line 11) | async function processExtrasTemplates( FILE: packages/template-generator/src/template-handlers/frontend.ts function processFrontendTemplates (line 6) | async function processFrontendTemplates( FILE: packages/template-generator/src/template-handlers/packages.ts function processConfigPackage (line 6) | async function processConfigPackage( function processEnvPackage (line 14) | async function processEnvPackage( function processUiPackage (line 100) | async function processUiPackage( FILE: packages/template-generator/src/template-handlers/payments.ts function processPaymentsTemplates (line 6) | async function processPaymentsTemplates( FILE: packages/template-generator/src/template-handlers/utils.ts type TemplateData (line 6) | type TemplateData = Map; function hasTemplatesWithPrefix (line 8) | function hasTemplatesWithPrefix(templates: TemplateData, prefix: string)... function processSingleTemplate (line 16) | function processSingleTemplate( function processTemplatesFromPrefix (line 42) | function processTemplatesFromPrefix( FILE: packages/template-generator/src/templates.generated.ts constant EMBEDDED_TEMPLATES (line 4) | const EMBEDDED_TEMPLATES: Map = new Map([ constant TEMPLATE_COUNT (line 30044) | const TEMPLATE_COUNT = 467; FILE: packages/template-generator/src/types.ts type VirtualFile (line 4) | interface VirtualFile { type VirtualDirectory (line 13) | interface VirtualDirectory { type VirtualNode (line 20) | type VirtualNode = VirtualFile | VirtualDirectory; type VirtualFileTree (line 22) | interface VirtualFileTree { type GeneratorOptions (line 29) | interface GeneratorOptions { class GeneratorError (line 40) | class GeneratorError extends TaggedError("GeneratorError")<{ FILE: packages/template-generator/src/utils/add-deps.ts type PackageJson (line 7) | type PackageJson = { type AvailableDependencies (line 169) | type AvailableDependencies = keyof typeof dependencyVersionMap; type AddDepsOptions (line 171) | type AddDepsOptions = { function addPackageDependency (line 183) | function addPackageDependency(options: AddDepsOptions): void { FILE: packages/template-generator/src/utils/db-scripts.ts type DbScriptSupport (line 3) | type DbScriptSupport = { function getDbScriptSupport (line 12) | function getDbScriptSupport(config: ProjectConfig): DbScriptSupport { FILE: packages/template-generator/src/utils/reproducible-command.ts function normalizeMultiValues (line 3) | function normalizeMultiValues(values: string[] | undefined): string[] { function formatMultiFlag (line 9) | function formatMultiFlag(flag: string, values: string[]): string { function getBaseCommand (line 16) | function getBaseCommand(packageManager: ProjectConfig["packageManager"])... function generateReproducibleCommand (line 28) | function generateReproducibleCommand(config: ProjectConfig): string { FILE: packages/template-generator/templates/frontend/solid/src/components/loader.tsx function Loader (line 3) | function Loader() { FILE: packages/types/src/json-schema.ts function getDatabaseJsonSchema (line 30) | function getDatabaseJsonSchema() { function getORMJsonSchema (line 34) | function getORMJsonSchema() { function getBackendJsonSchema (line 38) | function getBackendJsonSchema() { function getRuntimeJsonSchema (line 42) | function getRuntimeJsonSchema() { function getFrontendJsonSchema (line 46) | function getFrontendJsonSchema() { function getAddonsJsonSchema (line 50) | function getAddonsJsonSchema() { function getExamplesJsonSchema (line 54) | function getExamplesJsonSchema() { function getPackageManagerJsonSchema (line 58) | function getPackageManagerJsonSchema() { function getDatabaseSetupJsonSchema (line 62) | function getDatabaseSetupJsonSchema() { function getAPIJsonSchema (line 66) | function getAPIJsonSchema() { function getAuthJsonSchema (line 70) | function getAuthJsonSchema() { function getPaymentsJsonSchema (line 74) | function getPaymentsJsonSchema() { function getWebDeployJsonSchema (line 78) | function getWebDeployJsonSchema() { function getServerDeployJsonSchema (line 82) | function getServerDeployJsonSchema() { function getDirectoryConflictJsonSchema (line 86) | function getDirectoryConflictJsonSchema() { function getTemplateJsonSchema (line 90) | function getTemplateJsonSchema() { function getAddonOptionsJsonSchema (line 94) | function getAddonOptionsJsonSchema() { function getDbSetupOptionsJsonSchema (line 98) | function getDbSetupOptionsJsonSchema() { function getCreateInputJsonSchema (line 102) | function getCreateInputJsonSchema() { function getAddInputJsonSchema (line 106) | function getAddInputJsonSchema() { function getProjectConfigJsonSchema (line 110) | function getProjectConfigJsonSchema() { function getBetterTStackConfigJsonSchema (line 114) | function getBetterTStackConfigJsonSchema() { function getInitResultJsonSchema (line 118) | function getInitResultJsonSchema() { function getAllJsonSchemas (line 123) | function getAllJsonSchemas() { FILE: packages/types/src/schemas.ts constant DATABASE_VALUES (line 539) | const DATABASE_VALUES = DatabaseSchema.options; constant ORM_VALUES (line 540) | const ORM_VALUES = ORMSchema.options; constant BACKEND_VALUES (line 541) | const BACKEND_VALUES = BackendSchema.options; constant RUNTIME_VALUES (line 542) | const RUNTIME_VALUES = RuntimeSchema.options; constant FRONTEND_VALUES (line 543) | const FRONTEND_VALUES = FrontendSchema.options; constant ADDONS_VALUES (line 544) | const ADDONS_VALUES = AddonsSchema.options; constant EXAMPLES_VALUES (line 545) | const EXAMPLES_VALUES = ExamplesSchema.options; constant PACKAGE_MANAGER_VALUES (line 546) | const PACKAGE_MANAGER_VALUES = PackageManagerSchema.options; constant DATABASE_SETUP_VALUES (line 547) | const DATABASE_SETUP_VALUES = DatabaseSetupSchema.options; constant API_VALUES (line 548) | const API_VALUES = APISchema.options; constant AUTH_VALUES (line 549) | const AUTH_VALUES = AuthSchema.options; constant PAYMENTS_VALUES (line 550) | const PAYMENTS_VALUES = PaymentsSchema.options; constant WEB_DEPLOY_VALUES (line 551) | const WEB_DEPLOY_VALUES = WebDeploySchema.options; constant SERVER_DEPLOY_VALUES (line 552) | const SERVER_DEPLOY_VALUES = ServerDeploySchema.options; constant DIRECTORY_CONFLICT_VALUES (line 553) | const DIRECTORY_CONFLICT_VALUES = DirectoryConflictSchema.options; constant TEMPLATE_VALUES (line 554) | const TEMPLATE_VALUES = TemplateSchema.options; FILE: packages/types/src/types.ts type Database (line 32) | type Database = z.infer; type ORM (line 33) | type ORM = z.infer; type Backend (line 34) | type Backend = z.infer; type Runtime (line 35) | type Runtime = z.infer; type Frontend (line 36) | type Frontend = z.infer; type Addons (line 37) | type Addons = z.infer; type Examples (line 38) | type Examples = z.infer; type PackageManager (line 39) | type PackageManager = z.infer; type DatabaseSetup (line 40) | type DatabaseSetup = z.infer; type API (line 41) | type API = z.infer; type Auth (line 42) | type Auth = z.infer; type Payments (line 43) | type Payments = z.infer; type WebDeploy (line 44) | type WebDeploy = z.infer; type ServerDeploy (line 45) | type ServerDeploy = z.infer; type DirectoryConflict (line 46) | type DirectoryConflict = z.infer; type Template (line 47) | type Template = z.infer; type AddonOptions (line 48) | type AddonOptions = z.infer; type DbSetupOptions (line 49) | type DbSetupOptions = z.infer; type ProjectName (line 50) | type ProjectName = z.infer; type CreateInput (line 52) | type CreateInput = z.infer; type AddInput (line 53) | type AddInput = z.infer; type CLIInput (line 54) | type CLIInput = z.infer; type ProjectConfig (line 55) | type ProjectConfig = z.infer; type BetterTStackConfig (line 56) | type BetterTStackConfig = z.infer; type InitResult (line 57) | type InitResult = z.infer; type WebFrontend (line 59) | type WebFrontend = Extract< type DesktopWebFrontend (line 72) | type DesktopWebFrontend = Exclude; type NativeFrontend (line 74) | type NativeFrontend = Extract< FILE: scripts/bump-version.ts constant CLI_PACKAGE_JSON_PATH (line 7) | const CLI_PACKAGE_JSON_PATH = join(process.cwd(), "apps/cli/package.json"); constant ALIAS_PACKAGE_JSON_PATH (line 8) | const ALIAS_PACKAGE_JSON_PATH = join(process.cwd(), "packages/create-bts... constant TYPES_PACKAGE_JSON_PATH (line 9) | const TYPES_PACKAGE_JSON_PATH = join(process.cwd(), "packages/types/pack... constant TEMPLATE_GENERATOR_PACKAGE_JSON_PATH (line 10) | const TEMPLATE_GENERATOR_PACKAGE_JSON_PATH = join( function main (line 15) | async function main(): Promise { FILE: scripts/canary-release.ts constant CLI_PACKAGE_JSON_PATH (line 7) | const CLI_PACKAGE_JSON_PATH = join(process.cwd(), "apps/cli/package.json"); constant ALIAS_PACKAGE_JSON_PATH (line 8) | const ALIAS_PACKAGE_JSON_PATH = join(process.cwd(), "packages/create-bts... constant TYPES_PACKAGE_JSON_PATH (line 9) | const TYPES_PACKAGE_JSON_PATH = join(process.cwd(), "packages/types/pack... constant TEMPLATE_GENERATOR_PACKAGE_JSON_PATH (line 10) | const TEMPLATE_GENERATOR_PACKAGE_JSON_PATH = join( function main (line 15) | async function main(): Promise { FILE: scripts/cleanup-previews.ts constant PACKAGES (line 4) | const PACKAGES = [ type DistTags (line 11) | interface DistTags { function main (line 15) | async function main(): Promise { function cleanupPR (line 121) | async function cleanupPR(prNumber: string, isDryRun: boolean): Promise { function installAndRun (line 77) | async function installAndRun( function hasPackageManager (line 121) | async function hasPackageManager(pm: string): Promise { FILE: scripts/release.ts function main (line 9) | async function main(): Promise {