{"version":3,"sources":["../../src/utilities/package-manager.ts","../../src/utilities/check-package-version.ts"],"names":[],"mappings":";;;AAMA,IAAM,4BAAA,GAA+D;AAAA,EACnE,GAAA,EAAK,mBAAA;AAAA,EACL,IAAA,EAAM,WAAA;AAAA,EACN,IAAA,EAAM,gBAAA;AAAA,EACN,GAAA,EAAK;AACP,CAAA;AAEA,IAAM,gBAAA,GAAqD;AAAA,EACzD,GAAA,EAAK,CAAC,WAAA,EAAa,gBAAA,EAAkB,YAAY,WAAW,CAAA;AAAA,EAC5D,IAAA,EAAM,CAAC,mBAAA,EAAqB,gBAAA,EAAkB,YAAY,WAAW,CAAA;AAAA,EACrE,IAAA,EAAM,CAAC,mBAAA,EAAqB,WAAA,EAAa,YAAY,WAAW,CAAA;AAAA,EAChE,GAAA,EAAK,CAAC,mBAAA,EAAqB,WAAA,EAAa,kBAAkB,WAAW;AACvE,CAAA;AAEO,SAAS,gBACd,cAAA,EACQ;AACR,EAAA,OAAO,6BAA6B,cAAc,CAAA;AACpD;AAEO,SAAS,sBACd,cAAA,EACU;AACV,EAAA,OAAO,iBAAiB,cAAc,CAAA;AACxC;AAEO,SAAS,kBACd,cAAA,EACQ;AACR,EAAA,QAAQ,cAAA;AAAgB,IACtB,KAAK,KAAA;AACH,MAAA,OAAO,OAAA;AAAA,IACT,KAAK,MAAA;AACH,MAAA,OAAO,cAAA;AAAA,IACT,KAAK,MAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,KAAA;AACH,MAAA,OAAO,aAAA;AAAA;AAEb;;;ACpCO,IAAM,uBAAA,GAA0B,CAAC,KAAA,KACtC,KAAA,EAAO,IAAA;AAAA,EACL,CAAA,GAAA,KACE,GAAA,CAAI,QAAA,CAAS,mBAAmB,CAAA,IAChC,GAAA,CAAI,QAAA,CAAS,WAAW,CAAA,IACxB,GAAA,CAAI,QAAA,CAAS,gBAAgB,CAAA,IAC7B,GAAA,CAAI,QAAA,CAAS,gBAAgB,CAAA,IAC7B,GAAA,CAAI,QAAA,CAAS,eAAe,CAAA,IAC5B,GAAA,CAAI,QAAA,CAAS,UAAU,CAAA,IACvB,GAAA,CAAI,QAAA,CAAS,WAAW;AAC5B;AAQK,IAAM,mBAAA,GAAsB,CACjC,KAAA,EACA,MAAA,KACG;AACH,EAAA,IAAI,uBAAA,CAAwB,KAAK,CAAA,EAAG;AAClC,IAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,MAAA,CAAO,cAAc,CAAA;AAC1D,IAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,MAAA,CAAO,cAAc,CAAA;AAE9D,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,QACE,qHAAA;AAAA,QACA,CAAA,kBAAA,EAAW,YAAY,CAAA,4BAAA,EAA+B,cAAc,CAAA,wDAAA,CAAA;AAAA,QACpE;AAAA,OACF,CAAE,KAAK,IAAI;AAAA,KACb;AAAA,EACF;AACF","file":"chunk-SP3UCTLI.cjs","sourcesContent":["import type { StormWorkspaceConfig } from \"@storm-software/config\";\n\nexport type PackageManager = NonNullable<\n  StormWorkspaceConfig[\"packageManager\"]\n>;\n\nconst LOCK_FILE_BY_PACKAGE_MANAGER: Record<PackageManager, string> = {\n  npm: \"package-lock.json\",\n  yarn: \"yarn.lock\",\n  pnpm: \"pnpm-lock.yaml\",\n  bun: \"bun.lock\"\n};\n\nconst OTHER_LOCK_FILES: Record<PackageManager, string[]> = {\n  npm: [\"yarn.lock\", \"pnpm-lock.yaml\", \"bun.lock\", \"bun.lockb\"],\n  yarn: [\"package-lock.json\", \"pnpm-lock.yaml\", \"bun.lock\", \"bun.lockb\"],\n  pnpm: [\"package-lock.json\", \"yarn.lock\", \"bun.lock\", \"bun.lockb\"],\n  bun: [\"package-lock.json\", \"yarn.lock\", \"pnpm-lock.yaml\", \"bun.lockb\"]\n};\n\nexport function getLockFileName(\n  packageManager: PackageManager\n): string {\n  return LOCK_FILE_BY_PACKAGE_MANAGER[packageManager];\n}\n\nexport function getOtherLockFileNames(\n  packageManager: PackageManager\n): string[] {\n  return OTHER_LOCK_FILES[packageManager];\n}\n\nexport function getInstallCommand(\n  packageManager: PackageManager\n): string {\n  switch (packageManager) {\n    case \"npm\":\n      return \"npm i\";\n    case \"yarn\":\n      return \"yarn install\";\n    case \"pnpm\":\n      return \"pnpm i\";\n    case \"bun\":\n      return \"bun install\";\n  }\n}\n","import type { StormWorkspaceConfig } from \"@storm-software/config\";\nimport { getInstallCommand, getLockFileName } from \"./package-manager\";\n\n/**\n * Checks if the package version has changed by looking for changes in lock files.\n *\n * @param files - An array of file paths to check for changes. Typically, this would be the list of files changed in a git commit or checkout.\n * @returns true if any of the lock files have changed, indicating a potential change in package versions; otherwise, false.\n */\nexport const isPackageVersionChanged = (files: string[]) =>\n  files?.some(\n    arg =>\n      arg.includes(\"package-lock.json\") ||\n      arg.includes(\"yarn.lock\") ||\n      arg.includes(\"pnpm-lock.json\") ||\n      arg.includes(\"pnpm-lock.yaml\") ||\n      arg.includes(\"pnpm-lock.yml\") ||\n      arg.includes(\"bun.lock\") ||\n      arg.includes(\"bun.lockb\")\n  );\n\n/**\n * Checks if the package version has changed and logs a warning if it has. This function is typically used in git hooks to alert developers to run the configured package manager install command when lock files have changed, ensuring that their local environment is up to date with the latest dependencies.\n *\n * @param files - An array of file paths to check for changes. Typically, this would be the list of files changed in a git commit or checkout.\n * @param config - The workspace configuration used to determine the package manager and install command.\n */\nexport const checkPackageVersion = (\n  files: string[],\n  config: StormWorkspaceConfig\n) => {\n  if (isPackageVersionChanged(files)) {\n    const lockFileName = getLockFileName(config.packageManager);\n    const installCommand = getInstallCommand(config.packageManager);\n\n    console.warn(\n      [\n        \"⚠️ ----------------------------------------------------------------------------------------- ⚠️\",\n        `⚠️  The ${lockFileName} file changed! Please run \\`${installCommand}\\` to ensure your packages are up to date.  ⚠️`,\n        \"⚠️ ----------------------------------------------------------------------------------------- ⚠️\"\n      ].join(\"\\n\")\n    );\n  }\n};\n"]}