{
  "version": 3,
  "sources": ["../../../../src/packages/workspace.find-packages/index.ts"],
  "sourcesContent": ["import { packageIsInstallable } from '../cli-utils/index.ts';\nimport { USEFUL_NON_ROOT_PNPM_FIELDS } from '../constants/index.ts';\nimport type {\n  Project,\n  ProjectManifest,\n  SupportedArchitectures,\n} from '../types/index.ts';\nimport { lexCompare } from '../util.lex-comparator/index.ts';\nimport { findPackages } from '../fs.find-packages/index.ts';\nimport { logger } from '../logger/index.ts';\n\nexport type { Project };\n\nexport type WorkspacePackagesPatterns = 'all-packages' | string[];\n\nexport interface FindWorkspacePackagesOpts {\n  /**\n   * An array of globs for the packages included in the workspace.\n   *\n   * In most cases, callers should read the pnpm-workspace.yml and pass the\n   * \"packages\" field.\n   */\n  patterns?: string[] | undefined;\n\n  engineStrict?: boolean | undefined;\n  packageManagerStrict?: boolean | undefined;\n  packageManagerStrictVersion?: boolean | undefined;\n  nodeVersion?: string | undefined;\n  sharedWorkspaceLockfile?: boolean | undefined;\n  supportedArchitectures?: SupportedArchitectures | undefined;\n}\n\nexport async function findWorkspacePackages(\n  workspaceRoot: string,\n  opts?: FindWorkspacePackagesOpts | undefined\n): Promise<Project[]> {\n  const pkgs = await findWorkspacePackagesNoCheck(workspaceRoot, {\n    ...opts,\n    patterns: opts?.patterns ?? [],\n  });\n\n  for (const pkg of pkgs) {\n    packageIsInstallable(pkg.rootDir, pkg.manifest, {\n      ...opts,\n      supportedArchitectures: opts?.supportedArchitectures ?? {\n        os: ['current'],\n        cpu: ['current'],\n        libc: ['current'],\n      },\n    });\n\n    // When setting shared-workspace-lockfile=false, `pnpm` can be set in sub-project's package.json.\n    if (\n      opts?.sharedWorkspaceLockfile === true &&\n      pkg.rootDir !== workspaceRoot\n    ) {\n      checkNonRootProjectManifest(pkg);\n    }\n  }\n\n  return pkgs;\n}\n\nexport async function findWorkspacePackagesNoCheck(\n  workspaceRoot: string,\n  opts?: { patterns?: string[] | undefined } | undefined\n): Promise<Project[]> {\n  const pkgs = await findPackages(workspaceRoot, {\n    ignore: ['**/node_modules/**', '**/bower_components/**'],\n    includeRoot: true,\n    patterns: opts?.patterns,\n  });\n\n  pkgs.sort((pkg1: { rootDir: string }, pkg2: { rootDir: string }) =>\n    lexCompare(pkg1.rootDir, pkg2.rootDir)\n  );\n\n  return pkgs;\n}\n\nconst uselessNonRootManifestFields: Array<keyof ProjectManifest> = [\n  'resolutions',\n];\n\ntype ProjectManifestPnpm = Required<ProjectManifest>['pnpm'];\nconst usefulNonRootPnpmFields: ReadonlyArray<string> =\n  USEFUL_NON_ROOT_PNPM_FIELDS;\n\nfunction checkNonRootProjectManifest({ manifest, rootDir }: Project): void {\n  const warn = printNonRootFieldWarning.bind(null, rootDir);\n\n  for (const field of uselessNonRootManifestFields) {\n    if (field in manifest) {\n      warn(field);\n    }\n  }\n\n  for (const field in manifest.pnpm) {\n    if (!usefulNonRootPnpmFields.includes(field as keyof ProjectManifestPnpm)) {\n      warn(`pnpm.${field}`);\n    }\n  }\n}\n\nfunction printNonRootFieldWarning(prefix: string, propertyPath: string): void {\n  logger.warn({\n    message: `The field \"${propertyPath}\" was found in ${prefix}/package.json. This will not take effect. You should configure \"${propertyPath}\" at the root of the workspace instead.`,\n    prefix,\n  });\n}\n"],
  "mappings": "AAAA,SAAS,4BAA4B;AACrC,SAAS,mCAAmC;AAM5C,SAAS,kBAAkB;AAC3B,SAAS,oBAAoB;AAC7B,SAAS,cAAc;AAuBvB,eAAsB,sBACpB,eACA,MACoB;AACpB,QAAM,OAAO,MAAM,6BAA6B,eAAe;AAAA,IAC7D,GAAG;AAAA,IACH,UAAU,MAAM,YAAY,CAAC;AAAA,EAC/B,CAAC;AAED,aAAW,OAAO,MAAM;AACtB,yBAAqB,IAAI,SAAS,IAAI,UAAU;AAAA,MAC9C,GAAG;AAAA,MACH,wBAAwB,MAAM,0BAA0B;AAAA,QACtD,IAAI,CAAC,SAAS;AAAA,QACd,KAAK,CAAC,SAAS;AAAA,QACf,MAAM,CAAC,SAAS;AAAA,MAClB;AAAA,IACF,CAAC;AAGD,QACE,MAAM,4BAA4B,QAClC,IAAI,YAAY,eAChB;AACA,kCAA4B,GAAG;AAAA,IACjC;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAsB,6BACpB,eACA,MACoB;AACpB,QAAM,OAAO,MAAM,aAAa,eAAe;AAAA,IAC7C,QAAQ,CAAC,sBAAsB,wBAAwB;AAAA,IACvD,aAAa;AAAA,IACb,UAAU,MAAM;AAAA,EAClB,CAAC;AAED,OAAK;AAAA,IAAK,CAAC,MAA2B,SACpC,WAAW,KAAK,SAAS,KAAK,OAAO;AAAA,EACvC;AAEA,SAAO;AACT;AAEA,MAAM,+BAA6D;AAAA,EACjE;AACF;AAGA,MAAM,0BACJ;AAEF,SAAS,4BAA4B,EAAE,UAAU,QAAQ,GAAkB;AACzE,QAAM,OAAO,yBAAyB,KAAK,MAAM,OAAO;AAExD,aAAW,SAAS,8BAA8B;AAChD,QAAI,SAAS,UAAU;AACrB,WAAK,KAAK;AAAA,IACZ;AAAA,EACF;AAEA,aAAW,SAAS,SAAS,MAAM;AACjC,QAAI,CAAC,wBAAwB,SAAS,KAAkC,GAAG;AACzE,WAAK,QAAQ,KAAK,EAAE;AAAA,IACtB;AAAA,EACF;AACF;AAEA,SAAS,yBAAyB,QAAgB,cAA4B;AAC5E,SAAO,KAAK;AAAA,IACV,SAAS,cAAc,YAAY,kBAAkB,MAAM,mEAAmE,YAAY;AAAA,IAC1I;AAAA,EACF,CAAC;AACH;",
  "names": []
}
