{
  "version": 3,
  "sources": ["../plugin/index.ts", "../plugin/lib/constant.ts", "../plugin/lib/util.ts", "../plugin/mkcert/index.ts", "../plugin/lib/logger.ts", "../plugin/mkcert/config.ts", "../plugin/lib/request.ts", "../plugin/mkcert/downloader.ts", "../plugin/mkcert/record.ts", "../plugin/mkcert/source.ts", "../plugin/mkcert/version.ts"],
  "sourcesContent": ["import { createLogger, type PluginOption } from 'vite'\n\nimport { PLUGIN_NAME } from './lib/constant'\nimport { getDefaultHosts } from './lib/util'\nimport Mkcert, { type MkcertBaseOptions } from './mkcert/index'\n\nexport { BaseSource, type SourceInfo } from './mkcert/source'\n\nexport type MkcertPluginOptions = MkcertBaseOptions & {\n  /**\n   * The hosts that needs to generate the certificate.\n   */\n  hosts?: string[]\n}\n\nconst plugin = (options: MkcertPluginOptions = {}): PluginOption => {\n  return {\n    name: PLUGIN_NAME,\n    apply: 'serve',\n    config: async ({ server = {}, logLevel }) => {\n      // v5.0 \u4EE5\u4E0B\u652F\u6301 boolean \u7C7B\u578B\u7684 https \u914D\u7F6E\n      if (typeof server.https === 'boolean' && server.https === false) {\n        return\n      }\n\n      const { hosts = [], ...mkcertOptions } = options\n\n      const logger = createLogger(logLevel, {\n        prefix: PLUGIN_NAME\n      })\n      const mkcert = Mkcert.create({\n        logger,\n        ...mkcertOptions\n      })\n\n      await mkcert.init()\n\n      const allHosts = [...getDefaultHosts(), ...hosts]\n\n      if (typeof server.host === 'string') {\n        allHosts.push(server.host)\n      }\n\n      const uniqueHosts = Array.from(new Set(allHosts)).filter(Boolean)\n\n      const certificate = await mkcert.install(uniqueHosts)\n      const httpsConfig = {\n        key: certificate.key && Buffer.from(certificate.key),\n        cert: certificate.cert && Buffer.from(certificate.cert)\n      }\n\n      return {\n        server: {\n          https: httpsConfig\n        },\n        preview: {\n          https: httpsConfig\n        }\n      }\n    }\n  }\n}\n\nexport default plugin\n", "import os from 'node:os'\nimport path from 'node:path'\n\nexport const PKG_NAME = 'vite-plugin-mkcert'\n\nexport const PLUGIN_NAME = PKG_NAME.replace(/-/g, ':')\n\nexport const PLUGIN_DATA_DIR = path.join(os.homedir(), `.${PKG_NAME}`)\n", "import child_process, { type ExecOptions } from 'node:child_process'\nimport crypto from 'node:crypto'\nimport fs from 'node:fs'\nimport os from 'node:os'\nimport path from 'node:path'\nimport util from 'node:util'\n\nimport { PLUGIN_NAME } from './constant'\n\n/**\n * Check if file exists\n *\n * @param filePath file path\n * @returns does the file exist\n */\nexport const exists = async (filePath: string) => {\n  try {\n    await fs.promises.access(filePath)\n    return true\n  } catch (_error) {\n    return false\n  }\n}\n\nexport const mkdir = async (dirname: string) => {\n  const isExist = await exists(dirname)\n\n  if (!isExist) {\n    await fs.promises.mkdir(dirname, { recursive: true })\n  }\n}\n\nexport const ensureDirExist = async (filePath: string, strip = false) => {\n  const dirname = strip ? path.dirname(filePath) : filePath\n  await mkdir(dirname)\n}\n\nexport const readFile = async (filePath: string) => {\n  const isExist = await exists(filePath)\n  return isExist ? (await fs.promises.readFile(filePath)).toString() : undefined\n}\n\nexport const writeFile = async (\n  filePath: string,\n  data: string | Uint8Array\n) => {\n  await ensureDirExist(filePath, true)\n  await fs.promises.writeFile(filePath, data)\n  await fs.promises.chmod(filePath, 0o777)\n}\n\nexport const readDir = async (source: string) => {\n  return fs.promises.readdir(source)\n}\n\nexport const copyDir = async (source: string, dest: string) => {\n  try {\n    await fs.promises.cp(source, dest, {\n      recursive: true\n    })\n  } catch (error: any) {\n    // Fails when nodejs version < 16.7.0, ignore?\n    console.log(`${PLUGIN_NAME}:`, error)\n  }\n}\n\nexport const exec = async (cmd: string, options?: ExecOptions) => {\n  return util.promisify(child_process.exec)(cmd, options)\n}\n\n/**\n * http://nodejs.cn/api/os/os_networkinterfaces.html\n */\nconst isIPV4 = (family: string | number) => {\n  return family === 'IPv4' || family === 4\n}\n\nexport const getLocalV4Ips = () => {\n  const interfaceDict = os.networkInterfaces()\n  const addresses: string[] = []\n  for (const key in interfaceDict) {\n    const interfaces = interfaceDict[key]\n    if (interfaces) {\n      for (const item of interfaces) {\n        if (isIPV4(item.family)) {\n          addresses.push(item.address)\n        }\n      }\n    }\n  }\n\n  return addresses\n}\n\nexport const getDefaultHosts = () => {\n  return ['localhost', ...getLocalV4Ips()]\n}\n\nexport const getHash = async (filePath: string) => {\n  const content = await readFile(filePath)\n\n  if (content) {\n    const hash = crypto.createHash('sha256')\n    hash.update(content)\n    return hash.digest('hex')\n  }\n\n  return undefined\n}\n\nconst isObj = (obj: any) =>\n  Object.prototype.toString.call(obj) === '[object Object]'\n\nconst mergeObj = (target: any, source: any) => {\n  if (!(isObj(target) && isObj(source))) {\n    return target\n  }\n\n  for (const key in source) {\n    if (Object.prototype.hasOwnProperty.call(source, key)) {\n      const targetValue = target[key]\n      const sourceValue = source[key]\n\n      if (isObj(targetValue) && isObj(sourceValue)) {\n        mergeObj(targetValue, sourceValue)\n      } else {\n        target[key] = sourceValue\n      }\n    }\n  }\n}\n\nexport const deepMerge = (target: any, ...source: any[]) => {\n  return source.reduce((a, b) => mergeObj(a, b), target)\n}\n\nexport const prettyLog = (obj?: Record<string, any>) => {\n  return JSON.stringify(obj, null, 2)\n}\n\nexport const escapeStr = (path?: string) => {\n  return `\"${path}\"`\n}\n", "import path from 'node:path'\nimport process from 'node:process'\n\nimport pc from 'picocolors'\nimport type { Logger } from 'vite'\n\nimport { PLUGIN_DATA_DIR } from '../lib/constant'\nimport { debug } from '../lib/logger'\nimport {\n  copyDir,\n  ensureDirExist,\n  escapeStr,\n  exec,\n  exists,\n  getHash,\n  prettyLog,\n  readDir,\n  readFile\n} from '../lib/util'\n\nimport Config from './config'\nimport Downloader from './downloader'\nimport Record from './record'\nimport { type BaseSource, GithubSource, CodingSource } from './source'\nimport VersionManger from './version'\n\nexport type SourceType = 'github' | 'coding' | BaseSource\n\nexport type MkcertBaseOptions = {\n  /**\n   * Whether to force generate\n   */\n  force?: boolean\n\n  /**\n   * Automatically upgrade mkcert\n   *\n   * @default false\n   */\n  autoUpgrade?: boolean\n\n  /**\n   * Specify mkcert download source\n   *\n   * @default github\n   */\n  source?: SourceType\n\n  /**\n   * If your network is restricted, you can specify a local binary file instead of downloading, it should be an absolute path\n   *\n   * @default none\n   */\n  mkcertPath?: string\n\n  /**\n   * The location to save the files, such as key and cert files\n   */\n  savePath?: string\n\n  /**\n   * The name of private key file generated by mkcert\n   */\n  keyFileName?: string\n\n  /**\n   * The name of cert file generated by mkcert\n   */\n  certFileName?: string\n}\n\nexport type MkcertOptions = MkcertBaseOptions & {\n  logger: Logger\n}\n\nclass Mkcert {\n  private force?: boolean\n  private autoUpgrade?: boolean\n  private sourceType: SourceType\n  private savePath: string\n  private logger: Logger\n\n  private source: BaseSource\n  private localMkcert?: string\n  private savedMkcert: string\n  private keyFilePath: string\n  private certFilePath: string\n\n  private config: Config\n\n  public static create(options: MkcertOptions) {\n    return new Mkcert(options)\n  }\n\n  private constructor(options: MkcertOptions) {\n    const {\n      force,\n      autoUpgrade,\n      source,\n      mkcertPath,\n      savePath = PLUGIN_DATA_DIR,\n      keyFileName = 'dev.pem',\n      certFileName = 'cert.pem',\n      logger\n    } = options\n\n    this.force = force\n    this.logger = logger\n    this.autoUpgrade = autoUpgrade\n    this.localMkcert = mkcertPath\n    this.savePath = path.resolve(savePath)\n    this.keyFilePath = path.resolve(savePath, keyFileName)\n    this.certFilePath = path.resolve(savePath, certFileName)\n    this.sourceType = source || 'github'\n\n    if (this.sourceType === 'github') {\n      this.source = GithubSource.create()\n    } else if (this.sourceType === 'coding') {\n      this.source = CodingSource.create()\n    } else {\n      this.source = this.sourceType\n    }\n\n    this.savedMkcert = path.resolve(\n      savePath,\n      process.platform === 'win32' ? 'mkcert.exe' : 'mkcert'\n    )\n\n    this.config = new Config({ savePath: this.savePath })\n  }\n\n  private async getMkcertBinary() {\n    let binary: string | undefined\n\n    if (this.localMkcert) {\n      if (await exists(this.localMkcert)) {\n        binary = this.localMkcert\n      } else {\n        this.logger.error(\n          pc.red(\n            `${this.localMkcert} does not exist, please check the mkcertPath parameter`\n          )\n        )\n      }\n    } else if (await exists(this.savedMkcert)) {\n      binary = this.savedMkcert\n    }\n\n    return binary\n  }\n\n  private async checkCAExists() {\n    const files = await readDir(this.savePath)\n    return files.some(file => file.includes('rootCA'))\n  }\n\n  private async retainExistedCA() {\n    if (await this.checkCAExists()) {\n      return\n    }\n\n    const mkcertBinary = await this.getMkcertBinary()\n    const commandStatement = `${escapeStr(mkcertBinary)} -CAROOT`\n\n    debug(`Exec ${commandStatement}`)\n\n    const commandResult = await exec(commandStatement)\n    const caDirPath = path.resolve(\n      commandResult.stdout.toString().replace(/\\n/g, '')\n    )\n\n    if (caDirPath === this.savePath) {\n      return\n    }\n\n    const caDirExists = await exists(caDirPath)\n\n    if (!caDirExists) {\n      return\n    }\n\n    await copyDir(caDirPath, this.savePath)\n  }\n\n  private async getCertificate() {\n    const key = await readFile(this.keyFilePath)\n    const cert = await readFile(this.certFilePath)\n\n    return {\n      key,\n      cert\n    }\n  }\n\n  private async createCertificate(hosts: string[]) {\n    const names = hosts.join(' ')\n    const mkcertBinary = await this.getMkcertBinary()\n\n    if (!mkcertBinary) {\n      debug(\n        `Mkcert does not exist, unable to generate certificate for ${names}`\n      )\n    }\n\n    await ensureDirExist(this.savePath)\n    await this.retainExistedCA()\n\n    const cmd = `${escapeStr(mkcertBinary)} -install -key-file ${escapeStr(\n      this.keyFilePath\n    )} -cert-file ${escapeStr(this.certFilePath)} ${names}`\n\n    await exec(cmd, {\n      env: {\n        ...process.env,\n        CAROOT: this.savePath,\n        JAVA_HOME: undefined\n      }\n    })\n\n    this.logger.info(\n      `The list of generated files:\\n${this.keyFilePath}\\n${this.certFilePath}`\n    )\n  }\n\n  private getLatestHash = async () => {\n    return {\n      key: await getHash(this.keyFilePath),\n      cert: await getHash(this.certFilePath)\n    }\n  }\n\n  private async regenerate(record: Record, hosts: string[]) {\n    await this.createCertificate(hosts)\n\n    const hash = await this.getLatestHash()\n\n    record.update({ hosts, hash })\n  }\n\n  public async init() {\n    await ensureDirExist(this.savePath)\n    await this.config.init()\n\n    const mkcertBinary = await this.getMkcertBinary()\n\n    if (!mkcertBinary) {\n      await this.initMkcert()\n    } else if (this.autoUpgrade) {\n      await this.upgradeMkcert()\n    }\n  }\n\n  private async getSourceInfo() {\n    const sourceInfo = await this.source.getSourceInfo()\n\n    if (!sourceInfo) {\n      const message =\n        typeof this.sourceType === 'string'\n          ? `Unsupported platform. Unable to find a binary file for ${process.platform\n          } platform with ${process.arch} arch on ${this.sourceType === 'github'\n            ? 'https://github.com/FiloSottile/mkcert/releases'\n            : 'https://liuweigl.coding.net/p/github/artifacts?hash=8d4dd8949af543159c1b5ac71ff1ff72'\n          }`\n          : 'Please check your custom \"source\", it seems to return invalid result'\n      throw new Error(message)\n    }\n\n    return sourceInfo\n  }\n\n  private async initMkcert() {\n    const sourceInfo = await this.getSourceInfo()\n\n    debug('The mkcert does not exist, download it now')\n\n    await this.downloadMkcert(sourceInfo.downloadUrl, this.savedMkcert)\n  }\n\n  private async upgradeMkcert() {\n    const versionManger = new VersionManger({ config: this.config })\n    const sourceInfo = await this.getSourceInfo()\n\n    if (!sourceInfo) {\n      this.logger.error(\n        'Can not obtain download information of mkcert, update skipped'\n      )\n      return\n    }\n\n    const versionInfo = versionManger.compare(sourceInfo.version)\n\n    if (!versionInfo.shouldUpdate) {\n      debug('Mkcert is kept latest version, update skipped')\n      return\n    }\n\n    if (versionInfo.breakingChange) {\n      debug(\n        'The current version of mkcert is %s, and the latest version is %s, there may be some breaking changes, update skipped',\n        versionInfo.currentVersion,\n        versionInfo.nextVersion\n      )\n      return\n    }\n\n    debug(\n      'The current version of mkcert is %s, and the latest version is %s, mkcert will be updated',\n      versionInfo.currentVersion,\n      versionInfo.nextVersion\n    )\n\n    await this.downloadMkcert(sourceInfo.downloadUrl, this.savedMkcert)\n    versionManger.update(versionInfo.nextVersion)\n  }\n\n  private async downloadMkcert(sourceUrl: string, distPath: string) {\n    const downloader = Downloader.create()\n    await downloader.download(sourceUrl, distPath)\n  }\n\n  public async renew(hosts: string[]) {\n    const record = new Record({ config: this.config })\n\n    if (this.force) {\n      debug('Certificate is forced to regenerate')\n\n      await this.regenerate(record, hosts)\n    }\n\n    if (!record.contains(hosts)) {\n      debug(\n        `The hosts changed from [${record.getHosts()}] to [${hosts}], start regenerate certificate`\n      )\n\n      await this.regenerate(record, hosts)\n      return\n    }\n\n    const hash = await this.getLatestHash()\n\n    if (!record.equal(hash)) {\n      debug(\n        `The hash changed from ${prettyLog(record.getHash())} to ${prettyLog(\n          hash\n        )}, start regenerate certificate`\n      )\n\n      await this.regenerate(record, hosts)\n      return\n    }\n\n    debug('Neither hosts nor hash has changed, skip regenerate certificate')\n  }\n\n  /**\n   * Get certificates\n   *\n   * @param hosts host collection\n   * @returns cretificates\n   */\n  public async install(hosts: string[]) {\n    if (hosts.length) {\n      await this.renew(hosts)\n    }\n\n    return await this.getCertificate()\n  }\n}\n\nexport default Mkcert\n", "import Debug from 'debug'\n\nimport { PLUGIN_NAME } from './constant'\n\nexport const debug = Debug(PLUGIN_NAME)\n", "import path from 'node:path'\n\nimport { debug } from '../lib/logger'\nimport { readFile, writeFile, prettyLog, deepMerge } from '../lib/util'\n\nexport type RecordMate = {\n  /**\n   * The hosts that have generated certificate\n   */\n  hosts: string[]\n\n  /**\n   * file hash\n   */\n  hash?: RecordHash\n}\n\nexport type RecordHash = {\n  key?: string\n  cert?: string\n}\n\nexport type ConfigOptions = {\n  savePath: string\n}\n\nconst CONFIG_FILE_NAME = 'config.json'\n\nclass Config {\n  /**\n   * The mkcert version\n   */\n  private version: string | undefined\n\n  private record: RecordMate | undefined\n\n  private configFilePath: string\n\n  constructor({ savePath }: ConfigOptions) {\n    this.configFilePath = path.resolve(savePath, CONFIG_FILE_NAME)\n  }\n\n  public async init() {\n    const str = await readFile(this.configFilePath)\n    const options = str ? JSON.parse(str) : undefined\n\n    if (options) {\n      this.version = options.version\n      this.record = options.record\n    }\n  }\n\n  private async serialize() {\n    await writeFile(this.configFilePath, prettyLog(this))\n  }\n\n  // deep merge\n  public async merge(obj: Record<string, any>) {\n    const currentStr = prettyLog(this)\n\n    deepMerge(this, obj)\n\n    const nextStr = prettyLog(this)\n\n    debug(\n      `Receive parameter\\n ${prettyLog(\n        obj\n      )}\\nUpdate config from\\n ${currentStr} \\nto\\n ${nextStr}`\n    )\n\n    await this.serialize()\n  }\n\n  public getRecord() {\n    return this.record\n  }\n\n  public getVersion() {\n    return this.version\n  }\n}\n\nexport default Config\n", "import axios from 'axios'\n\nimport { debug } from './logger'\n\nconst request = axios.create()\n\nrequest.interceptors.response.use(\n  res => {\n    return res\n  },\n  error => {\n    debug('Request error: %o', error)\n    return Promise.reject(error)\n  }\n)\n\nexport default request\n", "import { debug } from '../lib/logger'\nimport request from '../lib/request'\nimport { writeFile } from '../lib/util'\n\nclass Downloader {\n  public static create() {\n    return new Downloader()\n  }\n\n  private constructor() {}\n\n  public async download(downloadUrl: string, savedPath: string) {\n    debug('Downloading the mkcert executable from %s', downloadUrl)\n\n    const { data } = await request.get(downloadUrl, {\n      responseType: 'arraybuffer'\n    })\n\n    await writeFile(savedPath, data)\n\n    debug('The mkcert has been saved to %s', savedPath)\n  }\n}\n\nexport default Downloader\n", "import type Config from './config'\nimport type { RecordHash, RecordMate } from './config'\n\nexport type RecordProps = {\n  config: Config\n}\nclass Record {\n  private config: Config\n\n  constructor(options: RecordProps) {\n    this.config = options.config\n  }\n\n  public getHosts() {\n    return this.config.getRecord()?.hosts\n  }\n\n  public getHash() {\n    return this.config.getRecord()?.hash\n  }\n\n  public contains(hosts: string[]) {\n    const oldHosts = this.getHosts()\n\n    if (!oldHosts) {\n      return false\n    }\n\n    // require hosts is subset of oldHosts\n    for (const host of hosts) {\n      if (!oldHosts.includes(host)) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  // whether the files has been tampered with\n  public equal(hash: RecordHash) {\n    const oldHash = this.getHash()\n\n    if (!oldHash) {\n      return false\n    }\n\n    return oldHash.key === hash.key && oldHash.cert === hash.cert\n  }\n\n  public async update(record: RecordMate) {\n    await this.config.merge({ record })\n  }\n}\n\nexport default Record\n", "import request from '../lib/request'\n\nexport type SourceInfo = {\n  version: string\n  downloadUrl: string\n}\n\nexport abstract class BaseSource {\n  abstract getSourceInfo(): Promise<SourceInfo | undefined>\n\n  protected getPlatformIdentifier() {\n    const arch = process.arch === 'x64' ? 'amd64' : process.arch\n    return process.platform === 'win32'\n      ? `windows-${arch}.exe`\n      : `${process.platform}-${arch}`\n  }\n}\n\n/**\n * Download mkcert from github.com\n */\nexport class GithubSource extends BaseSource {\n  public static create() {\n    return new GithubSource()\n  }\n\n  private constructor() {\n    super()\n  }\n\n  public async getSourceInfo(): Promise<SourceInfo | undefined> {\n    const { data } = await request({\n      method: 'GET',\n      url: 'https://api.github.com/repos/FiloSottile/mkcert/releases/latest',\n    })\n    const platformIdentifier = this.getPlatformIdentifier()\n    const version = data.tag_name\n    const downloadUrl = data.assets.find((item: any) =>\n      item.name.includes(platformIdentifier)\n    )?.browser_download_url\n\n    if (!(version && downloadUrl)) {\n      return undefined\n    }\n\n    return {\n      downloadUrl,\n      version\n    }\n  }\n}\n\n/**\n * Download mkcert from coding.net\n *\n * @see https://help.coding.net/openapi\n */\nexport class CodingSource extends BaseSource {\n  public static CODING_API = 'https://e.coding.net/open-api'\n  public static CODING_AUTHORIZATION =\n    'token 000f7831ec425079439b0f55f55c729c9280d66e'\n  public static CODING_PROJECT_ID = 8524617\n  public static REPOSITORY = 'mkcert'\n\n  public static create() {\n    return new CodingSource()\n  }\n\n  private constructor() {\n    super()\n  }\n\n  private async request(data: any) {\n    return request({\n      data,\n      method: 'POST',\n      url: CodingSource.CODING_API,\n      headers: {\n        Authorization: CodingSource.CODING_AUTHORIZATION\n      }\n    })\n  }\n\n  /**\n   * Get filename of Coding.net artifacts\n   *\n   * @see https://liuweigl.coding.net/p/github/artifacts/885241/generic/packages\n   *\n   * @returns name\n   */\n  private getPackageName() {\n    return `mkcert-${this.getPlatformIdentifier()}`\n  }\n\n  async getSourceInfo(): Promise<SourceInfo | undefined> {\n    /**\n     * @see https://help.coding.net/openapi#e2106ec64e75af66f188463b1bb7e165\n     */\n    const { data: VersionData } = await this.request({\n      Action: 'DescribeArtifactVersionList',\n      ProjectId: CodingSource.CODING_PROJECT_ID,\n      Repository: CodingSource.REPOSITORY,\n      Package: this.getPackageName(),\n      PageSize: 1\n    })\n\n    const version = VersionData.Response.Data?.InstanceSet[0]?.Version\n\n    if (!version) {\n      return undefined\n    }\n\n    /**\n     * @see https://help.coding.net/openapi#63ad6bc7469373cef575e92bb92be71e\n     */\n    const { data: FileData } = await this.request({\n      Action: 'DescribeArtifactFileDownloadUrl',\n      ProjectId: CodingSource.CODING_PROJECT_ID,\n      Repository: CodingSource.REPOSITORY,\n      Package: this.getPackageName(),\n      PackageVersion: version\n    })\n\n    const downloadUrl = FileData.Response.Url\n\n    if (!downloadUrl) {\n      return undefined\n    }\n\n    return {\n      downloadUrl,\n      version\n    }\n  }\n}\n", "import { debug } from '../lib/logger'\n\nimport type Config from './config'\n\nexport type VersionMangerProps = {\n  config: Config\n}\n\nconst parseVersion = (version: string) => {\n  const str = version.trim().replace(/v/i, '')\n\n  return str.split('.')\n}\n\nclass VersionManger {\n  private config: Config\n\n  public constructor(props: VersionMangerProps) {\n    this.config = props.config\n  }\n\n  public async update(version: string) {\n    try {\n      await this.config.merge({ version })\n    } catch (err) {\n      debug('Failed to record mkcert version info: %o', err)\n    }\n  }\n\n  public compare(version: string) {\n    const currentVersion = this.config.getVersion()\n\n    if (!currentVersion) {\n      return {\n        currentVersion,\n        nextVersion: version,\n        breakingChange: false,\n        shouldUpdate: true\n      }\n    }\n\n    let breakingChange = false\n    let shouldUpdate = false\n\n    const newVersion = parseVersion(version)\n    const oldVersion = parseVersion(currentVersion)\n\n    for (let i = 0; i < newVersion.length; i++) {\n      if (newVersion[i] > oldVersion[i]) {\n        shouldUpdate = true\n        breakingChange = i === 0\n        break\n      }\n    }\n    return {\n      breakingChange,\n      shouldUpdate,\n      currentVersion,\n      nextVersion: version\n    }\n  }\n}\n\nexport default VersionManger\n"],
  "mappings": "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",
  "names": ["os", "path", "path", "os", "path", "process", "path", "path", "path", "process"]
}
