@ms-cloudpack/package-utilities 13.3.2 → 13.3.6

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":"findPackage.d.ts","sourceRoot":"","sources":["../../src/findFileInPackage/findPackage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,UAAU,EAAE,WAAW,CAAC;IACxB,qDAAqD;IACrD,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,uFAAuF;IACvF,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACnD;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,EAAE,uBAAuB,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,SAAS,CAAC,CAsEvE"}
1
+ {"version":3,"file":"findPackage.d.ts","sourceRoot":"","sources":["../../src/findFileInPackage/findPackage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAEpC,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,UAAU,EAAE,WAAW,CAAC;IACxB,qDAAqD;IACrD,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,uFAAuF;IACvF,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACnD;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD;;;OAGG;IACH,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,EAAE,uBAAuB,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,SAAS,CAAC,CAmFvE"}
@@ -33,15 +33,29 @@ export async function findPackage(options, context) {
33
33
  : path.join(packagePath, module, dependencyName);
34
34
  let definition;
35
35
  let realPath;
36
- try {
37
- // Get the realpath in case of a symlinked layout.
38
- // realpathSync.native is faster than either realpathSync or realpath.
39
- // https://github.com/microsoft/cloudpack/pull/2127#discussion_r1607070201
40
- realPath = realPathCache?.[resolvedPath] || fs.realpathSync.native(resolvedPath);
41
- definition = await packages.tryGet(realPath, { importerContext });
36
+ // Check if we've already tried this path (success or failure)
37
+ if (resolvedPath in realPathCache) {
38
+ realPath = realPathCache[resolvedPath];
42
39
  }
43
- catch {
44
- // Ignore errors and keep looking.
40
+ else {
41
+ try {
42
+ // Get the realpath in case of a symlinked layout.
43
+ // realpathSync.native is faster than either realpathSync or realpath.
44
+ // https://github.com/microsoft/cloudpack/pull/2127#discussion_r1607070201
45
+ realPath = fs.realpathSync.native(resolvedPath);
46
+ realPathCache[resolvedPath] = realPath;
47
+ }
48
+ catch {
49
+ realPathCache[resolvedPath] = undefined; // Cache the failure so we don't try again
50
+ }
51
+ }
52
+ if (realPath) {
53
+ try {
54
+ definition = await packages.tryGet(realPath, { importerContext });
55
+ }
56
+ catch {
57
+ // Ignore errors and keep looking.
58
+ }
45
59
  }
46
60
  if (realPath && definition) {
47
61
  realPathCache[resolvedPath] = realPath;
@@ -1 +1 @@
1
- {"version":3,"file":"findPackage.js","sourceRoot":"","sources":["../../src/findFileInPackage/findPackage.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport type {\n ModuleResolutionConfig,\n PackageDefinitionsCache,\n PackageImporterContext,\n PackageJson,\n} from '@ms-cloudpack/common-types';\n\nexport interface FindPackageOptions {\n /**\n * Dependency name as specified in the parent's deps and installed in `node_modules`.\n * (This is usually the actual name, except for renamed non-semver deps.)\n */\n dependencyName: string;\n /** Start searching up from the `node_modules` of this parent folder. */\n startPath: string;\n /** Parent definition, used for self imports. */\n definition: PackageJson;\n /** Context in which `dependencyName` is imported. */\n importerContext?: PackageImporterContext;\n /** Stop searching at this path (usually the git root). Defaults to filesystem root. */\n rootPath: string | undefined;\n /**\n * Cache of realpath results (improves perf, particularly on Windows).\n * As of writing, this is scoped to a `findPackagesFromPath` call.\n * (see https://github.com/microsoft/cloudpack/pull/2184)\n */\n realPathCache?: Record<string, string | undefined>;\n /**\n * Module resolution configuration. Includes settings for custom module directories and\n * dedupe behavior. When `dedupe` is specified, those packages will be resolved from\n * the `appPath` to ensure consistent resolution across the dependency tree.\n */\n moduleResolutionConfig?: ModuleResolutionConfig;\n /**\n * Application path to use for dedupe resolution. If the dependency is in the\n * `moduleResolutionConfig.dedupe` list, resolution will start from here instead of `startPath`.\n */\n appPath: string | undefined;\n}\n\nexport interface FindPackageContext {\n /**\n * Package cache.\n */\n packages: PackageDefinitionsCache;\n}\n\n/**\n * Find the package.json contents for `dependencyName`, searching up under `node_modules` folders\n * starting at `startPath` and ending at `rootPath` (usually the git root) or the filesystem root.\n */\nexport async function findPackage(\n options: FindPackageOptions,\n context: FindPackageContext,\n): Promise<{ packagePath: string; definition: PackageJson } | undefined> {\n const { dependencyName, rootPath, importerContext, realPathCache = {}, moduleResolutionConfig, appPath } = options;\n const { packages } = context;\n\n if (dependencyName == options.definition.name) {\n // Self-import detected, returning parent path and definition\n return { packagePath: options.startPath, definition: options.definition };\n }\n\n // Use appPath for deduped packages to ensure consistent resolution, otherwise use startPath\n const shouldDedupe = moduleResolutionConfig?.dedupe?.includes(dependencyName);\n let startPath: string;\n\n if (shouldDedupe) {\n if (!appPath) {\n throw new Error(`appPath is required when resolving deduped package \"${dependencyName}\"`);\n }\n startPath = appPath;\n } else {\n startPath = options.startPath;\n }\n\n for (const module of moduleResolutionConfig?.modules ?? ['node_modules']) {\n const isAbsolutePath = path.isAbsolute(module);\n let packagePath = isAbsolutePath ? module : startPath;\n const isStoreLayout = /[\\\\/]\\.(pnpm|store)[\\\\/]/.test(packagePath);\n\n do {\n const resolvedPath = isAbsolutePath\n ? path.join(module, dependencyName)\n : path.join(packagePath, module, dependencyName);\n let definition: PackageJson | undefined;\n let realPath: string | undefined;\n\n try {\n // Get the realpath in case of a symlinked layout.\n // realpathSync.native is faster than either realpathSync or realpath.\n // https://github.com/microsoft/cloudpack/pull/2127#discussion_r1607070201\n realPath = realPathCache?.[resolvedPath] || fs.realpathSync.native(resolvedPath);\n definition = await packages.tryGet(realPath, { importerContext });\n } catch {\n // Ignore errors and keep looking.\n }\n\n if (realPath && definition) {\n realPathCache[resolvedPath] = realPath;\n return { packagePath: realPath, definition };\n }\n\n if (path.isAbsolute(module)) {\n break;\n }\n\n // We haven't found it. Try to move up a directory.\n packagePath = path.dirname(packagePath);\n\n // If we moved up into a scope folder, skip over it.\n // Exception: in a manager using a store layout, packages starting with @ are NOT scope folders;\n // e.g. @foo/bar will be in a folder like @foo-bar-npm-1.2.3-abcdef1234 or @foo-bar@1.2.3\n if (!isStoreLayout && path.basename(packagePath).startsWith('@')) {\n packagePath = path.dirname(packagePath);\n }\n\n // Skip over nested node_modules folders.\n if (packagePath.endsWith('node_modules')) {\n packagePath = path.dirname(packagePath);\n }\n } while ((!rootPath || packagePath.length >= rootPath.length) && path.dirname(packagePath) !== packagePath);\n }\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"findPackage.js","sourceRoot":"","sources":["../../src/findFileInPackage/findPackage.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport type {\n ModuleResolutionConfig,\n PackageDefinitionsCache,\n PackageImporterContext,\n PackageJson,\n} from '@ms-cloudpack/common-types';\n\nexport interface FindPackageOptions {\n /**\n * Dependency name as specified in the parent's deps and installed in `node_modules`.\n * (This is usually the actual name, except for renamed non-semver deps.)\n */\n dependencyName: string;\n /** Start searching up from the `node_modules` of this parent folder. */\n startPath: string;\n /** Parent definition, used for self imports. */\n definition: PackageJson;\n /** Context in which `dependencyName` is imported. */\n importerContext?: PackageImporterContext;\n /** Stop searching at this path (usually the git root). Defaults to filesystem root. */\n rootPath: string | undefined;\n /**\n * Cache of realpath results (improves perf, particularly on Windows).\n * As of writing, this is scoped to a `findPackagesFromPath` call.\n * (see https://github.com/microsoft/cloudpack/pull/2184)\n */\n realPathCache?: Record<string, string | undefined>;\n /**\n * Module resolution configuration. Includes settings for custom module directories and\n * dedupe behavior. When `dedupe` is specified, those packages will be resolved from\n * the `appPath` to ensure consistent resolution across the dependency tree.\n */\n moduleResolutionConfig?: ModuleResolutionConfig;\n /**\n * Application path to use for dedupe resolution. If the dependency is in the\n * `moduleResolutionConfig.dedupe` list, resolution will start from here instead of `startPath`.\n */\n appPath: string | undefined;\n}\n\nexport interface FindPackageContext {\n /**\n * Package cache.\n */\n packages: PackageDefinitionsCache;\n}\n\n/**\n * Find the package.json contents for `dependencyName`, searching up under `node_modules` folders\n * starting at `startPath` and ending at `rootPath` (usually the git root) or the filesystem root.\n */\nexport async function findPackage(\n options: FindPackageOptions,\n context: FindPackageContext,\n): Promise<{ packagePath: string; definition: PackageJson } | undefined> {\n const { dependencyName, rootPath, importerContext, realPathCache = {}, moduleResolutionConfig, appPath } = options;\n const { packages } = context;\n\n if (dependencyName == options.definition.name) {\n // Self-import detected, returning parent path and definition\n return { packagePath: options.startPath, definition: options.definition };\n }\n\n // Use appPath for deduped packages to ensure consistent resolution, otherwise use startPath\n const shouldDedupe = moduleResolutionConfig?.dedupe?.includes(dependencyName);\n let startPath: string;\n\n if (shouldDedupe) {\n if (!appPath) {\n throw new Error(`appPath is required when resolving deduped package \"${dependencyName}\"`);\n }\n startPath = appPath;\n } else {\n startPath = options.startPath;\n }\n\n for (const module of moduleResolutionConfig?.modules ?? ['node_modules']) {\n const isAbsolutePath = path.isAbsolute(module);\n let packagePath = isAbsolutePath ? module : startPath;\n const isStoreLayout = /[\\\\/]\\.(pnpm|store)[\\\\/]/.test(packagePath);\n\n do {\n const resolvedPath = isAbsolutePath\n ? path.join(module, dependencyName)\n : path.join(packagePath, module, dependencyName);\n let definition: PackageJson | undefined;\n let realPath: string | undefined;\n\n // Check if we've already tried this path (success or failure)\n if (resolvedPath in realPathCache) {\n realPath = realPathCache[resolvedPath];\n } else {\n try {\n // Get the realpath in case of a symlinked layout.\n // realpathSync.native is faster than either realpathSync or realpath.\n // https://github.com/microsoft/cloudpack/pull/2127#discussion_r1607070201\n realPath = fs.realpathSync.native(resolvedPath);\n realPathCache[resolvedPath] = realPath;\n } catch {\n realPathCache[resolvedPath] = undefined; // Cache the failure so we don't try again\n }\n }\n\n if (realPath) {\n try {\n definition = await packages.tryGet(realPath, { importerContext });\n } catch {\n // Ignore errors and keep looking.\n }\n }\n\n if (realPath && definition) {\n realPathCache[resolvedPath] = realPath;\n return { packagePath: realPath, definition };\n }\n\n if (path.isAbsolute(module)) {\n break;\n }\n\n // We haven't found it. Try to move up a directory.\n packagePath = path.dirname(packagePath);\n\n // If we moved up into a scope folder, skip over it.\n // Exception: in a manager using a store layout, packages starting with @ are NOT scope folders;\n // e.g. @foo/bar will be in a folder like @foo-bar-npm-1.2.3-abcdef1234 or @foo-bar@1.2.3\n if (!isStoreLayout && path.basename(packagePath).startsWith('@')) {\n packagePath = path.dirname(packagePath);\n }\n\n // Skip over nested node_modules folders.\n if (packagePath.endsWith('node_modules')) {\n packagePath = path.dirname(packagePath);\n }\n } while ((!rootPath || packagePath.length >= rootPath.length) && path.dirname(packagePath) !== packagePath);\n }\n return undefined;\n}\n"]}
@@ -5,5 +5,5 @@ import type { LinkedPath, PackageJson } from '@ms-cloudpack/common-types';
5
5
  * - ignoreResolutions is string[] -> ignore only those package entries
6
6
  * - otherwise apply all host resolutions
7
7
  */
8
- export declare function getEffectiveResolutions(appRepoDefinition: PackageJson | undefined, ignoreResolutions: LinkedPath['ignoreResolutions']): PackageJson['resolutions'] | undefined;
8
+ export declare function getEffectiveResolutions(appRepoDefinition: PackageJson | undefined, ignoreResolutions: LinkedPath['ignoreResolutions']): PackageJson['resolutions'];
9
9
  //# sourceMappingURL=getEffectiveResolutions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getEffectiveResolutions.d.ts","sourceRoot":"","sources":["../../../../src/resolveMap/createHelpers/link/getEffectiveResolutions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE1E;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,iBAAiB,EAAE,WAAW,GAAG,SAAS,EAC1C,iBAAiB,EAAE,UAAU,CAAC,mBAAmB,CAAC,GACjD,WAAW,CAAC,aAAa,CAAC,GAAG,SAAS,CAgBxC"}
1
+ {"version":3,"file":"getEffectiveResolutions.d.ts","sourceRoot":"","sources":["../../../../src/resolveMap/createHelpers/link/getEffectiveResolutions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE1E;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,iBAAiB,EAAE,WAAW,GAAG,SAAS,EAC1C,iBAAiB,EAAE,UAAU,CAAC,mBAAmB,CAAC,GACjD,WAAW,CAAC,aAAa,CAAC,CAgB5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"getEffectiveResolutions.js","sourceRoot":"","sources":["../../../../src/resolveMap/createHelpers/link/getEffectiveResolutions.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,iBAA0C,EAC1C,iBAAkD;IAElD,IAAI,CAAC,iBAAiB,EAAE,WAAW;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,eAAe,GAAG,iBAAiB,CAAC,WAAW,CAAC;IAEtD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAC5F,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,QAAmC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC","sourcesContent":["import type { LinkedPath, PackageJson } from '@ms-cloudpack/common-types';\n\n/**\n * Compute the effective resolutions to apply based on ignoreResolutions setting.\n * - ignoreResolutions === true -> ignore all host resolutions (return undefined)\n * - ignoreResolutions is string[] -> ignore only those package entries\n * - otherwise apply all host resolutions\n */\nexport function getEffectiveResolutions(\n appRepoDefinition: PackageJson | undefined,\n ignoreResolutions: LinkedPath['ignoreResolutions'],\n): PackageJson['resolutions'] | undefined {\n if (!appRepoDefinition?.resolutions) return undefined;\n const hostResolutions = appRepoDefinition.resolutions;\n\n if (ignoreResolutions === true) {\n return undefined;\n }\n\n if (Array.isArray(ignoreResolutions) && ignoreResolutions.length) {\n const filtered = Object.fromEntries(\n Object.entries(hostResolutions).filter(([pkgName]) => !ignoreResolutions.includes(pkgName)),\n );\n return Object.keys(filtered).length ? (filtered as typeof hostResolutions) : undefined;\n }\n\n return hostResolutions;\n}\n"]}
1
+ {"version":3,"file":"getEffectiveResolutions.js","sourceRoot":"","sources":["../../../../src/resolveMap/createHelpers/link/getEffectiveResolutions.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,iBAA0C,EAC1C,iBAAkD;IAElD,IAAI,CAAC,iBAAiB,EAAE,WAAW;QAAE,OAAO,SAAS,CAAC;IACtD,MAAM,eAAe,GAAG,iBAAiB,CAAC,WAAW,CAAC;IAEtD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAC5F,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,QAAmC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC","sourcesContent":["import type { LinkedPath, PackageJson } from '@ms-cloudpack/common-types';\n\n/**\n * Compute the effective resolutions to apply based on ignoreResolutions setting.\n * - ignoreResolutions === true -> ignore all host resolutions (return undefined)\n * - ignoreResolutions is string[] -> ignore only those package entries\n * - otherwise apply all host resolutions\n */\nexport function getEffectiveResolutions(\n appRepoDefinition: PackageJson | undefined,\n ignoreResolutions: LinkedPath['ignoreResolutions'],\n): PackageJson['resolutions'] {\n if (!appRepoDefinition?.resolutions) return undefined;\n const hostResolutions = appRepoDefinition.resolutions;\n\n if (ignoreResolutions === true) {\n return undefined;\n }\n\n if (Array.isArray(ignoreResolutions) && ignoreResolutions.length) {\n const filtered = Object.fromEntries(\n Object.entries(hostResolutions).filter(([pkgName]) => !ignoreResolutions.includes(pkgName)),\n );\n return Object.keys(filtered).length ? (filtered as typeof hostResolutions) : undefined;\n }\n\n return hostResolutions;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"createResolveMap.d.ts","sourceRoot":"","sources":["../../src/resolveMap/createResolveMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGzE,OAAO,EAAwB,KAAK,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAEjH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,MAAM,WAAW,uBACf,SAAQ,IAAI,CACR,2BAA2B,EAC3B,yBAAyB,GAAG,yBAAyB,GAAG,wBAAwB,CACjF,EACD,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;IACxD,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAEhB,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,sCAAsC;IACtC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAmDrB"}
1
+ {"version":3,"file":"createResolveMap.d.ts","sourceRoot":"","sources":["../../src/resolveMap/createResolveMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGzE,OAAO,EAAwB,KAAK,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAEjH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAE9E,MAAM,WAAW,uBACf,SACE,IAAI,CAAC,2BAA2B,EAAE,yBAAyB,GAAG,yBAAyB,GAAG,wBAAwB,CAAC,EACnH,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;IACxD,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAEhB,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,sCAAsC;IACtC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,UAAU,CAAC,CAmDrB"}
@@ -1 +1 @@
1
- {"version":3,"file":"createResolveMap.js","sourceRoot":"","sources":["../../src/resolveMap/createResolveMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAoC,MAAM,yCAAyC,CAAC;AACjH,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAmB5D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgC,EAChC,OAA2B;IAE3B,MAAM,EACJ,OAAO,EACP,eAAe,GAAG,EAAE,EACpB,WAAW,GAAG,EAAE,EAChB,uBAAuB;IACvB,gFAAgF;IAChF,2FAA2F;IAC3F,0DAA0D;IAC1D,uBAAuB,GAAG,uBAAuB,EAAE,MAAM,KAAK,CAAC,EAC/D,sBAAsB,GACvB,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,uBAAuB,IAAI,uBAAuB,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,uBAAuB,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IAED,+FAA+F;IAC/F,mDAAmD;IACnD,MAAM,QAAQ,GAAG,uBAAuB;QACtC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1E,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtF,kDAAkD;IAClD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC;QACE,WAAW,EAAE,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC;QAC1C,QAAQ;QACR,uBAAuB;QACvB,uBAAuB;QACvB,sBAAsB;QACtB,OAAO;KACR,EACD,OAAO,CACR,CAAC;IAEF,4EAA4E;IAC5E,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,CACZ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,EACxG,OAAO,CACR,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC","sourcesContent":["import type { LinkedPath, ResolveMap } from '@ms-cloudpack/common-types';\nimport { findProjectRoot } from '@ms-cloudpack/path-utilities';\nimport { convertToResolveMap } from './createHelpers/convertToResolveMap.js';\nimport { findPackagesFromPath, type FindPackagesFromPathOptions } from './createHelpers/findPackagesFromPath.js';\nimport { linkPath } from './createHelpers/link/linkPath.js';\nimport type { FindPackageContext } from '../findFileInPackage/findPackage.js';\n\nexport interface CreateResolveMapOptions\n extends Pick<\n FindPackagesFromPathOptions,\n 'skipResolveDependencies' | 'onlyResolveDependencies' | 'moduleResolutionConfig'\n >,\n Partial<Pick<FindPackagesFromPathOptions, 'rootPath'>> {\n /** Path to the app whose dependencies we want to resolve. */\n appPath: string;\n\n /** Any additional packages whose dependencies we want to resolve. */\n additionalPaths?: string[];\n\n /** See `createResolveMap` comment. */\n linkedPaths?: LinkedPath[];\n}\n\n/**\n * Create a resolve map for a given `appPath`.\n * 1. Walk the dependency tree to build a map of all packages and their dependencies.\n * 2. If `linkedPaths` are provided, for each one:\n * 1. Walk its dependency tree to build a map as above.\n * 2. Redirect any existing dependencies to the linked package.\n * 3. Ensure that any transitive dependencies of the linked package which aren't already\n * satisfied in the resolve map are added as scoped versions.\n * 3. For each dependency, sort the versions by the number of packages that depend on that version.\n * The most popular version will be considered the \"default\", to reduce the size of scoped versions.\n */\nexport async function createResolveMap(\n options: CreateResolveMapOptions,\n context: FindPackageContext,\n): Promise<ResolveMap> {\n const {\n appPath,\n additionalPaths = [],\n linkedPaths = [],\n onlyResolveDependencies,\n // If onlyResolveDependencies is empty, skip resolution entirely for efficiency.\n // This is the most common case when bundling a single package (inlinedDependencies must be\n // included if present, but most packages don't have any).\n skipResolveDependencies = onlyResolveDependencies?.length === 0,\n moduleResolutionConfig,\n } = options;\n\n if ((skipResolveDependencies || onlyResolveDependencies) && linkedPaths.length) {\n throw new Error('Cannot use `linkedPaths` with `skipResolveDependencies` or `onlyResolveDependencies`');\n }\n if (onlyResolveDependencies && additionalPaths.length) {\n throw new Error('Cannot use `additionalPaths` with `onlyResolveDependencies`');\n }\n\n // rootPath is only used as the place to stop searching up for dependencies, so we can skip the\n // calculation if we're not resolving dependencies.\n const rootPath = skipResolveDependencies\n ? undefined\n : options.rootPath || findProjectRoot(appPath, { noPackageRoot: true });\n\n const repoDefinition = rootPath ? await context.packages.tryGet(rootPath) : undefined;\n\n // First we discover the dependencies for the app.\n const appMap = await findPackagesFromPath(\n {\n searchPaths: [appPath, ...additionalPaths],\n rootPath,\n onlyResolveDependencies,\n skipResolveDependencies,\n moduleResolutionConfig,\n appPath,\n },\n context,\n );\n\n // Next, we iterate through linked paths to inject them into the packageMap.\n for (const linkedPath of linkedPaths) {\n await linkPath(\n { linkedPath, appRootPath: rootPath, appMap, appRepoDefinition: repoDefinition, moduleResolutionConfig },\n context,\n );\n }\n\n // Finally we condense into a resolve map.\n return convertToResolveMap({ appMap, rootPaths: [appPath, ...additionalPaths] });\n}\n"]}
1
+ {"version":3,"file":"createResolveMap.js","sourceRoot":"","sources":["../../src/resolveMap/createResolveMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAoC,MAAM,yCAAyC,CAAC;AACjH,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAiB5D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAgC,EAChC,OAA2B;IAE3B,MAAM,EACJ,OAAO,EACP,eAAe,GAAG,EAAE,EACpB,WAAW,GAAG,EAAE,EAChB,uBAAuB;IACvB,gFAAgF;IAChF,2FAA2F;IAC3F,0DAA0D;IAC1D,uBAAuB,GAAG,uBAAuB,EAAE,MAAM,KAAK,CAAC,EAC/D,sBAAsB,GACvB,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC,uBAAuB,IAAI,uBAAuB,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;IAC1G,CAAC;IACD,IAAI,uBAAuB,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IAED,+FAA+F;IAC/F,mDAAmD;IACnD,MAAM,QAAQ,GAAG,uBAAuB;QACtC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1E,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtF,kDAAkD;IAClD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC;QACE,WAAW,EAAE,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC;QAC1C,QAAQ;QACR,uBAAuB;QACvB,uBAAuB;QACvB,sBAAsB;QACtB,OAAO;KACR,EACD,OAAO,CACR,CAAC;IAEF,4EAA4E;IAC5E,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,CACZ,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,sBAAsB,EAAE,EACxG,OAAO,CACR,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,OAAO,mBAAmB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;AACnF,CAAC","sourcesContent":["import type { LinkedPath, ResolveMap } from '@ms-cloudpack/common-types';\nimport { findProjectRoot } from '@ms-cloudpack/path-utilities';\nimport { convertToResolveMap } from './createHelpers/convertToResolveMap.js';\nimport { findPackagesFromPath, type FindPackagesFromPathOptions } from './createHelpers/findPackagesFromPath.js';\nimport { linkPath } from './createHelpers/link/linkPath.js';\nimport type { FindPackageContext } from '../findFileInPackage/findPackage.js';\n\nexport interface CreateResolveMapOptions\n extends\n Pick<FindPackagesFromPathOptions, 'skipResolveDependencies' | 'onlyResolveDependencies' | 'moduleResolutionConfig'>,\n Partial<Pick<FindPackagesFromPathOptions, 'rootPath'>> {\n /** Path to the app whose dependencies we want to resolve. */\n appPath: string;\n\n /** Any additional packages whose dependencies we want to resolve. */\n additionalPaths?: string[];\n\n /** See `createResolveMap` comment. */\n linkedPaths?: LinkedPath[];\n}\n\n/**\n * Create a resolve map for a given `appPath`.\n * 1. Walk the dependency tree to build a map of all packages and their dependencies.\n * 2. If `linkedPaths` are provided, for each one:\n * 1. Walk its dependency tree to build a map as above.\n * 2. Redirect any existing dependencies to the linked package.\n * 3. Ensure that any transitive dependencies of the linked package which aren't already\n * satisfied in the resolve map are added as scoped versions.\n * 3. For each dependency, sort the versions by the number of packages that depend on that version.\n * The most popular version will be considered the \"default\", to reduce the size of scoped versions.\n */\nexport async function createResolveMap(\n options: CreateResolveMapOptions,\n context: FindPackageContext,\n): Promise<ResolveMap> {\n const {\n appPath,\n additionalPaths = [],\n linkedPaths = [],\n onlyResolveDependencies,\n // If onlyResolveDependencies is empty, skip resolution entirely for efficiency.\n // This is the most common case when bundling a single package (inlinedDependencies must be\n // included if present, but most packages don't have any).\n skipResolveDependencies = onlyResolveDependencies?.length === 0,\n moduleResolutionConfig,\n } = options;\n\n if ((skipResolveDependencies || onlyResolveDependencies) && linkedPaths.length) {\n throw new Error('Cannot use `linkedPaths` with `skipResolveDependencies` or `onlyResolveDependencies`');\n }\n if (onlyResolveDependencies && additionalPaths.length) {\n throw new Error('Cannot use `additionalPaths` with `onlyResolveDependencies`');\n }\n\n // rootPath is only used as the place to stop searching up for dependencies, so we can skip the\n // calculation if we're not resolving dependencies.\n const rootPath = skipResolveDependencies\n ? undefined\n : options.rootPath || findProjectRoot(appPath, { noPackageRoot: true });\n\n const repoDefinition = rootPath ? await context.packages.tryGet(rootPath) : undefined;\n\n // First we discover the dependencies for the app.\n const appMap = await findPackagesFromPath(\n {\n searchPaths: [appPath, ...additionalPaths],\n rootPath,\n onlyResolveDependencies,\n skipResolveDependencies,\n moduleResolutionConfig,\n appPath,\n },\n context,\n );\n\n // Next, we iterate through linked paths to inject them into the packageMap.\n for (const linkedPath of linkedPaths) {\n await linkPath(\n { linkedPath, appRootPath: rootPath, appMap, appRepoDefinition: repoDefinition, moduleResolutionConfig },\n context,\n );\n }\n\n // Finally we condense into a resolve map.\n return convertToResolveMap({ appMap, rootPaths: [appPath, ...additionalPaths] });\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ms-cloudpack/package-utilities",
3
- "version": "13.3.2",
3
+ "version": "13.3.6",
4
4
  "description": "Utilities for resolving/parsing packages and their imports in Cloudpack",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -29,7 +29,7 @@
29
29
  "@ms-cloudpack/json-utilities": "^0.1.11",
30
30
  "@ms-cloudpack/path-string-parsing": "^1.3.0",
31
31
  "@ms-cloudpack/path-utilities": "^3.2.5",
32
- "@ms-cloudpack/task-reporter": "^0.17.4",
32
+ "@ms-cloudpack/task-reporter": "^0.19.0",
33
33
  "acorn": "^8.11.2",
34
34
  "acorn-walk": "^8.2.1",
35
35
  "semver": "^7.6.0",