@ms-cloudpack/package-utilities 3.1.1 → 3.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"findPackagesFromPath.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/findPackagesFromPath.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAE9B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;QAII;IACJ,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;QAEI;IACJ,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,UAAU,CAAC,CAwFtB"}
1
+ {"version":3,"file":"findPackagesFromPath.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/findPackagesFromPath.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE;IAClD;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAE9B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;QAII;IACJ,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;QAEI;IACJ,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAAC,UAAU,CAAC,CAuFtB"}
@@ -20,7 +20,6 @@ export async function findPackagesFromPath(options) {
20
20
  }
21
21
  let { gitRootPath } = options;
22
22
  if (!gitRootPath) {
23
- gitRootPath = path;
24
23
  try {
25
24
  gitRootPath = findGitRoot(path);
26
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"findPackagesFromPath.js","sourceRoot":"","sources":["../../src/createResolveMap/findPackagesFromPath.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageJson } from '@ms-cloudpack/bundler-types';\nimport { isFolder } from '@ms-cloudpack/path-utilities';\nimport glob from 'fast-glob';\nimport { dirname, join } from 'path';\nimport { findGitRoot } from 'workspace-tools';\nimport { PackageDefinitions } from '../PackageDefinitions.js';\nimport { findPackagePath } from '../findPackagePath.js';\nimport { isExternalPackage } from '../isExternalPackage.js';\nimport type { PackageMap } from './PackageMap.js';\nimport type { ResolveMapEntry } from './ResolveMapEntry.js';\n\n/**\n * Find all packages from a given path. We do this by walking the dependency tree\n * of the app to build a map of all packages and their dependencies.\n */\nexport async function findPackagesFromPath(options: {\n /**\n * Paths to search for package.json files and traverse their dependencies to build a PackageMap.\n */\n paths: string[];\n\n /**\n * Package cache.\n */\n packages?: PackageDefinitions;\n\n /**\n * Where to stop looking for packages. If not specified, will look for a git root. If one is not\n * found, will use the first path in the paths array.\n */\n gitRootPath?: string;\n\n /**\n * If true will check semver requirements for all dependencies. Note that if the workspace\n * uses resolutions to force a particular version of a dependency, this could cause a failure.\n * TODO: read resolutions from package.json and use them to allow mismatches.\n **/\n useStrictVersioning?: boolean;\n\n /**\n * If true will glob for all package.json files in the path and add them to the map.\n **/\n discoverPackages?: boolean;\n}): Promise<PackageMap> {\n const { paths, discoverPackages, useStrictVersioning, packages = PackageDefinitions.getInstance() } = options;\n const packageMap: PackageMap = {};\n const visitedPaths = new Set<string>();\n const pathsToVisit: string[] = [];\n\n for (const path of paths) {\n if (!(await isFolder(path))) {\n throw new Error(`Path ${path} is not a folder.`);\n }\n\n let { gitRootPath } = options;\n\n if (!gitRootPath) {\n gitRootPath = path;\n try {\n gitRootPath = findGitRoot(path);\n } catch (e) {\n /* ignore */\n }\n }\n\n if (discoverPackages) {\n const packagePaths = await glob('**/package.json', { cwd: path, ignore: ['**/node_modules/**'] });\n\n pathsToVisit.push(...packagePaths.map((p) => dirname(join(path, p))));\n } else {\n pathsToVisit.push(path);\n }\n\n while (pathsToVisit.length) {\n const packagePath = pathsToVisit.shift();\n\n if (packagePath && !visitedPaths.has(packagePath)) {\n visitedPaths.add(packagePath);\n\n const packageDefinition = await packages.get(packagePath);\n\n if (!packageDefinition) {\n throw new Error(`Could not find package definition at \"${packagePath}\".`);\n }\n\n if (packageDefinition?.name && packageDefinition.version) {\n const { name, version } = packageDefinition;\n const entry = initPackageEntry({ path: packagePath, packageMap, definition: packageDefinition });\n\n // Add all dependencies to the list of paths to visit.\n const dependencies = {\n ...(packageDefinition.dependencies || {}),\n ...(packageDefinition.peerDependencies || {}),\n } as Record<string, string>;\n\n for (const [dependencyName, versionRequirement] of Object.entries(dependencies)) {\n const isPeerDependency = !!packageDefinition.peerDependencies?.[dependencyName];\n\n const dependencyPath = await findPackagePath({\n dependencyName,\n versionRequirement: useStrictVersioning && !isPeerDependency ? versionRequirement : undefined,\n cwd: packagePath,\n gitRootPath,\n });\n\n if (dependencyPath) {\n const dependencyDefinition = await packages.get(dependencyPath);\n if (dependencyDefinition?.name && dependencyDefinition.version) {\n const dependencyEntry = initPackageEntry({\n path: dependencyPath,\n packageMap,\n definition: dependencyDefinition,\n });\n\n entry.dependencies[dependencyDefinition.name] = dependencyDefinition.version;\n dependencyEntry.requiredBy[`${name}@${version}`] = versionRequirement;\n\n pathsToVisit.push(dependencyPath);\n }\n } else if (!isPeerDependency) {\n throw new Error(\n `Could not find dependency \"${dependencyName}\" at \"${packagePath}\" with version requirement \"${versionRequirement}\".`,\n );\n }\n }\n }\n }\n }\n }\n\n return packageMap;\n}\n\nfunction initPackageEntry(options: { path: string; packageMap: PackageMap; definition: PackageJson }): ResolveMapEntry {\n const { path = '', packageMap, definition } = options;\n const { name = '_no_name_', version = '*' } = definition;\n\n const mapEntry = (packageMap[name] ||= {}) as Record<string, ResolveMapEntry>;\n const entry = (mapEntry[version] ||= {\n name,\n version,\n path,\n dependencies: {},\n requiredBy: {},\n });\n\n if (isExternalPackage(path)) {\n entry.isExternal = true;\n }\n\n return entry;\n}\n"]}
1
+ {"version":3,"file":"findPackagesFromPath.js","sourceRoot":"","sources":["../../src/createResolveMap/findPackagesFromPath.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageJson } from '@ms-cloudpack/bundler-types';\nimport { isFolder } from '@ms-cloudpack/path-utilities';\nimport glob from 'fast-glob';\nimport { dirname, join } from 'path';\nimport { findGitRoot } from 'workspace-tools';\nimport { PackageDefinitions } from '../PackageDefinitions.js';\nimport { findPackagePath } from '../findPackagePath.js';\nimport { isExternalPackage } from '../isExternalPackage.js';\nimport type { PackageMap } from './PackageMap.js';\nimport type { ResolveMapEntry } from './ResolveMapEntry.js';\n\n/**\n * Find all packages from a given path. We do this by walking the dependency tree\n * of the app to build a map of all packages and their dependencies.\n */\nexport async function findPackagesFromPath(options: {\n /**\n * Paths to search for package.json files and traverse their dependencies to build a PackageMap.\n */\n paths: string[];\n\n /**\n * Package cache.\n */\n packages?: PackageDefinitions;\n\n /**\n * Where to stop looking for packages. If not specified, will look for a git root. If one is not\n * found, will use the first path in the paths array.\n */\n gitRootPath?: string;\n\n /**\n * If true will check semver requirements for all dependencies. Note that if the workspace\n * uses resolutions to force a particular version of a dependency, this could cause a failure.\n * TODO: read resolutions from package.json and use them to allow mismatches.\n **/\n useStrictVersioning?: boolean;\n\n /**\n * If true will glob for all package.json files in the path and add them to the map.\n **/\n discoverPackages?: boolean;\n}): Promise<PackageMap> {\n const { paths, discoverPackages, useStrictVersioning, packages = PackageDefinitions.getInstance() } = options;\n const packageMap: PackageMap = {};\n const visitedPaths = new Set<string>();\n const pathsToVisit: string[] = [];\n\n for (const path of paths) {\n if (!(await isFolder(path))) {\n throw new Error(`Path ${path} is not a folder.`);\n }\n\n let { gitRootPath } = options;\n\n if (!gitRootPath) {\n try {\n gitRootPath = findGitRoot(path);\n } catch (e) {\n /* ignore */\n }\n }\n\n if (discoverPackages) {\n const packagePaths = await glob('**/package.json', { cwd: path, ignore: ['**/node_modules/**'] });\n\n pathsToVisit.push(...packagePaths.map((p) => dirname(join(path, p))));\n } else {\n pathsToVisit.push(path);\n }\n\n while (pathsToVisit.length) {\n const packagePath = pathsToVisit.shift();\n\n if (packagePath && !visitedPaths.has(packagePath)) {\n visitedPaths.add(packagePath);\n\n const packageDefinition = await packages.get(packagePath);\n\n if (!packageDefinition) {\n throw new Error(`Could not find package definition at \"${packagePath}\".`);\n }\n\n if (packageDefinition?.name && packageDefinition.version) {\n const { name, version } = packageDefinition;\n const entry = initPackageEntry({ path: packagePath, packageMap, definition: packageDefinition });\n\n // Add all dependencies to the list of paths to visit.\n const dependencies = {\n ...(packageDefinition.dependencies || {}),\n ...(packageDefinition.peerDependencies || {}),\n } as Record<string, string>;\n\n for (const [dependencyName, versionRequirement] of Object.entries(dependencies)) {\n const isPeerDependency = !!packageDefinition.peerDependencies?.[dependencyName];\n\n const dependencyPath = await findPackagePath({\n dependencyName,\n versionRequirement: useStrictVersioning && !isPeerDependency ? versionRequirement : undefined,\n cwd: packagePath,\n gitRootPath,\n });\n\n if (dependencyPath) {\n const dependencyDefinition = await packages.get(dependencyPath);\n if (dependencyDefinition?.name && dependencyDefinition.version) {\n const dependencyEntry = initPackageEntry({\n path: dependencyPath,\n packageMap,\n definition: dependencyDefinition,\n });\n\n entry.dependencies[dependencyDefinition.name] = dependencyDefinition.version;\n dependencyEntry.requiredBy[`${name}@${version}`] = versionRequirement;\n\n pathsToVisit.push(dependencyPath);\n }\n } else if (!isPeerDependency) {\n throw new Error(\n `Could not find dependency \"${dependencyName}\" at \"${packagePath}\" with version requirement \"${versionRequirement}\".`,\n );\n }\n }\n }\n }\n }\n }\n\n return packageMap;\n}\n\nfunction initPackageEntry(options: { path: string; packageMap: PackageMap; definition: PackageJson }): ResolveMapEntry {\n const { path = '', packageMap, definition } = options;\n const { name = '_no_name_', version = '*' } = definition;\n\n const mapEntry = (packageMap[name] ||= {}) as Record<string, ResolveMapEntry>;\n const entry = (mapEntry[version] ||= {\n name,\n version,\n path,\n dependencies: {},\n requiredBy: {},\n });\n\n if (isExternalPackage(path)) {\n entry.isExternal = true;\n }\n\n return entry;\n}\n"]}
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.34.8"
8
+ "packageVersion": "7.35.2"
9
9
  }
10
10
  ]
11
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/package-utilities",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
4
4
  "description": "Utilities for resolving/parsing packages and their imports.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -15,11 +15,11 @@
15
15
  "dependencies": {
16
16
  "@babel/parser": "^7.16.12",
17
17
  "@babel/traverse": "^7.16.10",
18
- "@ms-cloudpack/bundler-types": "^0.13.0",
18
+ "@ms-cloudpack/bundler-types": "^0.13.1",
19
19
  "@ms-cloudpack/json-utilities": "^0.0.6",
20
- "@ms-cloudpack/package-overrides": "^0.3.7",
21
- "@ms-cloudpack/path-utilities": "^2.2.2",
22
- "@ms-cloudpack/path-string-parsing": "^1.0.1",
20
+ "@ms-cloudpack/package-overrides": "^0.3.8",
21
+ "@ms-cloudpack/path-utilities": "^2.2.3",
22
+ "@ms-cloudpack/path-string-parsing": "^1.0.2",
23
23
  "fast-glob": "^3.2.12",
24
24
  "merge": "^2.1.1",
25
25
  "resolve": "^1.22.0",