{"version":3,"sources":["../../src/sveltekit/index.ts","../../src/bin/check-proxy.ts","../../src/config/microfrontends/server/index.ts","../../src/config/overrides/constants.ts","../../src/config/overrides/is-override-cookie.ts","../../src/config/overrides/get-override-from-cookie.ts","../../src/config/overrides/parse-overrides.ts","../../src/config/errors.ts","../../src/config/microfrontends-config/utils/get-config-from-env.ts","../../src/config/schema/utils/is-default-app.ts","../../src/config/microfrontends/utils/find-repository-root.ts","../../src/config/microfrontends/utils/find-default-package.ts","../../src/config/constants.ts","../../src/config/microfrontends/utils/is-monorepo.ts","../../src/config/microfrontends/utils/find-package-root.ts","../../src/config/microfrontends/utils/find-config.ts","../../src/config/microfrontends-config/isomorphic/index.ts","../../src/config/microfrontends-config/client/index.ts","../../src/config/microfrontends-config/isomorphic/validation.ts","../../src/config/microfrontends-config/isomorphic/utils/generate-asset-prefix.ts","../../src/config/microfrontends-config/isomorphic/utils/generate-port.ts","../../src/config/microfrontends-config/isomorphic/host.ts","../../src/config/microfrontends-config/isomorphic/utils/generate-automation-bypass-env-var-name.ts","../../src/config/microfrontends-config/isomorphic/application.ts","../../src/config/microfrontends-config/isomorphic/constants.ts","../../src/config/microfrontends/utils/get-application-context.ts","../../src/config/microfrontends/server/utils/get-output-file-path.ts","../../src/config/microfrontends/server/constants.ts","../../src/config/microfrontends/server/validation.ts","../../schema/schema.json","../../src/config/schema/utils/load.ts","../../src/sveltekit/config/index.ts"],"sourcesContent":["export { withMicrofrontends } from './config';\n","export function displayLocalProxyInfo(port: number): void {\n  // TODO(olszewski): this is really icky, but since withMicroFrontends is called by two separate processes\n  // we can't rely on some shared state so we instead use env to store state\n  const { MFE_PROXY_MESSAGE_PRINTED, TURBO_TASK_HAS_MFE_PROXY } = process.env;\n  if (\n    TURBO_TASK_HAS_MFE_PROXY === 'true' &&\n    MFE_PROXY_MESSAGE_PRINTED !== 'true'\n  ) {\n    process.env.MFE_PROXY_MESSAGE_PRINTED = 'true';\n    // eslint-disable-next-line no-console\n    console.log(`Microfrontends Proxy running on http://localhost:${port}`);\n  }\n}\n","import fs from 'node:fs';\nimport { dirname } from 'node:path';\nimport type { Config } from '../../schema/types';\nimport { parseOverrides } from '../../overrides';\nimport type { OverridesConfig } from '../../overrides';\nimport { getConfigStringFromEnv } from '../../microfrontends-config/utils/get-config-from-env';\nimport { MicrofrontendError } from '../../errors';\nimport { isDefaultApp } from '../../schema/utils/is-default-app';\nimport { findRepositoryRoot } from '../utils/find-repository-root';\nimport { findDefaultMicrofrontendsPackage } from '../utils/find-default-package';\nimport { isMonorepo as isRepositoryMonorepo } from '../utils/is-monorepo';\nimport { findPackageRoot } from '../utils/find-package-root';\nimport { findConfig } from '../utils/find-config';\nimport { MicrofrontendConfigIsomorphic } from '../../microfrontends-config/isomorphic';\nimport { getApplicationContext } from '../utils/get-application-context';\nimport { getOutputFilePath } from './utils/get-output-file-path';\nimport { validateSchema } from './validation';\n\nexport class MicrofrontendsServer {\n  config: MicrofrontendConfigIsomorphic;\n\n  constructor({\n    config,\n    overrides,\n  }: {\n    config: Config;\n    overrides?: OverridesConfig;\n  }) {\n    this.config = new MicrofrontendConfigIsomorphic({ config, overrides });\n  }\n\n  /**\n   * Writes the configuration to a file.\n   */\n  writeConfig(\n    opts: {\n      pretty?: boolean;\n    } = {\n      pretty: true,\n    },\n  ): void {\n    const outputPath = getOutputFilePath();\n\n    // ensure the directory exists\n    fs.mkdirSync(dirname(outputPath), { recursive: true });\n    fs.writeFileSync(\n      outputPath,\n      JSON.stringify(\n        this.config.toSchemaJson(),\n        null,\n        (opts.pretty ?? true) ? 2 : undefined,\n      ),\n    );\n  }\n\n  // --------- Static Methods ---------\n\n  /**\n   * Generates a MicrofrontendsServer instance from an unknown object.\n   */\n  static fromUnknown({\n    config,\n    cookies,\n  }: {\n    config: unknown;\n    cookies?: { name: string; value: string }[];\n  }): MicrofrontendsServer {\n    const overrides = cookies ? parseOverrides(cookies) : undefined;\n    if (typeof config === 'string') {\n      return new MicrofrontendsServer({\n        config: MicrofrontendsServer.validate(config),\n        overrides,\n      });\n    }\n    if (typeof config === 'object') {\n      return new MicrofrontendsServer({\n        config: config as Config,\n        overrides,\n      });\n    }\n\n    throw new MicrofrontendError(\n      'Invalid config: must be a string or an object',\n      { type: 'config', subtype: 'does_not_match_schema' },\n    );\n  }\n\n  /**\n   * Generates a MicrofrontendsServer instance from the environment.\n   * Uses additional validation that is only available when in a node runtime\n   */\n  static fromEnv({\n    cookies,\n  }: {\n    cookies: { name: string; value: string }[];\n  }): MicrofrontendsServer {\n    return new MicrofrontendsServer({\n      config: MicrofrontendsServer.validate(getConfigStringFromEnv()),\n      overrides: parseOverrides(cookies),\n    });\n  }\n\n  /**\n   * Validates the configuration against the JSON schema\n   */\n  static validate(config: string | Config): Config {\n    if (typeof config === 'string') {\n      const c = validateSchema(config);\n      return c;\n    }\n    return config;\n  }\n\n  /**\n   * Looks up the configuration by inferring the package root and looking for a microfrontends config file. If a file is not found,\n   * it will look for a package in the repository with a microfrontends file that contains the current application\n   * and use that configuration.\n   *\n   * This can return either a Child or Main configuration.\n   */\n  static infer({\n    directory,\n    filePath,\n    cookies,\n  }: {\n    directory?: string;\n    filePath?: string;\n    cookies?: { name: string; value: string }[];\n  } = {}): MicrofrontendsServer {\n    if (filePath) {\n      return MicrofrontendsServer.fromFile({\n        filePath,\n        cookies,\n      });\n    }\n\n    try {\n      const packageRoot = findPackageRoot(directory);\n      const { name: appName } = getApplicationContext({ packageRoot });\n\n      // see if we have a config file at the package root\n      const maybeConfig = findConfig({ dir: packageRoot });\n      if (maybeConfig) {\n        return MicrofrontendsServer.fromFile({\n          filePath: maybeConfig,\n          cookies,\n        });\n      }\n\n      // if we don't have a microfrontends configuration file, see if we have another package in the repo that references this one\n      const repositoryRoot = findRepositoryRoot();\n      const isMonorepo = isRepositoryMonorepo({ repositoryRoot });\n      if (isMonorepo) {\n        // find the default package\n        const defaultPackage = findDefaultMicrofrontendsPackage({\n          repositoryRoot,\n          applicationName: appName,\n        });\n\n        // see if we have a config file at the package root\n        const maybeConfigFromDefault = findConfig({ dir: defaultPackage });\n        if (maybeConfigFromDefault) {\n          return MicrofrontendsServer.fromFile({\n            filePath: maybeConfigFromDefault,\n            cookies,\n          });\n        }\n      }\n      // will be caught below\n      throw new Error('Unable to infer');\n    } catch (e) {\n      if (e instanceof MicrofrontendError) {\n        throw e;\n      }\n      // we were unable to infer\n      throw new MicrofrontendError(\n        'Unable to locate and parse microfrontends configuration',\n        { cause: e, type: 'config', subtype: 'inference_failed' },\n      );\n    }\n  }\n\n  /*\n   * Generates a MicrofrontendsServer instance from a file.\n   */\n  static fromFile({\n    filePath,\n    cookies,\n  }: {\n    filePath: string;\n    cookies?: { name: string; value: string }[];\n  }): MicrofrontendsServer {\n    try {\n      const configJson = fs.readFileSync(filePath, 'utf-8');\n      const config = MicrofrontendsServer.validate(configJson);\n\n      return new MicrofrontendsServer({\n        config,\n        overrides: cookies ? parseOverrides(cookies) : undefined,\n      });\n    } catch (e) {\n      throw MicrofrontendError.handle(e, {\n        fileName: filePath,\n      });\n    }\n  }\n\n  /*\n   * Generates a MicrofrontendsServer instance from a file.\n   */\n  static fromMainConfigFile({\n    filePath,\n    overrides,\n  }: {\n    filePath: string;\n    overrides?: OverridesConfig;\n  }): MicrofrontendsServer {\n    try {\n      const config = fs.readFileSync(filePath, 'utf-8');\n      const validatedConfig = MicrofrontendsServer.validate(config);\n      const [defaultApplication] = Object.entries(validatedConfig.applications)\n        .filter(([, app]) => isDefaultApp(app))\n        .map(([name]) => name);\n      // This should never get hit as MicrofrontendsServer.validate checks this if we're given a main config\n      if (!defaultApplication) {\n        throw new MicrofrontendError(\n          'No default application found. At least one application needs to be the default by omitting routing.',\n          { type: 'config', subtype: 'no_default_application' },\n        );\n      }\n      return new MicrofrontendsServer({\n        config: validatedConfig,\n        overrides,\n      });\n    } catch (e) {\n      throw MicrofrontendError.handle(e, {\n        fileName: filePath,\n      });\n    }\n  }\n}\n","// cookie name needs to match proxy\n// https://github.com/vercel/proxy/blob/fb00d723136ad539a194e4a851dd272010527c35/lib/routing/micro_frontends_overrides.lua#L7\nexport const OVERRIDES_COOKIE_PREFIX = 'vercel-micro-frontends-override';\nexport const OVERRIDES_ENV_COOKIE_PREFIX = `${OVERRIDES_COOKIE_PREFIX}:env:`;\n","import { OVERRIDES_COOKIE_PREFIX } from './constants';\n\nexport function isOverrideCookie(cookie: { name?: string }): boolean {\n  return Boolean(cookie.name?.startsWith(OVERRIDES_COOKIE_PREFIX));\n}\n","import { isOverrideCookie } from './is-override-cookie';\nimport { OVERRIDES_ENV_COOKIE_PREFIX } from './constants';\n\nexport function getOverrideFromCookie(cookie: {\n  name: string;\n  value?: string | null;\n}): { application: string; host: string } | undefined {\n  if (!isOverrideCookie(cookie) || !cookie.value) return;\n  return {\n    application: cookie.name.replace(OVERRIDES_ENV_COOKIE_PREFIX, ''),\n    host: cookie.value,\n  };\n}\n","import type { OverridesConfig } from './types';\nimport { getOverrideFromCookie } from './get-override-from-cookie';\n\nexport function parseOverrides(\n  cookies: { name: string; value?: string | null }[],\n): OverridesConfig {\n  const overridesConfig: OverridesConfig = { applications: {} };\n\n  cookies.forEach((cookie) => {\n    const override = getOverrideFromCookie(cookie);\n    if (!override) return;\n    overridesConfig.applications[override.application] = {\n      environment: { host: override.host },\n    };\n  });\n\n  return overridesConfig;\n}\n","export type MicrofrontendErrorType =\n  | 'config'\n  | 'packageJson'\n  | 'vercelJson'\n  | 'application'\n  | 'unknown';\n\nexport type MicrofrontendErrorSubtype =\n  | 'not_found'\n  | 'inference_failed'\n  | 'not_found_in_env'\n  | 'invalid_asset_prefix'\n  | 'invalid_main_path'\n  | 'does_not_match_schema'\n  | 'unable_to_read_file'\n  | 'unsupported_validation_env'\n  | 'unsupported_version'\n  | 'invalid_path'\n  | 'invalid_permissions'\n  | 'invalid_syntax'\n  | 'missing_microfrontend_config_path'\n  | 'unsupported_operation';\n\n// A mapping of error types to their subtypes.\ninterface TypeToSubtype {\n  application:\n    | 'invalid_asset_prefix'\n    | 'invalid_path'\n    | 'multiple_package_managers'\n    | 'not_found';\n  config:\n    | 'conflicting_paths'\n    | 'depcrecated_field'\n    | 'does_not_match_schema'\n    | 'invalid_main_path'\n    | 'invalid_preview_deployment_suffix'\n    | 'multiple_default_applications'\n    | 'no_default_application'\n    | 'not_found_in_env'\n    | 'not_found'\n    | 'inference_failed'\n    | 'unable_to_read_file'\n    | 'invalid_syntax'\n    | 'invalid_permissions'\n    | 'unsupported_operation'\n    | 'unsupported_validation_env'\n    | 'unsupported_version';\n  packageJson:\n    | 'missing_field_name'\n    | 'unable_to_read_file'\n    | 'invalid_permissions'\n    | 'invalid_syntax';\n  vercelJson:\n    | 'missing_field_microfrontend_config_path'\n    | 'unable_to_read_file'\n    | 'invalid_permissions'\n    | 'invalid_syntax';\n  unknown: never;\n}\n\nexport type MicrofrontendErrorSource =\n  | '@vercel/microfrontends'\n  | '@vercel/microfrontends/next'\n  | 'fs'\n  | 'ajv';\n\nexport interface MicrofrontendErrorOptions<T extends MicrofrontendErrorType> {\n  cause?: unknown;\n  source?: MicrofrontendErrorSource;\n  type?: T;\n  subtype?: TypeToSubtype[T];\n}\n\ninterface HandleOptions {\n  fileName?: string;\n}\n\nexport class MicrofrontendError<\n  T extends MicrofrontendErrorType = 'unknown',\n> extends Error {\n  public source: MicrofrontendErrorSource;\n  public type: T;\n  public subtype?: TypeToSubtype[T];\n\n  constructor(message: string, opts?: MicrofrontendErrorOptions<T>) {\n    super(message, { cause: opts?.cause });\n    this.name = 'MicrofrontendsError';\n    this.source = opts?.source ?? '@vercel/microfrontends';\n    this.type = opts?.type ?? ('unknown' as T);\n    this.subtype = opts?.subtype;\n    Error.captureStackTrace(this, MicrofrontendError);\n  }\n\n  isKnown(): boolean {\n    return this.type !== 'unknown';\n  }\n\n  isUnknown(): boolean {\n    return !this.isKnown();\n  }\n\n  /**\n   * Converts an error to a MicrofrontendsError.\n   * @param original - The original error to convert.\n   * @returns The converted MicrofrontendsError.\n   */\n  static convert(\n    original: Error,\n    opts?: HandleOptions,\n  ): MicrofrontendError<MicrofrontendErrorType> {\n    if (opts?.fileName) {\n      const err = MicrofrontendError.convertFSError(original, opts.fileName);\n      if (err) {\n        return err;\n      }\n    }\n\n    if (\n      original.message.includes(\n        'Code generation from strings disallowed for this context',\n      )\n    ) {\n      return new MicrofrontendError(original.message, {\n        type: 'config',\n        subtype: 'unsupported_validation_env',\n        source: 'ajv',\n      });\n    }\n\n    // unknown catch-all\n    return new MicrofrontendError(original.message);\n  }\n\n  static convertFSError(\n    original: Error,\n    fileName: string,\n  ): MicrofrontendError<MicrofrontendErrorType> | null {\n    if (original instanceof Error && 'code' in original) {\n      if (original.code === 'ENOENT') {\n        return new MicrofrontendError(`Could not find \"${fileName}\"`, {\n          type: 'config',\n          subtype: 'unable_to_read_file',\n          source: 'fs',\n        });\n      }\n      if (original.code === 'EACCES') {\n        return new MicrofrontendError(\n          `Permission denied while accessing \"${fileName}\"`,\n          {\n            type: 'config',\n            subtype: 'invalid_permissions',\n            source: 'fs',\n          },\n        );\n      }\n    }\n\n    if (original instanceof SyntaxError) {\n      return new MicrofrontendError(\n        `Failed to parse \"${fileName}\": Invalid JSON format.`,\n        {\n          type: 'config',\n          subtype: 'invalid_syntax',\n          source: 'fs',\n        },\n      );\n    }\n\n    return null;\n  }\n\n  /**\n   * Handles an unknown error and returns a MicrofrontendsError instance.\n   * @param err - The error to handle.\n   * @returns A MicrofrontendsError instance.\n   */\n  static handle(\n    err: unknown,\n    opts?: HandleOptions,\n  ): MicrofrontendError<MicrofrontendErrorType> {\n    if (err instanceof MicrofrontendError) {\n      return err as MicrofrontendError<MicrofrontendErrorType>;\n    }\n\n    // handle Error instances\n    if (err instanceof Error) {\n      return MicrofrontendError.convert(err, opts);\n    }\n\n    // handle object errors\n    if (typeof err === 'object' && err !== null) {\n      if ('message' in err && typeof err.message === 'string') {\n        return MicrofrontendError.convert(new Error(err.message), opts);\n      }\n    }\n\n    return new MicrofrontendError('An unknown error occurred');\n  }\n}\n","import { MicrofrontendError } from '../../errors';\n\n/**\n * Utility to fetch the microfrontend configuration string from the environment.\n */\nexport function getConfigStringFromEnv(): string {\n  const config = process.env.MFE_CONFIG;\n  if (!config) {\n    throw new MicrofrontendError(`Missing \"MFE_CONFIG\" in environment.`, {\n      type: 'config',\n      subtype: 'not_found_in_env',\n    });\n  }\n  return config;\n}\n","import type { Application, DefaultApplication } from '../types';\n\nexport function isDefaultApp(a: Application): a is DefaultApplication {\n  return !('routing' in a);\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nconst GIT_DIRECTORY = '.git';\n\nfunction hasGitDirectory(dir: string): boolean {\n  const gitPath = path.join(dir, GIT_DIRECTORY);\n\n  // Check for a .git directory (not a file)\n  return fs.existsSync(gitPath) && fs.statSync(gitPath).isDirectory();\n}\n\nfunction hasPnpmWorkspaces(dir: string): boolean {\n  return fs.existsSync(path.join(dir, 'pnpm-workspace.yaml'));\n}\n\n/**\n * Find the root of the repository by looking for a `.git` directory. This should\n * work with submodules as well as it verifies that the `.git` directory is a\n * directory and not a file.\n *\n * TODO: support finding the root via other mechanisms to avoid the need for git to already be initialized\n */\nexport function findRepositoryRoot(startDir?: string): string {\n  if (process.env.NX_WORKSPACE_ROOT) {\n    // Trust NX's workspace root here so we don't have to rely on finding a .git\n    // directory. There are some places (like the `vercel deploy` CLI command)\n    // where the .git directory doesn't exist.\n    // TODO: Figure out a way to find the repo root in non-NX `vercel deploy`s.\n    return process.env.NX_WORKSPACE_ROOT;\n  }\n\n  let currentDir = startDir || process.cwd();\n\n  while (currentDir !== path.parse(currentDir).root) {\n    if (hasGitDirectory(currentDir) || hasPnpmWorkspaces(currentDir)) {\n      return currentDir;\n    }\n\n    currentDir = path.dirname(currentDir);\n  }\n\n  throw new Error(\n    'Repository root not found. Specify the root of the repository with the `repository.root` option.',\n  );\n}\n","import { dirname } from 'node:path';\nimport { readFileSync } from 'node:fs';\nimport { parse } from 'jsonc-parser';\nimport fg from 'fast-glob';\nimport type { Config } from '../../schema/types';\nimport { CONFIGURATION_FILENAMES } from '../../constants';\n\n// cache the path to default configuration to avoid having to walk the file system multiple times\nconst configCache: Record<string, string> = {};\n\ninterface FindDefaultMicrofrontendPackageArgs {\n  repositoryRoot: string;\n  applicationName: string;\n}\n\n/**\n * Given a repository root and a package name, find the path to the package.json file with the\n * given name.\n *\n * This method uses globby to find all package.json files and then reads them in parallel\n */\nfunction findDefaultMicrofrontendsPackages({\n  repositoryRoot,\n  applicationName,\n}: FindDefaultMicrofrontendPackageArgs): string | null {\n  try {\n    // eslint-disable-next-line import/no-named-as-default-member\n    const microfrontendsJsonPaths = fg.globSync(\n      `**/{${CONFIGURATION_FILENAMES.join(',')}}`,\n      {\n        cwd: repositoryRoot,\n        absolute: true,\n        onlyFiles: true,\n        followSymbolicLinks: false,\n        ignore: ['**/node_modules/**', '**/.git/**'],\n      },\n    );\n\n    const matchingPaths: string[] = [];\n    for (const microfrontendsJsonPath of microfrontendsJsonPaths) {\n      try {\n        const microfrontendsJsonContent = readFileSync(\n          microfrontendsJsonPath,\n          'utf-8',\n        );\n        const microfrontendsJson = parse(microfrontendsJsonContent) as Config;\n\n        if (microfrontendsJson.applications[applicationName]) {\n          matchingPaths.push(microfrontendsJsonPath);\n        }\n      } catch (error) {\n        // malformed json most likely, skip this file\n      }\n    }\n\n    if (matchingPaths.length > 1) {\n      throw new Error(\n        `Found multiple default applications referencing \"${applicationName}\" in the repository, but only one is allowed.\\n${matchingPaths.join('\\n  • ')}`,\n      );\n    }\n\n    if (matchingPaths.length === 0) {\n      throw new Error(\n        `Could not find default application with \"applications.${applicationName}\"`,\n      );\n    }\n\n    const [packageJsonPath] = matchingPaths as [string];\n    return dirname(packageJsonPath);\n  } catch (error) {\n    return null;\n  }\n}\n\n/**\n * Given a repository root and a package name, find the path to the package directory with\n * a microfrontends config that contains the given name in its applications.\n */\nexport function findDefaultMicrofrontendsPackage(\n  opts: FindDefaultMicrofrontendPackageArgs,\n): string {\n  // cache this with name to support multiple configurations in the same repository\n  const cacheKey = `${opts.repositoryRoot}-${opts.applicationName}`;\n\n  // Check if we have a cached result\n  if (configCache[cacheKey]) {\n    return configCache[cacheKey];\n  }\n\n  const result = findDefaultMicrofrontendsPackages(opts);\n\n  if (!result) {\n    throw new Error(\n      'Error trying to resolve the main microfrontends configuration',\n    );\n  }\n\n  // Cache the result\n  configCache[cacheKey] = result;\n  return result;\n}\n","export const CONFIGURATION_FILENAMES = [\n  'microfrontends.jsonc',\n  'microfrontends.json',\n] as const;\n","import fs from 'node:fs';\nimport path from 'node:path';\n\n/**\n * Given a repository root, determine if the repository is using the workspace feature of any package manager.\n *\n * Supports npm, yarn, pnpm, bun, and vlt\n */\nexport function isMonorepo({\n  repositoryRoot,\n}: {\n  repositoryRoot: string;\n}): boolean {\n  try {\n    // pnpm can be validated just by the existence of the pnpm-workspace.yaml file\n    if (fs.existsSync(path.join(repositoryRoot, 'pnpm-workspace.yaml'))) {\n      return true;\n    }\n\n    // vlt can be validated just by the existence of the vlt-workspaces.json file\n    if (fs.existsSync(path.join(repositoryRoot, 'vlt-workspaces.json'))) {\n      return true;\n    }\n\n    // NX can be validated by checking the environment variable.\n    if (process.env.NX_WORKSPACE_ROOT === path.resolve(repositoryRoot)) {\n      return true;\n    }\n\n    // all the rest need packages defined in root package.json\n    const packageJsonPath = path.join(repositoryRoot, 'package.json');\n    if (!fs.existsSync(packageJsonPath)) {\n      return false;\n    }\n\n    const packageJson = JSON.parse(\n      fs.readFileSync(packageJsonPath, 'utf-8'),\n    ) as {\n      workspaces?: string[] | Record<string, string>;\n    };\n\n    return packageJson.workspaces !== undefined;\n  } catch (error) {\n    // eslint-disable-next-line no-console\n    console.error('Error determining if repository is a monorepo', error);\n    return false;\n  }\n}\n","import fs from 'node:fs';\nimport path from 'node:path';\n\nconst PACKAGE_JSON = 'package.json';\n\n/**\n * Find the package root by looking for the closest package.json.\n *\n */\nexport function findPackageRoot(startDir?: string): string {\n  let currentDir = startDir || process.cwd();\n\n  while (currentDir !== path.parse(currentDir).root) {\n    const pkgJsonPath = path.join(currentDir, PACKAGE_JSON);\n\n    // Check for a .git directory (not a file)\n    if (fs.existsSync(pkgJsonPath)) {\n      return currentDir;\n    }\n\n    currentDir = path.dirname(currentDir);\n  }\n\n  throw new Error(\n    'Package root not found. Specify the root of the package with the `package.root` option.',\n  );\n}\n","import fs from 'node:fs';\nimport { join } from 'node:path';\nimport { CONFIGURATION_FILENAMES } from '../../constants';\n\nexport function findConfig({ dir }: { dir: string }): string | null {\n  for (const filename of CONFIGURATION_FILENAMES) {\n    const maybeConfig = join(dir, filename);\n    if (fs.existsSync(maybeConfig)) {\n      return maybeConfig;\n    }\n  }\n\n  return null;\n}\n","import { parse } from 'jsonc-parser';\nimport { getConfigStringFromEnv } from '../utils/get-config-from-env';\nimport { isDefaultApp } from '../../schema/utils/is-default-app';\nimport type { Config } from '../../schema/types';\nimport type { ClientConfig } from '../client/types';\nimport { MicrofrontendError } from '../../errors';\nimport { MicrofrontendConfigClient } from '../client';\nimport { type OverridesConfig, parseOverrides } from '../../overrides';\nimport { DefaultApplication, ChildApplication } from './application';\nimport { DEFAULT_LOCAL_PROXY_PORT } from './constants';\nimport {\n  validateConfigDefaultApplication,\n  validateConfigPaths,\n  validateDeprecatedFields,\n} from './validation';\n\ninterface ValidationOptions {\n  skipValidation?: 'deprecatedFields'[];\n}\n\n/**\n * A class to manage the microfrontends configuration.\n */\nexport class MicrofrontendConfigIsomorphic {\n  config: Config;\n  defaultApplication: DefaultApplication;\n  childApplications: Record<string, ChildApplication> = {};\n  overrides?: OverridesConfig;\n  options?: Config['options'];\n\n  private readonly serialized: {\n    config: Config;\n    overrides?: OverridesConfig;\n  };\n\n  constructor({\n    config,\n    overrides,\n    opts,\n  }: {\n    config: Config;\n    overrides?: OverridesConfig;\n    opts?: ValidationOptions;\n  }) {\n    // run validation on init\n    MicrofrontendConfigIsomorphic.validate(config, opts);\n\n    const disableOverrides = config.options?.disableOverrides ?? false;\n    this.overrides = overrides && !disableOverrides ? overrides : undefined;\n\n    let defaultApplication: DefaultApplication | undefined;\n    // create applications\n    for (const [appId, appConfig] of Object.entries(config.applications)) {\n      const appOverrides = !disableOverrides\n        ? this.overrides?.applications[appId]\n        : undefined;\n\n      if (isDefaultApp(appConfig)) {\n        defaultApplication = new DefaultApplication(appId, {\n          app: appConfig,\n          overrides: appOverrides,\n        });\n      } else {\n        this.childApplications[appId] = new ChildApplication(appId, {\n          app: appConfig,\n          overrides: appOverrides,\n        });\n      }\n    }\n\n    // validate that this.defaultApplication is defined\n    if (!defaultApplication) {\n      throw new MicrofrontendError(\n        'Could not find default application in microfrontends configuration',\n        {\n          type: 'application',\n          subtype: 'not_found',\n        },\n      );\n    }\n    this.defaultApplication = defaultApplication;\n\n    this.config = config;\n    this.options = config.options;\n    this.serialized = {\n      config,\n      overrides,\n    };\n  }\n\n  static validate(config: string | Config, opts?: ValidationOptions): Config {\n    const skipValidation: ValidationOptions['skipValidation'] =\n      opts?.skipValidation ?? [];\n    // let this throw if it's not valid JSON\n    const c = typeof config === 'string' ? (parse(config) as Config) : config;\n\n    validateConfigPaths(c.applications);\n    validateConfigDefaultApplication(c.applications);\n\n    if (!skipValidation.includes('deprecatedFields')) {\n      validateDeprecatedFields(c);\n    }\n\n    return c;\n  }\n\n  static fromEnv({\n    cookies,\n  }: {\n    cookies?: { name: string; value: string }[];\n  }): MicrofrontendConfigIsomorphic {\n    return new MicrofrontendConfigIsomorphic({\n      config: parse(getConfigStringFromEnv()) as Config,\n      overrides: parseOverrides(cookies ?? []),\n    });\n  }\n\n  isOverridesDisabled(): boolean {\n    return this.options?.disableOverrides ?? false;\n  }\n\n  getConfig(): Config {\n    return this.config;\n  }\n\n  getApplicationsByType(): {\n    defaultApplication?: DefaultApplication;\n    applications: ChildApplication[];\n  } {\n    return {\n      defaultApplication: this.defaultApplication,\n      applications: Object.values(this.childApplications),\n    };\n  }\n\n  getChildApplications(): ChildApplication[] {\n    return Object.values(this.childApplications);\n  }\n\n  getAllApplications(): (DefaultApplication | ChildApplication)[] {\n    return [\n      this.defaultApplication,\n      ...Object.values(this.childApplications),\n    ].filter(Boolean);\n  }\n\n  getApplication(name: string): DefaultApplication | ChildApplication {\n    // check the default\n    if (\n      this.defaultApplication.name === name ||\n      this.defaultApplication.packageName === name\n    ) {\n      return this.defaultApplication;\n    }\n    const app =\n      this.childApplications[name] ||\n      Object.values(this.childApplications).find(\n        (child) => child.packageName === name,\n      );\n    if (!app) {\n      throw new MicrofrontendError(\n        `Could not find microfrontends configuration for application \"${name}\"`,\n        {\n          type: 'application',\n          subtype: 'not_found',\n        },\n      );\n    }\n\n    return app;\n  }\n\n  hasApplication(name: string): boolean {\n    try {\n      this.getApplication(name);\n      return true;\n    } catch {\n      return false;\n    }\n  }\n\n  getApplicationByProjectId(\n    projectId: string,\n  ): DefaultApplication | ChildApplication | undefined {\n    // check the default\n    if (this.defaultApplication.projectId === projectId) {\n      return this.defaultApplication;\n    }\n\n    return Object.values(this.childApplications).find(\n      (app) => app.projectId === projectId,\n    );\n  }\n\n  /**\n   * Returns the default application.\n   */\n  getDefaultApplication(): DefaultApplication {\n    return this.defaultApplication;\n  }\n\n  /**\n   * Returns the configured port for the local proxy\n   */\n  getLocalProxyPort(): number {\n    return this.config.options?.localProxyPort ?? DEFAULT_LOCAL_PROXY_PORT;\n  }\n\n  /**\n   * Serializes the class back to the Schema type.\n   *\n   * NOTE: This is used when writing the config to disk and must always match the input Schema\n   */\n  toSchemaJson(): Config {\n    return this.serialized.config;\n  }\n\n  toClientConfig(): MicrofrontendConfigClient {\n    const applications: ClientConfig['applications'] = Object.fromEntries(\n      Object.entries(this.childApplications).map(([name, application]) => [\n        name,\n        {\n          default: false,\n          routing: application.routing,\n        },\n      ]),\n    );\n\n    // add the default application\n    applications[this.defaultApplication.name] = {\n      default: true,\n    };\n\n    return new MicrofrontendConfigClient({\n      applications,\n    });\n  }\n\n  serialize(): {\n    config: Config;\n    overrides?: OverridesConfig;\n  } {\n    return this.serialized;\n  }\n}\n","import { pathToRegexp } from 'path-to-regexp';\nimport type { ClientConfig } from './types';\n\ninterface MicrofrontendConfigClientOptions {\n  removeFlaggedPaths?: boolean;\n}\n\nexport class MicrofrontendConfigClient {\n  applications: ClientConfig['applications'];\n  pathCache: Record<string, string> = {};\n  private readonly serialized: ClientConfig;\n\n  constructor(config: ClientConfig, opts?: MicrofrontendConfigClientOptions) {\n    this.serialized = config;\n    if (opts?.removeFlaggedPaths) {\n      for (const app of Object.values(config.applications)) {\n        if (app.routing) {\n          app.routing = app.routing.filter((match) => !match.flag);\n        }\n      }\n    }\n    this.applications = config.applications;\n  }\n\n  /**\n   * Create a new `MicrofrontendConfigClient` from a JSON string.\n   * Config must be passed in to remain framework agnostic\n   */\n  static fromEnv(\n    config: string | undefined,\n    opts?: MicrofrontendConfigClientOptions,\n  ): MicrofrontendConfigClient {\n    if (!config) {\n      throw new Error('No microfrontends configuration found');\n    }\n    return new MicrofrontendConfigClient(\n      JSON.parse(config) as ClientConfig,\n      opts,\n    );\n  }\n\n  isEqual(other: MicrofrontendConfigClient): boolean {\n    return (\n      JSON.stringify(this.applications) === JSON.stringify(other.applications)\n    );\n  }\n\n  getApplicationNameForPath(path: string): string | null {\n    if (!path.startsWith('/')) {\n      throw new Error(`Path must start with a /`);\n    }\n\n    if (this.pathCache[path]) {\n      return this.pathCache[path];\n    }\n\n    const pathname = new URL(path, 'https://example.com').pathname;\n    for (const [name, application] of Object.entries(this.applications)) {\n      if (application.routing) {\n        for (const group of application.routing) {\n          for (const childPath of group.paths) {\n            const regexp = pathToRegexp(childPath);\n            if (regexp.test(pathname)) {\n              this.pathCache[path] = name;\n              return name;\n            }\n          }\n        }\n      }\n    }\n    const defaultApplication = Object.entries(this.applications).find(\n      ([, application]) => application.default,\n    );\n    if (!defaultApplication) {\n      return null;\n    }\n\n    this.pathCache[path] = defaultApplication[0];\n    return defaultApplication[0];\n  }\n\n  serialize(): ClientConfig {\n    return this.serialized;\n  }\n}\n","import { pathToRegexp, parse as parsePathRegexp } from 'path-to-regexp';\nimport type {\n  ApplicationId,\n  PathGroup,\n  ApplicationRouting,\n  ChildApplication as ChildApplicationConfig,\n  Config,\n} from '../../schema/types';\nimport { MicrofrontendError } from '../../errors';\nimport { isDefaultApp } from '../../schema/utils/is-default-app';\n\nconst LIST_FORMATTER = new Intl.ListFormat('en', {\n  style: 'long',\n  type: 'conjunction',\n});\n\n/**\n * Validate all paths in a configuration - ensures paths do not overlap\n */\nexport const validateConfigPaths = (\n  applicationConfigsById?: ApplicationRouting,\n): void => {\n  if (!applicationConfigsById) {\n    return;\n  }\n\n  const pathsByApplicationId = new Map<\n    PathGroup['paths'][number],\n    {\n      applications: ApplicationId[];\n      matcher: RegExp;\n      applicationId?: ApplicationId;\n    }\n  >();\n  const errors: string[] = [];\n\n  for (const [id, app] of Object.entries(applicationConfigsById)) {\n    if (isDefaultApp(app)) {\n      // default applications do not have routing\n      continue;\n    }\n\n    for (const pathMatch of app.routing) {\n      for (const path of pathMatch.paths) {\n        const maybeError = validatePathExpression(path);\n        if (maybeError) {\n          errors.push(maybeError);\n        } else {\n          const existing = pathsByApplicationId.get(path);\n          if (existing) {\n            existing.applications.push(id);\n          } else {\n            pathsByApplicationId.set(path, {\n              applications: [id],\n              matcher: pathToRegexp(path),\n              applicationId: id,\n            });\n          }\n        }\n      }\n    }\n  }\n  const entries = Array.from(pathsByApplicationId.entries());\n\n  for (const [path, { applications: ids, matcher, applicationId }] of entries) {\n    if (ids.length > 1) {\n      errors.push(\n        `Duplicate path \"${path}\" for applications \"${ids.join(', ')}\"`,\n      );\n    }\n\n    for (const [\n      matchPath,\n      { applications: matchIds, applicationId: matchApplicationId },\n    ] of entries) {\n      if (path === matchPath) {\n        // we're comparing to ourselves, so skip\n        continue;\n      }\n\n      if (applicationId === matchApplicationId) {\n        // we're comparing to paths within our own application, which are allowed to overlap, so skip\n        continue;\n      }\n\n      if (matcher.test(matchPath)) {\n        const source = `\"${path}\" of application${ids.length > 0 ? 's' : ''} ${ids.join(', ')}`;\n        const destination = `\"${matchPath}\" of application${matchIds.length > 0 ? 's' : ''} ${matchIds.join(', ')}`;\n\n        errors.push(\n          `Overlapping path detected between ${source} and ${destination}`,\n        );\n      }\n    }\n  }\n\n  if (errors.length) {\n    throw new MicrofrontendError(\n      `Invalid paths: ${errors.join(', ')}. See supported paths in the documentation https://vercel.com/docs/microfrontends/path-routing#supported-path-expressions.`,\n      {\n        type: 'config',\n        subtype: 'conflicting_paths',\n      },\n    );\n  }\n};\n\n// From https://github.com/pillarjs/path-to-regexp/blob/b0778f5e8e6c6e9ee4e2f5b34e877cc5229f8036/src/index.ts#L143\nconst PATH_DEFAULT_PATTERN = '[^\\\\/#\\\\?]+?';\n\nfunction validatePathExpression(path: string): string | undefined {\n  try {\n    const tokens = parsePathRegexp(path);\n    if (/(?<!\\\\)\\{/.test(path)) {\n      return `Optional paths are not supported: ${path}`;\n    }\n    if (/(?<!\\\\|\\()\\?/.test(path)) {\n      return `Optional paths are not supported: ${path}`;\n    }\n    if (/\\/[^/]*(?<!\\\\):[^/]*(?<!\\\\):[^/]*/.test(path)) {\n      return `Only one wildcard is allowed per path segment: ${path}`;\n    }\n    for (let i = 0; i < tokens.length; i++) {\n      const token = tokens[i];\n      if (token === undefined) {\n        return `token ${i} in ${path} is undefined, this shouldn't happen`;\n      }\n      if (typeof token !== 'string') {\n        if (!token.name) {\n          return `Only named wildcards are allowed: ${path} (hint: add \":path\" to the wildcard)`;\n        }\n        if (\n          token.pattern !== PATH_DEFAULT_PATTERN &&\n          // Allows (a|b|c) and ((?!a|b|c).*) regex\n          // Only limited regex is supported for now, due to performance considerations\n          !/^(?<allowed>[\\w]+(?:\\|[^:|()]+)+)$|^\\(\\?!(?<disallowed>[\\w]+(?:\\|[^:|()]+)*)\\)\\.\\*$/.test(\n            token.pattern,\n          )\n        ) {\n          return `Path ${path} cannot use unsupported regular expression wildcard`;\n        }\n        if (token.modifier && i !== tokens.length - 1) {\n          return `Modifier ${token.modifier} is not allowed on wildcard :${token.name} in ${path}. Modifiers are only allowed in the last path component`;\n        }\n      }\n    }\n  } catch (e) {\n    const message = e instanceof Error ? e.message : String(e);\n    return `Path ${path} could not be parsed into regexp: ${message}`;\n  }\n  return undefined;\n}\n\n/**\n * Validate all paths in an application - ensures paths are the correct format\n */\nexport const validateAppPaths = (\n  name: string,\n  app: ChildApplicationConfig,\n): void => {\n  // validate routes\n  for (const group of app.routing) {\n    for (const p of group.paths) {\n      if (p === '/') {\n        continue;\n      }\n      if (p.endsWith('/')) {\n        throw new MicrofrontendError(\n          `Invalid path for application \"${name}\". ${p} must not end with a slash.`,\n          { type: 'application', subtype: 'invalid_path' },\n        );\n      }\n\n      if (!p.startsWith('/')) {\n        throw new MicrofrontendError(\n          `Invalid path for application \"${name}\". ${p} must start with a slash.`,\n          { type: 'application', subtype: 'invalid_path' },\n        );\n      }\n    }\n  }\n};\n\n/**\n * Make sure only one `Application` defines routing\n * */\nexport const validateConfigDefaultApplication = (\n  applicationConfigsById?: ApplicationRouting,\n): void => {\n  if (!applicationConfigsById) {\n    return;\n  }\n\n  const applicationsWithoutRouting = Object.entries(\n    applicationConfigsById,\n  ).filter(([, app]) => isDefaultApp(app));\n  const numApplicationsWithoutRouting = applicationsWithoutRouting.reduce(\n    (acc) => {\n      return acc + 1;\n    },\n    0,\n  );\n\n  if (numApplicationsWithoutRouting === 0) {\n    throw new MicrofrontendError(\n      'No default application found. At least one application needs to be the default by omitting routing.',\n      { type: 'config', subtype: 'no_default_application' },\n    );\n  }\n\n  if (numApplicationsWithoutRouting > 1) {\n    const applicationNamesMissingRouting = applicationsWithoutRouting.map(\n      ([name]) => name,\n    );\n    throw new MicrofrontendError(\n      `All applications except for the default app must contain the \"routing\" field. Applications that are missing routing: ${LIST_FORMATTER.format(applicationNamesMissingRouting)}.`,\n      { type: 'config', subtype: 'multiple_default_applications' },\n    );\n  }\n};\n\n// TODO: Remove this after 4 May 2025 when the new schema has been fully in use for 30 days and thus we can delete the deprecated fields.\nexport const validateDeprecatedFields = (config: Config): void => {\n  const errors = [];\n\n  for (const [applicationId, application] of Object.entries(\n    config.applications,\n  )) {\n    if (application.development?.localPort) {\n      errors.push(\n        `Application '${applicationId}' cannot contain deprecated field 'development.localPort'. Use 'developement.local' instead.`,\n      );\n    }\n    if (application.projectId) {\n      // This will be an error in the next release\n    }\n  }\n\n  if (errors.length) {\n    throw new MicrofrontendError(\n      `Microfrontends configuration file errors:\\n- ${errors.join('\\n- ')}`,\n      {\n        type: 'config',\n        subtype: 'depcrecated_field',\n      },\n    );\n  }\n};\n","const PREFIX = 'vc-ap';\n\nexport function generateAssetPrefixFromName({\n  name,\n}: {\n  name: string;\n}): string {\n  if (!name) {\n    throw new Error('Name is required to generate an asset prefix');\n  }\n\n  return `${PREFIX}-${name}`;\n}\n","export function generatePortFromName({\n  name,\n  minPort = 3000,\n  maxPort = 8000,\n}: {\n  name: string;\n  minPort?: number;\n  maxPort?: number;\n}): number {\n  if (!name) {\n    throw new Error('Name is required to generate a port');\n  }\n\n  // hash the name\n  let hash = 0;\n  for (let i = 0; i < name.length; i++) {\n    // eslint-disable-next-line no-bitwise\n    hash = (hash << 5) - hash + name.charCodeAt(i);\n    // Convert to 32-bit\n    // eslint-disable-next-line no-bitwise\n    hash |= 0;\n  }\n  hash = Math.abs(hash);\n\n  // Map the hash to the port range\n  const range = maxPort - minPort;\n  const port = minPort + (hash % range);\n\n  return port;\n}\n","import type {\n  HostConfig as RemoteHostConfigSchema,\n  LocalHostConfig as LocalHostConfigSchema,\n} from '../../../bin/types';\nimport { generatePortFromName } from './utils/generate-port';\n\ninterface HostOptions {\n  isLocal?: boolean;\n}\n\nexport class Host {\n  protocol: 'http' | 'https';\n  host: string;\n  port?: number;\n  local: boolean | undefined;\n\n  constructor(\n    hostConfig: RemoteHostConfigSchema | string,\n    options?: HostOptions,\n  ) {\n    if (typeof hostConfig === 'string') {\n      ({\n        protocol: this.protocol,\n        host: this.host,\n        port: this.port,\n      } = Host.parseUrl(hostConfig));\n    } else {\n      const { protocol = 'https', host, port } = hostConfig;\n      this.protocol = protocol;\n      this.host = host;\n      this.port = port;\n    }\n    this.local = options?.isLocal;\n  }\n\n  protected static parseUrl(\n    url: string,\n    defaultProtocol = 'https',\n  ): {\n    protocol: Host['protocol'];\n    host: string;\n    port?: number;\n  } {\n    let hostToParse = url;\n    if (!/^https?:\\/\\//.exec(hostToParse)) {\n      hostToParse = `${defaultProtocol}://${hostToParse}`;\n    }\n    const parsed = new URL(hostToParse);\n    if (!parsed.hostname) {\n      throw new Error(Host.getMicrofrontendsError(url, 'requires a host'));\n    }\n    if (parsed.hash) {\n      throw new Error(\n        Host.getMicrofrontendsError(url, 'cannot have a fragment'),\n      );\n    }\n    if (parsed.username || parsed.password) {\n      throw new Error(\n        Host.getMicrofrontendsError(\n          url,\n          'cannot have authentication credentials (username and/or password)',\n        ),\n      );\n    }\n    if (parsed.pathname !== '/') {\n      throw new Error(Host.getMicrofrontendsError(url, 'cannot have a path'));\n    }\n    if (parsed.search) {\n      throw new Error(\n        Host.getMicrofrontendsError(url, 'cannot have query parameters'),\n      );\n    }\n    const protocol = parsed.protocol.slice(0, -1) as Host['protocol'];\n    return {\n      protocol,\n      host: parsed.hostname,\n      port: parsed.port ? Number.parseInt(parsed.port) : undefined,\n    };\n  }\n\n  private static getMicrofrontendsError(url: string, message: string): string {\n    return `Microfrontends configuration error: the URL ${url} in your microfrontends.json ${message}.`;\n  }\n\n  isLocal(): boolean {\n    return this.local || this.host === 'localhost' || this.host === '127.0.0.1';\n  }\n\n  toString(): string {\n    const url = this.toUrl();\n    // strip the trailing slash\n    return url.toString().replace(/\\/$/, '');\n  }\n\n  toUrl(): URL {\n    const url = `${this.protocol}://${this.host}${this.port ? `:${this.port}` : ''}`;\n    return new URL(url);\n  }\n}\n\n/**\n * A Host subclass with defaults for locally running applications\n */\nexport class LocalHost extends Host {\n  constructor({\n    appName,\n    localPort,\n    local,\n  }: {\n    appName: string;\n    localPort?: number;\n    local?: string | number | LocalHostConfigSchema;\n  }) {\n    if (localPort && local) {\n      throw new Error(\n        `Microfrontends configuration error: '${appName}' has both the 'development.local' and 'development.localPort' fields set. Please remove the 'development.localPort' field and ensure the 'development.local' field has the correct port.`,\n      );\n    }\n    let protocol: RemoteHostConfigSchema['protocol'];\n    let host: string | undefined;\n    let port: number | undefined;\n    if (localPort) {\n      port = localPort;\n    } else if (typeof local === 'number') {\n      port = local;\n    } else if (typeof local === 'string') {\n      if (/^\\d+$/.test(local)) {\n        port = Number.parseInt(local);\n      } else {\n        const parsed = Host.parseUrl(local, 'http');\n        protocol = parsed.protocol;\n        host = parsed.host;\n        port = parsed.port;\n      }\n    } else if (local) {\n      protocol = local.protocol;\n      host = local.host;\n      port = local.port;\n    }\n    // set defaults for local\n    super({\n      protocol: protocol ?? 'http',\n      host: host ?? 'localhost',\n      port: port ?? generatePortFromName({ name: appName }),\n    });\n  }\n}\n","export function generateAutomationBypassEnvVarName({\n  name,\n}: {\n  name: string;\n}): string {\n  return `AUTOMATION_BYPASS_${name.toUpperCase().replace(/[^a-zA-Z0-9]/g, '_')}`;\n}\n","import type {\n  Application as ApplicationConfig,\n  DefaultApplication as DefaultApplicationConfig,\n  ChildApplication as ChildApplicationConfig,\n  PathGroup,\n} from '../../schema/types';\nimport type { ApplicationOverrideConfig } from '../../overrides';\nimport { validateAppPaths } from './validation';\nimport { generateAssetPrefixFromName } from './utils/generate-asset-prefix';\nimport { Host, LocalHost } from './host';\nimport { generateAutomationBypassEnvVarName } from './utils/generate-automation-bypass-env-var-name';\n\nexport class Application {\n  readonly default: boolean;\n  name: string;\n  development: {\n    local: LocalHost;\n    fallback?: Host;\n  };\n  fallback?: Host;\n  projectId?: string;\n  packageName?: string;\n  overrides?: {\n    environment?: Host;\n  };\n  readonly serialized: ApplicationConfig;\n\n  constructor(\n    name: string,\n    {\n      app,\n      overrides,\n      isDefault,\n    }: {\n      app: ApplicationConfig;\n      overrides?: ApplicationOverrideConfig;\n      isDefault?: boolean;\n    },\n  ) {\n    this.name = name;\n    this.development = {\n      local: new LocalHost({\n        appName: name,\n        localPort: app.development?.localPort,\n        local: app.development?.local,\n      }),\n      fallback: app.development?.fallback\n        ? new Host(app.development.fallback)\n        : undefined,\n    };\n    if (app.development?.fallback) {\n      this.fallback = new Host(app.development.fallback);\n    }\n    this.projectId = app.projectId;\n    this.packageName = app.packageName;\n    this.overrides = overrides?.environment\n      ? {\n          environment: new Host(overrides.environment),\n        }\n      : undefined;\n    this.default = isDefault ?? false;\n    this.serialized = app;\n  }\n\n  isDefault(): boolean {\n    return this.default;\n  }\n\n  getAssetPrefix(): string {\n    return generateAssetPrefixFromName({ name: this.name });\n  }\n\n  getAutomationBypassEnvVarName(): string {\n    return generateAutomationBypassEnvVarName({ name: this.name });\n  }\n\n  serialize(): ApplicationConfig {\n    return this.serialized;\n  }\n}\n\nexport class DefaultApplication extends Application {\n  readonly default = true;\n  fallback: Host;\n\n  constructor(\n    name: string,\n    {\n      app,\n      overrides,\n    }: {\n      app: DefaultApplicationConfig;\n      overrides?: ApplicationOverrideConfig;\n    },\n  ) {\n    super(name, {\n      app,\n      overrides,\n      isDefault: true,\n    });\n\n    this.fallback = new Host(app.development.fallback);\n  }\n\n  getAssetPrefix(): string {\n    return '';\n  }\n}\n\nexport class ChildApplication extends Application {\n  readonly default = false;\n  routing: PathGroup[];\n\n  constructor(\n    name: string,\n    {\n      app,\n      overrides,\n    }: {\n      app: ChildApplicationConfig;\n      overrides?: ApplicationOverrideConfig;\n    },\n  ) {\n    // validate\n    ChildApplication.validate(name, app);\n\n    super(name, {\n      app,\n      overrides,\n      isDefault: false,\n    });\n\n    this.routing = app.routing;\n  }\n\n  static validate(name: string, app: ChildApplicationConfig): void {\n    // validate routes\n    validateAppPaths(name, app);\n  }\n}\n","export const DEFAULT_LOCAL_PROXY_PORT = 3024;\n","import fs from 'node:fs';\nimport path from 'node:path';\nimport { MicrofrontendError } from '../../errors';\n\n/**\n * Returns the application name and any additional context that we need.\n */\nexport function getApplicationContext(opts?: {\n  appName?: string;\n  packageRoot?: string;\n}): {\n  name: string;\n} {\n  if (opts?.appName) {\n    return { name: opts.appName };\n  }\n\n  // If this is NX, there are many different places the name can be and they\n  // might not even have a package.json. Use the environment variable, which\n  // relies on NX's logic to find the name.\n  if (process.env.NX_TASK_TARGET_PROJECT) {\n    return { name: process.env.NX_TASK_TARGET_PROJECT };\n  }\n\n  try {\n    // load the package.json for the application\n    const packageJsonString = fs.readFileSync(\n      path.join(opts?.packageRoot || '.', 'package.json'),\n      'utf-8',\n    );\n    const packageJson = JSON.parse(packageJsonString) as { name?: string };\n\n    if (!packageJson.name) {\n      throw new MicrofrontendError(\n        `package.json file missing required field \"name\"`,\n        {\n          type: 'packageJson',\n          subtype: 'missing_field_name',\n          source: '@vercel/microfrontends/next',\n        },\n      );\n    }\n\n    return { name: packageJson.name };\n  } catch (err) {\n    throw MicrofrontendError.handle(err, {\n      fileName: 'package.json',\n    });\n  }\n}\n","import path from 'node:path';\nimport {\n  MFE_CONFIG_DEFAULT_FILE_PATH,\n  MFE_CONFIG_DEFAULT_FILE_NAME,\n} from '../constants';\n\nexport function getOutputFilePath(): string {\n  return path.join(MFE_CONFIG_DEFAULT_FILE_PATH, MFE_CONFIG_DEFAULT_FILE_NAME);\n}\n","/**\n * Default path to use for the microfrontends configuration when output to a file.\n */\nexport const MFE_CONFIG_DEFAULT_FILE_PATH = 'microfrontends' as const;\n\n/**\n * Default name to use for the microfrontends configuration when output to a file.\n */\nexport const MFE_CONFIG_DEFAULT_FILE_NAME = 'microfrontends.json' as const;\n","import { parse } from 'jsonc-parser';\nimport { Ajv, type ErrorObject } from 'ajv';\nimport type { Config } from '../../schema/types';\nimport { MicrofrontendError } from '../../errors';\nimport { SCHEMA } from '../../schema/utils/load';\n\nconst LIST_FORMATTER = new Intl.ListFormat('en', {\n  style: 'long',\n  type: 'disjunction',\n});\n\nfunction formatAjvErrors(errors: ErrorObject[] | null | undefined): string[] {\n  if (!errors) {\n    return [];\n  }\n  const errorMessages: string[] = [];\n  for (const error of errors) {\n    // Ignore root errors that arise because AJV can't infer whether the config is a main config or a child config.\n    // These errors are confusing for the user.\n    if (\n      error.instancePath === '' &&\n      (error.keyword === 'anyOf' ||\n        (error.keyword === 'required' &&\n          error.params.missingProperty === 'partOf'))\n    ) {\n      continue;\n    }\n\n    // Ignore the first leading slash in the instance path to make the path more readable.\n    const instancePath = error.instancePath.slice(1);\n    const formattedInstancePath =\n      instancePath === '' ? 'at the root' : `in field ${instancePath}`;\n\n    // AJV errors are really cryptic, so this logic transforms them to nicer ones.\n    // It is based on heuristics from introducing errors and observing what AJV produces.\n    if (\n      error.keyword === 'required' &&\n      error.params.missingProperty === 'routing' &&\n      instancePath.split('/').length === 2\n    ) {\n      errorMessages.push(\n        `Unable to infer if ${instancePath} is the default app or a child app. This usually means that there is another error in the configuration.`,\n      );\n    } else if (\n      error.keyword === 'anyOf' &&\n      instancePath.split('/').length > 2\n    ) {\n      const anyOfErrors = errors.filter(\n        (e) => e.instancePath === error.instancePath && e.keyword !== 'anyOf',\n      );\n      if (anyOfErrors.every((e) => e.keyword === 'type')) {\n        const allowedTypes = LIST_FORMATTER.format(\n          anyOfErrors.map((e) => {\n            return e.keyword === 'type' ? String(e.params.type) : 'unknown';\n          }),\n        );\n        errorMessages.push(\n          `Incorrect type for ${instancePath}. Must be one of ${allowedTypes}`,\n        );\n      } else {\n        errorMessages.push(\n          `Invalid field for ${instancePath}. Possible error messages are ${LIST_FORMATTER.format(anyOfErrors.map((e) => e.message ?? ''))}`,\n        );\n      }\n    } else if (\n      error.keyword === 'additionalProperties' &&\n      !(\n        error.params.additionalProperty === 'routing' &&\n        instancePath.split('/').length === 2\n      )\n    ) {\n      errorMessages.push(\n        `Property '${error.params.additionalProperty}' is not allowed ${formattedInstancePath}`,\n      );\n    } else if (error.keyword === 'required') {\n      errorMessages.push(\n        `Property '${error.params.missingProperty}' is required ${formattedInstancePath}`,\n      );\n    }\n  }\n  return errorMessages;\n}\n\nexport function validateSchema(configString: string): Config {\n  const parsedConfig = parse(configString) as Config;\n\n  const ajv = new Ajv({ allowUnionTypes: true });\n  const validate = ajv.compile(SCHEMA);\n  const isValid = validate(parsedConfig);\n  if (!isValid) {\n    throw new MicrofrontendError(\n      `Invalid microfrontends config:${formatAjvErrors(validate.errors)\n        .map((error) => `\\n - ${error}`)\n        .join(\n          '',\n        )}\\n\\nSee https://openapi.vercel.sh/microfrontends.json for the schema.`,\n      { type: 'config', subtype: 'does_not_match_schema' },\n    );\n  }\n\n  return parsedConfig;\n}\n","{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$ref\": \"#/definitions/Config\",\n  \"definitions\": {\n    \"Config\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"$schema\": {\n          \"type\": \"string\"\n        },\n        \"version\": {\n          \"type\": \"string\",\n          \"const\": \"1\"\n        },\n        \"options\": {\n          \"$ref\": \"#/definitions/Options\"\n        },\n        \"applications\": {\n          \"$ref\": \"#/definitions/ApplicationRouting\",\n          \"description\": \"Mapping of application names to the routes that they host. Only needs to be defined in the application that owns the primary microfrontend domain\"\n        }\n      },\n      \"required\": [\"applications\"],\n      \"additionalProperties\": false\n    },\n    \"Options\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"disableOverrides\": {\n          \"type\": \"boolean\",\n          \"description\": \"If you want to disable the overrides for the site. For example, if you are managing rewrites between applications externally, you may wish to disable the overrides on the toolbar as they will have no effect.\"\n        },\n        \"localProxyPort\": {\n          \"type\": \"number\",\n          \"description\": \"The port number used by the local proxy server.\\n\\nThe default is `3024`.\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"ApplicationRouting\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"$ref\": \"#/definitions/Application\"\n      },\n      \"propertyNames\": {\n        \"description\": \"The unique identifier for a Microfrontend Application.\\n\\nMust match the Vercel project name.\\n\\nNote: If this name does not also match the name used to run the application, (e.g. the `name` from the `package.json`), then the `packageName` field should be set.\"\n      }\n    },\n    \"Application\": {\n      \"anyOf\": [\n        {\n          \"$ref\": \"#/definitions/DefaultApplication\"\n        },\n        {\n          \"$ref\": \"#/definitions/ChildApplication\"\n        }\n      ]\n    },\n    \"DefaultApplication\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"projectId\": {\n          \"type\": \"string\",\n          \"description\": \"Vercel project ID, only required if the application name / id is different to the Vercel project name.\",\n          \"deprecated\": \"Instead, the application id should match the Vercel project name. `packageName` can optionally\\nbe set to the name of the package.json (if it is different from the project name).\"\n        },\n        \"packageName\": {\n          \"type\": \"string\",\n          \"description\": \"The name used to run the application, e.g. the `name` field in the `package.json`.\\n\\nThis is used by the local proxy to map the application config to the locally running app.\\n\\nThis is only necessary when the application name does not match the `name` used in `package.json`.\"\n        },\n        \"development\": {\n          \"$ref\": \"#/definitions/DefaultDevelopment\",\n          \"description\": \"Development configuration for the default application.\"\n        }\n      },\n      \"required\": [\"development\"],\n      \"additionalProperties\": false\n    },\n    \"DefaultDevelopment\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"local\": {\n          \"type\": [\"number\", \"string\"],\n          \"description\": \"A local port number or host string that this application runs on when it is running locally. If passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTP. If omitted, the port defaults to a unique, but stable (based on the application name) number.\\n\\nExamples of valid values:\\n- 8080\\n- my.localhost.me\\n- my.localhost.me:8080\\n- https://my.localhost.me\\n- https://my.localhost.me:8080\"\n        },\n        \"localPort\": {\n          \"type\": \"number\",\n          \"description\": \"The local port number that this application runs on when it is running locally. Common values include `80` for HTTP and `443` for HTTPS. If omitted, the port defaults to a unique, but stable (based on the application name) number.\",\n          \"deprecated\": \"Please set the port with the 'local' field instead.\"\n        },\n        \"task\": {\n          \"type\": \"string\",\n          \"description\": \"Optional task to run when starting the development server. Should reference a script in the package.json of the application.\"\n        },\n        \"fallback\": {\n          \"type\": \"string\",\n          \"description\": \"Fallback for local development, could point to any environment. This is required for the default app. This value is used as the fallback for child apps as well if they do not have a fallback.\\n\\nIf passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTPS. If omitted, the port defaults to `80` for HTTP and `443` for HTTPS.\"\n        }\n      },\n      \"required\": [\"fallback\"],\n      \"additionalProperties\": false\n    },\n    \"ChildApplication\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"projectId\": {\n          \"type\": \"string\",\n          \"description\": \"Vercel project ID, only required if the application name / id is different to the Vercel project name.\",\n          \"deprecated\": \"Instead, the application id should match the Vercel project name. `packageName` can optionally\\nbe set to the name of the package.json (if it is different from the project name).\"\n        },\n        \"packageName\": {\n          \"type\": \"string\",\n          \"description\": \"The name used to run the application, e.g. the `name` field in the `package.json`.\\n\\nThis is used by the local proxy to map the application config to the locally running app.\\n\\nThis is only necessary when the application name does not match the `name` used in `package.json`.\"\n        },\n        \"development\": {\n          \"$ref\": \"#/definitions/ChildDevelopment\",\n          \"description\": \"Development configuration for the child application.\"\n        },\n        \"routing\": {\n          \"$ref\": \"#/definitions/Routing\",\n          \"description\": \"Groups of path expressions that are routed to this application.\"\n        }\n      },\n      \"required\": [\"routing\"],\n      \"additionalProperties\": false\n    },\n    \"ChildDevelopment\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"local\": {\n          \"type\": [\"number\", \"string\"],\n          \"description\": \"A local port number or host string that this application runs on when it is running locally. If passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTP. If omitted, the port defaults to a unique, but stable (based on the application name) number.\\n\\nExamples of valid values:\\n- 8080\\n- my.localhost.me\\n- my.localhost.me:8080\\n- https://my.localhost.me\\n- https://my.localhost.me:8080\"\n        },\n        \"localPort\": {\n          \"type\": \"number\",\n          \"description\": \"The local port number that this application runs on when it is running locally. Common values include `80` for HTTP and `443` for HTTPS. If omitted, the port defaults to a unique, but stable (based on the application name) number.\",\n          \"deprecated\": \"Please set the port with the 'local' field instead.\"\n        },\n        \"task\": {\n          \"type\": \"string\",\n          \"description\": \"Optional task to run when starting the development server. Should reference a script in the package.json of the application.\"\n        },\n        \"fallback\": {\n          \"type\": \"string\",\n          \"description\": \"Fallback for local development, could point to any environment. This is optional for child apps. If not provided, the fallback of the default app will be used.\\n\\nIf passing a string, include the protocol (optional), host (required) and port (optional). For example: `https://this.ismyhost:8080`. If omitted, the protocol defaults to HTTPS. If omitted, the port defaults to `80` for HTTP and `443` for HTTPS.\"\n        }\n      },\n      \"additionalProperties\": false\n    },\n    \"Routing\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"$ref\": \"#/definitions/PathGroup\"\n      }\n    },\n    \"PathGroup\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"group\": {\n          \"type\": \"string\",\n          \"description\": \"Optional group name for the paths\"\n        },\n        \"flag\": {\n          \"type\": \"string\",\n          \"description\": \"flag name that can be used to enable/disable all paths in the group\"\n        },\n        \"paths\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"string\"\n          }\n        }\n      },\n      \"required\": [\"paths\"],\n      \"additionalProperties\": false\n    }\n  }\n}\n","import type { JSONSchema7 } from 'json-schema';\nimport jsonSchema from '../../../../schema/schema.json';\n\nexport const SCHEMA = jsonSchema as JSONSchema7;\n","import type { Config } from '@sveltejs/kit';\nimport { displayLocalProxyInfo } from '../../bin/check-proxy';\nimport { MicrofrontendsServer } from '../../config/microfrontends/server';\nimport { getApplicationContext } from '../../config/microfrontends/utils/get-application-context';\n\nexport interface WithMicrofrontendsOptions {\n  /**\n   * Explicitly set the name of the application instead of using the name from the package.json.\n   */\n  appName?: string;\n  configPath?: string;\n}\n\nexport function withMicrofrontends(\n  config: Config,\n  opts?: WithMicrofrontendsOptions,\n): Config {\n  const { name: fromApp } = getApplicationContext(opts);\n  const microfrontends = MicrofrontendsServer.infer({\n    filePath: opts?.configPath,\n  });\n\n  // fetch the config for the current app\n  const app = microfrontends.config.getApplication(fromApp);\n\n  if (!app.isDefault()) {\n    const assetPrefix = app.getAssetPrefix();\n    if (config.kit?.appDir !== undefined && config.kit.appDir !== assetPrefix) {\n      throw new Error(\n        `\"appDir\" is already set and does not equal ${assetPrefix}. Either omit \"appDir\" in your Svelte config, or set it to \"${assetPrefix}\".`,\n      );\n    }\n    if (!config.kit) {\n      config.kit = {};\n    }\n    config.kit.appDir = assetPrefix;\n  }\n\n  displayLocalProxyInfo(microfrontends.config.getLocalProxyPort());\n\n  return config;\n}\n"],"mappings":"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","names":["import_node_fs","import_node_path","path","fs","import_node_path","import_node_fs","fg","import_node_fs","import_node_path","fs","path","import_node_fs","import_node_path","path","fs","import_node_fs","import_node_path","fs","import_jsonc_parser","path","import_path_to_regexp","path","parsePathRegexp","import_node_fs","import_node_path","fs","path","import_node_path","path","import_jsonc_parser","LIST_FORMATTER","fs","isMonorepo"]}