feat: move schema exports to shadcn/schema (#7989)

This commit is contained in:
shadcn
2025-08-10 16:05:53 +04:00
committed by GitHub
parent a426fea941
commit a4a3600757
60 changed files with 79 additions and 68 deletions

View File

@@ -0,0 +1,5 @@
---
"shadcn": major
---
move schema to shadcn/schema

View File

@@ -1,7 +1,7 @@
import * as React from "react"
import { Metadata } from "next"
import { notFound } from "next/navigation"
import { registryItemSchema } from "shadcn/registry"
import { registryItemSchema } from "shadcn/schema"
import { z } from "zod"
import { siteConfig } from "@/lib/config"

View File

@@ -1,5 +1,5 @@
import * as React from "react"
import { registryItemFileSchema } from "shadcn/registry"
import { registryItemFileSchema } from "shadcn/schema"
import { z } from "zod"
import { highlightCode } from "@/lib/highlight-code"

View File

@@ -17,7 +17,7 @@ import {
Terminal,
} from "lucide-react"
import { ImperativePanelHandle } from "react-resizable-panels"
import { registryItemFileSchema, registryItemSchema } from "shadcn/registry"
import { registryItemFileSchema, registryItemSchema } from "shadcn/schema"
import { z } from "zod"
import { trackEvent } from "@/lib/events"

View File

@@ -1,5 +1,5 @@
import * as React from "react"
import { registryItemSchema } from "shadcn/registry"
import { registryItemSchema } from "shadcn/schema"
import { z } from "zod"
import { highlightCode } from "@/lib/highlight-code"

View File

@@ -1,6 +1,6 @@
"use server"
import { registryItemSchema } from "shadcn/registry"
import { registryItemSchema } from "shadcn/schema"
import { z } from "zod"
export async function getAllBlockIds(

View File

@@ -1,7 +1,7 @@
import { promises as fs } from "fs"
import { tmpdir } from "os"
import path from "path"
import { registryItemFileSchema, registryItemSchema } from "shadcn/registry"
import { registryItemFileSchema, registryItemSchema } from "shadcn/schema"
import { Project, ScriptKind } from "ts-morph"
import { z } from "zod"

View File

@@ -1,4 +1,4 @@
import { registryItemSchema, type Registry } from "shadcn/registry"
import { registryItemSchema, type Registry } from "shadcn/schema"
import { z } from "zod"
import { blocks } from "@/registry/registry-blocks"

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const blocks: Registry["items"] = [
{

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const charts: Registry["items"] = [
// Area Charts

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const examples: Registry["items"] = [
{

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const hooks: Registry["items"] = [
{

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const internal: Registry["items"] = [
// Do not move this. They are intentionally here for registry capture.

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const lib: Registry["items"] = [
{

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const themes: Registry["items"] = [
{

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const ui: Registry["items"] = [
{

View File

@@ -1,5 +1,5 @@
import * as React from "react"
import { registryItemFileSchema } from "shadcn/registry"
import { registryItemFileSchema } from "shadcn/schema"
import { z } from "zod"
import { highlightCode } from "@/lib/highlight-code"

View File

@@ -16,7 +16,7 @@ import {
Terminal,
} from "lucide-react"
import { ImperativePanelHandle } from "react-resizable-panels"
import { registryItemFileSchema, registryItemSchema } from "shadcn/registry"
import { registryItemFileSchema, registryItemSchema } from "shadcn/schema"
import { z } from "zod"
import { trackEvent } from "@/lib/events"

View File

@@ -1,5 +1,5 @@
import * as React from "react"
import { registryItemSchema } from "shadcn/registry"
import { registryItemSchema } from "shadcn/schema"
import { z } from "zod"
import { highlightCode } from "@/lib/highlight-code"

View File

@@ -1,6 +1,6 @@
"use server"
import { registryItemSchema } from "shadcn/registry"
import { registryItemSchema } from "shadcn/schema"
import { z } from "zod"
import { Style } from "@/registry/registry-styles"

View File

@@ -2,7 +2,7 @@ import { promises as fs } from "fs"
import { tmpdir } from "os"
import path from "path"
import { Index } from "@/__registry__"
import { registryItemFileSchema, registryItemSchema } from "shadcn/registry"
import { registryItemFileSchema, registryItemSchema } from "shadcn/schema"
import { Project, ScriptKind, SourceFile, SyntaxKind } from "ts-morph"
import { z } from "zod"

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
import { z } from "zod"
import { blocks } from "@/registry/registry-blocks"

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const blocks: Registry["items"] = [
{

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const charts: Registry["items"] = [
// Area Charts

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const examples: Registry["items"] = [
{

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const hooks: Registry["items"] = [
{

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const internal: Registry["items"] = [
{

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const lib: Registry["items"] = [
{

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const themes: Registry["items"] = [
{

View File

@@ -1,4 +1,4 @@
import { type Registry } from "shadcn/registry"
import { type Registry } from "shadcn/schema"
export const ui: Registry["items"] = [
{

View File

@@ -9,7 +9,7 @@ import {
registryItemSchema,
registryItemTypeSchema,
registrySchema,
} from "shadcn/registry"
} from "shadcn/schema"
import { Project, ScriptKind } from "ts-morph"
import { z } from "zod"

View File

@@ -35,6 +35,10 @@
"types": "./dist/registry/index.d.ts",
"default": "./dist/registry/index.js"
},
"./schema": {
"types": "./dist/schema/index.d.ts",
"default": "./dist/schema/index.js"
},
"./mcp": {
"types": "./dist/mcp/index.d.ts",
"default": "./dist/mcp/index.js"

View File

@@ -1,7 +1,7 @@
import * as fs from "fs/promises"
import * as path from "path"
import { preFlightBuild } from "@/src/preflights/preflight-build"
import { registryItemSchema, registrySchema } from "@/src/registry"
import { registryItemSchema, registrySchema } from "@/src/schema"
import { handleError } from "@/src/utils/handle-error"
import { highlighter } from "@/src/utils/highlighter"
import { logger } from "@/src/utils/logger"

View File

@@ -6,7 +6,7 @@ import {
getRegistryBaseColor,
getShadcnRegistryIndex,
} from "@/src/registry/api"
import { registryIndexSchema } from "@/src/registry/schema"
import { registryIndexSchema } from "@/src/schema"
import { Config, getConfig } from "@/src/utils/get-config"
import { handleError } from "@/src/utils/handle-error"
import { highlighter } from "@/src/utils/highlighter"

View File

@@ -10,7 +10,7 @@ import { buildUrlAndHeadersForRegistryItem } from "@/src/registry/builder"
import { configWithDefaults } from "@/src/registry/config"
import { BASE_COLORS } from "@/src/registry/constants"
import { clearRegistryContext } from "@/src/registry/context"
import { rawConfigSchema } from "@/src/registry/schema"
import { rawConfigSchema } from "@/src/schema"
import { addComponents } from "@/src/utils/add-components"
import { TEMPLATES, createProject } from "@/src/utils/create-project"
import { loadEnvFiles } from "@/src/utils/env-loader"

View File

@@ -1,12 +1,8 @@
import * as fs from "fs/promises"
import * as path from "path"
import { preFlightRegistryBuild } from "@/src/preflights/preflight-registry"
import {
configSchema,
registryItemSchema,
registrySchema,
} from "@/src/registry"
import { recursivelyResolveFileImports } from "@/src/registry/utils"
import { configSchema, registryItemSchema, registrySchema } from "@/src/schema"
import * as ERRORS from "@/src/utils/errors"
import { ProjectInfo, getProjectInfo } from "@/src/utils/get-project-info"
import { handleError } from "@/src/utils/handle-error"

View File

@@ -1,6 +1,6 @@
import { registrySchema } from "@/src/registry"
import { getRegistryItems } from "@/src/registry/api"
import { fetchRegistry } from "@/src/registry/fetcher"
import { registrySchema } from "@/src/schema"
import { Server } from "@modelcontextprotocol/sdk/server/index.js"
import {
CallToolRequestSchema,

View File

@@ -3,7 +3,7 @@ import { promises as fs } from "fs"
import { tmpdir } from "os"
import path from "path"
import { getRegistryIcons } from "@/src/registry/api"
import { iconsSchema } from "@/src/registry/schema"
import { iconsSchema } from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import { highlighter } from "@/src/utils/highlighter"
import { ICON_LIBRARIES } from "@/src/utils/icon-libraries"

View File

@@ -22,7 +22,7 @@ import {
registryItemSchema,
registrySchema,
stylesSchema,
} from "@/src/registry/schema"
} from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import { handleError } from "@/src/utils/handle-error"
import { logger } from "@/src/utils/logger"

View File

@@ -2,9 +2,9 @@ import { REGISTRY_URL } from "@/src/registry/constants"
import { expandEnvVars } from "@/src/registry/env"
import { RegistryNotConfiguredError } from "@/src/registry/errors"
import { parseRegistryAndItemFromString } from "@/src/registry/parser"
import { registryConfigItemSchema } from "@/src/registry/schema"
import { isUrl } from "@/src/registry/utils"
import { validateRegistryConfig } from "@/src/registry/validator"
import { registryConfigItemSchema } from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import { z } from "zod"

View File

@@ -1,5 +1,5 @@
import { BUILTIN_REGISTRIES, FALLBACK_STYLE } from "@/src/registry/constants"
import { configSchema } from "@/src/registry/schema"
import { configSchema } from "@/src/schema"
import { Config, createConfig } from "@/src/utils/get-config"
import deepmerge from "deepmerge"

View File

@@ -1,4 +1,4 @@
import { registryConfigSchema } from "@/src/registry/schema"
import { registryConfigSchema } from "@/src/schema"
import { z } from "zod"
export const REGISTRY_URL =

View File

@@ -11,7 +11,7 @@ import {
RegistryParseError,
RegistryUnauthorizedError,
} from "@/src/registry/errors"
import { registryItemSchema } from "@/src/registry/schema"
import { registryItemSchema } from "@/src/schema"
import { HttpsProxyAgent } from "https-proxy-agent"
import fetch from "node-fetch"
import { z } from "zod"

View File

@@ -1,6 +1,3 @@
// TODO: Move to a separate file to support client-side usage.
export * from "./schema"
// TODO: Remove these once we have a proper api.
export { resolveRegistryTree as internal_registryResolveItemsTree } from "./resolver"
export { fetchRegistry } from "./fetcher"

View File

@@ -15,15 +15,15 @@ import {
} from "@/src/registry/errors"
import { fetchRegistry, fetchRegistryLocal } from "@/src/registry/fetcher"
import { parseRegistryAndItemFromString } from "@/src/registry/parser"
import {
registryItemSchema,
registryResolvedItemsTreeSchema,
} from "@/src/registry/schema"
import {
deduplicateFilesByTarget,
isLocalFile,
isUrl,
} from "@/src/registry/utils"
import {
registryItemSchema,
registryResolvedItemsTreeSchema,
} from "@/src/schema"
import { Config, getTargetStyleFromConfig } from "@/src/utils/get-config"
import { getProjectTailwindVersionFromConfig } from "@/src/utils/get-project-info"
import { handleError } from "@/src/utils/handle-error"

View File

@@ -1,8 +1,11 @@
import * as fs from "fs/promises"
import { tmpdir } from "os"
import * as path from "path"
import { configSchema, registryItemSchema } from "@/src/registry"
import { registryItemFileSchema } from "@/src/registry/schema"
import {
configSchema,
registryItemFileSchema,
registryItemSchema,
} from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import { ProjectInfo, getProjectInfo } from "@/src/utils/get-project-info"
import { resolveImport } from "@/src/utils/resolve-import"

View File

@@ -1,6 +1,6 @@
import { extractEnvVars } from "@/src/registry/env"
import { RegistryMissingEnvironmentVariablesError } from "@/src/registry/errors"
import { registryConfigItemSchema } from "@/src/registry/schema"
import { registryConfigItemSchema } from "@/src/schema"
import { z } from "zod"
export function extractEnvVarsFromRegistryConfig(

View File

@@ -0,0 +1 @@
export * from "../registry/schema"

View File

@@ -7,7 +7,7 @@ import {
registryItemFileSchema,
registryItemSchema,
workspaceConfigSchema,
} from "@/src/registry/schema"
} from "@/src/schema"
import {
findCommonRoot,
findPackageRoot,

View File

@@ -1,10 +1,10 @@
import path from "path"
import { BUILTIN_REGISTRIES } from "@/src/registry/constants"
import {
configSchema,
rawConfigSchema,
workspaceConfigSchema,
} from "@/src/registry"
import { BUILTIN_REGISTRIES } from "@/src/registry/constants"
} from "@/src/schema"
import { getProjectInfo } from "@/src/utils/get-project-info"
import { highlighter } from "@/src/utils/highlighter"
import { resolveImport } from "@/src/utils/resolve-import"

View File

@@ -1,5 +1,5 @@
import path from "path"
import { rawConfigSchema } from "@/src/registry"
import { rawConfigSchema } from "@/src/schema"
import { FRAMEWORKS, Framework } from "@/src/utils/frameworks"
import { Config, getConfig, resolveConfigPaths } from "@/src/utils/get-config"
import { getPackageInfo } from "@/src/utils/get-package-info"

View File

@@ -1,7 +1,7 @@
import { promises as fs } from "fs"
import { tmpdir } from "os"
import path from "path"
import { registryBaseColorSchema } from "@/src/registry/schema"
import { registryBaseColorSchema } from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import { transformCssVars } from "@/src/utils/transformers/transform-css-vars"
import { transformIcons } from "@/src/utils/transformers/transform-icons"

View File

@@ -1,4 +1,4 @@
import { registryBaseColorSchema } from "@/src/registry/schema"
import { registryBaseColorSchema } from "@/src/schema"
import { Transformer } from "@/src/utils/transformers"
import { ScriptKind, SyntaxKind } from "ts-morph"
import { z } from "zod"

View File

@@ -3,7 +3,7 @@ import path from "path"
import {
registryItemCssVarsSchema,
registryItemTailwindSchema,
} from "@/src/registry/schema"
} from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import { getPackageInfo } from "@/src/utils/get-package-info"
import { TailwindVersion } from "@/src/utils/get-project-info"

View File

@@ -1,6 +1,6 @@
import { promises as fs } from "fs"
import path from "path"
import { registryItemCssSchema } from "@/src/registry/schema"
import { registryItemCssSchema } from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import { highlighter } from "@/src/utils/highlighter"
import { spinner } from "@/src/utils/spinner"

View File

@@ -1,4 +1,4 @@
import { RegistryItem } from "@/src/registry/schema"
import { RegistryItem } from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import { getPackageInfo } from "@/src/utils/get-package-info"
import { getPackageManager } from "@/src/utils/get-package-manager"

View File

@@ -1,6 +1,6 @@
import { existsSync, promises as fs } from "fs"
import path from "path"
import { registryItemEnvVarsSchema } from "@/src/registry/schema"
import { registryItemEnvVarsSchema } from "@/src/schema"
import {
findExistingEnvFile,
getNewEnvKeys,

View File

@@ -2,7 +2,7 @@ import { existsSync, promises as fs } from "fs"
import { tmpdir } from "os"
import path, { basename } from "path"
import { getRegistryBaseColor } from "@/src/registry/api"
import { RegistryItem, registryItemFileSchema } from "@/src/registry/schema"
import { RegistryItem, registryItemFileSchema } from "@/src/schema"
import { isContentSame } from "@/src/utils/compare"
import {
findExistingEnvFile,

View File

@@ -4,7 +4,7 @@ import path from "path"
import {
registryItemCssVarsSchema,
registryItemTailwindSchema,
} from "@/src/registry/schema"
} from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import { TailwindVersion } from "@/src/utils/get-project-info"
import { highlighter } from "@/src/utils/highlighter"

View File

@@ -3,7 +3,12 @@ import { defineConfig } from "tsup"
export default defineConfig({
clean: true,
dts: true,
entry: ["src/index.ts", "src/registry/index.ts", "src/mcp/index.ts"],
entry: [
"src/index.ts",
"src/registry/index.ts",
"src/schema/index.ts",
"src/mcp/index.ts",
],
format: ["esm"],
sourcemap: true,
minify: true,