@mercurjs/cli 2.0.0-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +460 -0
- package/dist/index.d.ts +318 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../package.json","../src/utils/errors.ts","../src/registry/schema.ts","../src/registry/constants.ts","../src/registry/errors.ts","../src/schema/index.ts","../src/utils/resolve-import.ts","../src/utils/get-config.ts","../src/utils/get-project-info.ts","../src/preflights/preflight-add.ts","../src/registry/context.ts","../src/registry/config.ts","../src/registry/env.ts","../src/registry/parser.ts","../src/registry/utils.ts","../src/registry/validator.ts","../src/registry/builder.ts","../src/registry/fetcher.ts","../src/registry/resolver.ts","../src/utils/highlighter.ts","../src/utils/logger.ts","../src/utils/handle-error.ts","../src/utils/spinner.ts","../src/utils/get-package-manager.ts","../src/utils/update-dependencies.ts","../src/utils/compare.ts","../src/utils/file-type.ts","../src/utils/transform-import.ts","../src/utils/update-files.ts","../src/utils/add-items.ts","../src/preflights/preflight-init.ts","../src/telemetry/store.ts","../src/telemetry/detect-system-info.ts","../src/telemetry/hash.ts","../src/telemetry/index.ts","../src/commands/init.ts","../src/commands/add.ts","../src/preflights/preflight-registry-build.ts","../src/commands/registry-build.ts","../src/codegen/constants.ts","../src/codegen/fs.ts","../src/codegen/path.ts","../src/codegen/routes.ts","../src/utils/to-camel-case.ts","../src/codegen/index.ts","../src/preflights/preflight-registry-codegen.ts","../src/commands/registry-codegen.ts","../src/commands/codegen.ts","../src/utils/manage-env-files.ts","../src/utils/create-db.ts","../src/commands/create.ts","../src/registry/api.ts","../src/commands/diff.ts","../src/commands/info.ts","../src/commands/search.ts","../src/commands/telemetry.ts","../src/commands/view.ts","../src/index.ts"],"names":["package_default","MISSING_DIR_OR_EMPTY_PROJECT","MISSING_CONFIG","BUILD_MISSING_REGISTRY_FILE","registryItemTypeSchema","z","registryItemFileSchema","registryItemBaseSchema","registryItemSchema","registrySchema","registryIndexSchema","registryResolvedItemsTreeSchema","registryConfigItemSchema","registryConfigSchema","key","REGISTRY_SCHEMA_URL","REGISTRY_ITEM_SCHEMA_URL","REGISTRY_URL","BUILTIN_REGISTRIES","RegistryErrorCode","RegistryError","message","options","RegistryNotFoundError","url","cause","RegistryUnauthorizedError","RegistryForbiddenError","RegistryFetchError","statusCode","responseBody","baseMessage","suggestion","RegistryNotConfiguredError","registryName","RegistryLocalFileError","filePath","RegistryParseError","item","parseError","e","RegistryMissingEnvironmentVariablesError","missingVars","v","RegistryInvalidNamespaceError","name","ConfigParseError","cwd","rawConfigSchema","configSchema","resolveImport","importPath","config","createMatchPath","DEFAULT_WORKFLOWS","DEFAULT_API","DEFAULT_LINKS","DEFAULT_MODULES","DEFAULT_VENDOR","DEFAULT_ADMIN","DEFAULT_LIB","explorer","cosmiconfig","getConfig","getRawConfig","resolveConfigPaths","tsConfig","loadConfig","configResult","error","createConfig","partial","defaultConfig","PROJECT_SHARED_IGNORE","getProjectInfo","isSrcDir","aliasPrefix","packageJson","medusaConfigInfo","medusaVersion","mercurVersion","fs","path","getTsConfigAliasPrefix","getPackageInfo","getMedusaConfigFile","getMedusaVersion","getMercurVersion","paths","pathKeys","firstPath","shouldThrow","packageJsonPath","files","fg","file","rootVersion","packageJsonFiles","version","preFlightAdd","errors","existsSync","projectInfo","context","setRegistryHeaders","headers","getRegistryHeadersFromContext","clearRegistryContext","configWithDefaults","expandEnvVars","value","_match","extractEnvVars","vars","regex","match","varName","REGISTRY_PATTERN","parseRegistryAndBlockFromString","FILE_EXTENSIONS_FOR_LOOKUP","FILE_PATH_SKIP_LIST","DEPENDENCY_SKIP_LIST","project","Project","getDependencyFromModuleSpecifier","moduleSpecifier","pattern","parts","recursivelyResolveFileImports","processedFiles","resolvedFilePath","relativeRegistryFilePath","fileExtension","G","content","tempFile","createTempSourceFile","sourceFile","ScriptKind","dependencies","fileType","determineFileType","originalFile","importStatements","importStatement","isRelativeImport","dependency","probableImportFilePath","ext","pathWithExt","nestedRelativeRegistryFilePath","nestedFileType","nestedResults","nestedFile","dep","uniqueFiles","filename","dir","tmpdir","isUrl","isLocalFile","extractEnvVarsFromRegistryConfig","validateRegistryConfig","missing","NAME_PLACEHOLDER","DEFAULT_PLACEHOLDER","ENV_VAR_PATTERN","QUERY_PARAM_SEPARATOR","QUERY_PARAM_DELIMITER","hasPlaceholders","appendPlaceholdersIfNeeded","buildUrlAndHeadersForRegistryBlock","registry","registryConfig","buildUrlFromRegistryConfig","buildHeadersFromRegistryConfig","_config","baseUrl","appendQueryParams","expandedValue","shouldIncludeHeader","params","urlParams","queryString","separator","originalValue","trimmedExpanded","templateWithoutVars","resolveRegistryUrl","pathOrUrl","fetchCache","fetchLocalJson","expandedPath","homedir","resolvedPath","fetchRegistry","fetchPromise","response","messageFromServer","json","parsed","fetchRegistryLocal","resolveRegistryBlocksFromRegistries","blocks","registryHeaders","resolvedBlocks","i","resolved","fetchRegistryBlocks","block","result","resolveRegistryTree","names","payload","allDependencyItems","uniqueNames","results","resultMap","sourceName","itemWithSource","resolvedDependencies","namespacedDeps","resolveDependenciesRecursively","sourceMap","source","topologicalSortRegistryBlocks","deepmerge","deduplicateFilesByTarget","visited","resolvedDeps","nested","computeItemHash","identifier","hash","createHash","extractItemIdentifierFromDependency","pathname","itemMap","hashToItem","inDegree","adjacencyList","depToHashes","itemSource","itemHash","depHash","exactMatches","nameMatches","queue","sorted","degree","currentHash","dependentHash","newDegree","missingHashes","s","filesArrays","seen","highlighter","text","kleur","logger","args","handleError","issue","spinner","ora","getPackageManager","targetDir","packageManager","detect","userAgent","updateDependencies","devDependencies","dependenciesSpinner","installWithPackageManager","installWithNpm","installWithDeno","execa","isContentSame","existingContent","newContent","ignoreImports","normalizedExisting","normalizedNew","importRegex","normalizeImports","prefix","suffix","lastPart","existingNormalized","newNormalized","getTargetDir","resolveFilePath","relativePath","resolveNestedFilePath","normalizedFilePath","normalizedTargetDir","fileSegments","targetSegments","commonDirIndex","segment","baseName","getScriptKind","transformImports","opts","scriptKind","specifier","updated","updateImportAliases","rest","updateFiles","filesCreatedSpinner","filesCreated","filesUpdated","filesSkipped","filesDeclined","fileName","basename","existingFile","statSync","existingFileContent","diff","diffLines","printDiff","overwrite","prompts","totalUpdated","totalSkipped","CONTEXT_LINES","formatDiffWithContext","contextLines","output","changedIndices","partsToShow","part","prevChanged","nextChanged","showType","lines","line","contextOutput","addBlocks","items","registrySpinner","tree","preFlightInit","ConfigStore","join","os","configStore","importRuntime","m","getVendor","hasAny","keys","k","detectSystemInfo","cpus","isWsl","isDocker","isInsideContainer","hasContainerEnv","hasDockerEnv","hasDockerCGroup","hashToBase64","input","TELEMETRY_URL","setTelemetryEmail","email","toggleTelemetry","enabled","isTelemetryEnabled","sendTelemetryEvent","event","projectId","getProjectId","baseEvent","detectEnvironment","getTelemetryEmail","getGitID","originBuffer","execSync","gitID","packageJSONID","initOptionsSchema","init","Command","runInit","existingConfig","promptForMinimalConfig","promptForConfig","proceed","configSpinner","targetPath","addOptionsSchema","add","preFlightRegistryBuild","resolvePaths","buildOptionsSchema","registryBuild","buildRegistry","me","buildSpinner","resolvedRegistry","resolveRegistryItems","registryItem","index","self","t","d","srcDir","absPath","err","validationResult","f","DIST_DIR","ROUTE_FILE_PATTERN","defaultMedusaRoutes","defaultMercurRoutes","recursiveReadDir","rootDirectory","pathnameFilter","ignoreFilter","ignorePartFilter","sortPathnames","pathnames","directories","directory","entries","entry","absolutePath","pathExists","ensureDir","dirPath","normalizePathSep","normalizeApiPath","routePath","param","getRoutes","apiDir","toCamelCase","str","_","chr","generateImportPath","toNestedKey","createRouteNode","buildRouteTree","routeMap","root","route","importType","segments","current","generateTypeFromTree","node","indent","childEntries","child","childType","generateRouteTypesFile","routes","importPathFn","resolveImportPath","writeRouteTypes","rootDir","entryFilePath","entryDir","routeTypes","writeRegistryRouteTypes","routeFilePaths","allRoutes","apiIndex","preFlightRegistryCodegen","registryCodegenOptionsSchema","registryCodegen","runRegistryCodegen","Rt","$r","codegenSpinner","codegenOptionsSchema","codegen","runCodegen","Je","watchForChanges","watcher","chokidar","debounceTimer","cleanup","regenerate","debouncedRegenerate","resolve","shutdown","sanitizeEnv","contents","databaseUri","seenKeys","withDefaults","APP_PATHS","manageEnvFiles","projectDir","appPath","appDir","envTemplatePath","envPath","templateEnv","envTemplateContents","envContents","updatedEnvContents","envContent","DEFAULT_DB_HOST","DEFAULT_DB_PORT","API_DIR","ADMIN_EMAIL","setupDatabase","dbName","client","dbConnectionString","getDbClient","doesDbExist","runPostDbSetup","connectionString","alreadyExists","runMigrations","seedDatabase","inviteToken","createAdminInvite","spinnerRef","pg","postgresUsername","postgresPassword","defaultCredentials","formatConnectionString","answers","user","password","host","port","db","encodedPassword","parentSpinner","migrationSpinner","seedSpinner","seedCmd","DEFAULT_BRANCH","MIN_SUPPORTED_NODE_VERSION","CREATE_TEMPLATES","create","validateNodeVersion","projectName","enteredName","validateProjectName","template","selectedTemplate","createOrFindProjectDir","downloadSpinner","downloadTemplate","initialInstallSpinner","installStart","installDeps","installDuration","dbResult","dbSpinner","feedbackOutro","wantsEmail","initGit","inviteUrl","serverProcess","exec","waitOn","open","successMessage","templatePath","filter","pipeline","downloadTarStream","x","p","res","Readable","cmd","header","createTerminalLink","terminalLink","getNodeVersion","major","nodeVersion","getRegistry","urlAndHeaders","getRegistryBlocks","diffOptionsSchema","missingBlocks","b","localContent","transformedContent","info","searchOptionsSchema","search","query","telemetry","viewOptionsSchema","view","main","program"],"mappings":"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","file":"index.js","sourcesContent":["{\n \"name\": \"@mercurjs/cli\",\n \"version\": \"2.0.0-canary.0\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/mercurjs/mercur\",\n \"directory\": \"packages/cli\"\n },\n \"type\": \"module\",\n \"description\": \"Mercur CLI\",\n \"author\": \"MercurJS (https://github.com/mercurjs)\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"files\": [\n \"dist\"\n ],\n \"bin\": {\n \"mercurjs\": \"./dist/index.js\"\n },\n \"exports\": {\n \".\": \"./dist/index.js\"\n },\n \"scripts\": {\n \"typecheck\": \"tsc --noEmit\",\n \"dev\": \"tsup --watch\",\n \"build\": \"tsup\"\n },\n \"dependencies\": {\n \"@antfu/ni\": \"^27.0.1\",\n \"chokidar\": \"^4.0.3\",\n \"commander\": \"^14.0.2\",\n \"cosmiconfig\": \"^9.0.0\",\n \"deepmerge\": \"^4.3.1\",\n \"diff\": \"^8.0.2\",\n \"execa\": \"^9.6.0\",\n \"fast-glob\": \"^3.3.3\",\n \"fs-extra\": \"^11.3.2\",\n \"kleur\": \"^4.1.5\",\n \"open\": \"^11.0.0\",\n \"ora\": \"^9.0.0\",\n \"pg\": \"^8.17.1\",\n \"prompts\": \"^2.4.2\",\n \"tar\": \"^7.5.2\",\n \"terminal-link\": \"^5.0.0\",\n \"ts-morph\": \"^27.0.2\",\n \"tsconfig-paths\": \"^4.2.0\",\n \"typescript\": \"5.9.3\",\n \"validate-npm-package-name\": \"^7.0.2\",\n \"wait-on\": \"^9.0.3\",\n \"zod\": \"3.25.76\"\n },\n \"devDependencies\": {\n \"@types/fs-extra\": \"^11.0.4\",\n \"@types/pg\": \"^8.16.0\",\n \"@types/prompts\": \"^2.4.9\",\n \"@types/tar\": \"^6.1.13\",\n \"@types/validate-npm-package-name\": \"^4.0.2\",\n \"@types/wait-on\": \"^5.3.4\",\n \"tsup\": \"^8.5.0\"\n }\n}\n","export const MISSING_DIR_OR_EMPTY_PROJECT = \"MISSING_DIR_OR_EMPTY_PROJECT\";\nexport const MISSING_CONFIG = \"MISSING_CONFIG\";\nexport const BUILD_MISSING_REGISTRY_FILE = \"BUILD_MISSING_REGISTRY_FILE\";","import { z } from \"zod\";\n\nexport type RegistryItemCategory =\n | \"workflows\"\n | \"api\"\n | \"links\"\n | \"modules\"\n | \"vendor\"\n | \"admin\"\n | \"lib\";\n\nexport const registryItemTypeSchema = z.enum([\n \"registry:workflow\",\n \"registry:api\",\n \"registry:link\",\n \"registry:module\",\n \"registry:vendor\",\n \"registry:admin\",\n \"registry:lib\",\n]);\n\n// File with required content (for fetched items)\nexport const registryItemFileSchema = z.object({\n path: z.string(),\n content: z.string().optional(),\n type: registryItemTypeSchema,\n target: z.string().optional(),\n});\n\n// Base fields shared between index entries and full items\nconst registryItemBaseSchema = z.object({\n $schema: z.string().optional(),\n name: z.string(),\n title: z.string().optional(),\n author: z.string().min(2).optional(),\n description: z.string().optional(),\n dependencies: z.array(z.string()).optional(),\n devDependencies: z.array(z.string()).optional(),\n registryDependencies: z.array(z.string()).optional(),\n meta: z.record(z.string(), z.any()).optional(),\n docs: z.string().optional(),\n categories: z.array(z.string()).optional(),\n});\n\n// Full registry item - has files with content\nexport const registryItemSchema = registryItemBaseSchema.extend({\n files: z.array(registryItemFileSchema),\n});\n\nexport type RegistryItem = z.infer<typeof registryItemSchema>;\n\n// Registry index - items don't have files\nexport const registrySchema = z.object({\n name: z.string(),\n homepage: z.string(),\n items: z.array(registryItemSchema),\n});\n\nexport type Registry = z.infer<typeof registrySchema>;\n\nexport const registryIndexSchema = z.array(registryItemBaseSchema);\n\nexport const registryResolvedItemsTreeSchema = registryItemSchema.pick({\n dependencies: true,\n devDependencies: true,\n files: true,\n docs: true,\n});\n\n// Registry URL can either include {name} and {type} placeholders explicitly,\n// or omit them and they will be auto-appended as {type}/{name}.json\nexport const registryConfigItemSchema = z.union([\n z.string(),\n z.object({\n url: z.string(),\n params: z.record(z.string(), z.string()).optional(),\n headers: z.record(z.string(), z.string()).optional(),\n }),\n]);\n\nexport const registryConfigSchema = z.record(\n z.string().refine((key) => key.startsWith(\"@\"), {\n message: \"Registry names must start with @ (e.g., @mercurjs)\",\n }),\n registryConfigItemSchema\n);\n","import type { z } from \"zod\";\nimport type { registryConfigSchema } from \"./schema\";\n\nexport const REGISTRY_SCHEMA_URL = \"https://registry.mercurjs.com/registry.json\";\nexport const REGISTRY_ITEM_SCHEMA_URL = \"https://registry.mercurjs.com/registry-item.json\";\n\n// Registry URL can be customized via environment variable\n// Supports branch names: https://raw.githubusercontent.com/{owner}/{repo}/{branch}/packages/registry/registry\nexport const REGISTRY_URL =\n process.env.REGISTRY_URL ??\n // todo: change to main branch\n \"https://raw.githubusercontent.com/mercurjs/mercur/new/packages/registry/r\";\n\n// Built-in registries that are always available and cannot be overridden\nexport const BUILTIN_REGISTRIES: z.infer<typeof registryConfigSchema> = {\n \"@mercurjs\": `${REGISTRY_URL}/{name}.json`,\n};\n","import { z } from \"zod\";\n\nexport const RegistryErrorCode = {\n NETWORK_ERROR: \"NETWORK_ERROR\",\n NOT_FOUND: \"NOT_FOUND\",\n UNAUTHORIZED: \"UNAUTHORIZED\",\n FORBIDDEN: \"FORBIDDEN\",\n FETCH_ERROR: \"FETCH_ERROR\",\n NOT_CONFIGURED: \"NOT_CONFIGURED\",\n INVALID_CONFIG: \"INVALID_CONFIG\",\n MISSING_ENV_VARS: \"MISSING_ENV_VARS\",\n LOCAL_FILE_ERROR: \"LOCAL_FILE_ERROR\",\n PARSE_ERROR: \"PARSE_ERROR\",\n VALIDATION_ERROR: \"VALIDATION_ERROR\",\n UNKNOWN_ERROR: \"UNKNOWN_ERROR\",\n} as const;\n\nexport type RegistryErrorCode =\n (typeof RegistryErrorCode)[keyof typeof RegistryErrorCode];\n\nexport class RegistryError extends Error {\n public readonly code: RegistryErrorCode;\n public readonly statusCode?: number;\n public readonly context?: Record<string, unknown>;\n public readonly suggestion?: string;\n public readonly timestamp: Date;\n public override readonly cause?: unknown;\n\n constructor(\n message: string,\n options: {\n code?: RegistryErrorCode;\n statusCode?: number;\n cause?: unknown;\n context?: Record<string, unknown>;\n suggestion?: string;\n } = {}\n ) {\n super(message);\n this.name = \"RegistryError\";\n this.code = options.code || RegistryErrorCode.UNKNOWN_ERROR;\n this.statusCode = options.statusCode;\n this.cause = options.cause;\n this.context = options.context;\n this.suggestion = options.suggestion;\n this.timestamp = new Date();\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n\nexport class RegistryNotFoundError extends RegistryError {\n constructor(\n public readonly url: string,\n cause?: unknown\n ) {\n const message = `The item at ${url} was not found. It may not exist at the registry.`;\n\n super(message, {\n code: RegistryErrorCode.NOT_FOUND,\n statusCode: 404,\n cause,\n context: { url },\n suggestion:\n \"Check if the item name is correct and the registry URL is accessible.\",\n });\n this.name = \"RegistryNotFoundError\";\n }\n}\n\nexport class RegistryUnauthorizedError extends RegistryError {\n constructor(\n public readonly url: string,\n cause?: unknown\n ) {\n const message = `You are not authorized to access the item at ${url}. If this is a remote registry, you may need to authenticate.`;\n\n super(message, {\n code: RegistryErrorCode.UNAUTHORIZED,\n statusCode: 401,\n cause,\n context: { url },\n suggestion:\n \"Check your authentication credentials and environment variables.\",\n });\n this.name = \"RegistryUnauthorizedError\";\n }\n}\n\nexport class RegistryForbiddenError extends RegistryError {\n constructor(\n public readonly url: string,\n cause?: unknown\n ) {\n const message = `You are not authorized to access the item at ${url}. If this is a remote registry, you may need to authenticate.`;\n\n super(message, {\n code: RegistryErrorCode.FORBIDDEN,\n statusCode: 403,\n cause,\n context: { url },\n suggestion:\n \"Check your authentication credentials and environment variables.\",\n });\n this.name = \"RegistryForbiddenError\";\n }\n}\n\nexport class RegistryFetchError extends RegistryError {\n constructor(\n public readonly url: string,\n statusCode?: number,\n public readonly responseBody?: string,\n cause?: unknown\n ) {\n const baseMessage = statusCode\n ? `Failed to fetch from registry (${statusCode}): ${url}`\n : `Failed to fetch from registry: ${url}`;\n\n const message =\n typeof cause === \"string\" && cause\n ? `${baseMessage} - ${cause}`\n : baseMessage;\n\n let suggestion = \"Check your network connection and try again.\";\n if (statusCode === 404) {\n suggestion =\n \"The requested resource was not found. Check the URL or item name.\";\n } else if (statusCode === 500) {\n suggestion = \"The registry server encountered an error. Try again later.\";\n } else if (statusCode && statusCode >= 400 && statusCode < 500) {\n suggestion = \"There was a client error. Check your request parameters.\";\n }\n\n super(message, {\n code: RegistryErrorCode.FETCH_ERROR,\n statusCode,\n cause,\n context: { url, responseBody },\n suggestion,\n });\n this.name = \"RegistryFetchError\";\n }\n}\n\nexport class RegistryNotConfiguredError extends RegistryError {\n constructor(public readonly registryName: string | null) {\n const message = registryName\n ? `Unknown registry \"${registryName}\". Make sure it is defined in agents.json as follows:\n{\n \"registries\": {\n \"${registryName}\": \"[URL_TO_REGISTRY]\"\n }\n}`\n : `Unknown registry. Make sure it is defined in blocks.json under \"registries\".`;\n\n super(message, {\n code: RegistryErrorCode.NOT_CONFIGURED,\n context: { registryName },\n suggestion:\n \"Add the registry configuration to your blocks.json file. Consult the registry documentation for the correct format.\",\n });\n this.name = \"RegistryNotConfiguredError\";\n }\n}\n\nexport class RegistryLocalFileError extends RegistryError {\n constructor(\n public readonly filePath: string,\n cause?: unknown\n ) {\n super(`Failed to read local registry file: ${filePath}`, {\n code: RegistryErrorCode.LOCAL_FILE_ERROR,\n cause,\n context: { filePath },\n suggestion: \"Check if the file exists and you have read permissions.\",\n });\n this.name = \"RegistryLocalFileError\";\n }\n}\n\nexport class RegistryParseError extends RegistryError {\n public readonly parseError: unknown;\n\n constructor(\n public readonly item: string,\n parseError: unknown\n ) {\n let message = `Failed to parse registry item: ${item}`;\n\n if (parseError instanceof z.ZodError) {\n message = `Failed to parse registry item: ${item}\\n${parseError.issues\n .map((e) => ` - ${e.path.join(\".\")}: ${e.message}`)\n .join(\"\\n\")}`;\n }\n\n super(message, {\n code: RegistryErrorCode.PARSE_ERROR,\n cause: parseError,\n context: { item },\n suggestion:\n \"The registry item may be corrupted or have an invalid format. Please make sure it returns a valid JSON object.\",\n });\n\n this.parseError = parseError;\n this.name = \"RegistryParseError\";\n }\n}\n\nexport class RegistryMissingEnvironmentVariablesError extends RegistryError {\n constructor(\n public readonly registryName: string,\n public readonly missingVars: string[]\n ) {\n const message =\n `Registry \"${registryName}\" requires the following environment variables:\\n\\n` +\n missingVars.map((v) => ` • ${v}`).join(\"\\n\");\n\n super(message, {\n code: RegistryErrorCode.MISSING_ENV_VARS,\n context: { registryName, missingVars },\n suggestion:\n \"Set the required environment variables to your .env or .env.local file.\",\n });\n this.name = \"RegistryMissingEnvironmentVariablesError\";\n }\n}\n\nexport class RegistryInvalidNamespaceError extends RegistryError {\n constructor(public override readonly name: string) {\n const message = `Invalid registry namespace: \"${name}\". Registry names must start with @ (e.g., @mercurjs).`;\n\n super(message, {\n code: RegistryErrorCode.VALIDATION_ERROR,\n context: { name },\n suggestion:\n \"Use a valid registry name starting with @ or provide a direct URL to the registry.\",\n });\n this.name = \"RegistryInvalidNamespaceError\";\n }\n}\n\nexport class ConfigMissingError extends RegistryError {\n constructor(public readonly cwd: string) {\n const message = `No blocks.json found in ${cwd} or parent directories.`;\n\n super(message, {\n code: RegistryErrorCode.NOT_CONFIGURED,\n context: { cwd },\n suggestion:\n \"Run '@mercurjs/cli init' to create an blocks.json file, or check that you're in the correct directory.\",\n });\n this.name = \"ConfigMissingError\";\n }\n}\n\nexport class ConfigParseError extends RegistryError {\n constructor(\n public readonly cwd: string,\n parseError: unknown\n ) {\n let message = `Invalid blocks.json configuration in ${cwd}.`;\n\n if (parseError instanceof z.ZodError) {\n message = `Invalid blocks.json configuration in ${cwd}:\\n${parseError.issues\n .map((e) => ` - ${e.path.join(\".\")}: ${e.message}`)\n .join(\"\\n\")}`;\n }\n\n super(message, {\n code: RegistryErrorCode.INVALID_CONFIG,\n cause: parseError,\n context: { cwd },\n suggestion:\n \"Check your blocks.json file for syntax errors or invalid configuration. Run '@mercurjs/cli init' to regenerate a valid configuration.\",\n });\n this.name = \"ConfigParseError\";\n }\n}\n","import { z } from \"zod\";\nimport { registryConfigSchema } from \"../registry/schema\";\n\nexport const rawConfigSchema = z\n .object({\n $schema: z.string().optional(),\n aliases: z.object({\n workflows: z.string(),\n api: z.string(),\n links: z.string(),\n modules: z.string(),\n vendor: z.string(),\n admin: z.string(),\n lib: z.string(),\n }),\n registries: registryConfigSchema.optional(),\n })\n .strict();\n\nexport const configSchema = rawConfigSchema.extend({\n resolvedPaths: z.object({\n cwd: z.string(),\n workflows: z.string(),\n api: z.string(),\n links: z.string(),\n modules: z.string(),\n vendor: z.string(),\n admin: z.string(),\n lib: z.string(),\n }),\n});\n\nexport type Config = z.infer<typeof configSchema>;\nexport type RawConfig = z.infer<typeof rawConfigSchema>;\n","import {\n type ConfigLoaderSuccessResult,\n createMatchPath,\n} from \"tsconfig-paths\";\n\nexport async function resolveImport(\n importPath: string,\n config: Pick<ConfigLoaderSuccessResult, \"absoluteBaseUrl\" | \"paths\">\n) {\n return createMatchPath(config.absoluteBaseUrl, config.paths)(\n importPath,\n undefined,\n () => true,\n [\".ts\", \".tsx\"]\n );\n}\n","import { cosmiconfig } from \"cosmiconfig\";\nimport { loadConfig } from \"tsconfig-paths\";\nimport { BUILTIN_REGISTRIES, ConfigParseError } from \"../registry\";\nimport {\n type Config,\n configSchema,\n type RawConfig,\n rawConfigSchema,\n} from \"../schema\";\nimport { resolveImport } from \"./resolve-import\";\n\nexport const DEFAULT_WORKFLOWS = \"packages/api/src/workflows\";\nexport const DEFAULT_API = \"packages/api/src/api\";\nexport const DEFAULT_LINKS = \"packages/api/src/links\";\nexport const DEFAULT_MODULES = \"packages/api/src/modules\";\nexport const DEFAULT_VENDOR = \"apps/vendor/src\";\nexport const DEFAULT_ADMIN = \"apps/admin/src\";\nexport const DEFAULT_LIB = \"packages/api/src/lib\";\n\nexport const explorer = cosmiconfig(\"blocks\", {\n searchPlaces: [\"blocks.json\"],\n});\n\nexport async function getConfig(cwd: string): Promise<Config | null> {\n const config = await getRawConfig(cwd);\n\n if (!config) {\n return null;\n }\n\n return await resolveConfigPaths(cwd, config);\n}\n\nexport async function resolveConfigPaths(\n cwd: string,\n config: RawConfig\n): Promise<Config> {\n // User registries come first so the first one is used as default for unnamespaced deps\n config.registries = {\n ...(config.registries || {}),\n ...BUILTIN_REGISTRIES,\n };\n\n const tsConfig = await loadConfig(cwd);\n\n if (tsConfig.resultType === \"failed\") {\n throw new Error(\n `Failed to load tsconfig.json. ${tsConfig.message ?? \"\"}`.trim()\n );\n }\n\n return configSchema.parse({\n ...config,\n resolvedPaths: {\n cwd,\n workflows: await resolveImport(config.aliases.workflows, tsConfig),\n api: await resolveImport(config.aliases.api, tsConfig),\n links: await resolveImport(config.aliases.links, tsConfig),\n modules: await resolveImport(config.aliases.modules, tsConfig),\n vendor: await resolveImport(config.aliases.vendor, tsConfig),\n admin: await resolveImport(config.aliases.admin, tsConfig),\n lib: await resolveImport(config.aliases.lib, tsConfig),\n },\n });\n}\n\nexport async function getRawConfig(cwd: string): Promise<RawConfig | null> {\n try {\n const configResult = await explorer.search(cwd);\n\n if (!configResult) {\n return null;\n }\n\n const config = rawConfigSchema.parse(configResult.config);\n\n if (config.registries) {\n for (const registryName of Object.keys(config.registries)) {\n if (registryName in BUILTIN_REGISTRIES) {\n throw new Error(\n `\"${registryName}\" is a built-in registry and cannot be overridden.`\n );\n }\n }\n }\n\n return config;\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"reserved registry\")) {\n throw error;\n }\n throw new ConfigParseError(cwd, error);\n }\n}\n\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\nexport function createConfig(partial?: DeepPartial<Config>): Config {\n const defaultConfig: Config = {\n resolvedPaths: {\n cwd: process.cwd(),\n admin: \"\",\n lib: \"\",\n links: \"\",\n modules: \"\",\n vendor: \"\",\n workflows: \"\",\n api: \"\",\n },\n aliases: {\n workflows: DEFAULT_WORKFLOWS,\n api: DEFAULT_API,\n links: DEFAULT_LINKS,\n modules: DEFAULT_MODULES,\n vendor: DEFAULT_VENDOR,\n admin: DEFAULT_ADMIN,\n lib: DEFAULT_LIB,\n },\n registries: {\n ...BUILTIN_REGISTRIES,\n },\n };\n\n if (partial) {\n return {\n ...defaultConfig,\n ...partial,\n resolvedPaths: {\n ...defaultConfig.resolvedPaths,\n ...(partial.resolvedPaths || {}),\n },\n aliases: {\n ...defaultConfig.aliases,\n ...(partial.aliases || {}),\n },\n registries: {\n ...defaultConfig.registries,\n ...(partial.registries || {}),\n },\n };\n }\n\n return defaultConfig;\n}\n","import fs from \"fs-extra\";\nimport path from \"path\";\nimport ts, { type CompilerOptions } from \"typescript\";\nimport { loadConfig } from \"tsconfig-paths\";\nimport fg from \"fast-glob\"\n\nexport interface PackageJson {\n name?: string;\n dependencies?: Record<string, string>;\n}\n\nexport type ProjectInfo = {\n isSrcDir: boolean;\n aliasPrefix: string | null;\n packageJson: PackageJson | null;\n medusaConfigFile: string | null;\n medusaVersion: string | null;\n mercurVersion: string | null;\n};\n\nconst PROJECT_SHARED_IGNORE = [\n \"**/node_modules/**\",\n \"public\",\n \"dist\",\n]\n\nexport async function getProjectInfo(cwd: string): Promise<ProjectInfo> {\n const [isSrcDir, aliasPrefix, packageJson, medusaConfigInfo, medusaVersion, mercurVersion] = await Promise.all([\n fs.pathExists(path.resolve(cwd, \"src\")),\n getTsConfigAliasPrefix(cwd),\n getPackageInfo(cwd),\n getMedusaConfigFile(cwd),\n getMedusaVersion(cwd),\n getMercurVersion(cwd),\n ]);\n\n return {\n isSrcDir,\n aliasPrefix,\n packageJson,\n medusaConfigFile: medusaConfigInfo?.file ?? null,\n medusaVersion,\n mercurVersion,\n };\n}\n\nexport async function getTsConfigAliasPrefix(cwd: string) {\n const tsConfig = loadConfig(cwd);\n\n if (tsConfig.resultType === \"failed\") {\n return null;\n }\n\n const paths = tsConfig.paths || {};\n const pathKeys = Object.keys(paths);\n\n if (pathKeys.length === 0) {\n return null;\n }\n\n const firstPath = pathKeys[0];\n if (firstPath?.includes(\"*\")) {\n return firstPath.replace(\"/*\", \"\");\n }\n\n return firstPath?.replace(\"/\", \"\") ?? null;\n}\n\nexport function getPackageInfo(\n cwd: string = \"\",\n shouldThrow: boolean = true\n): PackageJson | null {\n const packageJsonPath = path.join(cwd, \"package.json\")\n\n return fs.readJSONSync(packageJsonPath, {\n throws: shouldThrow,\n }) as PackageJson\n}\n\nexport async function getMedusaConfigFile(cwd: string): Promise<{ file: string; dir: string } | null> {\n const files = await fg.glob(\"medusa-config.*\", {\n cwd,\n deep: 3,\n ignore: PROJECT_SHARED_IGNORE,\n })\n\n if (!files.length) {\n return null\n }\n\n const file = files[0]\n return {\n file,\n dir: path.resolve(cwd, path.dirname(file)),\n }\n}\n\nexport async function getMedusaVersion(cwd: string): Promise<string | null> {\n const packageJson = getPackageInfo(cwd, false)\n\n const rootVersion = packageJson?.dependencies?.['@medusajs/framework']\n if (rootVersion) {\n return rootVersion\n }\n\n const packageJsonFiles = await fg.glob(\"**/package.json\", {\n cwd,\n deep: 3,\n ignore: PROJECT_SHARED_IGNORE,\n })\n\n for (const file of packageJsonFiles) {\n const pkgJson = getPackageInfo(path.join(cwd, path.dirname(file)), false)\n const version = pkgJson?.dependencies?.['@medusajs/framework']\n if (version) {\n return version\n }\n }\n\n return null\n}\n\nexport async function getMercurVersion(cwd: string): Promise<string | null> {\n const packageJson = getPackageInfo(cwd, false)\n\n const rootVersion = packageJson?.dependencies?.['@mercurjs/cli']\n if (rootVersion) {\n return rootVersion\n }\n\n const packageJsonFiles = await fg.glob(\"**/package.json\", {\n cwd,\n deep: 3,\n ignore: PROJECT_SHARED_IGNORE,\n })\n\n for (const file of packageJsonFiles) {\n const pkgJson = getPackageInfo(path.join(cwd, path.dirname(file)), false)\n const version = pkgJson?.dependencies?.['@mercurjs/cli']\n if (version) {\n return version\n }\n }\n\n return null\n}","import { existsSync } from \"fs\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport * as ERRORS from \"../utils/errors\";\nimport { getConfig } from \"../utils/get-config\";\nimport { getProjectInfo } from \"../utils/get-project-info\";\n\nexport const addOptionsSchema = z.object({\n cwd: z.string(),\n blocks: z.array(z.string()).optional(),\n yes: z.boolean(),\n overwrite: z.boolean(),\n silent: z.boolean(),\n});\n\nexport async function preFlightAdd(options: z.infer<typeof addOptionsSchema>) {\n const errors: Record<string, boolean> = {};\n const cwd = path.resolve(options.cwd);\n\n if (!existsSync(cwd)) {\n errors[ERRORS.MISSING_DIR_OR_EMPTY_PROJECT] = true;\n return {\n errors,\n config: null,\n };\n }\n\n const config = await getConfig(cwd);\n if (!config) {\n errors[ERRORS.MISSING_CONFIG] = true;\n return {\n errors,\n config: null,\n };\n }\n\n const projectInfo = await getProjectInfo(cwd);\n\n return {\n errors,\n config,\n projectInfo,\n };\n}\n","interface RegistryContext {\n headers: Record<string, Record<string, string>>;\n}\n\nconst context: RegistryContext = {\n headers: {},\n};\n\nexport function setRegistryHeaders(\n headers: Record<string, Record<string, string>>\n) {\n context.headers = { ...context.headers, ...headers };\n}\n\nexport function getRegistryHeadersFromContext(\n url: string\n): Record<string, string> {\n return context.headers[url] || {};\n}\n\nexport function clearRegistryContext() {\n context.headers = {};\n}\n","import type { Config, RawConfig } from \"../schema\";\nimport { BUILTIN_REGISTRIES } from \"./constants\";\n\nexport function configWithDefaults(config?: Partial<Config> | Config): Config {\n const defaultConfig: RawConfig = {\n aliases: {\n workflows: \"packages/api/src/workflows\",\n api: \"packages/api/src/api\",\n links: \"packages/api/src/links\",\n modules: \"packages/api/src/modules\",\n vendor: \"apps/vendor/src\",\n admin: \"apps/admin/src\",\n lib: \"packages/api/src/lib\",\n },\n registries: BUILTIN_REGISTRIES,\n };\n\n const merged = {\n ...defaultConfig,\n ...(config || {}),\n aliases: {\n ...defaultConfig.aliases,\n ...(config?.aliases || {}),\n },\n registries: {\n // User registries come first so the first one is used as default for unnamespaced deps\n ...(config?.registries || {}),\n ...BUILTIN_REGISTRIES,\n },\n };\n\n return merged as Config;\n}\n","export function expandEnvVars(value: string) {\n return value.replace(/\\${(\\w+)}/g, (_match, key) => process.env[key] || \"\");\n}\n\nexport function extractEnvVars(value: string) {\n const vars: string[] = [];\n const regex = /\\${(\\w+)}/g;\n let match = regex.exec(value);\n\n while (match !== null) {\n const varName = match[1];\n if (varName) {\n vars.push(varName);\n }\n match = regex.exec(value);\n }\n\n return vars;\n}\n","const REGISTRY_PATTERN = /^(@[a-zA-Z0-9](?:[a-zA-Z0-9-_]*[a-zA-Z0-9])?)\\/(.+)$/;\n\nexport function parseRegistryAndBlockFromString(name: string) {\n if (!name.startsWith(\"@\")) {\n return {\n registry: null,\n item: name,\n };\n }\n\n const match = name.match(REGISTRY_PATTERN);\n if (match) {\n return {\n registry: match[1],\n item: match[2],\n };\n }\n\n return {\n registry: null,\n item: name,\n };\n}\n","import * as fs from \"fs/promises\";\nimport { tmpdir } from \"os\";\nimport * as path from \"path\";\nimport {\n registryItemFileSchema,\n registryItemSchema,\n registryItemTypeSchema,\n} from \"@/src/registry/schema\";\nimport { configSchema, type Config } from \"@/src/schema\";\nimport { type ProjectInfo } from \"@/src/utils/get-project-info\";\nimport { resolveImport } from \"@/src/utils/resolve-import\";\nimport { Project, ScriptKind } from \"ts-morph\";\nimport { loadConfig } from \"tsconfig-paths\";\nimport { z } from \"zod\";\n\nconst FILE_EXTENSIONS_FOR_LOOKUP = [\".tsx\", \".ts\"];\nconst FILE_PATH_SKIP_LIST = [\"lib/utils.ts\"];\nconst DEPENDENCY_SKIP_LIST = [\n /^(react|react-dom)(\\/.*)?$/, // Matches react, react-dom and their submodules\n /^(node|jsr|npm):.*$/, // Matches node:, jsr:, and npm: prefixed modules\n];\n\nconst project = new Project({\n compilerOptions: {},\n});\n\n// This returns the dependency from the module specifier.\n// Here dependency means an npm package.\nexport function getDependencyFromModuleSpecifier(\n moduleSpecifier: string\n): string | null {\n // Skip if the dependency matches any pattern in the skip list\n if (DEPENDENCY_SKIP_LIST.some((pattern) => pattern.test(moduleSpecifier))) {\n return null;\n }\n\n // If the module specifier does not start with `@` and has a /, add the dependency first part only.\n // E.g. `foo/bar` -> `foo`\n if (!moduleSpecifier.startsWith(\"@\") && moduleSpecifier.includes(\"/\")) {\n moduleSpecifier = moduleSpecifier.split(\"/\")[0];\n }\n\n // For scoped packages, we want to keep the first two parts\n // E.g. `@types/react/dom` -> `@types/react`\n if (moduleSpecifier.startsWith(\"@\")) {\n const parts = moduleSpecifier.split(\"/\");\n if (parts.length > 2) {\n moduleSpecifier = parts.slice(0, 2).join(\"/\");\n }\n }\n\n return moduleSpecifier;\n}\n\nexport async function recursivelyResolveFileImports(\n filePath: string,\n config: z.infer<typeof configSchema>,\n projectInfo: ProjectInfo,\n processedFiles: Set<string> = new Set()\n): Promise<Pick<z.infer<typeof registryItemSchema>, \"files\" | \"dependencies\">> {\n const resolvedFilePath = path.resolve(config.resolvedPaths.cwd, filePath);\n const relativeRegistryFilePath = path.relative(\n config.resolvedPaths.cwd,\n resolvedFilePath\n );\n\n // Skip if the file is in the skip list\n if (FILE_PATH_SKIP_LIST.includes(relativeRegistryFilePath)) {\n return { dependencies: [], files: [] };\n }\n\n // Skip if the file extension is not one of the supported extensions\n const fileExtension = path.extname(filePath);\n if (!FILE_EXTENSIONS_FOR_LOOKUP.includes(fileExtension)) {\n return { dependencies: [], files: [] };\n }\n\n // Prevent infinite loop: skip if already processed\n if (processedFiles.has(relativeRegistryFilePath)) {\n return { dependencies: [], files: [] };\n }\n processedFiles.add(relativeRegistryFilePath);\n\n try {\n const stat = await fs.stat(resolvedFilePath);\n if (!stat.isFile()) {\n return { dependencies: [], files: [] };\n }\n } catch {\n return { dependencies: [], files: [] };\n }\n\n const content = await fs.readFile(resolvedFilePath, \"utf-8\");\n const tempFile = await createTempSourceFile(path.basename(resolvedFilePath));\n const sourceFile = project.createSourceFile(tempFile, content, {\n scriptKind: ScriptKind.TSX,\n });\n const tsConfig = await loadConfig(config.resolvedPaths.cwd);\n if (tsConfig.resultType === \"failed\") {\n return { dependencies: [], files: [] };\n }\n\n const files: z.infer<typeof registryItemSchema>[\"files\"] = [];\n const dependencies = new Set<string>();\n\n // Add the original file first\n const fileType = determineFileType(filePath);\n const originalFile = {\n path: relativeRegistryFilePath,\n type: fileType,\n target: \"\",\n content: \"\",\n };\n files.push(originalFile);\n\n // 1. Find all import statements in the file.\n const importStatements = sourceFile.getImportDeclarations();\n for (const importStatement of importStatements) {\n const moduleSpecifier = importStatement.getModuleSpecifierValue();\n\n const isRelativeImport = moduleSpecifier.startsWith(\".\");\n const isAliasImport =\n projectInfo.aliasPrefix &&\n moduleSpecifier.startsWith(`${projectInfo.aliasPrefix}/`);\n\n // If not a local import, add to the dependencies array.\n if (!isAliasImport && !isRelativeImport) {\n const dependency = getDependencyFromModuleSpecifier(moduleSpecifier);\n if (dependency) {\n dependencies.add(dependency);\n }\n continue;\n }\n\n let probableImportFilePath = await resolveImport(moduleSpecifier, tsConfig);\n\n if (isRelativeImport) {\n probableImportFilePath = path.resolve(\n path.dirname(resolvedFilePath),\n moduleSpecifier\n );\n }\n\n if (!probableImportFilePath) {\n continue;\n }\n\n // Check if the probable import path has a file extension.\n // Try each extension until we find a file that exists.\n const hasExtension = path.extname(probableImportFilePath);\n if (!hasExtension) {\n for (const ext of FILE_EXTENSIONS_FOR_LOOKUP) {\n const pathWithExt: string = `${probableImportFilePath}${ext}`;\n try {\n await fs.access(pathWithExt);\n probableImportFilePath = pathWithExt;\n break;\n } catch {\n continue;\n }\n }\n }\n\n const nestedRelativeRegistryFilePath = path.relative(\n config.resolvedPaths.cwd,\n probableImportFilePath\n );\n\n // Skip if we've already processed this file or if it's in the skip list\n if (\n processedFiles.has(nestedRelativeRegistryFilePath) ||\n FILE_PATH_SKIP_LIST.includes(nestedRelativeRegistryFilePath)\n ) {\n continue;\n }\n\n const nestedFileType = determineFileType(moduleSpecifier);\n const file = {\n path: nestedRelativeRegistryFilePath,\n type: nestedFileType,\n target: \"\",\n content: \"\",\n };\n\n files.push(file);\n\n // Recursively process the imported file, passing the shared processedFiles set\n const nestedResults = await recursivelyResolveFileImports(\n nestedRelativeRegistryFilePath,\n config,\n projectInfo,\n processedFiles\n );\n\n if (nestedResults.files) {\n // Only add files that haven't been processed yet\n for (const nestedFile of nestedResults.files) {\n if (!processedFiles.has(nestedFile.path)) {\n processedFiles.add(nestedFile.path);\n files.push(nestedFile);\n }\n }\n }\n\n if (nestedResults.dependencies) {\n nestedResults.dependencies.forEach((dep) => dependencies.add(dep));\n }\n }\n\n // Deduplicate files by path\n const uniqueFiles = Array.from(\n new Map(files.map((file) => [file.path, file])).values()\n );\n\n return {\n dependencies: Array.from(dependencies),\n files: uniqueFiles,\n };\n}\n\nasync function createTempSourceFile(filename: string) {\n const dir = await fs.mkdtemp(path.join(tmpdir(), \"mercur-\"));\n return path.join(dir, filename);\n}\n\n// This determines the registry type based on the file path.\nfunction determineFileType(\n moduleSpecifier: string\n): z.infer<typeof registryItemTypeSchema> {\n if (moduleSpecifier.includes(\"/workflows/\")) {\n return \"registry:workflow\";\n }\n\n if (moduleSpecifier.includes(\"/api/\")) {\n return \"registry:api\";\n }\n\n if (moduleSpecifier.includes(\"/links/\")) {\n return \"registry:link\";\n }\n\n if (moduleSpecifier.includes(\"/modules/\")) {\n return \"registry:module\";\n }\n\n if (moduleSpecifier.includes(\"/vendor\")) {\n return \"registry:vendor\";\n }\n\n if (moduleSpecifier.includes(\"/admin\")) {\n return \"registry:admin\";\n }\n\n if (moduleSpecifier.includes(\"/lib/\")) {\n return \"registry:lib\";\n }\n\n // Default to lib for unknown types\n return \"registry:lib\";\n}\n\n// Additional utility functions for local file support\nexport function isUrl(path: string) {\n try {\n new URL(path);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function isLocalFile(path: string) {\n return path.endsWith(\".json\") && !isUrl(path);\n}\n\n/**\n * Check if a registry item is universal (framework-agnostic).\n * A universal registry item must:\n * 1. Have files with explicit targets\n * It can be installed without framework detection or blocks.json.\n */\nexport function isUniversalRegistryItem(\n registryItem:\n | Pick<z.infer<typeof registryItemSchema>, \"files\" | \"type\">\n | null\n | undefined\n): boolean {\n if (!registryItem) {\n return false;\n }\n\n const files = registryItem.files ?? [];\n\n // If there are files, all must have targets\n return files.every((file) => !!file.target);\n}\n\n// Deduplicates files based on their resolved target paths.\n// When multiple files resolve to the same target path, the last one wins.\nexport async function deduplicateFilesByTarget(\n filesArrays: Array<z.infer<typeof registryItemFileSchema>[] | undefined>,\n config: Config\n) {\n // Fallback to simple concatenation when we don't have complete config.\n if (!canDeduplicateFiles(config)) {\n return z\n .array(registryItemFileSchema)\n .parse(filesArrays.flat().filter(Boolean));\n }\n\n const targetMap = new Map<string, z.infer<typeof registryItemFileSchema>>();\n const allFiles = z\n .array(registryItemFileSchema)\n .parse(filesArrays.flat().filter(Boolean));\n\n allFiles.forEach((file) => {\n // Use file path as the key for deduplication\n const resolvedPath = file.target || file.path;\n\n if (resolvedPath) {\n // Last one wins - overwrites previous entry.\n targetMap.set(resolvedPath, file);\n }\n });\n\n return Array.from(targetMap.values());\n}\n\n// Checks if the config has the minimum required paths for file deduplication.\nexport function canDeduplicateFiles(config: Config) {\n return !!(\n config?.resolvedPaths?.cwd &&\n (config?.resolvedPaths?.lib ||\n config?.resolvedPaths?.workflows ||\n config?.resolvedPaths?.api ||\n config?.resolvedPaths?.modules)\n );\n}\n","import type { z } from \"zod\";\nimport type { Config } from \"../schema\";\nimport { buildUrlAndHeadersForRegistryBlock } from \"./builder\";\nimport { configWithDefaults } from \"./config\";\nimport { clearRegistryContext } from \"./context\";\nimport { extractEnvVars } from \"./env\";\nimport { RegistryMissingEnvironmentVariablesError } from \"./errors\";\nimport type { registryConfigItemSchema } from \"./schema\";\n\nexport function extractEnvVarsFromRegistryConfig(\n config: z.infer<typeof registryConfigItemSchema>\n): string[] {\n const vars = new Set<string>();\n\n if (typeof config === \"string\") {\n for (const v of extractEnvVars(config)) {\n vars.add(v);\n }\n } else {\n for (const v of extractEnvVars(config.url)) {\n vars.add(v);\n }\n\n if (config.params) {\n for (const value of Object.values(config.params)) {\n for (const v of extractEnvVars(value)) {\n vars.add(v);\n }\n }\n }\n\n if (config.headers) {\n for (const value of Object.values(config.headers)) {\n for (const v of extractEnvVars(value)) {\n vars.add(v);\n }\n }\n }\n }\n\n return Array.from(vars);\n}\n\nexport function validateRegistryConfig(\n registryName: string,\n config: z.infer<typeof registryConfigItemSchema>\n): void {\n const requiredVars = extractEnvVarsFromRegistryConfig(config);\n const missing = requiredVars.filter((v) => !process.env[v]);\n\n if (missing.length > 0) {\n throw new RegistryMissingEnvironmentVariablesError(registryName, missing);\n }\n}\n\nexport function validateRegistryConfigForBlocks(\n blocks: string[],\n config?: Config\n): void {\n for (const item of blocks) {\n buildUrlAndHeadersForRegistryBlock(item, configWithDefaults(config));\n }\n\n clearRegistryContext();\n}\n","import type { z } from \"zod\";\nimport type { Config } from \"../schema\";\nimport { REGISTRY_URL } from \"./constants\";\nimport { expandEnvVars } from \"./env\";\nimport { RegistryNotConfiguredError } from \"./errors\";\nimport { parseRegistryAndBlockFromString } from \"./parser\";\nimport type { registryConfigItemSchema } from \"./schema\";\nimport { isLocalFile, isUrl } from \"./utils\";\nimport { validateRegistryConfig } from \"./validator\";\n\nconst NAME_PLACEHOLDER = \"{name}\";\nconst DEFAULT_PLACEHOLDER = `${NAME_PLACEHOLDER}.json`;\nconst ENV_VAR_PATTERN = /\\${(\\w+)}/g;\nconst QUERY_PARAM_SEPARATOR = \"?\";\nconst QUERY_PARAM_DELIMITER = \"&\";\n\nfunction hasPlaceholders(url: string) {\n return url.includes(NAME_PLACEHOLDER);\n}\n\nfunction appendPlaceholdersIfNeeded(url: string): string {\n if (hasPlaceholders(url)) return url;\n\n const baseUrl = url.endsWith(\"/\") ? url : `${url}/`;\n\n return `${baseUrl}${DEFAULT_PLACEHOLDER}`;\n}\n\nexport function buildUrlAndHeadersForRegistryBlock(\n name: string,\n config?: Config\n) {\n const { registry, item } = parseRegistryAndBlockFromString(name);\n\n if (!registry) {\n return null;\n }\n\n const registries = config?.registries || {};\n const registryConfig = registries[registry];\n if (!registryConfig) {\n throw new RegistryNotConfiguredError(registry);\n }\n\n validateRegistryConfig(registry, registryConfig);\n\n return {\n url: buildUrlFromRegistryConfig(item, registryConfig, config),\n headers: buildHeadersFromRegistryConfig(registryConfig),\n };\n}\n\nexport function buildUrlFromRegistryConfig(\n item: string,\n registryConfig: z.infer<typeof registryConfigItemSchema>,\n _config?: Config\n) {\n if (typeof registryConfig === \"string\") {\n const urlWithPlaceholders = appendPlaceholdersIfNeeded(registryConfig);\n const url = urlWithPlaceholders.replace(NAME_PLACEHOLDER, item);\n return expandEnvVars(url);\n }\n\n const urlWithPlaceholders = appendPlaceholdersIfNeeded(registryConfig.url);\n let baseUrl = urlWithPlaceholders.replace(NAME_PLACEHOLDER, item);\n baseUrl = expandEnvVars(baseUrl);\n\n if (!registryConfig.params) {\n return baseUrl;\n }\n\n return appendQueryParams(baseUrl, registryConfig.params);\n}\n\nexport function buildHeadersFromRegistryConfig(\n config: z.infer<typeof registryConfigItemSchema>\n) {\n if (typeof config === \"string\" || !config.headers) {\n return {};\n }\n\n const headers: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(config.headers)) {\n const expandedValue = expandEnvVars(value);\n\n if (shouldIncludeHeader(value, expandedValue)) {\n headers[key] = expandedValue;\n }\n }\n\n return headers;\n}\n\nfunction appendQueryParams(baseUrl: string, params: Record<string, string>) {\n const urlParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(params)) {\n const expandedValue = expandEnvVars(value);\n if (expandedValue) {\n urlParams.append(key, expandedValue);\n }\n }\n\n const queryString = urlParams.toString();\n if (!queryString) {\n return baseUrl;\n }\n\n const separator = baseUrl.includes(QUERY_PARAM_SEPARATOR)\n ? QUERY_PARAM_DELIMITER\n : QUERY_PARAM_SEPARATOR;\n\n return `${baseUrl}${separator}${queryString}`;\n}\n\nfunction shouldIncludeHeader(originalValue: string, expandedValue: string) {\n const trimmedExpanded = expandedValue.trim();\n\n if (!trimmedExpanded) {\n return false;\n }\n\n if (originalValue.includes(\"${\")) {\n const envVars = originalValue.match(ENV_VAR_PATTERN);\n if (envVars) {\n const templateWithoutVars = originalValue\n .replace(ENV_VAR_PATTERN, \"\")\n .trim();\n return trimmedExpanded !== templateWithoutVars;\n }\n }\n\n return true;\n}\n\nexport function resolveRegistryUrl(pathOrUrl: string) {\n if (isUrl(pathOrUrl) || isLocalFile(pathOrUrl)) {\n return pathOrUrl;\n }\n\n return `${REGISTRY_URL}/${pathOrUrl}`;\n}\n","import { promises as fs } from \"fs\";\nimport { homedir } from \"os\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { resolveRegistryUrl } from \"./builder\";\nimport { getRegistryHeadersFromContext } from \"./context\";\nimport {\n RegistryFetchError,\n RegistryForbiddenError,\n RegistryLocalFileError,\n RegistryNotFoundError,\n RegistryParseError,\n RegistryUnauthorizedError,\n} from \"./errors\";\nimport { registryItemSchema } from \"./schema\";\nimport { isLocalFile } from \"./utils\";\n\nconst fetchCache = new Map<string, Promise<unknown>>();\n\nasync function fetchLocalJson(filePath: string) {\n let expandedPath = filePath;\n\n // Strip file:// protocol if present\n if (expandedPath.startsWith(\"file://\")) {\n expandedPath = expandedPath.slice(7);\n }\n\n if (expandedPath.startsWith(\"~/\")) {\n expandedPath = path.join(homedir(), expandedPath.slice(2));\n }\n\n const resolvedPath = path.resolve(expandedPath);\n\n try {\n const content = await fs.readFile(resolvedPath, \"utf8\");\n return JSON.parse(content);\n } catch (error) {\n if (\n error instanceof Error &&\n (error.message.includes(\"ENOENT\") ||\n error.message.includes(\"no such file\"))\n ) {\n throw new RegistryLocalFileError(filePath, error);\n }\n throw new RegistryLocalFileError(filePath, error);\n }\n}\n\nexport async function fetchRegistry(paths: string[]) {\n const results = await Promise.all(\n paths.map(async (path) => {\n const url = resolveRegistryUrl(path);\n\n // Return cached promise if we've already started fetching this URL\n if (fetchCache.has(url)) {\n return fetchCache.get(url);\n }\n\n if (isLocalFile(url)) {\n const fetchPromise = fetchLocalJson(url);\n fetchCache.set(url, fetchPromise);\n return fetchPromise;\n }\n\n const fetchPromise = (async () => {\n const headers = getRegistryHeadersFromContext(url);\n\n const response = await fetch(url, {\n headers: {\n ...headers,\n },\n });\n\n if (!response.ok) {\n let messageFromServer: string | undefined;\n\n if (\n response.headers.get(\"content-type\")?.includes(\"application/json\")\n ) {\n const json = await response.json();\n const parsed = z\n .object({\n detail: z.string().optional(),\n title: z.string().optional(),\n message: z.string().optional(),\n error: z.string().optional(),\n })\n .safeParse(json);\n\n if (parsed.success) {\n messageFromServer = parsed.data.detail || parsed.data.message;\n\n if (parsed.data.error) {\n messageFromServer = `[${parsed.data.error}] ${messageFromServer}`;\n }\n }\n }\n\n if (response.status === 401) {\n throw new RegistryUnauthorizedError(url, messageFromServer);\n }\n\n if (response.status === 404) {\n throw new RegistryNotFoundError(url, messageFromServer);\n }\n\n if (response.status === 403) {\n throw new RegistryForbiddenError(url, messageFromServer);\n }\n\n throw new RegistryFetchError(url, response.status, messageFromServer);\n }\n\n return response.json();\n })();\n\n fetchCache.set(url, fetchPromise);\n return fetchPromise;\n })\n );\n\n return results;\n}\n\nexport async function fetchRegistryLocal(filePath: string) {\n try {\n let expandedPath = filePath;\n if (filePath.startsWith(\"~/\")) {\n expandedPath = path.join(homedir(), filePath.slice(2));\n }\n\n const resolvedPath = path.resolve(expandedPath);\n const content = await fs.readFile(resolvedPath, \"utf8\");\n const parsed = JSON.parse(content);\n\n try {\n return registryItemSchema.parse(parsed);\n } catch (error) {\n throw new RegistryParseError(filePath, error);\n }\n } catch (error) {\n if (\n error instanceof Error &&\n (error.message.includes(\"ENOENT\") ||\n error.message.includes(\"no such file\"))\n ) {\n throw new RegistryLocalFileError(filePath, error);\n }\n if (error instanceof RegistryParseError) {\n throw error;\n }\n throw new RegistryLocalFileError(filePath, error);\n }\n}\n","import { createHash } from \"crypto\";\nimport deepmerge from \"deepmerge\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport type { Config } from \"../schema\";\nimport { buildUrlAndHeadersForRegistryBlock } from \"./builder\";\nimport { setRegistryHeaders } from \"./context\";\nimport { RegistryNotConfiguredError, RegistryParseError } from \"./errors\";\nimport { fetchRegistry, fetchRegistryLocal } from \"./fetcher\";\nimport { parseRegistryAndBlockFromString } from \"./parser\";\nimport {\n type RegistryItem,\n registryItemSchema,\n registryResolvedItemsTreeSchema,\n} from \"./schema\";\nimport { isLocalFile, isUrl } from \"./utils\";\nimport { REGISTRY_URL } from \"./constants\";\n\nconst registryBlockWithSourceSchema = registryItemSchema.extend({\n _source: z.string().optional(),\n});\n\nexport function resolveRegistryBlocksFromRegistries(\n blocks: string[],\n config: Config\n) {\n const registryHeaders: Record<string, Record<string, string>> = {};\n const resolvedBlocks = [...blocks];\n\n if (!config?.registries) {\n setRegistryHeaders({});\n return resolvedBlocks;\n }\n\n for (let i = 0; i < resolvedBlocks.length; i++) {\n const resolved = buildUrlAndHeadersForRegistryBlock(\n resolvedBlocks[i],\n config\n );\n\n if (resolved) {\n resolvedBlocks[i] = resolved.url;\n\n if (Object.keys(resolved.headers).length > 0) {\n registryHeaders[resolved.url] = resolved.headers;\n }\n }\n }\n\n setRegistryHeaders(registryHeaders);\n\n return resolvedBlocks;\n}\n\nexport async function fetchRegistryBlocks(blocks: string[], config: Config) {\n const results = await Promise.all(\n blocks.map(async (block) => {\n if (isLocalFile(block)) {\n return fetchRegistryLocal(block);\n }\n\n if (isUrl(block)) {\n const [result] = await fetchRegistry([block]);\n try {\n return registryItemSchema.parse(result);\n } catch (error) {\n throw new RegistryParseError(block, error);\n }\n }\n\n if (block.startsWith(\"@\") && config?.registries) {\n const paths = resolveRegistryBlocksFromRegistries([block], config);\n const [result] = await fetchRegistry(paths);\n try {\n return registryItemSchema.parse(result);\n } catch (error) {\n throw new RegistryParseError(block, error);\n }\n }\n\n\n const path = `${REGISTRY_URL}/${block}.json`\n const [result] = await fetchRegistry([path])\n try {\n return registryItemSchema.parse(result)\n } catch (error) {\n throw new RegistryParseError(block, error)\n }\n })\n );\n\n return results;\n}\n\nexport async function resolveRegistryTree(names: string[], config: Config) {\n let payload: z.infer<typeof registryBlockWithSourceSchema>[] = [];\n const allDependencyItems: z.infer<typeof registryBlockWithSourceSchema>[] =\n [];\n\n const uniqueNames = Array.from(new Set(names));\n\n const results = await fetchRegistryBlocks(uniqueNames, config);\n\n const resultMap = new Map<string, RegistryItem>();\n for (let i = 0; i < results.length; i++) {\n if (results[i]) {\n resultMap.set(uniqueNames[i], results[i]);\n }\n }\n\n for (const [sourceName, item] of Array.from(resultMap.entries())) {\n const itemWithSource: z.infer<typeof registryBlockWithSourceSchema> = {\n ...item,\n _source: sourceName,\n };\n payload.push(itemWithSource);\n\n if (item.registryDependencies) {\n let resolvedDependencies = item.registryDependencies;\n\n if (!config?.registries) {\n const namespacedDeps = item.registryDependencies.filter((dep: string) =>\n dep.startsWith(\"@\")\n );\n if (namespacedDeps.length > 0) {\n const { registry } = parseRegistryAndBlockFromString(\n namespacedDeps[0]\n );\n throw new RegistryNotConfiguredError(registry);\n }\n } else {\n resolvedDependencies = resolveRegistryBlocksFromRegistries(\n item.registryDependencies,\n config\n );\n }\n\n const { blocks } = await resolveDependenciesRecursively(\n resolvedDependencies,\n config,\n new Set(uniqueNames)\n );\n allDependencyItems.push(...blocks);\n }\n }\n\n payload.push(...allDependencyItems);\n\n const sourceMap = new Map<RegistryItem, string>();\n for (const item of payload) {\n const source = item._source || item.name;\n sourceMap.set(item, source);\n }\n\n payload = topologicalSortRegistryBlocks(payload, sourceMap);\n\n const parsed = registryResolvedItemsTreeSchema.parse({\n dependencies: deepmerge.all(payload.map((item) => item.dependencies ?? [])),\n devDependencies: deepmerge.all(\n payload.map((item) => item.devDependencies ?? [])\n ),\n files: deduplicateFilesByTarget(payload.map((item) => item.files ?? [])),\n docs: payload\n .map((item) => item.docs)\n .filter(Boolean)\n .join(\"\\n\"),\n });\n\n return parsed;\n}\n\nasync function resolveDependenciesRecursively(\n dependencies: string[],\n config: Config,\n visited: Set<string> = new Set()\n) {\n const blocks: z.infer<typeof registryBlockWithSourceSchema>[] = [];\n\n for (const dep of dependencies) {\n if (visited.has(dep)) {\n continue;\n }\n visited.add(dep);\n\n // Validate namespaced dependencies\n if (dep.startsWith(\"@\") && config?.registries) {\n const { registry } = parseRegistryAndBlockFromString(dep);\n if (registry && !(registry in config.registries)) {\n throw new RegistryNotConfiguredError(registry);\n }\n }\n\n const [block] = await fetchRegistryBlocks([dep], config);\n if (!block) continue;\n\n blocks.push({ ...block, _source: dep });\n\n if (block.registryDependencies) {\n const resolvedDeps = config?.registries\n ? resolveRegistryBlocksFromRegistries(\n block.registryDependencies,\n config\n )\n : block.registryDependencies;\n\n const nested = await resolveDependenciesRecursively(\n resolvedDeps,\n config,\n visited\n );\n blocks.push(...nested.blocks);\n }\n }\n\n return { blocks };\n}\n\nfunction computeItemHash(item: Pick<RegistryItem, \"name\">, source?: string) {\n const identifier = source || item.name;\n\n const hash = createHash(\"sha256\")\n .update(identifier)\n .digest(\"hex\")\n .substring(0, 8);\n\n return `${item.name}::${hash}`;\n}\n\nfunction extractItemIdentifierFromDependency(dependency: string) {\n if (isUrl(dependency)) {\n const url = new URL(dependency);\n const pathname = url.pathname;\n const match = pathname.match(/\\/([^/]+)\\.json$/);\n const name = match ? match[1] : path.basename(pathname, \".json\");\n\n return {\n name,\n hash: computeItemHash({ name }, dependency),\n };\n }\n\n if (isLocalFile(dependency)) {\n const match = dependency.match(/\\/([^/]+)\\.json$/);\n const name = match ? match[1] : path.basename(dependency, \".json\");\n\n return {\n name,\n hash: computeItemHash({ name }, dependency),\n };\n }\n\n const { item } = parseRegistryAndBlockFromString(dependency);\n return {\n name: item,\n hash: computeItemHash({ name: item }, dependency),\n };\n}\n\nfunction topologicalSortRegistryBlocks(\n blocks: z.infer<typeof registryBlockWithSourceSchema>[],\n sourceMap: Map<RegistryItem, string>\n) {\n const itemMap = new Map<string, RegistryItem>();\n const hashToItem = new Map<string, RegistryItem>();\n const inDegree = new Map<string, number>();\n const adjacencyList = new Map<string, string[]>();\n\n for (const item of blocks) {\n const source = sourceMap.get(item) || item.name;\n const hash = computeItemHash(item, source);\n\n itemMap.set(hash, item);\n hashToItem.set(hash, item);\n inDegree.set(hash, 0);\n adjacencyList.set(hash, []);\n }\n\n const depToHashes = new Map<string, string[]>();\n for (const item of blocks) {\n const source = sourceMap.get(item) || item.name;\n const hash = computeItemHash(item, source);\n\n if (!depToHashes.has(item.name)) {\n depToHashes.set(item.name, []);\n }\n depToHashes.get(item.name)!.push(hash);\n\n if (source !== item.name) {\n if (!depToHashes.has(source)) {\n depToHashes.set(source, []);\n }\n depToHashes.get(source)!.push(hash);\n }\n }\n\n for (const item of blocks) {\n const itemSource = sourceMap.get(item) || item.name;\n const itemHash = computeItemHash(item, itemSource);\n\n if (item.registryDependencies) {\n for (const dep of item.registryDependencies) {\n let depHash: string | undefined;\n\n const exactMatches = depToHashes.get(dep) || [];\n if (exactMatches.length === 1) {\n depHash = exactMatches[0];\n } else if (exactMatches.length > 1) {\n depHash = exactMatches[0];\n } else {\n const { name } = extractItemIdentifierFromDependency(dep);\n const nameMatches = depToHashes.get(name) || [];\n if (nameMatches.length > 0) {\n depHash = nameMatches[0];\n }\n }\n\n if (depHash && itemMap.has(depHash)) {\n adjacencyList.get(depHash)!.push(itemHash);\n inDegree.set(itemHash, inDegree.get(itemHash)! + 1);\n }\n }\n }\n }\n\n const queue: string[] = [];\n const sorted: z.infer<typeof registryBlockWithSourceSchema>[] = [];\n\n for (const [hash, degree] of inDegree) {\n if (degree === 0) {\n queue.push(hash);\n }\n }\n\n while (queue.length > 0) {\n const currentHash = queue.shift()!;\n const item = itemMap.get(currentHash)!;\n sorted.push(item as z.infer<typeof registryBlockWithSourceSchema>);\n\n for (const dependentHash of adjacencyList.get(currentHash)!) {\n const newDegree = inDegree.get(dependentHash)! - 1;\n inDegree.set(dependentHash, newDegree);\n\n if (newDegree === 0) {\n queue.push(dependentHash);\n }\n }\n }\n\n if (sorted.length !== blocks.length) {\n const missingHashes = Array.from(itemMap.keys()).filter(\n (hash) =>\n !sorted.some(\n (item) => computeItemHash(item, sourceMap.get(item)) === hash\n )\n );\n console.warn(\n `Warning: Circular dependencies detected. Some items may not be sorted correctly: ${missingHashes.join(\", \")}`\n );\n\n // Add remaining items that couldn't be sorted due to circular dependencies\n for (const [hash, item] of itemMap.entries()) {\n if (!sorted.some((s) => computeItemHash(s, sourceMap.get(s)) === hash)) {\n sorted.push(item as z.infer<typeof registryBlockWithSourceSchema>);\n }\n }\n }\n\n return sorted;\n}\n\nfunction deduplicateFilesByTarget(\n filesArrays: Array<RegistryItem[\"files\"] | undefined>\n) {\n const seen = new Map<string, RegistryItem[\"files\"][number]>();\n const result: RegistryItem[\"files\"] = [];\n\n for (const files of filesArrays) {\n if (!files) continue;\n\n for (const file of files) {\n const key = file.target || file.path;\n if (!seen.has(key)) {\n seen.set(key, file);\n result.push(file);\n }\n }\n }\n\n return result;\n}\n","import kleur from \"kleur\";\n\nexport const highlighter = {\n error: (text: string) => kleur.red(text),\n warn: (text: string) => kleur.yellow(text),\n info: (text: string) => kleur.blue(text),\n success: (text: string) => kleur.green(text),\n dim: (text: string) => kleur.cyan(text),\n};\n","import { highlighter } from \"./highlighter\";\n\nexport const logger = {\n error(...args: unknown[]) {\n console.log(highlighter.error(args.join(\" \")));\n },\n warn(...args: unknown[]) {\n console.log(highlighter.warn(args.join(\" \")));\n },\n info(...args: unknown[]) {\n console.log(highlighter.info(args.join(\" \")));\n },\n success(...args: unknown[]) {\n console.log(highlighter.success(args.join(\" \")));\n },\n log(...args: unknown[]) {\n console.log(args.join(\" \"));\n },\n break() {\n console.log(\"\");\n },\n};\n","import { z } from \"zod\";\nimport { RegistryError } from \"../registry/errors\";\nimport { highlighter } from \"./highlighter\";\nimport { logger } from \"./logger\";\n\nexport function handleError(error: unknown) {\n logger.break();\n logger.error(\n `Something went wrong. Please check the error below for more details.`\n );\n logger.error(`If the problem persists, please open an issue on GitHub.`);\n logger.error(\"\");\n if (typeof error === \"string\") {\n logger.error(error);\n logger.break();\n process.exit(1);\n }\n\n if (error instanceof RegistryError) {\n if (error.message) {\n logger.error(error.cause ? \"Error:\" : \"Message:\");\n logger.error(error.message);\n }\n\n if (error.cause) {\n logger.error(\"\\nMessage:\");\n logger.error(error.cause);\n }\n\n if (error.suggestion) {\n logger.error(\"\\nSuggestion:\");\n logger.error(error.suggestion);\n }\n logger.break();\n process.exit(1);\n }\n\n if (error instanceof z.ZodError) {\n logger.error(\"Validation failed:\");\n // Zod v4 compatible error handling using issues array\n for (const issue of error.issues) {\n const path = issue.path.join(\".\") || \"root\";\n logger.error(`- ${highlighter.info(path)}: ${issue.message}`);\n }\n logger.break();\n process.exit(1);\n }\n\n if (error instanceof Error) {\n logger.error(error.message);\n logger.break();\n process.exit(1);\n }\n\n logger.break();\n process.exit(1);\n}\n","import ora, { type Options } from \"ora\";\n\nexport function spinner(\n text: Options[\"text\"],\n options?: {\n silent?: boolean;\n }\n) {\n return ora({\n text,\n isSilent: options?.silent ?? false,\n });\n}\n","import { detect } from \"@antfu/ni\";\n\nexport async function getPackageManager(\n targetDir: string,\n): Promise<\"yarn\" | \"pnpm\" | \"bun\" | \"npm\" | \"deno\"> {\n const packageManager = await detect({ programmatic: true, cwd: targetDir });\n\n if (packageManager?.startsWith(\"bun\")) return \"bun\";\n if (packageManager?.startsWith(\"yarn\")) return \"yarn\";\n if (packageManager?.startsWith(\"pnpm\")) return \"pnpm\";\n if (packageManager?.startsWith(\"deno\")) return \"deno\";\n if (packageManager?.startsWith(\"npm\")) return \"npm\";\n\n const userAgent = process.env.npm_config_user_agent || \"\";\n\n if (userAgent.startsWith(\"bun\")) return \"bun\";\n if (userAgent.startsWith(\"yarn\")) return \"yarn\";\n if (userAgent.startsWith(\"pnpm\")) return \"pnpm\";\n if (userAgent.startsWith(\"deno\")) return \"deno\";\n\n return \"npm\";\n}\n\nexport async function getPackageRunner(cwd: string) {\n const packageManager = await getPackageManager(cwd);\n\n if (packageManager === \"pnpm\") return \"pnpm dlx\";\n\n if (packageManager === \"bun\") return \"bunx\";\n\n return \"npx\";\n}\n","import { execa } from \"execa\";\nimport type { RegistryItem } from \"../registry/schema\";\nimport type { Config } from \"../schema\";\nimport { getPackageManager } from \"./get-package-manager\";\nimport { spinner } from \"./spinner\";\n\nexport async function updateDependencies(\n dependencies: RegistryItem[\"dependencies\"],\n devDependencies: RegistryItem[\"devDependencies\"],\n config: Config,\n options: {\n silent?: boolean;\n } = {}\n) {\n dependencies = Array.from(new Set(dependencies || []));\n devDependencies = Array.from(new Set(devDependencies || []));\n\n if (!dependencies?.length && !devDependencies?.length) {\n return;\n }\n\n options = {\n silent: false,\n ...options,\n };\n\n const dependenciesSpinner = spinner(`Installing dependencies.`, {\n silent: options.silent,\n })?.start();\n\n const packageManager = await getPackageManager(config.resolvedPaths.cwd);\n\n dependenciesSpinner?.start();\n\n await installWithPackageManager(\n packageManager,\n dependencies,\n devDependencies,\n config.resolvedPaths.cwd\n );\n\n dependenciesSpinner?.succeed();\n}\n\nasync function installWithPackageManager(\n packageManager: Awaited<ReturnType<typeof getPackageManager>>,\n dependencies: string[],\n devDependencies: string[],\n cwd: string\n) {\n if (packageManager === \"npm\") {\n return installWithNpm(dependencies, devDependencies, cwd);\n }\n\n if (packageManager === \"deno\") {\n return installWithDeno(dependencies, devDependencies, cwd);\n }\n\n if (dependencies?.length) {\n await execa(packageManager, [\"add\", ...dependencies], {\n cwd,\n });\n }\n\n if (devDependencies?.length) {\n await execa(packageManager, [\"add\", \"-D\", ...devDependencies], { cwd });\n }\n}\n\nasync function installWithNpm(\n dependencies: string[],\n devDependencies: string[],\n cwd: string\n) {\n if (dependencies.length) {\n await execa(\"npm\", [\"install\", ...dependencies], { cwd });\n }\n\n if (devDependencies.length) {\n await execa(\"npm\", [\"install\", \"-D\", ...devDependencies], { cwd });\n }\n}\n\nasync function installWithDeno(\n dependencies: string[],\n devDependencies: string[],\n cwd: string\n) {\n if (dependencies?.length) {\n await execa(\"deno\", [\"add\", ...dependencies.map((dep) => `npm:${dep}`)], {\n cwd,\n });\n }\n\n if (devDependencies?.length) {\n await execa(\n \"deno\",\n [\"add\", \"-D\", ...devDependencies.map((dep) => `npm:${dep}`)],\n {\n cwd,\n }\n );\n }\n}\n","export function isContentSame(\n existingContent: string,\n newContent: string,\n options: {\n ignoreImports?: boolean;\n } = {}\n) {\n const { ignoreImports = false } = options;\n\n const normalizedExisting = existingContent.replace(/\\r\\n/g, \"\\n\").trim();\n const normalizedNew = newContent.replace(/\\r\\n/g, \"\\n\").trim();\n\n if (normalizedExisting === normalizedNew) {\n return true;\n }\n\n if (!ignoreImports) {\n return false;\n }\n\n const importRegex =\n /^(import\\s+(?:type\\s+)?(?:\\*\\s+as\\s+\\w+|\\{[^}]*\\}|\\w+)?(?:\\s*,\\s*(?:\\{[^}]*\\}|\\w+))?\\s+from\\s+[\"'])([^\"']+)([\"'])/gm;\n\n const normalizeImports = (content: string) => {\n return content.replace(\n importRegex,\n (_match, prefix, importPath, suffix) => {\n if (importPath.startsWith(\".\")) {\n return `${prefix}${importPath}${suffix}`;\n }\n\n const parts = importPath.split(\"/\");\n const lastPart = parts[parts.length - 1];\n\n return `${prefix}@normalized/${lastPart}${suffix}`;\n }\n );\n };\n\n const existingNormalized = normalizeImports(normalizedExisting);\n const newNormalized = normalizeImports(normalizedNew);\n\n return existingNormalized === newNormalized;\n}\n","import type z from \"zod\";\nimport type { RegistryItemCategory, registryItemFileSchema } from \"../registry/schema\";\nimport type { Config } from \"../schema\";\nimport path from \"path\";\n/**\n * Get the target directory for a registry file based on its type.\n */\nexport function getTargetDir(file: {\n type: string;\n path: string;\n}, config: Config) {\n if (file.type === \"registry:workflow\") return config.resolvedPaths.workflows;\n if (file.type === \"registry:api\") return config.resolvedPaths.api;\n if (file.type === \"registry:link\") return config.resolvedPaths.links;\n if (file.type === \"registry:module\") return config.resolvedPaths.modules;\n if (file.type === \"registry:vendor\") return config.resolvedPaths.vendor;\n if (file.type === \"registry:admin\") return config.resolvedPaths.admin;\n if (file.type === \"registry:lib\") return config.resolvedPaths.lib;\n throw new Error(`Unknown file type: ${file.type}`);\n}\n\n\nexport function resolveFilePath(file: z.infer<typeof registryItemFileSchema>, config: Config, options: {\n isSrcDir: boolean;\n path: string\n}) {\n // todo: add target support if path handling is not enough\n const targetDir = getTargetDir(file, config);\n\n const relativePath = resolveNestedFilePath(file.path, targetDir);\n\n return path.join(targetDir, relativePath)\n}\n\n\nexport function resolveNestedFilePath(\n filePath: string,\n targetDir: string\n): string {\n // Normalize paths by removing leading/trailing slashes\n const normalizedFilePath = filePath.replace(/^\\/|\\/$/g, \"\")\n const normalizedTargetDir = targetDir.replace(/^\\/|\\/$/g, \"\")\n\n // Split paths into segments\n const fileSegments = normalizedFilePath.split(\"/\")\n const targetSegments = normalizedTargetDir.split(\"/\")\n\n // Search target segments from the end to find the first match in filePath\n for (let i = targetSegments.length - 1; i >= 0; i--) {\n const commonDirIndex = fileSegments.findIndex(\n (segment) => segment === targetSegments[i]\n )\n\n if (commonDirIndex !== -1) {\n // Return everything after the common directory\n return fileSegments.slice(commonDirIndex + 1).join(\"/\")\n }\n }\n\n // Return just the filename if no common directory is found\n return fileSegments[fileSegments.length - 1]\n}","import { promises as fs } from \"fs\";\nimport { tmpdir } from \"os\";\nimport path from \"path\";\nimport { Project, ScriptKind } from \"ts-morph\";\nimport type { Config } from \"../schema\";\n\nconst project = new Project({\n compilerOptions: {},\n});\n\nasync function createTempSourceFile(filename: string) {\n const dir = await fs.mkdtemp(path.join(tmpdir(), \"mercurjs-\"));\n // Always use .ts extension for temp files to ensure proper parsing\n const baseName = path.basename(filename, path.extname(filename));\n return path.join(dir, `${baseName}.ts`);\n}\n\nexport type TransformOpts = {\n filename: string;\n raw: string;\n config: Config;\n isRemote?: boolean;\n};\n\nfunction getScriptKind(filename: string): ScriptKind {\n const ext = path.extname(filename).toLowerCase();\n switch (ext) {\n case \".tsx\":\n case \".ts\":\n // Use TS for JS files so import parsing works correctly\n return ScriptKind.TS;\n default:\n return ScriptKind.Unknown;\n }\n}\n\nexport async function transformImports(opts: TransformOpts): Promise<string> {\n const ext = path.extname(opts.filename).toLowerCase();\n if (![\".tsx\", \".ts\"].includes(ext)) {\n return opts.raw;\n }\n\n const scriptKind = getScriptKind(opts.filename);\n const tempFile = await createTempSourceFile(opts.filename);\n const sourceFile = project.createSourceFile(tempFile, opts.raw, {\n scriptKind,\n });\n\n for (const specifier of sourceFile.getImportStringLiterals()) {\n const updated = updateImportAliases(\n specifier.getLiteralValue(),\n opts.config\n );\n specifier.setLiteralValue(updated);\n }\n\n return sourceFile.getText();\n}\n\nfunction updateImportAliases(moduleSpecifier: string, config: Config) {\n if (moduleSpecifier.startsWith(\"@/workflows/\")) {\n const rest = moduleSpecifier.replace(/^@\\/workflows\\//, \"\");\n return `${config.aliases.workflows}/${rest}`;\n }\n if (moduleSpecifier === \"@/workflows\") {\n return config.aliases.workflows;\n }\n\n if (moduleSpecifier.startsWith(\"@/api/\")) {\n const rest = moduleSpecifier.replace(/^@\\/api\\//, \"\");\n return `${config.aliases.api}/${rest}`;\n }\n if (moduleSpecifier === \"@/api\") {\n return config.aliases.api;\n }\n\n if (moduleSpecifier.startsWith(\"@/links/\")) {\n const rest = moduleSpecifier.replace(/^@\\/links\\//, \"\");\n return `${config.aliases.links}/${rest}`;\n }\n if (moduleSpecifier === \"@/links\") {\n return config.aliases.links;\n }\n\n if (moduleSpecifier.startsWith(\"@/modules/\")) {\n const rest = moduleSpecifier.replace(/^@\\/modules\\//, \"\");\n return `${config.aliases.modules}/${rest}`;\n }\n if (moduleSpecifier === \"@/modules\") {\n return config.aliases.modules;\n }\n\n if (moduleSpecifier.startsWith(\"@/vendor/\")) {\n const rest = moduleSpecifier.replace(/^@\\/vendor\\//, \"\");\n return `${config.aliases.vendor}/${rest}`;\n }\n if (moduleSpecifier === \"@/vendor\") {\n return config.aliases.vendor;\n }\n\n if (moduleSpecifier.startsWith(\"@/admin/\")) {\n const rest = moduleSpecifier.replace(/^@\\/admin\\//, \"\");\n return `${config.aliases.admin}/${rest}`;\n }\n if (moduleSpecifier === \"@/admin\") {\n return config.aliases.admin;\n }\n\n if (moduleSpecifier.startsWith(\"@/lib/\")) {\n const rest = moduleSpecifier.replace(/^@\\/lib\\//, \"\");\n return `${config.aliases.lib}/${rest}`;\n }\n if (moduleSpecifier === \"@/lib\") {\n return config.aliases.lib;\n }\n\n return moduleSpecifier;\n}\n","import { type Change, diffLines } from \"diff\";\nimport { existsSync, promises as fs, statSync } from \"fs\";\nimport path, { basename } from \"path\";\nimport prompts from \"prompts\";\nimport type { RegistryItem } from \"../registry/schema\";\nimport type { Config } from \"../schema\";\nimport { isContentSame } from \"./compare\";\nimport { resolveFilePath } from \"./file-type\";\nimport { getProjectInfo } from \"./get-project-info\";\nimport { highlighter } from \"./highlighter\";\nimport { logger } from \"./logger\";\nimport { spinner } from \"./spinner\";\nimport { transformImports } from \"./transform-import\";\n\nexport async function updateFiles(\n files: RegistryItem[\"files\"],\n config: Config,\n options: {\n overwrite?: boolean;\n silent?: boolean;\n path?: string;\n yes?: boolean;\n }\n) {\n if (!files?.length) {\n return {\n filesCreated: [],\n filesUpdated: [],\n filesSkipped: [],\n filesDeclined: [],\n };\n }\n\n options = {\n overwrite: false,\n silent: false,\n yes: false,\n ...options,\n };\n\n const filesCreatedSpinner = spinner(`Updating files.`, {\n silent: options.silent,\n })?.start();\n\n const projectInfo = await getProjectInfo(config.resolvedPaths.cwd);\n\n const filesCreated: string[] = [];\n const filesUpdated: string[] = [];\n const filesSkipped: string[] = [];\n const filesDeclined: string[] = [];\n\n for (const file of files) {\n const filePath = resolveFilePath(file, config, {\n isSrcDir: projectInfo?.isSrcDir ?? false,\n path: options.path ?? \"\",\n });\n\n const fileName = basename(file.path);\n const targetDir = path.dirname(filePath);\n\n const existingFile = existsSync(filePath);\n\n if (existingFile && statSync(filePath).isDirectory()) {\n throw new Error(\n `Cannot write to ${filePath}: path exists and is a directory. Please provide a file path instead.`\n );\n }\n\n const content = await transformImports({\n filename: file.path,\n raw: file.content,\n config,\n isRemote: false,\n });\n\n if (existingFile && !options.overwrite) {\n const existingFileContent = await fs.readFile(filePath, \"utf-8\");\n\n if (isContentSame(existingFileContent, content)) {\n filesSkipped.push(path.relative(config.resolvedPaths.cwd, filePath));\n continue;\n }\n\n if (!options.yes) {\n filesCreatedSpinner.stop();\n\n const diff = diffLines(existingFileContent, content);\n logger.info(`\\nFile: ${highlighter.info(fileName)}`);\n printDiff(diff);\n\n const { overwrite } = await prompts({\n type: \"confirm\",\n name: \"overwrite\",\n message: `The file ${highlighter.info(\n fileName\n )} already exists. Would you like to overwrite?`,\n initial: false,\n });\n\n if (!overwrite) {\n filesDeclined.push(path.relative(config.resolvedPaths.cwd, filePath));\n continue;\n }\n }\n }\n\n if (!existsSync(targetDir)) {\n await fs.mkdir(targetDir, { recursive: true });\n }\n\n await fs.writeFile(filePath, content, \"utf-8\");\n\n if (!existingFile) {\n filesCreated.push(path.relative(config.resolvedPaths.cwd, filePath));\n } else {\n filesUpdated.push(path.relative(config.resolvedPaths.cwd, filePath));\n }\n }\n\n const totalUpdated = filesCreated.length + filesUpdated.length;\n const totalSkipped = filesSkipped.length + filesDeclined.length;\n\n if (totalUpdated > 0) {\n filesCreatedSpinner?.succeed();\n\n // Show summary if there was a mix of updated and skipped\n if (totalSkipped > 0 && !options.silent) {\n const parts: string[] = [];\n if (totalUpdated === 1) {\n parts.push(\"1 file updated\");\n } else {\n parts.push(`${totalUpdated} files updated`);\n }\n if (totalSkipped === 1) {\n parts.push(\"1 file skipped\");\n } else {\n parts.push(`${totalSkipped} files skipped`);\n }\n logger.info(`${parts.join(\", \")}.`);\n }\n } else if (filesDeclined.length) {\n filesCreatedSpinner?.info(\"No files were updated.\");\n } else if (filesSkipped.length) {\n filesCreatedSpinner?.info(\"Already up to date.\");\n } else {\n filesCreatedSpinner?.info(\"No files to update.\");\n }\n\n return {\n filesCreated,\n filesUpdated,\n filesSkipped,\n filesDeclined,\n };\n}\n\nconst CONTEXT_LINES = 3;\n\n/**\n * Format a diff with context lines, hiding unchanged sections.\n * Returns an array of formatted lines.\n */\nexport function formatDiffWithContext(\n diff: Change[],\n contextLines = CONTEXT_LINES\n): string[] {\n const output: string[] = [];\n\n // Find indices of changed parts\n const changedIndices = new Set<number>();\n for (let i = 0; i < diff.length; i++) {\n if (diff[i]?.added || diff[i]?.removed) {\n changedIndices.add(i);\n }\n }\n\n // If no changes, nothing to format\n if (changedIndices.size === 0) return output;\n\n // Track which parts to show (changed + context)\n const partsToShow = new Map<number, \"full\" | \"start\" | \"end\" | \"both\">();\n\n for (let i = 0; i < diff.length; i++) {\n const part = diff[i];\n if (!part) continue;\n\n if (part.added || part.removed) {\n // Always show changed parts fully\n partsToShow.set(i, \"full\");\n } else {\n // For unchanged parts, check if they're adjacent to changes\n const prevChanged = changedIndices.has(i - 1);\n const nextChanged = changedIndices.has(i + 1);\n\n if (prevChanged && nextChanged) {\n partsToShow.set(i, \"both\");\n } else if (prevChanged) {\n partsToShow.set(i, \"start\");\n } else if (nextChanged) {\n partsToShow.set(i, \"end\");\n }\n }\n }\n\n for (let i = 0; i < diff.length; i++) {\n const part = diff[i];\n const showType = partsToShow.get(i);\n\n if (!part || !showType) continue;\n\n if (part.added) {\n // Added lines - prefix with +\n const lines = part.value.split(\"\\n\");\n if (lines[lines.length - 1] === \"\") lines.pop();\n for (const line of lines) {\n output.push(`+ ${line}`);\n }\n } else if (part.removed) {\n // Removed lines - prefix with -\n const lines = part.value.split(\"\\n\");\n if (lines[lines.length - 1] === \"\") lines.pop();\n for (const line of lines) {\n output.push(`- ${line}`);\n }\n } else {\n // Unchanged context - show limited lines\n const lines = part.value.split(\"\\n\");\n // Remove last empty element if the value ends with newline\n if (lines[lines.length - 1] === \"\") lines.pop();\n\n let contextOutput: string[] = [];\n\n if (showType === \"full\" || lines.length <= contextLines * 2 + 1) {\n contextOutput = lines.map((line) => ` ${line}`);\n } else if (showType === \"start\") {\n // Show first N lines after a change\n contextOutput = lines.slice(0, contextLines).map((line) => ` ${line}`);\n if (lines.length > contextLines) {\n contextOutput.push(\n ` ... ${lines.length - contextLines} lines hidden ...`\n );\n }\n } else if (showType === \"end\") {\n // Show last N lines before a change\n if (lines.length > contextLines) {\n contextOutput.push(\n ` ... ${lines.length - contextLines} lines hidden ...`\n );\n }\n contextOutput.push(\n ...lines.slice(-contextLines).map((line) => ` ${line}`)\n );\n } else if (showType === \"both\") {\n // Between two changes - show start and end context\n if (lines.length <= contextLines * 2 + 1) {\n contextOutput = lines.map((line) => ` ${line}`);\n } else {\n contextOutput = [\n ...lines.slice(0, contextLines).map((line) => ` ${line}`),\n ` ... ${lines.length - contextLines * 2} lines hidden ...`,\n ...lines.slice(-contextLines).map((line) => ` ${line}`),\n ];\n }\n }\n\n output.push(...contextOutput);\n }\n }\n\n return output;\n}\n\nfunction printDiff(diff: Change[]) {\n const lines = formatDiffWithContext(diff);\n if (lines.length === 0) return;\n\n for (const line of lines) {\n if (line.startsWith(\"+ \")) {\n process.stdout.write(`${highlighter.success(line)}\\n`);\n } else if (line.startsWith(\"- \")) {\n process.stdout.write(`${highlighter.error(line)}\\n`);\n } else if (line.includes(\"lines hidden\")) {\n process.stdout.write(`${highlighter.info(line)}\\n`);\n } else {\n process.stdout.write(`${line}\\n`);\n }\n }\n}","import { configWithDefaults } from \"../registry/config\";\nimport { resolveRegistryTree } from \"../registry/resolver\";\nimport type { Config } from \"../schema\";\nimport { handleError } from \"./handle-error\";\nimport { logger } from \"./logger\";\nimport { spinner } from \"./spinner\";\nimport { updateDependencies } from \"./update-dependencies\";\nimport { updateFiles } from \"./update-files\";\n\nexport async function addBlocks(\n items: string[],\n config: Config,\n options: {\n overwrite?: boolean;\n silent?: boolean;\n path?: string;\n yes?: boolean;\n }\n) {\n options = {\n overwrite: false,\n silent: false,\n yes: false,\n ...options,\n };\n\n if (!items.length) {\n return;\n }\n\n const registrySpinner = spinner(`Checking registry.`, {\n silent: options.silent,\n })?.start();\n\n const tree = await resolveRegistryTree(items, configWithDefaults(config));\n\n if (!tree) {\n registrySpinner?.fail();\n return handleError(new Error(\"Failed to fetch items from registry.\"));\n }\n\n registrySpinner?.succeed();\n\n const { filesCreated, filesUpdated } = await updateFiles(tree.files, config, {\n overwrite: options.overwrite,\n silent: options.silent,\n path: options.path,\n yes: options.yes,\n });\n\n // Only install dependencies if files were actually created or updated\n if (filesCreated.length || filesUpdated.length) {\n await updateDependencies(tree.dependencies, tree.devDependencies, config, {\n silent: options.silent,\n });\n }\n\n if (tree.docs) {\n logger.info(tree.docs);\n }\n}\n","import { existsSync } from \"fs\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { getProjectInfo } from \"../utils/get-project-info\";\n\nexport const initOptionsSchema = z.object({\n cwd: z.string(),\n yes: z.boolean(),\n defaults: z.boolean(),\n silent: z.boolean(),\n});\n\nexport async function preFlightInit(\n options: z.infer<typeof initOptionsSchema>\n) {\n const errors: Record<string, boolean> = {};\n const cwd = path.resolve(options.cwd);\n\n if (!existsSync(cwd)) {\n errors.MISSING_DIR = true;\n }\n\n const projectInfo = await getProjectInfo(cwd);\n\n return {\n errors,\n projectInfo,\n };\n}\n","import os from \"os\";\nimport { join } from \"path\";\n\n\ninterface TelemetryConfig {\n \"telemetry_enabled\": boolean;\n \"telemetry_email\": string | null;\n}\n\nclass ConfigStore {\n private config: TelemetryConfig;\n public path: string = join(os.tmpdir(), \"mercur\");\n\n constructor() {\n this.config = this.createBaseConfig();\n }\n\n private createBaseConfig(): TelemetryConfig {\n return {\n \"telemetry_enabled\": true,\n \"telemetry_email\": null,\n };\n }\n\n get<K extends keyof TelemetryConfig>(key: K): TelemetryConfig[K] {\n return this.config[key];\n }\n\n set<K extends keyof TelemetryConfig>(key: K, value: TelemetryConfig[K]): void {\n this.config[key] = value;\n }\n\n all(): TelemetryConfig {\n return this.config;\n }\n\n size(): number {\n return Object.keys(this.config).length;\n }\n\n has(key: keyof TelemetryConfig): boolean {\n return key in this.config && this.config[key] !== undefined;\n }\n\n del(key: keyof TelemetryConfig): void {\n delete this.config[key];\n }\n\n clear(): void {\n this.config = this.createBaseConfig();\n }\n}\n\nexport const configStore = new ConfigStore();\n\n","export const importRuntime = <T>(m: string): Promise<T> => {\n return (Function(\"mm\", \"return import(mm)\") as any)(m);\n};\n\nfunction getVendor() {\n const hasAny = (...keys: string[]) =>\n keys.some((k) => Boolean(process.env[k]));\n\n if (\n hasAny(\n \"MEDUSA_CLOUD_ENVIRONMENT_HANDLE\",\n \"MEDUSA_CLOUD_SANDBOX_HANDLE\",\n \"MEDUSA_CLOUD_API_KEY\",\n )\n ) {\n return \"medusa-cloud\";\n }\n\n if (\n hasAny(\n \"RENDER\",\n \"RENDER_URL\",\n \"RENDER_INTERNAL_HOSTNAME\",\n \"RENDER_SERVICE_ID\",\n )\n ) {\n return \"render\";\n }\n\n if (hasAny(\"FLY_APP_NAME\", \"FLY_REGION\", \"FLY_ALLOC_ID\")) return \"fly-io\";\n\n if (hasAny(\"RAILWAY_STATIC_URL\", \"RAILWAY_ENVIRONMENT_NAME\"))\n return \"railway\";\n\n if (hasAny(\"DYNO\", \"HEROKU_APP_NAME\")) return \"heroku\";\n\n if (hasAny(\"DO_DEPLOYMENT_ID\", \"DO_APP_NAME\", \"DIGITALOCEAN\"))\n return \"digitalocean\";\n\n if (hasAny(\"KOYEB\", \"KOYEB_DEPLOYMENT_ID\", \"KOYEB_APP_NAME\")) return \"koyeb\";\n\n return null;\n}\n\nexport async function detectSystemInfo() {\n try {\n //check if it's cloudflare\n const os = await importRuntime<typeof import(\"os\")>(\"os\");\n const cpus = os.cpus();\n return {\n deploymentVendor: getVendor(),\n systemPlatform: os.platform(),\n systemRelease: os.release(),\n systemArchitecture: os.arch(),\n cpuCount: cpus.length,\n cpuModel: cpus.length ? cpus[0]!.model : null,\n cpuSpeed: cpus.length ? cpus[0]!.speed : null,\n memory: os.totalmem(),\n isWSL: await isWsl(),\n isDocker: await isDocker(),\n isTTY:\n typeof process !== \"undefined\" && (process as any).stdout\n ? (process as any).stdout.isTTY\n : null,\n };\n } catch {\n return {\n systemPlatform: null,\n systemRelease: null,\n systemArchitecture: null,\n cpuCount: null,\n cpuModel: null,\n cpuSpeed: null,\n memory: null,\n isWSL: null,\n isDocker: null,\n isTTY: null,\n };\n }\n}\n\n\nasync function isWsl() {\n try {\n if (typeof process === \"undefined\" || process?.platform !== \"linux\") {\n return false;\n }\n const fs = await importRuntime<typeof import(\"fs\")>(\"fs\");\n const os = await importRuntime<typeof import(\"os\")>(\"os\");\n if (os.release().toLowerCase().includes(\"microsoft\")) {\n if (await isInsideContainer()) {\n return false;\n }\n\n return true;\n }\n\n return fs\n .readFileSync(\"/proc/version\", \"utf8\")\n .toLowerCase()\n .includes(\"microsoft\")\n ? !(await isInsideContainer())\n : false;\n } catch {\n return false;\n }\n}\nconst hasContainerEnv = async () => {\n try {\n const fs = await importRuntime<typeof import(\"fs\")>(\"fs\");\n fs.statSync(\"/run/.containerenv\");\n return true;\n } catch {\n return false;\n }\n};\n\nasync function isDocker() {\n return (await hasDockerEnv()) || (await hasDockerCGroup());\n}\n\n\nasync function hasDockerEnv() {\n try {\n const fs = await importRuntime<typeof import(\"fs\")>(\"fs\");\n fs.statSync(\"/.dockerenv\");\n return true;\n } catch {\n return false;\n }\n}\n\nasync function hasDockerCGroup() {\n try {\n const fs = await importRuntime<typeof import(\"fs\")>(\"fs\");\n return fs.readFileSync(\"/proc/self/cgroup\", \"utf8\").includes(\"docker\");\n } catch {\n return false;\n }\n}\n\n\nasync function isInsideContainer() {\n return (await hasContainerEnv()) || (await isDocker());\n}","import { createHash } from \"crypto\";\n\nexport const hashToBase64 = (input: string): string => {\n return createHash(\"sha256\").update(input).digest(\"base64\");\n};\n","import { configStore } from \"./store\";\nimport { execSync } from \"child_process\";\nimport { getConfig } from \"../utils/get-config\";\nimport { detectSystemInfo } from \"./detect-system-info\";\nimport { getPackageManager } from \"../utils/get-package-manager\";\nimport { hashToBase64 } from \"./hash\";\nimport { getProjectInfo, type PackageJson } from \"../utils/get-project-info\";\n\nconst TELEMETRY_URL = process.env.MERCUR_TELEMETRY_PROXY_URL || 'https://telemetry.mercurjs.com/api/v1/events'\n\nexport interface TelemetryEvent {\n type: string;\n payload?: Record<string, any>;\n}\n\n\nexport const setTelemetryEmail = (email: string) => {\n configStore.set(\"telemetry_email\", email)\n}\n\nexport const toggleTelemetry = (enabled: boolean) => {\n configStore.set(\"telemetry_enabled\", enabled)\n}\n\nconst isTelemetryEnabled = () => {\n return configStore.get(\"telemetry_enabled\") && process.env.MERCUR_DISABLE_TELEMETRY !== 'true'\n}\n\nexport const sendTelemetryEvent = async (event: TelemetryEvent, options: { cwd: string }) => {\n try {\n if (!isTelemetryEnabled()) {\n return;\n }\n\n const projectInfo = await getProjectInfo(options.cwd)\n\n const { projectId } = getProjectId(projectInfo.packageJson!)\n\n const baseEvent = {\n nodeEnv: detectEnvironment(),\n nodeVersion: process.version,\n mercurVersion: projectInfo.mercurVersion,\n medusaVersion: projectInfo.medusaVersion,\n isSrcDir: projectInfo.isSrcDir,\n aliasPrefix: projectInfo.aliasPrefix,\n config: await getConfig(options.cwd),\n projectId,\n systemInfo: await detectSystemInfo(),\n packageManager: await getPackageManager(options.cwd),\n email: getTelemetryEmail(),\n }\n\n await fetch(TELEMETRY_URL, {\n body: JSON.stringify({ ...baseEvent, ...event }),\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'post',\n })\n } catch (error) {\n // Eat any errors in sending telemetry event\n }\n}\n\nexport function detectEnvironment() {\n return process.env.NODE_ENV || 'development'\n}\n\nconst getGitID = () => {\n try {\n const originBuffer = execSync('git config --local --get remote.origin.url', {\n stdio: 'pipe',\n timeout: 1000,\n })\n\n return String(originBuffer).trim()\n } catch (_) {\n return null\n }\n}\n\nconst getProjectId = (\n packageJson: PackageJson,\n): { projectId: string; } => {\n const gitID = getGitID()\n if (gitID) {\n return { projectId: hashToBase64(gitID), }\n }\n\n const packageJSONID = packageJson.name\n if (packageJSONID) {\n return { projectId: hashToBase64(packageJSONID), }\n }\n\n const cwd = process.cwd()\n return { projectId: hashToBase64(cwd), }\n}\n\n\nexport const getTelemetryEmail = () => {\n return configStore.get(\"telemetry_email\") || undefined\n}","import { Command } from \"commander\";\nimport { promises as fs } from \"fs\";\nimport path from \"path\";\nimport prompts from \"prompts\";\nimport { z } from \"zod\";\nimport { preFlightInit } from \"../preflights/preflight-init\";\nimport { BUILTIN_REGISTRIES, REGISTRY_SCHEMA_URL } from \"../registry/constants\";\nimport { clearRegistryContext } from \"../registry/context\";\nimport { rawConfigSchema } from \"../schema\";\nimport { getConfig, resolveConfigPaths } from \"../utils/get-config\";\nimport { handleError } from \"../utils/handle-error\";\nimport { highlighter } from \"../utils/highlighter\";\nimport { logger } from \"../utils/logger\";\nimport { spinner } from \"../utils/spinner\";\nimport { sendTelemetryEvent } from \"../telemetry\";\n\nexport const initOptionsSchema = z.object({\n cwd: z.string(),\n yes: z.boolean(),\n defaults: z.boolean(),\n silent: z.boolean(),\n});\n\nexport const init = new Command()\n .name(\"init\")\n .description(\"initialize your project and install dependencies\")\n .option(\"-y, --yes\", \"skip confirmation prompt.\", true)\n .option(\"-d, --defaults\", \"use default configuration.\", false)\n .option(\n \"-c, --cwd <cwd>\",\n \"the working directory. defaults to the current directory.\",\n process.cwd()\n )\n .option(\"-s, --silent\", \"mute output.\", false)\n .action(async (opts) => {\n try {\n const options = initOptionsSchema.parse({\n cwd: path.resolve(opts.cwd),\n ...opts,\n });\n\n await runInit(options);\n\n logger.log(\n `${highlighter.success(\n \"Success!\"\n )} Project initialization completed.\\nYou may now add blocks.`\n );\n logger.break();\n\n await sendTelemetryEvent({\n type: 'init',\n payload: {\n outcome: 'success'\n }\n }, {\n cwd: options.cwd,\n })\n } catch (error) {\n logger.break();\n handleError(error);\n } finally {\n clearRegistryContext();\n }\n });\n\nexport async function runInit(options: z.infer<typeof initOptionsSchema>) {\n await preFlightInit(options);\n\n const existingConfig = await getConfig(options.cwd);\n\n const config = existingConfig\n ? await promptForMinimalConfig(existingConfig, options)\n : await promptForConfig(options);\n\n if (!options.yes) {\n const { proceed } = await prompts({\n type: \"confirm\",\n name: \"proceed\",\n message: `Write configuration to ${highlighter.info(\n \"blocks.json\"\n )}. Proceed?`,\n initial: true,\n });\n\n if (!proceed) {\n process.exit(0);\n }\n }\n\n const configSpinner = spinner(`Writing blocks.json.`).start();\n const targetPath = path.resolve(options.cwd, \"blocks.json\");\n\n config.registries = Object.fromEntries(\n Object.entries(config.registries || {}).filter(\n ([key]) => !Object.keys(BUILTIN_REGISTRIES).includes(key)\n )\n );\n\n await fs.writeFile(\n targetPath,\n `${JSON.stringify(config, null, 2)}\\n`,\n \"utf8\"\n );\n configSpinner.succeed();\n\n return await resolveConfigPaths(options.cwd, config);\n}\n\nasync function promptForConfig(opts: z.infer<typeof initOptionsSchema>) {\n // Skip prompts if defaults flag is set\n if (opts.defaults) {\n return rawConfigSchema.parse({\n $schema: REGISTRY_SCHEMA_URL,\n aliases: {\n workflows: \"packages/api/src/workflows\",\n api: \"packages/api/src/api\",\n links: \"packages/api/src/links\",\n modules: \"packages/api/src/modules\",\n vendor: \"apps/vendor/src\",\n admin: \"apps/admin/src\",\n lib: \"packages/api/src/lib\",\n },\n registries: BUILTIN_REGISTRIES,\n });\n }\n\n logger.info(\"\");\n const options = await prompts(\n [\n {\n type: \"text\",\n name: \"workflows\",\n message: `Configure the import alias for ${highlighter.info(\"workflows\")}:`,\n initial: \"packages/api/src/workflows\",\n },\n {\n type: \"text\",\n name: \"api\",\n message: `Configure the import alias for ${highlighter.info(\"api\")}:`,\n initial: \"packages/api/src/api\",\n },\n {\n type: \"text\",\n name: \"links\",\n message: `Configure the import alias for ${highlighter.info(\"links\")}:`,\n initial: \"packages/api/src/links\",\n },\n {\n type: \"text\",\n name: \"modules\",\n message: `Configure the import alias for ${highlighter.info(\"modules\")}:`,\n initial: \"packages/api/src/modules\",\n },\n {\n type: \"text\",\n name: \"vendor\",\n message: `Configure the import alias for ${highlighter.info(\"vendor\")}:`,\n initial: \"apps/vendor/src\",\n },\n {\n type: \"text\",\n name: \"admin\",\n message: `Configure the import alias for ${highlighter.info(\"admin\")}:`,\n initial: \"apps/admin/src\",\n },\n {\n type: \"text\",\n name: \"lib\",\n message: `Configure the import alias for ${highlighter.info(\"lib\")}:`,\n initial: \"packages/api/src/lib\",\n },\n ],\n {\n onCancel: () => {\n process.exit(0);\n },\n }\n );\n\n return rawConfigSchema.parse({\n $schema: REGISTRY_SCHEMA_URL,\n aliases: {\n workflows: options.workflows ?? \"packages/api/src/workflows\",\n api: options.api ?? \"packages/api/src/api\",\n links: options.links ?? \"packages/api/src/links\",\n modules: options.modules ?? \"packages/api/src/modules\",\n vendor: options.vendor ?? \"apps/vendor/src\",\n admin: options.admin ?? \"apps/admin/src\",\n lib: options.lib ?? \"packages/api/src/lib\",\n },\n registries: BUILTIN_REGISTRIES,\n });\n}\n\nasync function promptForMinimalConfig(\n existingConfig: z.infer<typeof rawConfigSchema>,\n opts: z.infer<typeof initOptionsSchema>\n) {\n // If --defaults is passed, use default values\n if (opts.defaults) {\n return rawConfigSchema.parse({\n $schema: REGISTRY_SCHEMA_URL,\n aliases: {\n workflows: \"packages/api/src/workflows\",\n api: \"packages/api/src/api\",\n links: \"packages/api/src/links\",\n modules: \"packages/api/src/modules\",\n vendor: \"apps/vendor/src\",\n admin: \"apps/admin/src\",\n lib: \"packages/api/src/lib\",\n },\n registries: BUILTIN_REGISTRIES,\n });\n }\n\n const options = await prompts(\n [\n {\n type: \"text\",\n name: \"workflows\",\n message: `Configure the import alias for ${highlighter.info(\"workflows\")}:`,\n initial: existingConfig.aliases.workflows,\n },\n {\n type: \"text\",\n name: \"api\",\n message: `Configure the import alias for ${highlighter.info(\"api\")}:`,\n initial: existingConfig.aliases.api,\n },\n {\n type: \"text\",\n name: \"links\",\n message: `Configure the import alias for ${highlighter.info(\"links\")}:`,\n initial: existingConfig.aliases.links,\n },\n {\n type: \"text\",\n name: \"modules\",\n message: `Configure the import alias for ${highlighter.info(\"modules\")}:`,\n initial: existingConfig.aliases.modules,\n },\n {\n type: \"text\",\n name: \"vendor\",\n message: `Configure the import alias for ${highlighter.info(\"vendor\")}:`,\n initial: existingConfig.aliases.vendor,\n },\n {\n type: \"text\",\n name: \"admin\",\n message: `Configure the import alias for ${highlighter.info(\"admin\")}:`,\n initial: existingConfig.aliases.admin,\n },\n {\n type: \"text\",\n name: \"lib\",\n message: `Configure the import alias for ${highlighter.info(\"lib\")}:`,\n initial: existingConfig.aliases.lib,\n },\n ],\n {\n onCancel: () => {\n process.exit(0);\n },\n }\n );\n\n return rawConfigSchema.parse({\n $schema: existingConfig.$schema,\n aliases: {\n workflows: options.workflows ?? existingConfig.aliases.workflows,\n api: options.api ?? existingConfig.aliases.api,\n links: options.links ?? existingConfig.aliases.links,\n modules: options.modules ?? existingConfig.aliases.modules,\n vendor: options.vendor ?? existingConfig.aliases.vendor,\n admin: options.admin ?? existingConfig.aliases.admin,\n lib: options.lib ?? existingConfig.aliases.lib,\n },\n });\n}\n","import { Command } from \"commander\";\nimport path from \"path\";\nimport prompts from \"prompts\";\nimport { z } from \"zod\";\nimport { preFlightAdd } from \"../preflights/preflight-add\";\nimport { clearRegistryContext } from \"../registry/context\";\nimport { addBlocks } from \"../utils/add-items\";\nimport * as ERRORS from \"../utils/errors\";\nimport { createConfig, getConfig } from \"../utils/get-config\";\nimport { highlighter } from \"../utils/highlighter\";\nimport { logger } from \"../utils/logger\";\nimport { runInit } from \"./init\";\nimport { handleError } from \"../utils/handle-error\";\nimport { sendTelemetryEvent } from \"../telemetry\";\n\nexport const addOptionsSchema = z.object({\n blocks: z.array(z.string()).optional(),\n yes: z.boolean(),\n overwrite: z.boolean(),\n cwd: z.string(),\n silent: z.boolean(),\n});\n\nexport const add = new Command()\n .name(\"add\")\n .description(\"add blocks to your project\")\n .argument(\"[blocks...]\", \"names of blocks to add\")\n .option(\"-y, --yes\", \"skip confirmation prompt.\", false)\n .option(\"-o, --overwrite\", \"overwrite existing files.\", false)\n .option(\n \"-c, --cwd <cwd>\",\n \"the working directory. defaults to the current directory.\",\n process.cwd()\n )\n .option(\"-s, --silent\", \"mute output.\", false)\n .action(async (items, opts) => {\n try {\n const options = addOptionsSchema.parse({\n blocks: items,\n cwd: path.resolve(opts.cwd),\n ...opts,\n });\n\n let config = await getConfig(options.cwd);\n if (!config) {\n config = createConfig({\n resolvedPaths: {\n cwd: options.cwd,\n },\n });\n }\n\n if (!options.blocks?.length) {\n logger.error(\"Please specify at least one item to add.\");\n process.exit(1);\n }\n\n const { errors } = await preFlightAdd(options);\n\n if (errors[ERRORS.MISSING_CONFIG]) {\n const { proceed } = await prompts({\n type: \"confirm\",\n name: \"proceed\",\n message: `You need to create a ${highlighter.info(\n \"blocks.json\"\n )} file to add items. Proceed?`,\n initial: true,\n });\n\n if (!proceed) {\n logger.break();\n process.exit(1);\n }\n\n config = await runInit({\n cwd: options.cwd,\n yes: true,\n defaults: false,\n silent: options.silent,\n });\n }\n\n if (!config) {\n throw new Error(\n `Failed to read config at ${highlighter.info(options.cwd)}.`\n );\n }\n\n await addBlocks(options.blocks, config, {\n overwrite: options.overwrite,\n silent: options.silent,\n yes: options.yes,\n path: options.cwd,\n });\n\n await sendTelemetryEvent({\n type: 'add',\n payload: {\n outcome: 'success',\n blocks: options.blocks,\n }\n }, {\n cwd: options.cwd,\n })\n } catch (error) {\n logger.break();\n handleError(error);\n } finally {\n clearRegistryContext();\n }\n });\n","import path from \"path\";\nimport { buildOptionsSchema } from \"@/src/commands/registry-build\";\nimport * as ERRORS from \"@/src/utils/errors\";\nimport { getConfig } from \"@/src/utils/get-config\";\nimport { highlighter } from \"@/src/utils/highlighter\";\nimport { logger } from \"@/src/utils/logger\";\nimport fs from \"fs-extra\";\nimport { z } from \"zod\";\n\nexport async function preFlightRegistryBuild(\n options: z.infer<typeof buildOptionsSchema>\n) {\n const errors: Record<string, boolean> = {};\n\n const resolvePaths = {\n cwd: options.cwd,\n registryFile: path.resolve(options.cwd, options.registryFile),\n outputDir: path.resolve(options.cwd, options.outputDir),\n };\n\n // Ensure registry file exists.\n if (!fs.existsSync(resolvePaths.registryFile)) {\n errors[ERRORS.BUILD_MISSING_REGISTRY_FILE] = true;\n return {\n errors,\n resolvePaths: null,\n config: null,\n };\n }\n\n // Check for existing blocks.json file.\n if (!fs.existsSync(path.resolve(options.cwd, \"blocks.json\"))) {\n errors[ERRORS.MISSING_CONFIG] = true;\n return {\n errors,\n resolvePaths: null,\n config: null,\n };\n }\n\n // Create output directory if it doesn't exist.\n await fs.mkdir(resolvePaths.outputDir, { recursive: true });\n\n try {\n const config = await getConfig(options.cwd);\n\n\n return {\n errors,\n config: config!,\n resolvePaths,\n };\n } catch (error) {\n logger.break();\n logger.error(\n `An invalid ${highlighter.info(\n \"blocks.json\"\n )} file was found at ${highlighter.info(\n options.cwd\n )}.\\nBefore you can build the registry, you must create a valid ${highlighter.info(\n \"blocks.json\"\n )} file by running the ${highlighter.info(\"init\")} command.`\n );\n logger.break();\n process.exit(1);\n }\n}\n","import * as fs from \"fs/promises\";\nimport * as path from \"path\";\nimport { preFlightRegistryBuild } from \"@/src/preflights/preflight-registry-build\";\nimport { recursivelyResolveFileImports } from \"@/src/registry/utils\";\nimport { registryItemSchema, registrySchema } from \"@/src/registry/schema\";\nimport { configSchema } from \"@/src/schema\";\nimport * as ERRORS from \"@/src/utils/errors\";\nimport { type ProjectInfo, getProjectInfo } from \"@/src/utils/get-project-info\";\nimport { handleError } from \"@/src/utils/handle-error\";\nimport { highlighter } from \"@/src/utils/highlighter\";\nimport { logger } from \"@/src/utils/logger\";\nimport { spinner } from \"@/src/utils/spinner\";\nimport { Command } from \"commander\";\nimport { z } from \"zod\";\nimport { REGISTRY_ITEM_SCHEMA_URL } from \"../registry\";\nimport { sendTelemetryEvent } from \"../telemetry\";\n\nexport const buildOptionsSchema = z.object({\n cwd: z.string(),\n registryFile: z.string(),\n outputDir: z.string(),\n verbose: z.boolean().optional().default(false),\n});\n\nexport const registryBuild = new Command()\n .name(\"registry:build\")\n .description(\"builds the registry\")\n .argument(\"[registry]\", \"path to registry.json file\", \"./registry.json\")\n .option(\n \"-o, --output <path>\",\n \"destination directory for json files\",\n \"./r\"\n )\n .option(\n \"-c, --cwd <cwd>\",\n \"the working directory. defaults to the current directory.\",\n process.cwd()\n )\n .option(\"-v, --verbose\", \"verbose output\")\n .action(async (registry: string, opts) => {\n await buildRegistry({\n cwd: path.resolve(opts.cwd),\n registryFile: registry,\n outputDir: opts.output,\n verbose: opts.verbose,\n });\n });\n\nasync function buildRegistry(opts: z.infer<typeof buildOptionsSchema>) {\n try {\n const options = buildOptionsSchema.parse(opts);\n\n const [{ errors, resolvePaths, config }, projectInfo] = await Promise.all([\n preFlightRegistryBuild(options),\n getProjectInfo(options.cwd),\n ]);\n\n if (errors[ERRORS.MISSING_CONFIG] || !projectInfo) {\n logger.error(\n `A ${highlighter.info(\n \"blocks.json\"\n )} file is required to build the registry. Run ${highlighter.info(\n \"mercur init\"\n )} to create one.`\n );\n logger.break();\n await sendTelemetryEvent({\n type: 'build',\n payload: {\n outcome: 'missing_config',\n }\n }, {\n cwd: options.cwd,\n })\n process.exit(1);\n }\n\n if (errors[ERRORS.BUILD_MISSING_REGISTRY_FILE] || !resolvePaths) {\n logger.error(\n `We could not find a registry file at ${highlighter.info(\n path.resolve(options.cwd, options.registryFile)\n )}.`\n );\n logger.break();\n await sendTelemetryEvent({\n type: 'build',\n payload: {\n outcome: 'missing_registry_file',\n }\n }, {\n cwd: options.cwd,\n })\n process.exit(1);\n }\n\n const content = await fs.readFile(resolvePaths.registryFile, \"utf-8\");\n const result = registrySchema.safeParse(JSON.parse(content));\n\n if (!result.success) {\n logger.error(\n `Invalid registry file found at ${highlighter.info(\n resolvePaths.registryFile\n )}.`\n );\n logger.break();\n process.exit(1);\n }\n\n const buildSpinner = spinner(\"Building registry...\");\n\n // Recursively resolve the registry items.\n const resolvedRegistry = await resolveRegistryItems(\n result.data,\n config,\n projectInfo\n );\n\n // Loop through the registry items and remove duplicates files i.e same path.\n for (const registryItem of resolvedRegistry.items) {\n // Deduplicate files\n registryItem.files = registryItem.files?.filter(\n (file, index, self) =>\n index === self.findIndex((t) => t.path === file.path)\n );\n\n // Deduplicate dependencies\n if (registryItem.dependencies) {\n registryItem.dependencies = registryItem.dependencies.filter(\n (dep, index, self) => index === self.findIndex((d) => d === dep)\n );\n }\n }\n\n for (const registryItem of resolvedRegistry.items) {\n if (!registryItem.files) {\n continue;\n }\n\n buildSpinner.start(`Building ${registryItem.name}...`);\n\n // Add the schema to the registry item.\n registryItem[\"$schema\"] =\n REGISTRY_ITEM_SCHEMA_URL;\n\n for (const file of registryItem.files) {\n const srcDir = projectInfo.isSrcDir ? \"src\" : \"\";\n const absPath = path.resolve(resolvePaths.cwd, srcDir, file.path);\n try {\n const stat = await fs.stat(absPath);\n if (!stat.isFile()) {\n continue;\n }\n file[\"content\"] = await fs.readFile(absPath, \"utf-8\");\n } catch (err) {\n console.error(\"Error reading file in registry build:\", absPath, err);\n continue;\n }\n }\n\n const validationResult = registryItemSchema.safeParse(registryItem);\n if (!validationResult.success) {\n logger.error(\n `Invalid registry item found for ${highlighter.info(\n registryItem.name\n )}.`\n );\n continue;\n }\n\n // Write the registry item to the output directory.\n await fs.writeFile(\n path.resolve(\n resolvePaths.outputDir,\n `${validationResult.data.name}.json`\n ),\n JSON.stringify(validationResult.data, null, 2)\n );\n }\n\n // Copy registry.json to the output directory.\n await fs.copyFile(\n resolvePaths.registryFile,\n path.resolve(resolvePaths.outputDir, \"registry.json\")\n );\n\n buildSpinner.succeed(\"Building registry.\");\n\n if (options.verbose) {\n spinner(\n `The registry has ${highlighter.info(\n resolvedRegistry.items.length.toString()\n )} items:`\n ).succeed();\n for (const item of resolvedRegistry.items) {\n logger.log(` - ${item.name}`);\n for (const file of item.files ?? []) {\n logger.log(` - ${file.path}`);\n }\n }\n }\n\n await sendTelemetryEvent({\n type: 'build',\n payload: {\n outcome: 'success',\n }\n }, {\n cwd: options.cwd,\n })\n } catch (error) {\n logger.break();\n handleError(error);\n }\n}\n\n// This reads the registry and recursively resolves the file imports.\nasync function resolveRegistryItems(\n registry: z.infer<typeof registrySchema>,\n config: z.infer<typeof configSchema>,\n projectInfo: ProjectInfo\n): Promise<z.infer<typeof registrySchema>> {\n for (const item of registry.items) {\n if (!item.files?.length) {\n continue;\n }\n\n // Process all files in the array instead of just the first one\n for (const file of item.files) {\n const results = await recursivelyResolveFileImports(\n file.path,\n config,\n projectInfo\n );\n\n // Remove file from results.files\n results.files = results.files?.filter((f) => f.path !== file.path);\n\n if (results.files) {\n item.files.push(...results.files);\n }\n\n if (results.dependencies) {\n item.dependencies = item.dependencies\n ? item.dependencies.concat(results.dependencies)\n : results.dependencies;\n }\n }\n }\n\n return registry;\n}\n","export const DIST_DIR = \".mercur/_generated\";\nexport const ROUTE_FILE_PATTERN = /route\\.(ts|js)$/;\n\nexport const defaultMedusaRoutes = {\n \"/admin/api-keys\": \"typeof import(\\\"@medusajs/medusa/api/admin/api-keys/route\\\")\",\n \"/admin/api-keys/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/api-keys/[id]/route\\\")\",\n \"/admin/api-keys/:id/revoke\": \"typeof import(\\\"@medusajs/medusa/api/admin/api-keys/[id]/revoke/route\\\")\",\n \"/admin/api-keys/:id/sales-channels\": \"typeof import(\\\"@medusajs/medusa/api/admin/api-keys/[id]/sales-channels/route\\\")\",\n \"/admin/campaigns\": \"typeof import(\\\"@medusajs/medusa/api/admin/campaigns/route\\\")\",\n \"/admin/campaigns/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/campaigns/[id]/route\\\")\",\n \"/admin/campaigns/:id/promotions\": \"typeof import(\\\"@medusajs/medusa/api/admin/campaigns/[id]/promotions/route\\\")\",\n \"/admin/claims\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/route\\\")\",\n \"/admin/claims/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/route\\\")\",\n \"/admin/claims/:id/cancel\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/cancel/route\\\")\",\n \"/admin/claims/:id/claim-items\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/claim-items/route\\\")\",\n \"/admin/claims/:id/claim-items/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/claim-items/[action_id]/route\\\")\",\n \"/admin/claims/:id/inbound/items\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/inbound/items/route\\\")\",\n \"/admin/claims/:id/inbound/items/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/inbound/items/[action_id]/route\\\")\",\n \"/admin/claims/:id/inbound/shipping-method\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/inbound/shipping-method/route\\\")\",\n \"/admin/claims/:id/inbound/shipping-method/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/inbound/shipping-method/[action_id]/route\\\")\",\n \"/admin/claims/:id/outbound/items\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/outbound/items/route\\\")\",\n \"/admin/claims/:id/outbound/items/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/outbound/items/[action_id]/route\\\")\",\n \"/admin/claims/:id/outbound/shipping-method\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/outbound/shipping-method/route\\\")\",\n \"/admin/claims/:id/outbound/shipping-method/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/outbound/shipping-method/[action_id]/route\\\")\",\n \"/admin/claims/:id/request\": \"typeof import(\\\"@medusajs/medusa/api/admin/claims/[id]/request/route\\\")\",\n \"/admin/collections\": \"typeof import(\\\"@medusajs/medusa/api/admin/collections/route\\\")\",\n \"/admin/collections/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/collections/[id]/route\\\")\",\n \"/admin/collections/:id/products\": \"typeof import(\\\"@medusajs/medusa/api/admin/collections/[id]/products/route\\\")\",\n \"/admin/currencies\": \"typeof import(\\\"@medusajs/medusa/api/admin/currencies/route\\\")\",\n \"/admin/currencies/:code\": \"typeof import(\\\"@medusajs/medusa/api/admin/currencies/[code]/route\\\")\",\n \"/admin/customer-groups\": \"typeof import(\\\"@medusajs/medusa/api/admin/customer-groups/route\\\")\",\n \"/admin/customer-groups/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/customer-groups/[id]/route\\\")\",\n \"/admin/customer-groups/:id/customers\": \"typeof import(\\\"@medusajs/medusa/api/admin/customer-groups/[id]/customers/route\\\")\",\n \"/admin/customers\": \"typeof import(\\\"@medusajs/medusa/api/admin/customers/route\\\")\",\n \"/admin/customers/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/customers/[id]/route\\\")\",\n \"/admin/customers/:id/addresses\": \"typeof import(\\\"@medusajs/medusa/api/admin/customers/[id]/addresses/route\\\")\",\n \"/admin/customers/:id/addresses/:address_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/customers/[id]/addresses/[address_id]/route\\\")\",\n \"/admin/customers/:id/customer-groups\": \"typeof import(\\\"@medusajs/medusa/api/admin/customers/[id]/customer-groups/route\\\")\",\n \"/admin/draft-orders\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/route\\\")\",\n \"/admin/draft-orders/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/route\\\")\",\n \"/admin/draft-orders/:id/convert-to-order\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/convert-to-order/route\\\")\",\n \"/admin/draft-orders/:id/edit\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/edit/route\\\")\",\n \"/admin/draft-orders/:id/edit/confirm\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/edit/confirm/route\\\")\",\n \"/admin/draft-orders/:id/edit/items\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/edit/items/route\\\")\",\n \"/admin/draft-orders/:id/edit/items/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/edit/items/[action_id]/route\\\")\",\n \"/admin/draft-orders/:id/edit/items/item/:item_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/edit/items/item/[item_id]/route\\\")\",\n \"/admin/draft-orders/:id/edit/promotions\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/edit/promotions/route\\\")\",\n \"/admin/draft-orders/:id/edit/request\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/edit/request/route\\\")\",\n \"/admin/draft-orders/:id/edit/shipping-methods\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/edit/shipping-methods/route\\\")\",\n \"/admin/draft-orders/:id/edit/shipping-methods/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/edit/shipping-methods/[action_id]/route\\\")\",\n \"/admin/draft-orders/:id/edit/shipping-methods/method/:method_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/draft-orders/[id]/edit/shipping-methods/method/[method_id]/route\\\")\",\n \"/admin/exchanges\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/route\\\")\",\n \"/admin/exchanges/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/[id]/route\\\")\",\n \"/admin/exchanges/:id/cancel\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/[id]/cancel/route\\\")\",\n \"/admin/exchanges/:id/inbound/items\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/[id]/inbound/items/route\\\")\",\n \"/admin/exchanges/:id/inbound/items/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/[id]/inbound/items/[action_id]/route\\\")\",\n \"/admin/exchanges/:id/inbound/shipping-method\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/[id]/inbound/shipping-method/route\\\")\",\n \"/admin/exchanges/:id/inbound/shipping-method/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/[id]/inbound/shipping-method/[action_id]/route\\\")\",\n \"/admin/exchanges/:id/outbound/items\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/[id]/outbound/items/route\\\")\",\n \"/admin/exchanges/:id/outbound/items/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/[id]/outbound/items/[action_id]/route\\\")\",\n \"/admin/exchanges/:id/outbound/shipping-method\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/[id]/outbound/shipping-method/route\\\")\",\n \"/admin/exchanges/:id/outbound/shipping-method/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/[id]/outbound/shipping-method/[action_id]/route\\\")\",\n \"/admin/exchanges/:id/request\": \"typeof import(\\\"@medusajs/medusa/api/admin/exchanges/[id]/request/route\\\")\",\n \"/admin/feature-flags\": \"typeof import(\\\"@medusajs/medusa/api/admin/feature-flags/route\\\")\",\n \"/admin/fulfillment-providers\": \"typeof import(\\\"@medusajs/medusa/api/admin/fulfillment-providers/route\\\")\",\n \"/admin/fulfillment-providers/:id/options\": \"typeof import(\\\"@medusajs/medusa/api/admin/fulfillment-providers/[id]/options/route\\\")\",\n \"/admin/fulfillment-sets/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/fulfillment-sets/[id]/route\\\")\",\n \"/admin/fulfillment-sets/:id/service-zones\": \"typeof import(\\\"@medusajs/medusa/api/admin/fulfillment-sets/[id]/service-zones/route\\\")\",\n \"/admin/fulfillment-sets/:id/service-zones/:zone_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/fulfillment-sets/[id]/service-zones/[zone_id]/route\\\")\",\n \"/admin/fulfillments\": \"typeof import(\\\"@medusajs/medusa/api/admin/fulfillments/route\\\")\",\n \"/admin/fulfillments/:id/cancel\": \"typeof import(\\\"@medusajs/medusa/api/admin/fulfillments/[id]/cancel/route\\\")\",\n \"/admin/fulfillments/:id/shipment\": \"typeof import(\\\"@medusajs/medusa/api/admin/fulfillments/[id]/shipment/route\\\")\",\n \"/admin/index/details\": \"typeof import(\\\"@medusajs/medusa/api/admin/index/details/route\\\")\",\n \"/admin/index/sync\": \"typeof import(\\\"@medusajs/medusa/api/admin/index/sync/route\\\")\",\n \"/admin/inventory-items\": \"typeof import(\\\"@medusajs/medusa/api/admin/inventory-items/route\\\")\",\n \"/admin/inventory-items/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/inventory-items/[id]/route\\\")\",\n \"/admin/inventory-items/:id/location-levels\": \"typeof import(\\\"@medusajs/medusa/api/admin/inventory-items/[id]/location-levels/route\\\")\",\n \"/admin/inventory-items/:id/location-levels/:location_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/inventory-items/[id]/location-levels/[location_id]/route\\\")\",\n \"/admin/inventory-items/:id/location-levels/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/inventory-items/[id]/location-levels/batch/route\\\")\",\n \"/admin/inventory-items/location-levels/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/inventory-items/location-levels/batch/route\\\")\",\n \"/admin/invites\": \"typeof import(\\\"@medusajs/medusa/api/admin/invites/route\\\")\",\n \"/admin/invites/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/invites/[id]/route\\\")\",\n \"/admin/invites/:id/resend\": \"typeof import(\\\"@medusajs/medusa/api/admin/invites/[id]/resend/route\\\")\",\n \"/admin/invites/accept\": \"typeof import(\\\"@medusajs/medusa/api/admin/invites/accept/route\\\")\",\n \"/admin/locales\": \"typeof import(\\\"@medusajs/medusa/api/admin/locales/route\\\")\",\n \"/admin/locales/:code\": \"typeof import(\\\"@medusajs/medusa/api/admin/locales/[code]/route\\\")\",\n \"/admin/notifications\": \"typeof import(\\\"@medusajs/medusa/api/admin/notifications/route\\\")\",\n \"/admin/notifications/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/notifications/[id]/route\\\")\",\n \"/admin/order-changes/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/order-changes/[id]/route\\\")\",\n \"/admin/order-edits\": \"typeof import(\\\"@medusajs/medusa/api/admin/order-edits/route\\\")\",\n \"/admin/order-edits/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/order-edits/[id]/route\\\")\",\n \"/admin/order-edits/:id/confirm\": \"typeof import(\\\"@medusajs/medusa/api/admin/order-edits/[id]/confirm/route\\\")\",\n \"/admin/order-edits/:id/items\": \"typeof import(\\\"@medusajs/medusa/api/admin/order-edits/[id]/items/route\\\")\",\n \"/admin/order-edits/:id/items/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/order-edits/[id]/items/[action_id]/route\\\")\",\n \"/admin/order-edits/:id/items/item/:item_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/order-edits/[id]/items/item/[item_id]/route\\\")\",\n \"/admin/order-edits/:id/request\": \"typeof import(\\\"@medusajs/medusa/api/admin/order-edits/[id]/request/route\\\")\",\n \"/admin/order-edits/:id/shipping-method\": \"typeof import(\\\"@medusajs/medusa/api/admin/order-edits/[id]/shipping-method/route\\\")\",\n \"/admin/order-edits/:id/shipping-method/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/order-edits/[id]/shipping-method/[action_id]/route\\\")\",\n \"/admin/orders\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/route\\\")\",\n \"/admin/orders/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/route\\\")\",\n \"/admin/orders/:id/archive\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/archive/route\\\")\",\n \"/admin/orders/:id/cancel\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/cancel/route\\\")\",\n \"/admin/orders/:id/changes\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/changes/route\\\")\",\n \"/admin/orders/:id/complete\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/complete/route\\\")\",\n \"/admin/orders/:id/credit-lines\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/credit-lines/route\\\")\",\n \"/admin/orders/:id/fulfillments\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/fulfillments/route\\\")\",\n \"/admin/orders/:id/fulfillments/:fulfillment_id/cancel\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/fulfillments/[fulfillment_id]/cancel/route\\\")\",\n \"/admin/orders/:id/fulfillments/:fulfillment_id/mark-as-delivered\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/fulfillments/[fulfillment_id]/mark-as-delivered/route\\\")\",\n \"/admin/orders/:id/fulfillments/:fulfillment_id/shipments\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/fulfillments/[fulfillment_id]/shipments/route\\\")\",\n \"/admin/orders/:id/line-items\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/line-items/route\\\")\",\n \"/admin/orders/:id/preview\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/preview/route\\\")\",\n \"/admin/orders/:id/shipping-options\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/shipping-options/route\\\")\",\n \"/admin/orders/:id/transfer\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/transfer/route\\\")\",\n \"/admin/orders/:id/transfer/cancel\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/[id]/transfer/cancel/route\\\")\",\n \"/admin/orders/export\": \"typeof import(\\\"@medusajs/medusa/api/admin/orders/export/route\\\")\",\n \"/admin/payment-collections\": \"typeof import(\\\"@medusajs/medusa/api/admin/payment-collections/route\\\")\",\n \"/admin/payment-collections/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/payment-collections/[id]/route\\\")\",\n \"/admin/payment-collections/:id/mark-as-paid\": \"typeof import(\\\"@medusajs/medusa/api/admin/payment-collections/[id]/mark-as-paid/route\\\")\",\n \"/admin/payments\": \"typeof import(\\\"@medusajs/medusa/api/admin/payments/route\\\")\",\n \"/admin/payments/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/payments/[id]/route\\\")\",\n \"/admin/payments/:id/capture\": \"typeof import(\\\"@medusajs/medusa/api/admin/payments/[id]/capture/route\\\")\",\n \"/admin/payments/:id/refund\": \"typeof import(\\\"@medusajs/medusa/api/admin/payments/[id]/refund/route\\\")\",\n \"/admin/payments/payment-providers\": \"typeof import(\\\"@medusajs/medusa/api/admin/payments/payment-providers/route\\\")\",\n \"/admin/plugins\": \"typeof import(\\\"@medusajs/medusa/api/admin/plugins/route\\\")\",\n \"/admin/price-lists\": \"typeof import(\\\"@medusajs/medusa/api/admin/price-lists/route\\\")\",\n \"/admin/price-lists/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/price-lists/[id]/route\\\")\",\n \"/admin/price-lists/:id/prices\": \"typeof import(\\\"@medusajs/medusa/api/admin/price-lists/[id]/prices/route\\\")\",\n \"/admin/price-lists/:id/prices/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/price-lists/[id]/prices/batch/route\\\")\",\n \"/admin/price-lists/:id/products\": \"typeof import(\\\"@medusajs/medusa/api/admin/price-lists/[id]/products/route\\\")\",\n \"/admin/price-preferences\": \"typeof import(\\\"@medusajs/medusa/api/admin/price-preferences/route\\\")\",\n \"/admin/price-preferences/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/price-preferences/[id]/route\\\")\",\n \"/admin/product-categories\": \"typeof import(\\\"@medusajs/medusa/api/admin/product-categories/route\\\")\",\n \"/admin/product-categories/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/product-categories/[id]/route\\\")\",\n \"/admin/product-categories/:id/products\": \"typeof import(\\\"@medusajs/medusa/api/admin/product-categories/[id]/products/route\\\")\",\n \"/admin/product-tags\": \"typeof import(\\\"@medusajs/medusa/api/admin/product-tags/route\\\")\",\n \"/admin/product-tags/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/product-tags/[id]/route\\\")\",\n \"/admin/product-types\": \"typeof import(\\\"@medusajs/medusa/api/admin/product-types/route\\\")\",\n \"/admin/product-types/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/product-types/[id]/route\\\")\",\n \"/admin/product-variants\": \"typeof import(\\\"@medusajs/medusa/api/admin/product-variants/route\\\")\",\n \"/admin/products\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/route\\\")\",\n \"/admin/products/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/[id]/route\\\")\",\n \"/admin/products/:id/images/:image_id/variants/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/[id]/images/[image_id]/variants/batch/route\\\")\",\n \"/admin/products/:id/options\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/[id]/options/route\\\")\",\n \"/admin/products/:id/options/:option_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/[id]/options/[option_id]/route\\\")\",\n \"/admin/products/:id/variants\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/[id]/variants/route\\\")\",\n \"/admin/products/:id/variants/:variant_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/[id]/variants/[variant_id]/route\\\")\",\n \"/admin/products/:id/variants/:variant_id/images/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/[id]/variants/[variant_id]/images/batch/route\\\")\",\n \"/admin/products/:id/variants/:variant_id/inventory-items\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/[id]/variants/[variant_id]/inventory-items/route\\\")\",\n \"/admin/products/:id/variants/:variant_id/inventory-items/:inventory_item_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/[id]/variants/[variant_id]/inventory-items/[inventory_item_id]/route\\\")\",\n \"/admin/products/:id/variants/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/[id]/variants/batch/route\\\")\",\n \"/admin/products/:id/variants/inventory-items/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/[id]/variants/inventory-items/batch/route\\\")\",\n \"/admin/products/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/batch/route\\\")\",\n \"/admin/products/export\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/export/route\\\")\",\n \"/admin/products/import\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/import/route\\\")\",\n \"/admin/products/import/:transaction_id/confirm\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/import/[transaction_id]/confirm/route\\\")\",\n \"/admin/products/imports\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/imports/route\\\")\",\n \"/admin/products/imports/:transaction_id/confirm\": \"typeof import(\\\"@medusajs/medusa/api/admin/products/imports/[transaction_id]/confirm/route\\\")\",\n \"/admin/promotions\": \"typeof import(\\\"@medusajs/medusa/api/admin/promotions/route\\\")\",\n \"/admin/promotions/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/promotions/[id]/route\\\")\",\n \"/admin/promotions/:id/:rule_type\": \"typeof import(\\\"@medusajs/medusa/api/admin/promotions/[id]/[rule_type]/route\\\")\",\n \"/admin/promotions/:id/buy-rules/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/promotions/[id]/buy-rules/batch/route\\\")\",\n \"/admin/promotions/:id/rules/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/promotions/[id]/rules/batch/route\\\")\",\n \"/admin/promotions/:id/target-rules/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/promotions/[id]/target-rules/batch/route\\\")\",\n \"/admin/promotions/rule-attribute-options/:rule_type\": \"typeof import(\\\"@medusajs/medusa/api/admin/promotions/rule-attribute-options/[rule_type]/route\\\")\",\n \"/admin/promotions/rule-value-options/:rule_type/:rule_attribute_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/promotions/rule-value-options/[rule_type]/[rule_attribute_id]/route\\\")\",\n \"/admin/rbac/policies\": \"typeof import(\\\"@medusajs/medusa/api/admin/rbac/policies/route\\\")\",\n \"/admin/rbac/policies/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/rbac/policies/[id]/route\\\")\",\n \"/admin/rbac/roles\": \"typeof import(\\\"@medusajs/medusa/api/admin/rbac/roles/route\\\")\",\n \"/admin/rbac/roles/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/rbac/roles/[id]/route\\\")\",\n \"/admin/rbac/roles/:id/policies\": \"typeof import(\\\"@medusajs/medusa/api/admin/rbac/roles/[id]/policies/route\\\")\",\n \"/admin/rbac/roles/:id/policies/:policy_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/rbac/roles/[id]/policies/[policy_id]/route\\\")\",\n \"/admin/refund-reasons\": \"typeof import(\\\"@medusajs/medusa/api/admin/refund-reasons/route\\\")\",\n \"/admin/refund-reasons/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/refund-reasons/[id]/route\\\")\",\n \"/admin/regions\": \"typeof import(\\\"@medusajs/medusa/api/admin/regions/route\\\")\",\n \"/admin/regions/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/regions/[id]/route\\\")\",\n \"/admin/reservations\": \"typeof import(\\\"@medusajs/medusa/api/admin/reservations/route\\\")\",\n \"/admin/reservations/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/reservations/[id]/route\\\")\",\n \"/admin/return-reasons\": \"typeof import(\\\"@medusajs/medusa/api/admin/return-reasons/route\\\")\",\n \"/admin/return-reasons/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/return-reasons/[id]/route\\\")\",\n \"/admin/returns\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/route\\\")\",\n \"/admin/returns/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/route\\\")\",\n \"/admin/returns/:id/cancel\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/cancel/route\\\")\",\n \"/admin/returns/:id/dismiss-items\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/dismiss-items/route\\\")\",\n \"/admin/returns/:id/dismiss-items/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/dismiss-items/[action_id]/route\\\")\",\n \"/admin/returns/:id/receive\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/receive/route\\\")\",\n \"/admin/returns/:id/receive-items\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/receive-items/route\\\")\",\n \"/admin/returns/:id/receive-items/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/receive-items/[action_id]/route\\\")\",\n \"/admin/returns/:id/receive/confirm\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/receive/confirm/route\\\")\",\n \"/admin/returns/:id/request\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/request/route\\\")\",\n \"/admin/returns/:id/request-items\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/request-items/route\\\")\",\n \"/admin/returns/:id/request-items/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/request-items/[action_id]/route\\\")\",\n \"/admin/returns/:id/shipping-method\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/shipping-method/route\\\")\",\n \"/admin/returns/:id/shipping-method/:action_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/returns/[id]/shipping-method/[action_id]/route\\\")\",\n \"/admin/sales-channels\": \"typeof import(\\\"@medusajs/medusa/api/admin/sales-channels/route\\\")\",\n \"/admin/sales-channels/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/sales-channels/[id]/route\\\")\",\n \"/admin/sales-channels/:id/products\": \"typeof import(\\\"@medusajs/medusa/api/admin/sales-channels/[id]/products/route\\\")\",\n \"/admin/shipping-option-types\": \"typeof import(\\\"@medusajs/medusa/api/admin/shipping-option-types/route\\\")\",\n \"/admin/shipping-option-types/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/shipping-option-types/[id]/route\\\")\",\n \"/admin/shipping-options\": \"typeof import(\\\"@medusajs/medusa/api/admin/shipping-options/route\\\")\",\n \"/admin/shipping-options/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/shipping-options/[id]/route\\\")\",\n \"/admin/shipping-options/:id/rules/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/shipping-options/[id]/rules/batch/route\\\")\",\n \"/admin/shipping-profiles\": \"typeof import(\\\"@medusajs/medusa/api/admin/shipping-profiles/route\\\")\",\n \"/admin/shipping-profiles/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/shipping-profiles/[id]/route\\\")\",\n \"/admin/stock-locations\": \"typeof import(\\\"@medusajs/medusa/api/admin/stock-locations/route\\\")\",\n \"/admin/stock-locations/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/stock-locations/[id]/route\\\")\",\n \"/admin/stock-locations/:id/fulfillment-providers\": \"typeof import(\\\"@medusajs/medusa/api/admin/stock-locations/[id]/fulfillment-providers/route\\\")\",\n \"/admin/stock-locations/:id/fulfillment-sets\": \"typeof import(\\\"@medusajs/medusa/api/admin/stock-locations/[id]/fulfillment-sets/route\\\")\",\n \"/admin/stock-locations/:id/sales-channels\": \"typeof import(\\\"@medusajs/medusa/api/admin/stock-locations/[id]/sales-channels/route\\\")\",\n \"/admin/stores\": \"typeof import(\\\"@medusajs/medusa/api/admin/stores/route\\\")\",\n \"/admin/stores/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/stores/[id]/route\\\")\",\n \"/admin/tax-providers\": \"typeof import(\\\"@medusajs/medusa/api/admin/tax-providers/route\\\")\",\n \"/admin/tax-rates\": \"typeof import(\\\"@medusajs/medusa/api/admin/tax-rates/route\\\")\",\n \"/admin/tax-rates/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/tax-rates/[id]/route\\\")\",\n \"/admin/tax-rates/:id/rules\": \"typeof import(\\\"@medusajs/medusa/api/admin/tax-rates/[id]/rules/route\\\")\",\n \"/admin/tax-rates/:id/rules/:rule_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/tax-rates/[id]/rules/[rule_id]/route\\\")\",\n \"/admin/tax-regions\": \"typeof import(\\\"@medusajs/medusa/api/admin/tax-regions/route\\\")\",\n \"/admin/tax-regions/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/tax-regions/[id]/route\\\")\",\n \"/admin/translations\": \"typeof import(\\\"@medusajs/medusa/api/admin/translations/route\\\")\",\n \"/admin/translations/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/translations/batch/route\\\")\",\n \"/admin/translations/entities\": \"typeof import(\\\"@medusajs/medusa/api/admin/translations/entities/route\\\")\",\n \"/admin/translations/settings\": \"typeof import(\\\"@medusajs/medusa/api/admin/translations/settings/route\\\")\",\n \"/admin/translations/settings/batch\": \"typeof import(\\\"@medusajs/medusa/api/admin/translations/settings/batch/route\\\")\",\n \"/admin/translations/statistics\": \"typeof import(\\\"@medusajs/medusa/api/admin/translations/statistics/route\\\")\",\n \"/admin/uploads\": \"typeof import(\\\"@medusajs/medusa/api/admin/uploads/route\\\")\",\n \"/admin/uploads/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/uploads/[id]/route\\\")\",\n \"/admin/uploads/presigned-urls\": \"typeof import(\\\"@medusajs/medusa/api/admin/uploads/presigned-urls/route\\\")\",\n \"/admin/users\": \"typeof import(\\\"@medusajs/medusa/api/admin/users/route\\\")\",\n \"/admin/users/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/users/[id]/route\\\")\",\n \"/admin/users/me\": \"typeof import(\\\"@medusajs/medusa/api/admin/users/me/route\\\")\",\n \"/admin/views/:entity/columns\": \"typeof import(\\\"@medusajs/medusa/api/admin/views/[entity]/columns/route\\\")\",\n \"/admin/views/:entity/configurations\": \"typeof import(\\\"@medusajs/medusa/api/admin/views/[entity]/configurations/route\\\")\",\n \"/admin/views/:entity/configurations/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/views/[entity]/configurations/[id]/route\\\")\",\n \"/admin/views/:entity/configurations/active\": \"typeof import(\\\"@medusajs/medusa/api/admin/views/[entity]/configurations/active/route\\\")\",\n \"/admin/workflows-executions\": \"typeof import(\\\"@medusajs/medusa/api/admin/workflows-executions/route\\\")\",\n \"/admin/workflows-executions/:id\": \"typeof import(\\\"@medusajs/medusa/api/admin/workflows-executions/[id]/route\\\")\",\n \"/admin/workflows-executions/:workflow_id/:transaction_id\": \"typeof import(\\\"@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/[transaction_id]/route\\\")\",\n \"/admin/workflows-executions/:workflow_id/:transaction_id/:step_id/subscribe\": \"typeof import(\\\"@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/[transaction_id]/[step_id]/subscribe/route\\\")\",\n \"/admin/workflows-executions/:workflow_id/run\": \"typeof import(\\\"@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/run/route\\\")\",\n \"/admin/workflows-executions/:workflow_id/steps/failure\": \"typeof import(\\\"@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/steps/failure/route\\\")\",\n \"/admin/workflows-executions/:workflow_id/steps/success\": \"typeof import(\\\"@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/steps/success/route\\\")\",\n \"/admin/workflows-executions/:workflow_id/subscribe\": \"typeof import(\\\"@medusajs/medusa/api/admin/workflows-executions/[workflow_id]/subscribe/route\\\")\",\n \"/auth/:actor_type/:auth_provider\": \"typeof import(\\\"@medusajs/medusa/api/auth/[actor_type]/[auth_provider]/route\\\")\",\n \"/auth/:actor_type/:auth_provider/callback\": \"typeof import(\\\"@medusajs/medusa/api/auth/[actor_type]/[auth_provider]/callback/route\\\")\",\n \"/auth/:actor_type/:auth_provider/register\": \"typeof import(\\\"@medusajs/medusa/api/auth/[actor_type]/[auth_provider]/register/route\\\")\",\n \"/auth/:actor_type/:auth_provider/reset-password\": \"typeof import(\\\"@medusajs/medusa/api/auth/[actor_type]/[auth_provider]/reset-password/route\\\")\",\n \"/auth/:actor_type/:auth_provider/update\": \"typeof import(\\\"@medusajs/medusa/api/auth/[actor_type]/[auth_provider]/update/route\\\")\",\n \"/auth/session\": \"typeof import(\\\"@medusajs/medusa/api/auth/session/route\\\")\",\n \"/auth/token/refresh\": \"typeof import(\\\"@medusajs/medusa/api/auth/token/refresh/route\\\")\",\n \"/store/carts\": \"typeof import(\\\"@medusajs/medusa/api/store/carts/route\\\")\",\n \"/store/carts/:id\": \"typeof import(\\\"@medusajs/medusa/api/store/carts/[id]/route\\\")\",\n \"/store/carts/:id/complete\": \"typeof import(\\\"@medusajs/medusa/api/store/carts/[id]/complete/route\\\")\",\n \"/store/carts/:id/customer\": \"typeof import(\\\"@medusajs/medusa/api/store/carts/[id]/customer/route\\\")\",\n \"/store/carts/:id/line-items\": \"typeof import(\\\"@medusajs/medusa/api/store/carts/[id]/line-items/route\\\")\",\n \"/store/carts/:id/line-items/:line_id\": \"typeof import(\\\"@medusajs/medusa/api/store/carts/[id]/line-items/[line_id]/route\\\")\",\n \"/store/carts/:id/promotions\": \"typeof import(\\\"@medusajs/medusa/api/store/carts/[id]/promotions/route\\\")\",\n \"/store/carts/:id/shipping-methods\": \"typeof import(\\\"@medusajs/medusa/api/store/carts/[id]/shipping-methods/route\\\")\",\n \"/store/carts/:id/taxes\": \"typeof import(\\\"@medusajs/medusa/api/store/carts/[id]/taxes/route\\\")\",\n \"/store/collections\": \"typeof import(\\\"@medusajs/medusa/api/store/collections/route\\\")\",\n \"/store/collections/:id\": \"typeof import(\\\"@medusajs/medusa/api/store/collections/[id]/route\\\")\",\n \"/store/currencies\": \"typeof import(\\\"@medusajs/medusa/api/store/currencies/route\\\")\",\n \"/store/currencies/:code\": \"typeof import(\\\"@medusajs/medusa/api/store/currencies/[code]/route\\\")\",\n \"/store/customers\": \"typeof import(\\\"@medusajs/medusa/api/store/customers/route\\\")\",\n \"/store/customers/me\": \"typeof import(\\\"@medusajs/medusa/api/store/customers/me/route\\\")\",\n \"/store/customers/me/addresses\": \"typeof import(\\\"@medusajs/medusa/api/store/customers/me/addresses/route\\\")\",\n \"/store/customers/me/addresses/:address_id\": \"typeof import(\\\"@medusajs/medusa/api/store/customers/me/addresses/[address_id]/route\\\")\",\n \"/store/locales\": \"typeof import(\\\"@medusajs/medusa/api/store/locales/route\\\")\",\n \"/store/orders\": \"typeof import(\\\"@medusajs/medusa/api/store/orders/route\\\")\",\n \"/store/orders/:id\": \"typeof import(\\\"@medusajs/medusa/api/store/orders/[id]/route\\\")\",\n \"/store/orders/:id/transfer/accept\": \"typeof import(\\\"@medusajs/medusa/api/store/orders/[id]/transfer/accept/route\\\")\",\n \"/store/orders/:id/transfer/cancel\": \"typeof import(\\\"@medusajs/medusa/api/store/orders/[id]/transfer/cancel/route\\\")\",\n \"/store/orders/:id/transfer/decline\": \"typeof import(\\\"@medusajs/medusa/api/store/orders/[id]/transfer/decline/route\\\")\",\n \"/store/orders/:id/transfer/request\": \"typeof import(\\\"@medusajs/medusa/api/store/orders/[id]/transfer/request/route\\\")\",\n \"/store/payment-collections\": \"typeof import(\\\"@medusajs/medusa/api/store/payment-collections/route\\\")\",\n \"/store/payment-collections/:id/payment-sessions\": \"typeof import(\\\"@medusajs/medusa/api/store/payment-collections/[id]/payment-sessions/route\\\")\",\n \"/store/payment-providers\": \"typeof import(\\\"@medusajs/medusa/api/store/payment-providers/route\\\")\",\n \"/store/product-categories\": \"typeof import(\\\"@medusajs/medusa/api/store/product-categories/route\\\")\",\n \"/store/product-categories/:id\": \"typeof import(\\\"@medusajs/medusa/api/store/product-categories/[id]/route\\\")\",\n \"/store/product-tags\": \"typeof import(\\\"@medusajs/medusa/api/store/product-tags/route\\\")\",\n \"/store/product-tags/:id\": \"typeof import(\\\"@medusajs/medusa/api/store/product-tags/[id]/route\\\")\",\n \"/store/product-types\": \"typeof import(\\\"@medusajs/medusa/api/store/product-types/route\\\")\",\n \"/store/product-types/:id\": \"typeof import(\\\"@medusajs/medusa/api/store/product-types/[id]/route\\\")\",\n \"/store/product-variants\": \"typeof import(\\\"@medusajs/medusa/api/store/product-variants/route\\\")\",\n \"/store/product-variants/:id\": \"typeof import(\\\"@medusajs/medusa/api/store/product-variants/[id]/route\\\")\",\n \"/store/products\": \"typeof import(\\\"@medusajs/medusa/api/store/products/route\\\")\",\n \"/store/products/:id\": \"typeof import(\\\"@medusajs/medusa/api/store/products/[id]/route\\\")\",\n \"/store/regions\": \"typeof import(\\\"@medusajs/medusa/api/store/regions/route\\\")\",\n \"/store/regions/:id\": \"typeof import(\\\"@medusajs/medusa/api/store/regions/[id]/route\\\")\",\n \"/store/return-reasons\": \"typeof import(\\\"@medusajs/medusa/api/store/return-reasons/route\\\")\",\n \"/store/return-reasons/:id\": \"typeof import(\\\"@medusajs/medusa/api/store/return-reasons/[id]/route\\\")\",\n \"/store/returns\": \"typeof import(\\\"@medusajs/medusa/api/store/returns/route\\\")\",\n \"/store/shipping-options\": \"typeof import(\\\"@medusajs/medusa/api/store/shipping-options/route\\\")\",\n \"/store/shipping-options/:id/calculate\": \"typeof import(\\\"@medusajs/medusa/api/store/shipping-options/[id]/calculate/route\\\")\",\n};\n\nexport const defaultMercurRoutes = {\n // Admin routes\n \"/admin/commission-rates\": \"typeof import(\\\"@mercurjs/core-plugin/api/admin/commission-rates/route\\\")\",\n \"/admin/commission-rates/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/admin/commission-rates/[id]/route\\\")\",\n \"/admin/commission-rates/:id/rules\": \"typeof import(\\\"@mercurjs/core-plugin/api/admin/commission-rates/[id]/rules/route\\\")\",\n \"/admin/order-groups\": \"typeof import(\\\"@mercurjs/core-plugin/api/admin/order-groups/route\\\")\",\n \"/admin/order-groups/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/admin/order-groups/[id]/route\\\")\",\n \"/admin/payouts\": \"typeof import(\\\"@mercurjs/core-plugin/api/admin/payouts/route\\\")\",\n \"/admin/payouts/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/admin/payouts/[id]/route\\\")\",\n \"/admin/sellers\": \"typeof import(\\\"@mercurjs/core-plugin/api/admin/sellers/route\\\")\",\n \"/admin/sellers/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/admin/sellers/[id]/route\\\")\",\n\n // Store routes\n \"/store/carts/:id/complete\": \"typeof import(\\\"@mercurjs/core-plugin/api/store/carts/[id]/complete/route\\\")\",\n \"/store/carts/:id/promotions\": \"typeof import(\\\"@mercurjs/core-plugin/api/store/carts/[id]/promotions/route\\\")\",\n \"/store/carts/:id/shipping-methods\": \"typeof import(\\\"@mercurjs/core-plugin/api/store/carts/[id]/shipping-methods/route\\\")\",\n \"/store/order-groups\": \"typeof import(\\\"@mercurjs/core-plugin/api/store/order-groups/route\\\")\",\n \"/store/order-groups/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/store/order-groups/[id]/route\\\")\",\n \"/store/sellers\": \"typeof import(\\\"@mercurjs/core-plugin/api/store/sellers/route\\\")\",\n \"/store/sellers/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/store/sellers/[id]/route\\\")\",\n \"/store/shipping-options\": \"typeof import(\\\"@mercurjs/core-plugin/api/store/shipping-options/route\\\")\",\n\n // Vendor routes\n \"/vendor/campaigns\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/campaigns/route\\\")\",\n \"/vendor/campaigns/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/campaigns/[id]/route\\\")\",\n \"/vendor/campaigns/:id/promotions\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/campaigns/[id]/promotions/route\\\")\",\n \"/vendor/collections\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/collections/route\\\")\",\n \"/vendor/collections/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/collections/[id]/route\\\")\",\n \"/vendor/collections/:id/products\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/collections/[id]/products/route\\\")\",\n \"/vendor/currencies\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/currencies/route\\\")\",\n \"/vendor/currencies/:code\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/currencies/[code]/route\\\")\",\n \"/vendor/customers\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/customers/route\\\")\",\n \"/vendor/customers/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/customers/[id]/route\\\")\",\n \"/vendor/fulfillment-sets/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/fulfillment-sets/[id]/route\\\")\",\n \"/vendor/fulfillment-sets/:id/service-zones\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/fulfillment-sets/[id]/service-zones/route\\\")\",\n \"/vendor/fulfillment-sets/:id/service-zones/:zone_id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/fulfillment-sets/[id]/service-zones/[zone_id]/route\\\")\",\n \"/vendor/inventory-items\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/inventory-items/route\\\")\",\n \"/vendor/inventory-items/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/inventory-items/[id]/route\\\")\",\n \"/vendor/inventory-items/:id/location-levels\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/inventory-items/[id]/location-levels/route\\\")\",\n \"/vendor/inventory-items/:id/location-levels/:location_id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/inventory-items/[id]/location-levels/[location_id]/route\\\")\",\n \"/vendor/inventory-items/:id/location-levels/batch\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/inventory-items/[id]/location-levels/batch/route\\\")\",\n \"/vendor/orders\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/orders/route\\\")\",\n \"/vendor/orders/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/orders/[id]/route\\\")\",\n \"/vendor/orders/:id/cancel\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/orders/[id]/cancel/route\\\")\",\n \"/vendor/orders/:id/changes\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/orders/[id]/changes/route\\\")\",\n \"/vendor/orders/:id/complete\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/orders/[id]/complete/route\\\")\",\n \"/vendor/orders/:id/fulfillments\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/orders/[id]/fulfillments/route\\\")\",\n \"/vendor/orders/:id/fulfillments/:fulfillment_id/cancel\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/orders/[id]/fulfillments/[fulfillment_id]/cancel/route\\\")\",\n \"/vendor/orders/:id/fulfillments/:fulfillment_id/mark-as-delivered\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/orders/[id]/fulfillments/[fulfillment_id]/mark-as-delivered/route\\\")\",\n \"/vendor/orders/:id/fulfillments/:fulfillment_id/shipments\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/orders/[id]/fulfillments/[fulfillment_id]/shipments/route\\\")\",\n \"/vendor/orders/:id/preview\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/orders/[id]/preview/route\\\")\",\n \"/vendor/payments\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/payments/route\\\")\",\n \"/vendor/payments/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/payments/[id]/route\\\")\",\n \"/vendor/payments/:id/capture\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/payments/[id]/capture/route\\\")\",\n \"/vendor/payments/:id/refund\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/payments/[id]/refund/route\\\")\",\n \"/vendor/payments/payment-providers\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/payments/payment-providers/route\\\")\",\n \"/vendor/payout-accounts\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/payout-accounts/route\\\")\",\n \"/vendor/payout-accounts/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/payout-accounts/[id]/route\\\")\",\n \"/vendor/payout-accounts/:id/onboarding\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/payout-accounts/[id]/onboarding/route\\\")\",\n \"/vendor/payouts\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/payouts/route\\\")\",\n \"/vendor/payouts/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/payouts/[id]/route\\\")\",\n \"/vendor/price-lists\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/price-lists/route\\\")\",\n \"/vendor/price-lists/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/price-lists/[id]/route\\\")\",\n \"/vendor/price-lists/:id/products\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/price-lists/[id]/products/route\\\")\",\n \"/vendor/price-preferences\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/price-preferences/route\\\")\",\n \"/vendor/price-preferences/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/price-preferences/[id]/route\\\")\",\n \"/vendor/product-categories\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/product-categories/route\\\")\",\n \"/vendor/product-categories/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/product-categories/[id]/route\\\")\",\n \"/vendor/product-categories/:id/products\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/product-categories/[id]/products/route\\\")\",\n \"/vendor/product-tags\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/product-tags/route\\\")\",\n \"/vendor/product-tags/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/product-tags/[id]/route\\\")\",\n \"/vendor/product-types\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/product-types/route\\\")\",\n \"/vendor/product-types/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/product-types/[id]/route\\\")\",\n \"/vendor/products\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/products/route\\\")\",\n \"/vendor/products/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/products/[id]/route\\\")\",\n \"/vendor/products/:id/options\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/products/[id]/options/route\\\")\",\n \"/vendor/products/:id/options/:option_id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/products/[id]/options/[option_id]/route\\\")\",\n \"/vendor/products/:id/variants\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/products/[id]/variants/route\\\")\",\n \"/vendor/products/:id/variants/:variant_id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/products/[id]/variants/[variant_id]/route\\\")\",\n \"/vendor/promotions\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/promotions/route\\\")\",\n \"/vendor/promotions/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/promotions/[id]/route\\\")\",\n \"/vendor/promotions/:id/:rule_type\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/promotions/[id]/[rule_type]/route\\\")\",\n \"/vendor/promotions/:id/buy-rules/batch\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/promotions/[id]/buy-rules/batch/route\\\")\",\n \"/vendor/promotions/:id/rules/batch\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/promotions/[id]/rules/batch/route\\\")\",\n \"/vendor/promotions/:id/target-rules/batch\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/promotions/[id]/target-rules/batch/route\\\")\",\n \"/vendor/promotions/rule-attribute-options/:rule_type\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/promotions/rule-attribute-options/[rule_type]/route\\\")\",\n \"/vendor/promotions/rule-value-options/:rule_type/:rule_attribute_id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/promotions/rule-value-options/[rule_type]/[rule_attribute_id]/route\\\")\",\n \"/vendor/refund-reasons\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/refund-reasons/route\\\")\",\n \"/vendor/refund-reasons/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/refund-reasons/[id]/route\\\")\",\n \"/vendor/regions\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/regions/route\\\")\",\n \"/vendor/regions/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/regions/[id]/route\\\")\",\n \"/vendor/return-reasons\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/return-reasons/route\\\")\",\n \"/vendor/return-reasons/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/return-reasons/[id]/route\\\")\",\n \"/vendor/returns\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/route\\\")\",\n \"/vendor/returns/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/route\\\")\",\n \"/vendor/returns/:id/cancel\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/cancel/route\\\")\",\n \"/vendor/returns/:id/dismiss-items\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/dismiss-items/route\\\")\",\n \"/vendor/returns/:id/dismiss-items/:action_id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/dismiss-items/[action_id]/route\\\")\",\n \"/vendor/returns/:id/receive\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/receive/route\\\")\",\n \"/vendor/returns/:id/receive-items\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/receive-items/route\\\")\",\n \"/vendor/returns/:id/receive-items/:action_id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/receive-items/[action_id]/route\\\")\",\n \"/vendor/returns/:id/receive/confirm\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/receive/confirm/route\\\")\",\n \"/vendor/returns/:id/request\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/request/route\\\")\",\n \"/vendor/returns/:id/request-items\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/request-items/route\\\")\",\n \"/vendor/returns/:id/request-items/:action_id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/request-items/[action_id]/route\\\")\",\n \"/vendor/returns/:id/shipping-method\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/shipping-method/route\\\")\",\n \"/vendor/returns/:id/shipping-method/:action_id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/returns/[id]/shipping-method/[action_id]/route\\\")\",\n \"/vendor/sales-channels\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/sales-channels/route\\\")\",\n \"/vendor/sales-channels/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/sales-channels/[id]/route\\\")\",\n \"/vendor/sales-channels/:id/products\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/sales-channels/[id]/products/route\\\")\",\n \"/vendor/sellers\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/sellers/route\\\")\",\n \"/vendor/sellers/me\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/sellers/me/route\\\")\",\n \"/vendor/shipping-option-types\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/shipping-option-types/route\\\")\",\n \"/vendor/shipping-option-types/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/shipping-option-types/[id]/route\\\")\",\n \"/vendor/shipping-options\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/shipping-options/route\\\")\",\n \"/vendor/shipping-options/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/shipping-options/[id]/route\\\")\",\n \"/vendor/shipping-options/:id/rules/batch\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/shipping-options/[id]/rules/batch/route\\\")\",\n \"/vendor/shipping-profiles\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/shipping-profiles/route\\\")\",\n \"/vendor/shipping-profiles/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/shipping-profiles/[id]/route\\\")\",\n \"/vendor/stock-locations\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/stock-locations/route\\\")\",\n \"/vendor/stock-locations/:id\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/stock-locations/[id]/route\\\")\",\n \"/vendor/stock-locations/:id/fulfillment-providers\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/stock-locations/[id]/fulfillment-providers/route\\\")\",\n \"/vendor/stock-locations/:id/fulfillment-sets\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/stock-locations/[id]/fulfillment-sets/route\\\")\",\n \"/vendor/stock-locations/:id/sales-channels\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/stock-locations/[id]/sales-channels/route\\\")\",\n \"/vendor/uploads\": \"typeof import(\\\"@mercurjs/core-plugin/api/vendor/uploads/route\\\")\",\n}","import fs from \"fs/promises\";\nimport path from \"path\";\n\nexport type RecursiveReadDirOptions = {\n pathnameFilter?: (pathname: string) => boolean;\n ignoreFilter?: (pathname: string) => boolean;\n ignorePartFilter?: (part: string) => boolean;\n sortPathnames?: boolean;\n};\n\n\n/**\n * Recursively read directory and return matching files\n */\nexport async function recursiveReadDir(\n rootDirectory: string,\n options: RecursiveReadDirOptions = {}\n): Promise<string[]> {\n const {\n pathnameFilter,\n ignoreFilter,\n ignorePartFilter,\n sortPathnames = true,\n } = options;\n\n const pathnames: string[] = [];\n let directories: string[] = [rootDirectory];\n\n while (directories.length > 0) {\n const results = await Promise.all(\n directories.map(async (directory) => {\n const result: {\n directories: string[];\n pathnames: string[];\n } = { directories: [], pathnames: [] };\n\n try {\n const entries = await fs.readdir(directory, { withFileTypes: true });\n\n for (const entry of entries) {\n if (ignorePartFilter && ignorePartFilter(entry.name)) {\n continue;\n }\n\n const absolutePath = path.join(directory, entry.name);\n\n if (ignoreFilter && ignoreFilter(absolutePath)) {\n continue;\n }\n\n if (entry.isDirectory()) {\n result.directories.push(absolutePath);\n } else if (!pathnameFilter || pathnameFilter(absolutePath)) {\n result.pathnames.push(absolutePath);\n }\n }\n } catch (err: any) {\n if (err.code !== \"ENOENT\" || directory === rootDirectory) {\n throw err;\n }\n return null;\n }\n\n return result;\n })\n );\n\n directories = [];\n\n for (const result of results) {\n if (!result) continue;\n directories.push(...result.directories);\n pathnames.push(...result.pathnames);\n }\n }\n\n if (sortPathnames) {\n pathnames.sort();\n }\n\n return pathnames;\n}\n\n/**\n * Check if a path exists\n */\nexport async function pathExists(filePath: string): Promise<boolean> {\n const stat = await fs.stat(filePath).catch(() => null);\n return stat !== null;\n}\n\n/**\n * Ensure directory exists, create if not\n */\nexport async function ensureDir(dirPath: string): Promise<void> {\n const exists = await pathExists(dirPath);\n if (!exists) {\n await fs.mkdir(dirPath, { recursive: true });\n }\n}\n","import { ROUTE_FILE_PATTERN } from \"./constants\";\n\n/**\n * Normalize path separators to forward slashes\n */\nexport function normalizePathSep(filePath: string): string {\n return filePath.replace(/\\\\/g, \"/\");\n}\n\n/**\n * Normalize API route path\n * e.g., vendor/products/[id]/route.ts -> /vendor/products/:id\n */\nexport function normalizeApiPath(routePath: string): string {\n const normalized = routePath\n .split(\"/\")\n .reduce((pathname, segment) => {\n if (!segment) return pathname;\n\n // Skip route.ts file\n if (ROUTE_FILE_PATTERN.test(segment)) return pathname;\n\n // Convert [param] to :param\n if (segment.startsWith(\"[\") && segment.endsWith(\"]\")) {\n const param = segment.slice(1, -1);\n return `${pathname}/:${param}`;\n }\n\n return `${pathname}/${segment}`;\n }, \"\");\n\n return normalized || \"/\";\n}\n","import path from \"path\";\nimport { ROUTE_FILE_PATTERN } from \"./constants\";\nimport { pathExists, recursiveReadDir } from \"./fs\";\nimport { normalizeApiPath, normalizePathSep } from \"./path\";\n\nexport interface RouteInfo {\n filePath: string;\n route: string;\n}\n\n/**\n * Get all API routes from src/api directory\n */\nexport async function getRoutes(apiDir: string): Promise<RouteInfo[]> {\n const exists = await pathExists(apiDir);\n if (!exists) {\n return [];\n }\n\n const files = await recursiveReadDir(apiDir, {\n pathnameFilter: (pathname) => ROUTE_FILE_PATTERN.test(pathname),\n ignorePartFilter: (part) => part.startsWith(\"_\") || part === \"node_modules\",\n });\n\n return files.map((filePath) => {\n const relativePath = path.relative(apiDir, filePath);\n return {\n filePath: normalizePathSep(relativePath),\n route: normalizeApiPath(normalizePathSep(relativePath)),\n };\n });\n}\n","export function toCamelCase(str: string): string {\n return str\n .replace(/[-_]+(.)?/g, (_, chr) => chr ? chr.toUpperCase() : '')\n .replace(/^[A-Z]/, chr => chr.toLowerCase());\n}\n","import fs from \"fs/promises\";\nimport path from \"path\";\nimport { DIST_DIR, defaultMedusaRoutes, defaultMercurRoutes } from \"./constants\";\nimport { ensureDir } from \"./fs\";\nimport { getRoutes, type RouteInfo } from \"./routes\";\nimport { normalizeApiPath, normalizePathSep } from \"./path\";\nimport { toCamelCase } from \"../utils/to-camel-case\";\n\nexport { getRoutes, type RouteInfo } from \"./routes\";\nexport { recursiveReadDir, pathExists, ensureDir } from \"./fs\";\nexport { normalizeApiPath, normalizePathSep } from \"./path\";\nexport { DIST_DIR, ROUTE_FILE_PATTERN } from \"./constants\";\n\nfunction generateImportPath(filePath: string): string {\n return `../../src/api/${filePath.replace(/\\.ts$/, \"\")}`;\n}\n\n/**\n * Convert path segment to nested key\n * - \":param\" → \"$param\"\n * - \"kebab-case\" → \"camelCase\"\n */\nfunction toNestedKey(segment: string): string {\n if (segment.startsWith(\":\")) {\n return `$${toCamelCase(segment.slice(1))}`;\n }\n return toCamelCase(segment);\n}\n\ninterface RouteNode {\n importType?: string;\n children: Map<string, RouteNode>;\n}\n\nfunction createRouteNode(): RouteNode {\n return { children: new Map() };\n}\n\n/**\n * Build a tree structure from flat routes\n */\nfunction buildRouteTree(routeMap: Map<string, string>): RouteNode {\n const root = createRouteNode();\n\n for (const [route, importType] of routeMap) {\n const segments = route.split(\"/\").filter(Boolean);\n let current = root;\n\n for (const segment of segments) {\n const key = toNestedKey(segment);\n if (!current.children.has(key)) {\n current.children.set(key, createRouteNode());\n }\n current = current.children.get(key)!;\n }\n\n current.importType = importType;\n }\n\n return root;\n}\n\n/**\n * Generate TypeScript type string from route tree\n */\nfunction generateTypeFromTree(node: RouteNode, indent: string = \" \"): string {\n const parts: string[] = [];\n\n // Add import type if this node is an endpoint\n if (node.importType) {\n parts.push(node.importType);\n }\n\n // Add children as nested object\n if (node.children.size > 0) {\n const childEntries: string[] = [];\n for (const [key, child] of node.children) {\n const childType = generateTypeFromTree(child, indent + \" \");\n childEntries.push(`${indent} ${key}: ${childType}`);\n }\n parts.push(`{\\n${childEntries.join(\";\\n\")};\\n${indent}}`);\n }\n\n // Combine with intersection if both endpoint and children exist\n if (parts.length === 0) {\n return \"{}\";\n }\n if (parts.length === 1) {\n return parts[0];\n }\n return parts.join(\" & \");\n}\n\nexport function generateRouteTypesFile(routes: RouteInfo[], importPathFn?: (filePath: string) => string): string {\n // Use Map to handle route deduplication (user routes override default routes)\n const routeMap = new Map<string, string>();\n\n // First, add default Medusa routes\n for (const [route, importType] of Object.entries(defaultMedusaRoutes)) {\n routeMap.set(route, importType);\n }\n\n // Second, add default Mercur routes\n for (const [route, importType] of Object.entries(defaultMercurRoutes)) {\n routeMap.set(route, importType);\n }\n\n const resolveImportPath = importPathFn ?? generateImportPath;\n\n // Then, override with user's custom routes (user takes priority)\n for (const route of routes) {\n const importPath = resolveImportPath(route.filePath);\n routeMap.set(route.route, `typeof import(\"${importPath}\")`);\n }\n\n // Build nested tree structure\n const tree = buildRouteTree(routeMap);\n\n // Generate nested type\n const routesType = generateTypeFromTree(tree, \"\");\n\n return `// This file is generated automatically by Mercur CLI\n// Do not edit this file manually\n\nexport type Routes = ${routesType};\n`;\n}\n\nexport async function writeRouteTypes(rootDir: string) {\n const entryFilePath = path.join(rootDir, DIST_DIR, \"index.ts\");\n const apiDir = path.join(rootDir, \"src\", \"api\");\n const entryDir = path.dirname(entryFilePath);\n\n await ensureDir(entryDir);\n\n const routes = await getRoutes(apiDir);\n const routeTypes = generateRouteTypesFile(routes);\n\n await fs.writeFile(entryFilePath, routeTypes, \"utf-8\");\n}\n\nexport async function writeRegistryRouteTypes(rootDir: string, routeFilePaths: string[]) {\n const entryFilePath = path.join(rootDir, DIST_DIR, \"index.ts\");\n const entryDir = path.dirname(entryFilePath);\n\n await ensureDir(entryDir);\n\n const allRoutes: RouteInfo[] = routeFilePaths.map((filePath) => {\n const apiIndex = filePath.indexOf(\"/api/\");\n const relativePath = apiIndex !== -1 ? filePath.slice(apiIndex + \"/api/\".length) : filePath;\n return {\n filePath,\n route: normalizeApiPath(normalizePathSep(relativePath)),\n };\n });\n\n const registryImportPath = (filePath: string) =>\n `../../src/${filePath.replace(/\\.ts$/, \"\")}`;\n\n const routeTypes = generateRouteTypesFile(allRoutes, registryImportPath);\n\n await fs.writeFile(entryFilePath, routeTypes, \"utf-8\");\n}\n","import path from \"path\";\nimport { registryCodegenOptionsSchema } from \"@/src/commands/registry-codegen\";\nimport * as ERRORS from \"@/src/utils/errors\";\nimport { getConfig } from \"@/src/utils/get-config\";\nimport { highlighter } from \"@/src/utils/highlighter\";\nimport { logger } from \"@/src/utils/logger\";\nimport fs from \"fs-extra\";\nimport { z } from \"zod\";\n\nexport async function preFlightRegistryCodegen(\n options: z.infer<typeof registryCodegenOptionsSchema>\n) {\n const errors: Record<string, boolean> = {};\n\n const resolvePaths = {\n cwd: options.cwd,\n registryFile: path.resolve(options.cwd, options.registryFile),\n };\n\n // Ensure registry file exists.\n if (!fs.existsSync(resolvePaths.registryFile)) {\n errors[ERRORS.BUILD_MISSING_REGISTRY_FILE] = true;\n return {\n errors,\n resolvePaths: null,\n config: null,\n };\n }\n\n // Check for existing blocks.json file.\n if (!fs.existsSync(path.resolve(options.cwd, \"blocks.json\"))) {\n errors[ERRORS.MISSING_CONFIG] = true;\n return {\n errors,\n resolvePaths: null,\n config: null,\n };\n }\n\n try {\n const config = await getConfig(options.cwd);\n\n return {\n errors,\n config: config!,\n resolvePaths,\n };\n } catch (error) {\n logger.break();\n logger.error(\n `An invalid ${highlighter.info(\n \"blocks.json\"\n )} file was found at ${highlighter.info(\n options.cwd\n )}.\\nBefore you can run registry:codegen, you must create a valid ${highlighter.info(\n \"blocks.json\"\n )} file by running the ${highlighter.info(\"init\")} command.`\n );\n logger.break();\n process.exit(1);\n }\n}\n","import * as fs from \"fs/promises\";\nimport * as path from \"path\";\nimport { Command } from \"commander\";\nimport { z } from \"zod\";\nimport { ROUTE_FILE_PATTERN, writeRegistryRouteTypes } from \"@/src/codegen\";\nimport { preFlightRegistryCodegen } from \"@/src/preflights/preflight-registry-codegen\";\nimport { registrySchema } from \"@/src/registry/schema\";\nimport * as ERRORS from \"@/src/utils/errors\";\nimport { handleError } from \"@/src/utils/handle-error\";\nimport { highlighter } from \"@/src/utils/highlighter\";\nimport { logger } from \"@/src/utils/logger\";\nimport { spinner } from \"@/src/utils/spinner\";\n\nexport const registryCodegenOptionsSchema = z.object({\n cwd: z.string(),\n registryFile: z.string(),\n});\n\nexport const registryCodegen = new Command()\n .name(\"registry:codegen\")\n .description(\"generate type definitions for registry block API routes\")\n .argument(\"[registry]\", \"path to registry.json file\", \"./registry.json\")\n .option(\n \"-c, --cwd <cwd>\",\n \"the working directory. defaults to the current directory.\",\n process.cwd()\n )\n .action(async (registry: string, opts) => {\n await runRegistryCodegen({\n cwd: path.resolve(opts.cwd),\n registryFile: registry,\n });\n });\n\nasync function runRegistryCodegen(\n opts: z.infer<typeof registryCodegenOptionsSchema>\n) {\n try {\n const options = registryCodegenOptionsSchema.parse(opts);\n\n const { errors, resolvePaths } = await preFlightRegistryCodegen(options);\n\n if (errors[ERRORS.MISSING_CONFIG]) {\n logger.error(\n `A ${highlighter.info(\n \"blocks.json\"\n )} file is required to run registry:codegen. Run ${highlighter.info(\n \"mercur init\"\n )} to create one.`\n );\n logger.break();\n process.exit(1);\n }\n\n if (errors[ERRORS.BUILD_MISSING_REGISTRY_FILE] || !resolvePaths) {\n logger.error(\n `Could not find a registry file at ${highlighter.info(\n path.resolve(options.cwd, options.registryFile)\n )}.`\n );\n logger.break();\n process.exit(1);\n }\n\n const content = await fs.readFile(resolvePaths.registryFile, \"utf-8\");\n const result = registrySchema.safeParse(JSON.parse(content));\n\n if (!result.success) {\n logger.error(\n `Invalid registry file at ${highlighter.info(\n resolvePaths.registryFile\n )}.`\n );\n logger.break();\n process.exit(1);\n }\n\n const routeFilePaths: string[] = [];\n\n for (const item of result.data.items) {\n if (!item.files) continue;\n\n for (const file of item.files) {\n if (file.type === \"registry:api\" && ROUTE_FILE_PATTERN.test(file.path)) {\n routeFilePaths.push(file.path);\n }\n }\n }\n\n if (routeFilePaths.length === 0) {\n logger.warn(\"No API route files found in registry.\");\n return;\n }\n\n const codegenSpinner = spinner(\"Generating registry route types...\");\n\n await writeRegistryRouteTypes(options.cwd, routeFilePaths);\n\n codegenSpinner.succeed(\"Registry route types generated successfully.\");\n logger.break();\n } catch (error) {\n logger.break();\n handleError(error);\n }\n}\n","import * as path from \"path\";\nimport { Command } from \"commander\";\nimport chokidar from \"chokidar\";\nimport { z } from \"zod\";\nimport { writeRouteTypes } from \"@/src/codegen\";\nimport { handleError } from \"@/src/utils/handle-error\";\nimport { logger } from \"@/src/utils/logger\";\nimport { spinner } from \"@/src/utils/spinner\";\nimport { highlighter } from \"../utils/highlighter\";\n\nexport const codegenOptionsSchema = z.object({\n cwd: z.string(),\n watch: z.boolean().default(false),\n});\n\nexport const codegen = new Command()\n .name(\"codegen\")\n .description(\"generate type definitions for API routes\")\n .option(\n \"-c, --cwd <cwd>\",\n \"the working directory. defaults to the current directory.\",\n process.cwd()\n )\n .option(\"-w, --watch\", \"watch for changes and regenerate types\", false)\n .action(async (opts) => {\n await runCodegen({\n cwd: path.resolve(opts.cwd),\n watch: opts.watch,\n });\n });\n\nasync function runCodegen(opts: z.infer<typeof codegenOptionsSchema>) {\n try {\n const options = codegenOptionsSchema.parse(opts);\n\n const codegenSpinner = spinner('Generating route types...');\n\n await writeRouteTypes(options.cwd);\n\n codegenSpinner.succeed('Route types generated successfully.');\n\n if (options.watch) {\n await watchForChanges(options.cwd);\n } else {\n logger.break();\n }\n } catch (error) {\n logger.break();\n handleError(error);\n }\n}\n\nasync function watchForChanges(cwd: string) {\n const apiDir = path.join(cwd, \"src\", \"api\");\n\n const watcher = chokidar.watch('.', {\n cwd: apiDir,\n persistent: true,\n ignoreInitial: true,\n });\n\n let debounceTimer: NodeJS.Timeout | null = null;\n\n const cleanup = async () => {\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n debounceTimer = null;\n }\n await watcher.close();\n logger.break();\n logger.info(`Watcher stopped.`);\n };\n\n const regenerate = async (filePath: string) => {\n logger.info(`Change detected in ${highlighter.info(filePath)}. Regenerating...`);\n try {\n await writeRouteTypes(cwd);\n } catch (error) {\n logger.error(`Failed to regenerate route types:`, error);\n logger.break();\n }\n };\n\n const debouncedRegenerate = (filePath: string) => {\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n debounceTimer = setTimeout(() => regenerate(filePath), 100);\n };\n\n watcher\n .on(\"add\", debouncedRegenerate)\n .on(\"change\", debouncedRegenerate)\n .on(\"unlink\", debouncedRegenerate)\n .on(\"ready\", () => {\n logger.info(`Watching for changes... (Press Ctrl+C to stop)`);\n })\n .on(\"error\", (error) => {\n logger.error(`Watcher error:`, error);\n logger.break();\n });\n\n await new Promise<void>((resolve) => {\n const shutdown = () => {\n cleanup().then(resolve);\n };\n\n process.once(\"SIGINT\", shutdown);\n process.once(\"SIGTERM\", shutdown);\n });\n}\n","import { logger } from \"@/src/utils/logger\";\nimport fs from \"fs-extra\";\nimport path from \"path\";\n\nconst sanitizeEnv = ({\n contents,\n databaseUri,\n}: {\n contents: string;\n databaseUri?: string;\n}): string => {\n const seenKeys = new Set<string>();\n\n let withDefaults = contents;\n\n // Add DATABASE_URL if not present\n if (!contents.includes(\"DATABASE_URL\")) {\n withDefaults += \"\\nDATABASE_URL=your-connection-string-here\";\n }\n\n const updatedEnv = withDefaults\n .split(\"\\n\")\n .map((line) => {\n if (line.startsWith(\"#\") || !line.includes(\"=\")) {\n return line;\n }\n\n const [key] = line.split(\"=\");\n\n if (!key) {\n return;\n }\n\n if (key === \"DATABASE_URL\") {\n const placeholderUri =\n databaseUri || \"postgresql://localhost:5432/your-database-name\";\n line = `DATABASE_URL=${placeholderUri}`;\n }\n\n // Handle duplicates\n if (seenKeys.has(key)) {\n return null;\n }\n\n seenKeys.add(key);\n\n return line;\n })\n .filter(Boolean)\n .join(\"\\n\");\n\n return updatedEnv;\n};\n\nconst APP_PATHS = [\n { path: \"packages/api\" },\n { path: \"apps/vendor\" },\n { path: \"apps/admin\" },\n];\n\nexport async function manageEnvFiles({\n projectDir,\n databaseUri,\n}: {\n projectDir: string;\n databaseUri?: string;\n}): Promise<void> {\n try {\n await Promise.all(\n APP_PATHS.map(async ({ path: appPath }) => {\n const appDir = path.join(projectDir, appPath);\n\n if (!fs.existsSync(appDir)) {\n return;\n }\n\n const envTemplatePath = path.join(appDir, \".env.template\");\n const envPath = path.join(appDir, \".env\");\n\n const isApi = appPath.includes(\"api\");\n // if not API, just copy the .env.template file\n if (!isApi) {\n if (fs.existsSync(envTemplatePath) && !fs.existsSync(envPath)) {\n await fs.copy(envTemplatePath, envPath);\n }\n return;\n }\n\n let templateEnv = \"\";\n\n if (fs.existsSync(envTemplatePath)) {\n const envTemplateContents = await fs.readFile(\n envTemplatePath,\n \"utf8\"\n );\n templateEnv = sanitizeEnv({\n contents: envTemplateContents,\n databaseUri,\n });\n }\n\n if (!fs.existsSync(envPath)) {\n const envContent = sanitizeEnv({\n contents: templateEnv,\n databaseUri,\n });\n await fs.writeFile(envPath, envContent);\n } else {\n const envContents = await fs.readFile(envPath, \"utf8\");\n const updatedEnvContents = sanitizeEnv({\n contents: envContents,\n databaseUri,\n });\n await fs.writeFile(envPath, updatedEnvContents);\n }\n })\n );\n } catch (err: unknown) {\n logger.error(\"Unable to manage environment files\");\n if (err instanceof Error) {\n logger.error(err.message);\n }\n process.exit(1);\n }\n}\n","import { getPackageManager } from \"@/src/utils/get-package-manager\";\nimport { logger } from \"@/src/utils/logger\";\nimport { manageEnvFiles } from \"@/src/utils/manage-env-files\";\nimport { spinner } from \"@/src/utils/spinner\";\nimport { execa } from \"execa\";\nimport type { Ora } from \"ora\";\nimport path from \"path\";\nimport pg from \"pg\";\nimport prompts from \"prompts\";\n\nconst DEFAULT_DB_HOST = \"localhost\";\nconst DEFAULT_DB_PORT = 5432;\nconst API_DIR = \"packages/api\";\nconst ADMIN_EMAIL = \"admin@mercur-test.com\";\n\ninterface DbSetupArgs {\n projectDir: string;\n spinner?: Ora;\n}\n\nexport interface SetupDatabaseResult {\n success: boolean;\n dbName: string;\n connectionString: string | null;\n alreadyExists?: boolean;\n inviteToken?: string | null;\n}\n\nexport async function setupDatabase(args: {\n projectDir: string;\n projectName: string;\n dbConnectionString?: string;\n spinner?: Ora;\n}): Promise<SetupDatabaseResult> {\n const dbName = args.projectName.replace(/[^a-zA-Z0-9]/g, \"-\");\n\n const { client, dbConnectionString } = await getDbClient({\n dbConnectionString: args.dbConnectionString,\n spinner: args.spinner,\n });\n\n if (!client || !dbConnectionString) {\n return { success: false, dbName, connectionString: null };\n }\n\n try {\n if (args.spinner) {\n args.spinner.text = \"Checking if database exists...\";\n }\n const exists = await doesDbExist(client, dbName);\n\n if (exists) {\n await client.end();\n return runPostDbSetup({\n ...args,\n dbName,\n connectionString: dbConnectionString,\n alreadyExists: true,\n });\n }\n\n if (args.spinner) {\n args.spinner.text = `Creating database \"${dbName}\"...`;\n }\n await client.query(`CREATE DATABASE \"${dbName}\"`);\n await client.end();\n\n return runPostDbSetup({\n ...args,\n dbName,\n connectionString: dbConnectionString,\n alreadyExists: false,\n });\n } catch (err) {\n logger.error(\n `Error creating database${err instanceof Error ? `: ${err.message}` : \"\"}.`\n );\n await client.end().catch(() => {});\n return { success: false, dbName, connectionString: null };\n }\n}\n\nasync function runPostDbSetup(args: DbSetupArgs & {\n dbName: string;\n connectionString: string;\n alreadyExists: boolean;\n}): Promise<SetupDatabaseResult> {\n const { projectDir, spinner, dbName, connectionString, alreadyExists } = args;\n\n // Medusa needs DATABASE_URL in .env before running migrations\n await manageEnvFiles({\n projectDir,\n databaseUri: connectionString,\n });\n\n const migrated = await runMigrations({ projectDir, spinner });\n if (!migrated) {\n return { success: false, dbName, connectionString: null };\n }\n\n const seeded = await seedDatabase({ projectDir });\n if (!seeded) {\n return { success: false, dbName, connectionString: null };\n }\n\n const inviteToken = await createAdminInvite({ projectDir });\n\n return {\n success: true,\n dbName,\n connectionString,\n alreadyExists,\n inviteToken,\n };\n}\n\ninterface DbClientResult {\n client: pg.Client | null;\n dbConnectionString: string | null;\n}\n\nasync function getDbClient({\n dbConnectionString,\n spinner: spinnerRef,\n}: {\n dbConnectionString?: string;\n spinner?: Ora;\n}): Promise<DbClientResult> {\n if (dbConnectionString) {\n try {\n const client = new pg.Client({ connectionString: dbConnectionString });\n await client.connect();\n return { client, dbConnectionString };\n } catch (error) {\n logger.error(\n `Invalid database connection string${error instanceof Error ? `: ${error.message}` : \"\"}.`\n );\n return { client: null, dbConnectionString: null };\n }\n }\n\n let postgresUsername = \"postgres\";\n let postgresPassword = \"\";\n\n try {\n const defaultCredentials = {\n user: postgresUsername,\n password: postgresPassword,\n host: DEFAULT_DB_HOST,\n port: DEFAULT_DB_PORT,\n db: \"postgres\",\n };\n\n const client = new pg.Client(defaultCredentials);\n await client.connect();\n return {\n client,\n dbConnectionString: formatConnectionString(defaultCredentials),\n };\n } catch {\n spinnerRef?.stop();\n\n const answers = await prompts([\n {\n type: \"text\",\n name: \"postgresUsername\",\n message: \"Enter your Postgres username\",\n initial: \"postgres\",\n },\n {\n type: \"password\",\n name: \"postgresPassword\",\n message: \"Enter your Postgres password\",\n },\n ]);\n\n if (!answers.postgresUsername) {\n return { client: null, dbConnectionString: null };\n }\n\n postgresUsername = answers.postgresUsername;\n postgresPassword = answers.postgresPassword || \"\";\n\n spinnerRef?.start(\"Connecting to database...\");\n\n try {\n const client = new pg.Client({\n user: postgresUsername,\n password: postgresPassword,\n host: DEFAULT_DB_HOST,\n port: DEFAULT_DB_PORT,\n database: postgresUsername,\n });\n await client.connect();\n return {\n client,\n dbConnectionString: formatConnectionString({\n user: postgresUsername,\n password: postgresPassword,\n host: DEFAULT_DB_HOST,\n port: DEFAULT_DB_PORT,\n db: postgresUsername,\n }),\n };\n } catch (err) {\n logger.error(\n `Couldn't connect to PostgreSQL${err instanceof Error ? `: ${err.message}` : \"\"}.`\n );\n return { client: null, dbConnectionString: null };\n }\n }\n}\n\nasync function doesDbExist(\n client: pg.Client,\n dbName: string\n): Promise<boolean> {\n const result = await client.query(\n `SELECT datname FROM pg_catalog.pg_database WHERE datname='${dbName}';`\n );\n return (result.rowCount ?? 0) > 0;\n}\n\nfunction formatConnectionString({\n user,\n password,\n host,\n port = DEFAULT_DB_PORT,\n db,\n}: {\n user: string;\n password: string;\n host: string;\n port?: number;\n db: string;\n}): string {\n const encodedPassword = encodeURIComponent(password);\n return `postgresql://${user}:${encodedPassword}@${host}:${port}/${db}`;\n}\n\nasync function runMigrations({ projectDir, spinner: parentSpinner }: DbSetupArgs): Promise<boolean> {\n const apiDir = path.join(projectDir, API_DIR);\n const migrationSpinner = parentSpinner || spinner(\"Running migrations...\").start();\n\n try {\n // Build first - compiles TypeScript so ts-node is not needed\n migrationSpinner.text = \"Building project...\";\n await execa(\"npm\", [\"run\", \"build\"], { cwd: apiDir });\n\n migrationSpinner.text = \"Running database migrations...\";\n await execa(\"npx\", [\"medusa\", \"db:migrate\"], { cwd: apiDir });\n\n if (!parentSpinner) {\n migrationSpinner.succeed(\"Migrations completed successfully.\");\n }\n return true;\n } catch (err) {\n migrationSpinner.fail(\"Failed to run migrations.\");\n logger.error(\n `Error running migrations${err instanceof Error ? `: ${err.message}` : \"\"}.`\n );\n return false;\n }\n}\n\nasync function createAdminInvite({ projectDir }: { projectDir: string }): Promise<string | null> {\n const apiDir = path.join(projectDir, API_DIR);\n\n try {\n const result = await execa(\"npx\", [\"medusa\", \"user\", \"-e\", ADMIN_EMAIL, \"--invite\"], {\n cwd: apiDir,\n });\n\n // Parse token from stdout - same approach as Medusa CLI\n const match = result.stdout.match(/Invite token: (?<token>.+)/);\n return match?.groups?.token || null;\n } catch (err) {\n logger.error(\n `Error creating admin invite${err instanceof Error ? `: ${err.message}` : \"\"}.`\n );\n return null;\n }\n}\n\nasync function seedDatabase({ projectDir }: { projectDir: string }): Promise<boolean> {\n const apiDir = path.join(projectDir, API_DIR);\n const packageManager = await getPackageManager(apiDir);\n const seedSpinner = spinner(\"Seeding database...\").start();\n\n try {\n const seedCmd = packageManager === \"yarn\"\n ? [\"yarn\", \"seed\"]\n : packageManager === \"pnpm\"\n ? [\"pnpm\", \"run\", \"seed\"]\n : packageManager === \"bun\"\n ? [\"bun\", \"run\", \"seed\"]\n : [\"npm\", \"run\", \"seed\"];\n\n await execa(seedCmd[0], seedCmd.slice(1), { cwd: apiDir });\n\n seedSpinner.succeed(\"Database seeded successfully.\");\n return true;\n } catch (err) {\n seedSpinner.fail(\"Failed to seed database.\");\n logger.error(\n `Error seeding database${err instanceof Error ? `: ${err.message}` : \"\"}.`\n );\n return false;\n }\n}\n","import { exec } from \"node:child_process\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream/promises\";\nimport path from \"path\";\n\nimport { clearRegistryContext } from \"@/src/registry/context\";\nimport { sendTelemetryEvent, setTelemetryEmail } from \"@/src/telemetry\";\nimport { setupDatabase, type SetupDatabaseResult } from \"@/src/utils/create-db\";\nimport { getPackageManager } from \"@/src/utils/get-package-manager\";\nimport { handleError } from \"@/src/utils/handle-error\";\nimport { highlighter } from \"@/src/utils/highlighter\";\nimport { logger } from \"@/src/utils/logger\";\nimport { manageEnvFiles } from \"@/src/utils/manage-env-files\";\nimport { spinner } from \"@/src/utils/spinner\";\nimport { Command } from \"commander\";\nimport { execa } from \"execa\";\nimport fs from \"fs-extra\";\nimport kleur from \"kleur\";\nimport open from \"open\";\nimport prompts from \"prompts\";\nimport { x } from \"tar\";\nimport terminalLink from \"terminal-link\";\nimport validateProjectName from \"validate-npm-package-name\";\nimport waitOn from \"wait-on\";\n\n// todo: change to main after new release\nconst DEFAULT_BRANCH = \"new\";\nconst MIN_SUPPORTED_NODE_VERSION = 20;\n\nconst CREATE_TEMPLATES = {\n basic: \"basic\",\n registry: \"registry\",\n} as const;\n\nexport const create = new Command()\n .name(\"create\")\n .description(\"create a new Mercur project\")\n .argument(\"[name]\", \"the name of your project\")\n .option(\n \"-t, --template <template>\",\n \"the template to use. e.g. basic or registry\"\n )\n .option(\n \"-c, --cwd <cwd>\",\n \"the working directory. defaults to the current directory.\",\n process.cwd()\n )\n .option(\"--no-deps\", \"skip installing dependencies.\")\n .option(\"--skip-db\", \"skip database configuration.\", false)\n .option(\"--skip-email\", \"skip email prompt.\", false)\n .option(\"--db-connection-string <string>\", \"PostgreSQL connection string.\")\n .action(async (name, opts) => {\n try {\n validateNodeVersion();\n\n let projectName = name;\n if (!projectName) {\n const { enteredName } = await prompts({\n type: \"text\",\n name: \"enteredName\",\n message: \"What is your project named?\",\n initial: opts.template ? `${opts.template}-app` : \"my-mercur\",\n format: (value: string) => value.trim(),\n validate: (name) => {\n const validation = validateProjectName(\n path.basename(path.resolve(name))\n );\n if (validation.validForNewPackages) {\n return true;\n }\n return \"Invalid project name. Name should be lowercase, URL-friendly, and not start with a period or underscore.\";\n },\n });\n\n if (!enteredName) {\n process.exit(0);\n }\n\n projectName = enteredName;\n\n let template = opts.template;\n if (!template) {\n const { selectedTemplate } = await prompts({\n type: \"select\",\n name: \"selectedTemplate\",\n message: `Which ${highlighter.info(\n \"template\"\n )} would you like to use?`,\n choices: Object.entries(CREATE_TEMPLATES).map(([key, value]) => ({\n title: value,\n value: key,\n })),\n });\n\n if (!selectedTemplate) {\n process.exit(0);\n }\n\n template = selectedTemplate;\n }\n\n const projectDir = path.resolve(opts.cwd, projectName);\n\n await createOrFindProjectDir(projectDir);\n\n const downloadSpinner = spinner(\"Downloading template...\").start();\n await downloadTemplate({\n projectDir,\n template: template,\n });\n downloadSpinner.succeed(\"Template downloaded successfully.\");\n\n const packageManager = await getPackageManager(projectDir);\n\n if (!opts.deps) {\n spinner(\"Dependency installation skipped.\").warn();\n } else {\n const initialInstallSpinner = spinner(\"Installing dependencies...\").start();\n const installStart = Date.now();\n const result = await installDeps({\n projectDir,\n packageManager,\n });\n const installDuration = ((Date.now() - installStart) / 1000).toFixed(1);\n if (result) {\n initialInstallSpinner.succeed(`Dependencies installed successfully in ${installDuration}s.`);\n } else {\n initialInstallSpinner.fail(`Failed to install dependencies`);\n await sendTelemetryEvent({\n type: 'create',\n payload: {\n outcome: 'dependency_installation_failed',\n packageManager,\n }\n }, {\n cwd: projectDir,\n })\n process.exit(1);\n }\n }\n\n let dbConnectionString: string | undefined = opts.dbConnectionString;\n let dbResult: SetupDatabaseResult | undefined;\n\n if (!opts.skipDb) {\n const dbSpinner = spinner(\"Setting up database...\").start();\n dbResult = await setupDatabase({\n projectDir,\n projectName,\n dbConnectionString,\n spinner: dbSpinner,\n });\n\n if (dbResult.success) {\n if (dbResult.alreadyExists) {\n dbSpinner.warn(\n `Database ${highlighter.info(dbResult.dbName)} already exists. Skipping database creation.`\n );\n } else {\n dbSpinner.succeed(\n `Database ${highlighter.info(dbResult.dbName)} setup successfully.`\n );\n }\n dbConnectionString = dbResult.connectionString!;\n } else {\n dbSpinner.fail(\"Failed to setup database.\");\n logger.log(feedbackOutro());\n await sendTelemetryEvent({\n type: 'create',\n payload: {\n outcome: 'database_setup_failed',\n }\n }, { cwd: projectDir });\n process.exit(1);\n }\n } else {\n spinner(\"Database setup skipped.\").warn();\n }\n\n if (!opts.skipEmail) {\n const { wantsEmail } = await prompts({\n type: \"confirm\",\n name: \"wantsEmail\",\n message: \"Mind sharing your email? We reach out for priority support, community events, and invite-only meetups. We never spam.\",\n initial: false,\n });\n\n if (wantsEmail) {\n const { email } = await prompts({\n type: \"text\",\n name: \"email\",\n message: \"Enter your email:\",\n format: (value: string) => value.trim(),\n });\n\n if (email) {\n setTelemetryEmail(email);\n }\n }\n }\n\n await manageEnvFiles({\n projectDir,\n databaseUri: dbConnectionString,\n });\n\n await initGit(projectDir);\n\n await sendTelemetryEvent({\n type: 'create',\n payload: {\n outcome: 'created'\n }\n }, {\n cwd: projectDir,\n });\n\n spinner(\"Mercur project successfully created!\").succeed();\n\n if (dbResult?.success) {\n spinner(\"Starting development server...\").info();\n\n const apiDir = path.join(projectDir, \"packages\", \"api\");\n const inviteUrl = dbResult.inviteToken\n ? `http://localhost:9000/app/invite?token=${dbResult.inviteToken}&first_run=true`\n : \"http://localhost:9000/app\";\n\n const serverProcess = exec(`${packageManager === \"npm\" ? \"npm run\" : packageManager} dev`, {\n cwd: apiDir,\n env: process.env,\n });\n\n serverProcess.stdout?.pipe(process.stdout);\n serverProcess.stderr?.pipe(process.stderr);\n\n waitOn({\n resources: [\"http://localhost:9000/health\"],\n timeout: 60000,\n }).then(async () => {\n try {\n await open(inviteUrl);\n } catch {\n spinner(\"Open this URL in your browser to create your admin account:\").info();\n logger.log(highlighter.info(inviteUrl));\n }\n }).catch(() => {\n spinner(\"To create your admin account, visit:\").info();\n logger.log(highlighter.info(inviteUrl));\n });\n } else {\n logger.log(kleur.bgGreen(kleur.black(\" Next Steps \")));\n logger.log(successMessage(projectDir, packageManager));\n logger.log(feedbackOutro());\n logger.break();\n }\n }\n } catch (error) {\n logger.break();\n handleError(error);\n } finally {\n clearRegistryContext();\n }\n });\n\nasync function createOrFindProjectDir(projectDir: string): Promise<void> {\n const pathExists = await fs.pathExists(projectDir);\n if (!pathExists) {\n await fs.mkdir(projectDir);\n }\n}\n\nasync function downloadTemplate({\n projectDir,\n template,\n}: {\n projectDir: string;\n template: keyof typeof CREATE_TEMPLATES;\n}) {\n const url = `https://codeload.github.com/mercurjs/mercur/tar.gz/${DEFAULT_BRANCH}`;\n const templatePath = CREATE_TEMPLATES[template];\n const filter = `mercur-${DEFAULT_BRANCH.replace(/^v/, \"\").replaceAll(\"/\", \"-\")}/templates/${templatePath}/`;\n\n await pipeline(\n await downloadTarStream(url),\n x({\n cwd: projectDir,\n filter: (p) => p.includes(filter),\n strip: 2 + templatePath.split(\"/\").length,\n })\n );\n}\n\nasync function downloadTarStream(url: string) {\n const res = await fetch(url);\n\n if (!res.body) {\n throw new Error(`Failed to download: ${url}`);\n }\n\n return Readable.from(res.body as unknown as NodeJS.ReadableStream);\n}\n\nasync function installDeps({\n projectDir,\n packageManager,\n}: {\n projectDir: string;\n packageManager: Awaited<ReturnType<typeof getPackageManager>>;\n}): Promise<boolean> {\n let cmd = \"npm\";\n let args = [\"install\"];\n\n if (packageManager === \"yarn\") {\n cmd = \"yarn\";\n args = [];\n } else if (packageManager === \"pnpm\") {\n cmd = \"pnpm\";\n args = [\"install\"];\n } else if (packageManager === \"bun\") {\n cmd = \"bun\";\n args = [\"install\"];\n }\n\n try {\n await execa(cmd, args, {\n cwd: path.resolve(projectDir),\n stdin: \"inherit\",\n stdout: \"inherit\",\n stderr: \"inherit\",\n env: { ...process.env, npm_config_yes: \"true\" },\n });\n return true;\n } catch (err: unknown) {\n logger.error(\n `Error installing dependencies${err instanceof Error ? `: ${err.message}` : \"\"}.`\n );\n return false;\n }\n}\n\nfunction successMessage(\n projectDir: string,\n packageManager: Awaited<ReturnType<typeof getPackageManager>>\n): string {\n const relativePath = path.relative(process.cwd(), projectDir);\n const header = (message: string) => kleur.bold(message);\n\n // todo: make sure the links are correct\n return `\n${header(\"Launch Application:\")}\n\n - cd ./${relativePath}\n - ${packageManager === \"npm\" ? \"npm run\" : packageManager} dev\n\n${header(\"Documentation:\")}\n\n - ${createTerminalLink(\"Getting Started\", \"https://mercurjs.com/docs/getting-started\")}\n - ${createTerminalLink(\"Configuration\", \"https://mercurjs.com/docs/configuration\")}\n`;\n}\n\nfunction feedbackOutro(): string {\n return `${kleur.bgCyan(kleur.black(\" Have feedback? \"))} Visit us on ${createTerminalLink(\"GitHub\", \"https://github.com/mercurjs/mercur\")}.`;\n}\n\nfunction createTerminalLink(text: string, url: string) {\n return terminalLink(text, url, {\n fallback: (text, url) => `${text}: ${kleur.cyan().underline(url)}`,\n });\n}\n\nasync function initGit(projectDir: string): Promise<void> {\n try {\n await execa(\"git\", [\"init\"], { cwd: projectDir });\n logger.info(\"Initialized a git repository.\");\n } catch {\n throw new Error(\"Failed to initialize git repository.\");\n }\n}\n\nfunction getNodeVersion(): number {\n const [major] = process.versions.node.split(\".\").map(Number);\n return major;\n}\n\nfunction validateNodeVersion(): void {\n const nodeVersion = getNodeVersion();\n if (nodeVersion < MIN_SUPPORTED_NODE_VERSION) {\n throw new Error(\n `Mercur requires at least v${MIN_SUPPORTED_NODE_VERSION} of Node.js. You're using v${nodeVersion}. Please install at least v${MIN_SUPPORTED_NODE_VERSION} and try again: https://nodejs.org/en/download`\n );\n }\n}\n\n","import type { Config } from \"../schema\";\nimport { buildUrlAndHeadersForRegistryBlock } from \"./builder\";\nimport { configWithDefaults } from \"./config\";\nimport { clearRegistryContext } from \"./context\";\nimport {\n RegistryInvalidNamespaceError,\n RegistryNotFoundError,\n RegistryParseError,\n} from \"./errors\";\nimport { fetchRegistry } from \"./fetcher\";\nimport { fetchRegistryBlocks, resolveRegistryTree } from \"./resolver\";\nimport { registrySchema } from \"./schema\";\nimport { isUrl } from \"./utils\";\n\nexport async function getRegistry(\n name: string,\n options?: {\n config?: Partial<Config>;\n }\n) {\n const { config } = options || {};\n\n if (isUrl(name)) {\n const [result] = await fetchRegistry([name]);\n try {\n return registrySchema.parse(result);\n } catch (error) {\n throw new RegistryParseError(name, error);\n }\n }\n\n if (!name.startsWith(\"@\")) {\n throw new RegistryInvalidNamespaceError(name);\n }\n\n let registryName = name;\n if (!registryName.endsWith(\"/registry\")) {\n registryName = `${registryName}/registry`;\n }\n\n const urlAndHeaders = buildUrlAndHeadersForRegistryBlock(\n registryName as `@${string}`,\n configWithDefaults(config)\n );\n\n if (!urlAndHeaders?.url) {\n throw new RegistryNotFoundError(registryName);\n }\n\n const [result] = await fetchRegistry([urlAndHeaders.url]);\n\n try {\n return registrySchema.parse(result);\n } catch (error) {\n throw new RegistryParseError(registryName, error);\n }\n}\n\nexport async function getRegistryBlocks(\n blocks: string[],\n options?: {\n config?: Partial<Config>;\n }\n) {\n const { config } = options || {};\n\n clearRegistryContext();\n\n return fetchRegistryBlocks(blocks, configWithDefaults(config));\n}\n\nexport async function resolveRegistryBlocks(\n blocks: string[],\n options?: {\n config?: Partial<Config>;\n }\n) {\n const { config } = options || {};\n\n clearRegistryContext();\n return resolveRegistryTree(blocks, configWithDefaults(config));\n}\n","import { Command } from \"commander\";\nimport { type Change, diffLines } from \"diff\";\nimport { existsSync, promises as fs } from \"fs\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { getRegistryBlocks } from \"../registry/api\";\nimport { clearRegistryContext } from \"../registry/context\";\nimport { createConfig, getConfig } from \"../utils/get-config\";\nimport { handleError } from \"../utils/handle-error\";\nimport { highlighter } from \"../utils/highlighter\";\nimport { logger } from \"../utils/logger\";\nimport { transformImports } from \"../utils/transform-import\";\nimport { resolveFilePath } from \"../utils/file-type\";\nimport { getProjectInfo } from \"../utils/get-project-info\";\n\nconst diffOptionsSchema = z.object({\n blocks: z.array(z.string()).optional(),\n cwd: z.string(),\n});\n\nexport const diff = new Command()\n .name(\"diff\")\n .description(\"check for updates against the registry\")\n .argument(\"[blocks...]\", \"the block names to diff\")\n .option(\n \"-c, --cwd <cwd>\",\n \"the working directory. defaults to the current directory.\",\n process.cwd()\n )\n .action(async (name, opts) => {\n try {\n const options = diffOptionsSchema.parse({\n blocks: name,\n cwd: path.resolve(opts.cwd),\n type: opts.type,\n });\n\n let config = await getConfig(options.cwd);\n if (!config) {\n config = createConfig({\n resolvedPaths: {\n cwd: options.cwd,\n },\n });\n }\n\n if (!options.blocks?.length) {\n logger.error(\"Please specify at least one block to diff.\");\n process.exit(1);\n }\n\n const blocks = await getRegistryBlocks(options.blocks, {\n config,\n });\n\n const missingBlocks = options.blocks.filter(\n (block) => !blocks.some((b) => b.name === block)\n );\n\n if (missingBlocks.length > 0) {\n logger.error(\n `Blocks ${missingBlocks.join(\", \")} not found in registry.`\n );\n process.exit(1);\n }\n\n const projectInfo = await getProjectInfo(config.resolvedPaths.cwd);\n\n for (const block of blocks) {\n for (const file of block.files) {\n const filePath = resolveFilePath(file, config, {\n isSrcDir: projectInfo?.isSrcDir ?? false,\n path: options.cwd\n });\n\n if (!existsSync(filePath)) {\n logger.info(`File ${filePath} does not exist locally.`);\n continue;\n }\n\n const localContent = await fs.readFile(filePath, \"utf-8\");\n const transformedContent = await transformImports({\n filename: file.path,\n raw: file.content!,\n config,\n isRemote: false,\n });\n\n const diff = diffLines(localContent, transformedContent);\n if (diff.length > 1) {\n logger.info(`\\nFile: ${highlighter.info(file.path)}`);\n printDiff(diff);\n }\n }\n }\n } catch (error) {\n handleError(error);\n } finally {\n clearRegistryContext();\n }\n });\n\nfunction printDiff(diff: Change[]) {\n for (const part of diff) {\n if (part) {\n if (part.added) {\n process.stdout.write(highlighter.success(part.value));\n } else if (part.removed) {\n process.stdout.write(highlighter.error(part.value));\n } else {\n process.stdout.write(part.value);\n }\n }\n }\n}\n","import { getConfig } from \"@/src/utils/get-config\";\nimport { getProjectInfo } from \"@/src/utils/get-project-info\";\nimport { handleError } from \"@/src/utils/handle-error\";\nimport { logger } from \"@/src/utils/logger\";\nimport { Command } from \"commander\";\n\nexport const info = new Command()\n .name(\"info\")\n .description(\"get information about your project\")\n .option(\n \"-c, --cwd <cwd>\",\n \"the working directory. defaults to the current directory.\",\n process.cwd()\n )\n .action(async (opts) => {\n try {\n logger.info(\"> project info\");\n console.log(await getProjectInfo(opts.cwd));\n logger.break();\n logger.info(\"> blocks.json\");\n console.log(await getConfig(opts.cwd));\n } catch (error) {\n handleError(error);\n }\n });\n","import { Command } from \"commander\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { clearRegistryContext } from \"../registry/context\";\nimport { createConfig, getConfig } from \"../utils/get-config\";\nimport { handleError } from \"../utils/handle-error\";\nimport { getRegistry } from \"../registry/api\";\n\nconst searchOptionsSchema = z.object({\n cwd: z.string(),\n query: z.string().optional(),\n registry: z.string().optional(),\n});\n\nexport const search = new Command()\n .name(\"search\")\n .description(\"search blocks from registries\")\n .option(\n \"-c, --cwd <cwd>\",\n \"the working directory. defaults to the current directory.\",\n process.cwd()\n )\n .option(\"-q, --query <query>\", \"query string\")\n .option(\n \"-r, --registry <registry>\",\n \"the registry to search from (default: @mercurjs)\",\n \"@mercurjs\"\n )\n .action(async (opts) => {\n try {\n const options = searchOptionsSchema.parse({\n cwd: path.resolve(opts.cwd),\n query: opts.query,\n type: opts.type,\n registry: opts.registry,\n });\n\n let config = await getConfig(options.cwd);\n if (!config) {\n config = createConfig({\n resolvedPaths: {\n cwd: options.cwd,\n },\n });\n }\n\n const registry = await getRegistry(options.registry ?? \"@mercurjs\", {\n config,\n });\n\n let items = registry.items;\n if (options.query) {\n const query = options.query.toLowerCase();\n items = items.filter(\n (item) =>\n item.name.toLowerCase().includes(query) ||\n item.description?.toLowerCase().includes(query)\n );\n }\n\n console.log(JSON.stringify(items, null, 2));\n process.exit(0);\n } catch (error) {\n handleError(error);\n } finally {\n clearRegistryContext();\n }\n });\n","import { toggleTelemetry } from \"@/src/telemetry\";\nimport { handleError } from \"@/src/utils/handle-error\";\nimport { logger } from \"@/src/utils/logger\";\nimport { Command } from \"commander\";\n\nexport const telemetry = new Command()\n .name(\"telemetry\")\n .description(\n \"enable or disable the collection of anonymous usage data. If no option is provided, the command enables the collection of anonymous usage data.\"\n )\n .option(\"--enable\", \"enable telemetry (default)\")\n .option(\"--disable\", \"disable telemetry\")\n .action(async (opts) => {\n try {\n const enabled = !opts.disable;\n toggleTelemetry(enabled);\n\n if (enabled) {\n logger.success(\"Telemetry enabled.\");\n } else {\n logger.success(\"Telemetry disabled.\");\n }\n } catch (error) {\n handleError(error);\n }\n });\n","import { Command } from \"commander\";\nimport path from \"path\";\nimport { z } from \"zod\";\nimport { getRegistryBlocks } from \"../registry/api\";\nimport { clearRegistryContext } from \"../registry/context\";\nimport { createConfig, getConfig } from \"../utils/get-config\";\nimport { handleError } from \"../utils/handle-error\";\n\nconst viewOptionsSchema = z.object({\n cwd: z.string(),\n});\n\nexport const view = new Command()\n .name(\"view\")\n .description(\"view block details from the registry\")\n .argument(\"<blocks...>\", \"the block names to view\")\n .option(\n \"-c, --cwd <cwd>\",\n \"the working directory. defaults to the current directory.\",\n process.cwd()\n )\n .action(async (items: string[], opts) => {\n try {\n const options = viewOptionsSchema.parse({\n cwd: path.resolve(opts.cwd),\n type: opts.type,\n });\n\n let config = await getConfig(options.cwd);\n if (!config) {\n config = createConfig({\n resolvedPaths: {\n cwd: options.cwd,\n },\n });\n }\n\n const payload = await getRegistryBlocks(items, {\n config,\n });\n console.log(JSON.stringify(payload, null, 2));\n process.exit(0);\n } catch (error) {\n handleError(error);\n } finally {\n clearRegistryContext();\n }\n });\n","#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport packageJson from \"../package.json\";\nimport { add } from \"./commands/add\";\nimport { registryBuild } from \"./commands/registry-build\";\nimport { registryCodegen } from \"./commands/registry-codegen\";\nimport { codegen } from \"./commands/codegen\";\nimport { create } from \"./commands/create\";\nimport { diff } from \"./commands/diff\";\nimport { info } from \"./commands/info\";\nimport { init } from \"./commands/init\";\nimport { search } from \"./commands/search\";\nimport { telemetry } from \"./commands/telemetry\";\nimport { view } from \"./commands/view\";\n\nprocess.on(\"SIGINT\", () => process.exit(0));\nprocess.on(\"SIGTERM\", () => process.exit(0));\n\nasync function main() {\n const program = new Command()\n .name(\"@mercurjs/cli\")\n .description(\"Add blocks from registries to your project\")\n .version(\n packageJson.version || \"0.0.0\",\n \"-v, --version\",\n \"display the version number\"\n );\n\n program\n .addCommand(add)\n .addCommand(registryBuild)\n .addCommand(registryCodegen)\n .addCommand(codegen)\n .addCommand(create)\n .addCommand(diff)\n .addCommand(info)\n .addCommand(init)\n .addCommand(search)\n .addCommand(telemetry)\n .addCommand(view);\n\n program.parse();\n}\n\nmain();\n\nexport * from './registry/schema'"]}
|