migrate-icons.ts — ui Source File
Architecture documentation for migrate-icons.ts, a typescript file in the ui codebase. 16 imports, 1 dependents.
Entity Profile
Dependency Diagram
graph LR c417f44a_fbc3_0d59_2fa7_12379c8ead9a["migrate-icons.ts"] 8eb629f2_502c_b1a4_6fec_b6329f097fbe["crypto"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> 8eb629f2_502c_b1a4_6fec_b6329f097fbe eac8f98f_e40a_7fe8_f505_372c83d20c7a["fs"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> eac8f98f_e40a_7fe8_f505_372c83d20c7a b80715bf_43eb_b495_f2cf_a439c5eb0e34["os"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> b80715bf_43eb_b495_f2cf_a439c5eb0e34 d05ec4ea_7a68_3a36_bfa4_9ba7f8409ee5["path"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> d05ec4ea_7a68_3a36_bfa4_9ba7f8409ee5 81c8b1a1_346a_8b27_dd1e_b8bbb29008b8["api"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> 81c8b1a1_346a_8b27_dd1e_b8bbb29008b8 a3b2545e_3d8c_699d_ef11_6ab18db14666["schema"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> a3b2545e_3d8c_699d_ef11_6ab18db14666 b2895591_2a74_d518_deda_2f26be766dcb["get-config"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> b2895591_2a74_d518_deda_2f26be766dcb 15e8bad0_00cc_3d96_8e33_2f062120ea7f["highlighter"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> 15e8bad0_00cc_3d96_8e33_2f062120ea7f 68e3f026_76dc_2c5a_bfe1_7569dbf163b6["legacy-icon-libraries"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> 68e3f026_76dc_2c5a_bfe1_7569dbf163b6 1df8bbed_5110_29f0_12f0_996fc7a1eda1["logger"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> 1df8bbed_5110_29f0_12f0_996fc7a1eda1 a3e9bc4e_1faf_6261_a1db_396981c7761d["spinner"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> a3e9bc4e_1faf_6261_a1db_396981c7761d 150af5b9_bedd_16e6_dc1b_1d1618735391["update-dependencies"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> 150af5b9_bedd_16e6_dc1b_1d1618735391 587e4732_d484_82b5_c4de_af2e9f20d031["fast-glob"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> 587e4732_d484_82b5_c4de_af2e9f20d031 e68f2c02_595f_e9c2_5917_7a8d47bcfc87["prompts"] c417f44a_fbc3_0d59_2fa7_12379c8ead9a --> e68f2c02_595f_e9c2_5917_7a8d47bcfc87 style c417f44a_fbc3_0d59_2fa7_12379c8ead9a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import { randomBytes } from "crypto"
import { promises as fs } from "fs"
import { tmpdir } from "os"
import path from "path"
import { getRegistryIcons } from "@/src/registry/api"
import { iconsSchema } from "@/src/schema"
import { Config } from "@/src/utils/get-config"
import { highlighter } from "@/src/utils/highlighter"
import { LEGACY_ICON_LIBRARIES } from "@/src/utils/legacy-icon-libraries"
import { logger } from "@/src/utils/logger"
import { spinner } from "@/src/utils/spinner"
import { updateDependencies } from "@/src/utils/updaters/update-dependencies"
import fg from "fast-glob"
import prompts from "prompts"
import { Project, ScriptKind, SyntaxKind } from "ts-morph"
import { z } from "zod"
export async function migrateIcons(config: Config) {
if (!config.resolvedPaths.ui) {
throw new Error(
"We could not find a valid `ui` path in your `components.json` file. Please ensure you have a valid `ui` path in your `components.json` file."
)
}
const uiPath = config.resolvedPaths.ui
const [files, registryIcons] = await Promise.all([
fg("**/*.{js,ts,jsx,tsx}", {
cwd: uiPath,
}),
getRegistryIcons(),
])
if (Object.keys(registryIcons).length === 0) {
throw new Error("Something went wrong fetching the registry icons.")
}
const libraryChoices = Object.entries(LEGACY_ICON_LIBRARIES).map(
([name, iconLibrary]) => ({
title: iconLibrary.name,
value: name,
})
)
const migrateOptions = await prompts([
{
type: "select",
name: "sourceLibrary",
message: `Which icon library would you like to ${highlighter.info(
"migrate from"
)}?`,
choices: libraryChoices,
},
{
type: "select",
name: "targetLibrary",
message: `Which icon library would you like to ${highlighter.info(
"migrate to"
)}?`,
choices: libraryChoices,
},
// ... (146 more lines)
Domain
Subdomains
Functions
Dependencies
- api
- crypto
- fast-glob
- fs
- get-config
- highlighter
- legacy-icon-libraries
- logger
- os
- path
- prompts
- schema
- spinner
- ts-morph
- update-dependencies
- zod
Source
Frequently Asked Questions
What does migrate-icons.ts do?
migrate-icons.ts is a source file in the ui codebase, written in typescript. It belongs to the FrameworkTooling domain, TemplateSync subdomain.
What functions are defined in migrate-icons.ts?
migrate-icons.ts defines 2 function(s): migrateIcons, migrateIconsFile.
What does migrate-icons.ts depend on?
migrate-icons.ts imports 16 module(s): api, crypto, fast-glob, fs, get-config, highlighter, legacy-icon-libraries, logger, and 8 more.
What files import migrate-icons.ts?
migrate-icons.ts is imported by 1 file(s): migrate-icons.test.ts.
Where is migrate-icons.ts in the architecture?
migrate-icons.ts is located at packages/shadcn/src/migrations/migrate-icons.ts (domain: FrameworkTooling, subdomain: TemplateSync, directory: packages/shadcn/src/migrations).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free