@ms-cloudpack/package-utilities 8.0.1 → 8.2.0
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.
- package/lib/PackageDefinitions.d.ts +0 -5
- package/lib/PackageDefinitions.d.ts.map +1 -1
- package/lib/PackageDefinitions.js +0 -9
- package/lib/PackageDefinitions.js.map +1 -1
- package/lib/createResolveMap/addLinkedEntryDependencies.d.ts +1 -2
- package/lib/createResolveMap/addLinkedEntryDependencies.d.ts.map +1 -1
- package/lib/createResolveMap/addLinkedEntryDependencies.js.map +1 -1
- package/lib/createResolveMap/convertToResolveMap.d.ts +1 -1
- package/lib/createResolveMap/convertToResolveMap.d.ts.map +1 -1
- package/lib/createResolveMap/convertToResolveMap.js.map +1 -1
- package/lib/createResolveMap/createResolveMap.d.ts +1 -5
- package/lib/createResolveMap/createResolveMap.d.ts.map +1 -1
- package/lib/createResolveMap/createResolveMap.js.map +1 -1
- package/lib/createResolveMap/dedupeLinkedPackages.d.ts.map +1 -1
- package/lib/createResolveMap/dedupeLinkedPackages.js.map +1 -1
- package/lib/createResolveMap/detachEntry.d.ts +1 -1
- package/lib/createResolveMap/detachEntry.d.ts.map +1 -1
- package/lib/createResolveMap/detachEntry.js.map +1 -1
- package/lib/createResolveMap/diffResolveMaps.d.ts +1 -2
- package/lib/createResolveMap/diffResolveMaps.d.ts.map +1 -1
- package/lib/createResolveMap/diffResolveMaps.js.map +1 -1
- package/lib/createResolveMap/entrySorter.d.ts +1 -1
- package/lib/createResolveMap/entrySorter.d.ts.map +1 -1
- package/lib/createResolveMap/entrySorter.js.map +1 -1
- package/lib/createResolveMap/findPackagesFromPath.d.ts.map +1 -1
- package/lib/createResolveMap/findPackagesFromPath.js.map +1 -1
- package/lib/createResolveMap/linkPath.d.ts +1 -2
- package/lib/createResolveMap/linkPath.d.ts.map +1 -1
- package/lib/createResolveMap/linkPath.js.map +1 -1
- package/lib/ensureResolveMapEntry.d.ts +1 -2
- package/lib/ensureResolveMapEntry.d.ts.map +1 -1
- package/lib/ensureResolveMapEntry.js.map +1 -1
- package/lib/findPackage.d.ts +12 -0
- package/lib/findPackage.d.ts.map +1 -1
- package/lib/findPackage.js +5 -4
- package/lib/findPackage.js.map +1 -1
- package/lib/findResolveMapEntry.d.ts +3 -5
- package/lib/findResolveMapEntry.d.ts.map +1 -1
- package/lib/findResolveMapEntry.js +1 -4
- package/lib/findResolveMapEntry.js.map +1 -1
- package/lib/getNonSemverTransform.d.ts.map +1 -1
- package/lib/getNonSemverTransform.js +9 -3
- package/lib/getNonSemverTransform.js.map +1 -1
- package/lib/getUnusedDependencies.d.ts +3 -2
- package/lib/getUnusedDependencies.d.ts.map +1 -1
- package/lib/getUnusedDependencies.js +9 -5
- package/lib/getUnusedDependencies.js.map +1 -1
- package/lib/index.d.ts +1 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +0 -1
- package/lib/index.js.map +1 -1
- package/lib/types/PackageMap.d.ts +1 -1
- package/lib/types/PackageMap.d.ts.map +1 -1
- package/lib/types/PackageMap.js.map +1 -1
- package/package.json +5 -5
- package/lib/ensurePackageJsonDependencies.d.ts +0 -3
- package/lib/ensurePackageJsonDependencies.d.ts.map +0 -1
- package/lib/ensurePackageJsonDependencies.js +0 -15
- package/lib/ensurePackageJsonDependencies.js.map +0 -1
- package/lib/types/LinkedPath.d.ts +0 -28
- package/lib/types/LinkedPath.d.ts.map +0 -1
- package/lib/types/LinkedPath.js +0 -2
- package/lib/types/LinkedPath.js.map +0 -1
- package/lib/types/ResolveMap.d.ts +0 -6
- package/lib/types/ResolveMap.d.ts.map +0 -1
- package/lib/types/ResolveMap.js +0 -2
- package/lib/types/ResolveMap.js.map +0 -1
- package/lib/types/ResolveMapEntry.d.ts +0 -40
- package/lib/types/ResolveMapEntry.d.ts.map +0 -1
- package/lib/types/ResolveMapEntry.js +0 -2
- package/lib/types/ResolveMapEntry.js.map +0 -1
|
@@ -29,10 +29,5 @@ export declare class PackageDefinitions implements PackageDefinitionsCache {
|
|
|
29
29
|
* This is a helper function for testing, to get all package definitions in the cache.
|
|
30
30
|
*/
|
|
31
31
|
_getAll(options?: Pick<GetPackageDefinitionOptions, 'disableTransforms'>): Record<string, PackageJson>;
|
|
32
|
-
/**
|
|
33
|
-
* Remove one package from the cache.
|
|
34
|
-
* @deprecated Not used.
|
|
35
|
-
*/
|
|
36
|
-
resetPackage(packagePath: string): void;
|
|
37
32
|
}
|
|
38
33
|
//# sourceMappingURL=PackageDefinitions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageDefinitions.d.ts","sourceRoot":"","sources":["../src/PackageDefinitions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAapC,qBAAa,kBAAmB,YAAW,uBAAuB;IAChE,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,uBAAuB,CAA8B;IAC7D,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,mBAAmB,CAAuD;IAElF;;;;;OAKG;gBACS,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAQzE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAqD3G;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,0BAA0B;IAO3E;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAYvC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"PackageDefinitions.d.ts","sourceRoot":"","sources":["../src/PackageDefinitions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,WAAW,EACZ,MAAM,4BAA4B,CAAC;AAapC,qBAAa,kBAAmB,YAAW,uBAAuB;IAChE,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,uBAAuB,CAA8B;IAC7D,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,mBAAmB,CAAuD;IAElF;;;;;OAKG;gBACS,eAAe,GAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAM,EAAE,MAAM,CAAC,EAAE,OAAO;IAQzE,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,2BAAgC,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAqD3G;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,0BAA0B;IAO3E;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;IAYvC;;OAEG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;CAGvG"}
|
|
@@ -94,14 +94,5 @@ export class PackageDefinitions {
|
|
|
94
94
|
_getAll(options) {
|
|
95
95
|
return options?.disableTransforms ? this._definitions : this._transformedDefinitions;
|
|
96
96
|
}
|
|
97
|
-
/**
|
|
98
|
-
* Remove one package from the cache.
|
|
99
|
-
* @deprecated Not used.
|
|
100
|
-
*/
|
|
101
|
-
resetPackage(packagePath) {
|
|
102
|
-
const normalizedPath = slash(packagePath);
|
|
103
|
-
delete this._definitions[normalizedPath];
|
|
104
|
-
delete this._transformedDefinitions[normalizedPath];
|
|
105
|
-
}
|
|
106
97
|
}
|
|
107
98
|
//# sourceMappingURL=PackageDefinitions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageDefinitions.js","sourceRoot":"","sources":["../src/PackageDefinitions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PackageDefinitions.js","sourceRoot":"","sources":["../src/PackageDefinitions.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\nimport type {\n GetPackageDefinitionOptions,\n PackageDefinitionTransform,\n PackageDefinitionsCache,\n PackageJson,\n} from '@ms-cloudpack/common-types';\nimport { readJson } from '@ms-cloudpack/json-utilities';\nimport { getApplyOverridesTransform } from '@ms-cloudpack/package-overrides';\nimport { getNonSemverTransform } from './getNonSemverTransform.js';\nimport { getCloudpackTransform } from './getCloudpackTransform.js';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\n\n/**\n * `nonSemverTransform` has state defined when the function is called, so we need a wrapper function\n * which returns new transforms to ensure that state is cleared when resetting.\n */\nconst getDefaultTransforms = () => [getCloudpackTransform(), getNonSemverTransform(), getApplyOverridesTransform()];\n\nexport class PackageDefinitions implements PackageDefinitionsCache {\n private _definitions: Record<string, PackageJson>;\n private _transformedDefinitions: Record<string, PackageJson>;\n private _config: unknown;\n private _transforms: PackageDefinitionTransform[] = [];\n private _transformFactories: ((config?: unknown) => PackageDefinitionTransform)[];\n\n /**\n * Constructor for PackageDefinitions.\n * @param definitionCache - The map of package paths to package definitions, used mainly for testing.\n * @param config - The optional config object to pass to transforms. When `reset` is called with a new value, the\n * transforms will be re-created using the new config.\n */\n constructor(definitionCache: Record<string, PackageJson> = {}, config?: unknown) {\n this._definitions = definitionCache;\n this._transformedDefinitions = {};\n this._config = config;\n this._transforms = [...getDefaultTransforms()];\n this._transformFactories = [];\n }\n\n async get(packagePath: string, options: GetPackageDefinitionOptions = {}): Promise<PackageJson | undefined> {\n // Normalize the path to ensure consistency and avoid duplicates.\n const normalizedPath = slash(packagePath);\n let definition: PackageJson | undefined = this._definitions[normalizedPath];\n let transformedDefinition: PackageJson | undefined = this._transformedDefinitions[normalizedPath];\n const { refresh, disableTransforms, importerContext } = options;\n\n // If we already have the answer they need, return immediately.\n if (!refresh) {\n if (disableTransforms && definition) {\n return definition;\n }\n\n if (!disableTransforms && transformedDefinition) {\n return transformedDefinition;\n }\n }\n\n // If we don't have the definition, try to load it.\n if (!definition || refresh) {\n definition = await readJson(path.join(normalizedPath, 'package.json'));\n\n if (!definition) {\n return undefined;\n }\n\n this._definitions[normalizedPath] = definition;\n }\n\n if (disableTransforms) {\n return definition;\n }\n\n // If we don't want to skip the transform, transform the definition.\n if (!transformedDefinition || refresh) {\n transformedDefinition = definition;\n\n for (const transform of this._transforms) {\n transformedDefinition =\n (await transform({\n definition: transformedDefinition,\n packagePath: normalizedPath,\n packages: this,\n importerContext,\n })) || transformedDefinition;\n }\n\n this._transformedDefinitions[normalizedPath] = transformedDefinition;\n }\n\n return transformedDefinition;\n }\n\n /**\n * Registers a transform factory function, which will be called on initialization, and when reset, to re-generate\n * the transform function. Transform functions are called only when the package definition hasn't been loaded before,\n * and the result will be cached. Calling `reset` will reset the cache.\n */\n registerTransform(factory: (config?: unknown) => PackageDefinitionTransform) {\n this._transformFactories.push(factory);\n this._transforms.push(factory(this._config));\n\n this.reset();\n }\n\n /**\n * Resets the cache of package definitions. This is useful when testing, to ensure that the cache is empty.\n */\n reset(options?: { newConfig?: unknown }) {\n this._definitions = {};\n this._transformedDefinitions = {};\n\n const { newConfig } = options || {};\n\n if (newConfig) {\n this._config = newConfig;\n this._transforms = [...getDefaultTransforms(), ...this._transformFactories.map((factory) => factory(newConfig))];\n }\n }\n\n /**\n * This is a helper function for testing, to get all package definitions in the cache.\n */\n _getAll(options?: Pick<GetPackageDefinitionOptions, 'disableTransforms'>): Record<string, PackageJson> {\n return options?.disableTransforms ? this._definitions : this._transformedDefinitions;\n }\n}\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { PackageDefinitionsCache, PackageJson } from '@ms-cloudpack/common-types';
|
|
1
|
+
import type { PackageDefinitionsCache, PackageJson, ResolveMapEntry } from '@ms-cloudpack/common-types';
|
|
2
2
|
import type { PackageMap } from '../types/PackageMap.js';
|
|
3
|
-
import type { ResolveMapEntry } from '../types/ResolveMapEntry.js';
|
|
4
3
|
/**
|
|
5
4
|
* Given a linkedEntry, iterates through dependencies to ensure they are added to the packageMap,
|
|
6
5
|
* preferring packageMap dependencies over linkedMap dependencies.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addLinkedEntryDependencies.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/addLinkedEntryDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"addLinkedEntryDependencies.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/addLinkedEntryDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAExG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE;IACP,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,UAAU,CAAC;IACpB,WAAW,EAAE,eAAe,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;CAC1C,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;CACnC;;GA2FF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addLinkedEntryDependencies.js","sourceRoot":"","sources":["../../src/createResolveMap/addLinkedEntryDependencies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"addLinkedEntryDependencies.js","sourceRoot":"","sources":["../../src/createResolveMap/addLinkedEntryDependencies.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageDefinitionsCache, PackageJson, ResolveMapEntry } from '@ms-cloudpack/common-types';\nimport { satisfies } from 'semver';\nimport type { PackageMap } from '../types/PackageMap.js';\nimport { getDependencies } from '../getDependencies.js';\n\n/**\n * Given a linkedEntry, iterates through dependencies to ensure they are added to the packageMap,\n * preferring packageMap dependencies over linkedMap dependencies.\n * Returns a list of duplicated packages that were added to the packageMap.\n */\nexport async function addLinkedEntryDependencies(\n options: {\n appMap: PackageMap;\n linkMap: PackageMap;\n linkedEntry: ResolveMapEntry;\n resolutions?: PackageJson['resolutions'];\n },\n context: {\n packages: PackageDefinitionsCache;\n },\n) {\n const { appMap, linkMap, linkedEntry, resolutions } = options;\n const { packages } = context;\n const visitedEntryPaths = new Set<string>(linkedEntry.path);\n const duplicates: string[] = [];\n const entriesToVisit: ResolveMapEntry[] = [linkedEntry];\n\n function enqueue(newEntry: ResolveMapEntry) {\n if (!visitedEntryPaths.has(newEntry.path)) {\n visitedEntryPaths.add(newEntry.path);\n entriesToVisit.push(newEntry);\n }\n }\n\n while (entriesToVisit.length) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- already checked the length\n const entry = entriesToVisit.pop()!;\n\n const { name, version, dependencies } = entry;\n\n const linkDefinition = await packages.get(entry.path);\n const versionRequirements = getDependencies(linkDefinition || {});\n\n // Iterate through the dependencies of the linked package.\n for (const [dependencyName, linkedDependencyVersion] of Object.entries(dependencies)) {\n const versionRequirement = versionRequirements[dependencyName];\n if (!versionRequirement) {\n continue;\n }\n\n const appVersions = appMap[dependencyName];\n\n if (!appVersions) {\n // The app does not have any version of this dependency, so we need to bring over the version\n // used by the linkedEntry.\n const dependencyEntry = linkMap[dependencyName]?.[linkedDependencyVersion];\n if (dependencyEntry) {\n appMap[dependencyName] = { [linkedDependencyVersion]: dependencyEntry };\n dependencyEntry.requiredBy = { [`${name}@${version}`]: versionRequirement };\n\n // Recurse through the dependency's dependencies.\n enqueue(dependencyEntry);\n }\n } else {\n // We have one or more versions of this dependency already. If a sufficient version\n // of the dependency is already in the appMap, we we just need to update the linkedEntry's\n // dependency and the dependency's requiredBy record for the parent.\n const appDependencyVersions = Object.values(appVersions);\n\n if (appDependencyVersions.length === 1 && !appDependencyVersions[0]?.isExternal) {\n continue;\n }\n\n // See if an existing version of the dependency satisfies the semver.\n const appDependencyEntry = appDependencyVersions.find(\n (e) =>\n // If the dependency is linked, use that.\n e.isLinked ||\n // If the dependency version is required as a resolution, use that.\n resolutions?.[dependencyName] ||\n // If the dependency satisfies the semver, use that.\n satisfies(e.version, versionRequirement),\n );\n\n if (appDependencyEntry) {\n // If the dependency satisfies the semver, use that!\n entry.dependencies[dependencyName] = appDependencyEntry.version;\n appDependencyEntry.requiredBy[`${name}@${version}`] = versionRequirement;\n\n enqueue(appDependencyEntry);\n } else {\n // We have at least one version of this dependency but nothing satisfies the requirement.\n // We need to introduce a duplicate. During the final pass, we will remove non-required deps.\n const dependencyEntry = Object.values(linkMap[dependencyName] || {}).find((e) =>\n satisfies(e.version, versionRequirement),\n );\n if (dependencyEntry) {\n appVersions[dependencyEntry.version] = dependencyEntry;\n entry.dependencies[dependencyName] = linkedDependencyVersion;\n dependencyEntry.requiredBy = { [`${name}@${version}`]: versionRequirement };\n duplicates.push(`${dependencyName}@${dependencyEntry.version}`);\n // Recursive through the dependency's dependencies.\n enqueue(dependencyEntry);\n }\n }\n }\n }\n }\n\n return { duplicates };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ResolveMap } from '
|
|
1
|
+
import type { ResolveMap } from '@ms-cloudpack/common-types';
|
|
2
2
|
import type { PackageMap } from '../types/PackageMap.js';
|
|
3
3
|
/**
|
|
4
4
|
* Given a PackageMap and all root paths (appPath and linked paths), returns a ResolveMap.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertToResolveMap.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/convertToResolveMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"convertToResolveMap.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/convertToResolveMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,UAAU,CAuBpG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertToResolveMap.js","sourceRoot":"","sources":["../../src/createResolveMap/convertToResolveMap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAoD;IACtF,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,UAAU,GAAe,EAAE,CAAC;IAElC,KAAK,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,6EAA6E;QAC7E,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;aACvD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;aAC7E,IAAI,CAAC,WAAW,CAAC,CAAC;QAErB,wFAAwF;QACxF,2EAA2E;QAC3E,IAAI,oBAAoB,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;YAElE,wDAAwD;YACxD,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["import type { ResolveMap } from '
|
|
1
|
+
{"version":3,"file":"convertToResolveMap.js","sourceRoot":"","sources":["../../src/createResolveMap/convertToResolveMap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAoD;IACtF,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACtC,MAAM,UAAU,GAAe,EAAE,CAAC;IAElC,KAAK,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,6EAA6E;QAC7E,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;aACvD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;aAC7E,IAAI,CAAC,WAAW,CAAC,CAAC;QAErB,wFAAwF;QACxF,2EAA2E;QAC3E,IAAI,oBAAoB,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;YAElE,wDAAwD;YACxD,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACtG,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC","sourcesContent":["import type { ResolveMap } from '@ms-cloudpack/common-types';\nimport type { PackageMap } from '../types/PackageMap.js';\nimport { entrySorter } from './entrySorter.js';\n\n/**\n * Given a PackageMap and all root paths (appPath and linked paths), returns a ResolveMap.\n */\nexport function convertToResolveMap(options: { appMap: PackageMap; rootPaths: string[] }): ResolveMap {\n const { rootPaths, appMap } = options;\n const resolveMap: ResolveMap = {};\n\n for (const [packageName, packageEntries] of Object.entries(appMap)) {\n // Filter to root packages and packages which are required by other packages.\n const sortedPackageEntries = Object.values(packageEntries)\n .filter((e) => rootPaths.includes(e.path) || Object.keys(e.requiredBy).length)\n .sort(entrySorter);\n\n // Get the sorted package entries based on the most to least requiredBy references. This\n // ends up reducing the size of the resolve map by minimizing scoped cases.\n if (sortedPackageEntries.length) {\n const entry = (resolveMap[packageName] = sortedPackageEntries[0]);\n\n // Update scoped versions (version to resolve map entry)\n if (sortedPackageEntries.length > 1) {\n entry.scopedVersions = Object.fromEntries(sortedPackageEntries.slice(1).map((e) => [e.version, e]));\n }\n }\n }\n\n return resolveMap;\n}\n"]}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import type { ResolveMap } from '
|
|
2
|
-
import type { PackageDefinitionsCache } from '@ms-cloudpack/common-types';
|
|
3
|
-
import type { LinkedPath } from '../types/LinkedPath.js';
|
|
1
|
+
import type { PackageDefinitionsCache, LinkedPath, ResolveMap } from '@ms-cloudpack/common-types';
|
|
4
2
|
/**
|
|
5
3
|
* Create a resolve map for a given `appPath`.
|
|
6
4
|
* 1. Walk the dependency tree to build a map of all packages and their dependencies.
|
|
@@ -24,8 +22,6 @@ export declare function createResolveMap(options: {
|
|
|
24
22
|
* If not specified, will look for the project/git root of the `appPath`.
|
|
25
23
|
*/
|
|
26
24
|
rootPath?: string;
|
|
27
|
-
/** @deprecated Not used */
|
|
28
|
-
useStrictVersioning?: boolean;
|
|
29
25
|
}, context: {
|
|
30
26
|
packages: PackageDefinitionsCache;
|
|
31
27
|
}): Promise<ResolveMap>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createResolveMap.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/createResolveMap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createResolveMap.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/createResolveMap.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAElG;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE;IACP,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAEhB,qEAAqE;IACrE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,sCAAsC;IACtC,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAE3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;CACnC,GACA,OAAO,CAAC,UAAU,CAAC,CAuBrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createResolveMap.js","sourceRoot":"","sources":["../../src/createResolveMap/createResolveMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"createResolveMap.js","sourceRoot":"","sources":["../../src/createResolveMap/createResolveMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAeC,EACD,OAEC;IAED,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAEpE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvF,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnF,kDAAkD;IAClD,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACvC;QACE,WAAW,EAAE,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC;QAC1C,QAAQ;KACT,EACD,OAAO,CACR,CAAC;IAEF,4EAA4E;IAC5E,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,QAAQ,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5E,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 { findProjectRoot } from '../findProjectRoot.js';\nimport { convertToResolveMap } from './convertToResolveMap.js';\nimport { findPackagesFromPath } from './findPackagesFromPath.js';\nimport { linkPath } from './linkPath.js';\nimport type { PackageDefinitionsCache, LinkedPath, ResolveMap } from '@ms-cloudpack/common-types';\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: {\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 * Where to stop looking for packages (mainly used for testing).\n * If not specified, will look for the project/git root of the `appPath`.\n */\n rootPath?: string;\n },\n context: {\n packages: PackageDefinitionsCache;\n },\n): Promise<ResolveMap> {\n const { appPath, additionalPaths = [], linkedPaths = [] } = options;\n\n const rootPath = options.rootPath || findProjectRoot(appPath, { noPackageRoot: true });\n\n const repoDefinition = rootPath ? await context.packages.get(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 },\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({ rootPath, linkedPath, appMap, repoDefinition }, context);\n }\n\n // Finally we condense into a resolve map.\n return convertToResolveMap({ appMap, rootPaths: [appPath, ...additionalPaths] });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dedupeLinkedPackages.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/dedupeLinkedPackages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"dedupeLinkedPackages.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/dedupeLinkedPackages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,KAAK,EAAE,uBAAuB,EAAoC,MAAM,4BAA4B,CAAC;AAK5G;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EACnG,OAAO,EAAE;IAAE,QAAQ,EAAE,uBAAuB,CAAA;CAAE,iBAoH/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dedupeLinkedPackages.js","sourceRoot":"","sources":["../../src/createResolveMap/dedupeLinkedPackages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"dedupeLinkedPackages.js","sourceRoot":"","sources":["../../src/createResolveMap/dedupeLinkedPackages.ts"],"names":[],"mappings":"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","sourcesContent":["import { satisfies, rcompare as semverReverseCompare } from 'semver';\nimport type { PackageMap } from '../types/PackageMap.js';\nimport { parseRequiredBy } from './parseRequiredBy.js';\nimport { detachEntry } from './detachEntry.js';\nimport type { PackageDefinitionsCache, PackageSettings, ResolveMapEntry } from '@ms-cloudpack/common-types';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\n\ntype DuplicatedDependencyBehavior = NonNullable<NonNullable<PackageSettings['link']>['duplicatedDependencyBehavior']>;\n\n/**\n * Deduplicates linked packages by removing all but the highest version,\n * that satisfies the semver requirements of all the requiredBy entries.\n */\nexport async function dedupeLinkedPackages(\n options: { appMap: PackageMap; allDuplicates: Set<string>; remotePath?: string; rootPath?: string },\n context: { packages: PackageDefinitionsCache },\n) {\n const { rootPath, appMap, allDuplicates, remotePath } = options;\n const { packages } = context;\n console.debug(`The following packages were duplicated by linking:\\n ${Array.from(allDuplicates).join(', ')}`);\n for (const duplicate of allDuplicates) {\n const packageName = parseRequiredBy(duplicate).name;\n\n const entries = appMap[packageName] || {};\n\n // Sanity check to ensure that it is a duplicate.\n if (Object.keys(entries).length <= 1) {\n continue;\n }\n\n let dedupeStrategy: DuplicatedDependencyBehavior = 'allow-duplication';\n for (const entry of Object.values(entries)) {\n const packageJson = await packages.get(entry.path);\n if (packageJson?.cloudpack?.link?.duplicatedDependencyBehavior) {\n dedupeStrategy = packageJson.cloudpack.link.duplicatedDependencyBehavior;\n }\n }\n\n const availableVersions = Object.keys(entries);\n\n const versionRequirements = new Set<string>();\n // Find if any of the duplicate entries satisfy the semver requirement of all the requiredBy entries.\n const requiredBy: ResolveMapEntry['requiredBy'] = {};\n for (const entry of Object.values(entries)) {\n for (const [requiredById, range] of Object.entries(entry.requiredBy) as [`${string}@${string}`, string][]) {\n requiredBy[requiredById] = range;\n // We only care about satisfying version requirements that are already satisfied.\n if (satisfies(entry.version, range)) {\n versionRequirements.add(range);\n }\n }\n }\n\n // Find the versions that satisfy the semver requirements of all the requiredBy entries.\n // Sort the versions in descending order.\n const satisfiedVersions = availableVersions\n .filter((v) => [...versionRequirements].every((range) => satisfies(v, range)))\n .sort(semverReverseCompare);\n\n let satisfiedVersion: string | undefined;\n\n if (dedupeStrategy === 'force-host-version') {\n if (!rootPath) {\n console.error(\n 'Root path for project not found and is required when using the \"force-host-version\" dedupe strategy.',\n );\n continue;\n }\n // Use the app host's version of the package.\n // Find the version of the package that belongs to the host.\n // We assume that the host has a single version of the package.\n const hostVersion = availableVersions.find((v) => slash(entries[v].path).startsWith(slash(rootPath)));\n\n if (!hostVersion) {\n console.error(`Could not find a version of \"${packageName}\" that is belongs to the host.`);\n continue;\n }\n\n satisfiedVersion = hostVersion;\n } else if (dedupeStrategy === 'force-remote-version') {\n if (!remotePath) {\n console.error(\n 'Root path for project not found and is required when using the \"force-remote-version\" dedupe strategy.',\n );\n continue;\n }\n\n // Use the version of the package that is the remote.\n // Find the version of the package that does not belong to the host.\n // We assume that the remote has a single version of the package.\n const remoteVersion = availableVersions.find((v) => slash(entries[v].path).startsWith(slash(remotePath)));\n\n if (!remoteVersion) {\n console.error(`Could not find a version of \"${packageName}\" that is belongs to the remote.`);\n continue;\n }\n\n satisfiedVersion = remoteVersion;\n } else if (dedupeStrategy === 'allow-duplication' && satisfiedVersions.length > 0) {\n // Select the highest version that satisfies the semver requirements of all the requiredBy entries.\n satisfiedVersion = satisfiedVersions[0];\n console.debug(\n `Version \"${satisfiedVersion}\" of \"${packageName}\" satisfies the semver requirements of all the requiredBy entries.`,\n );\n } else {\n // If the deduplication strategy allows duplicates and\n // no version satisfies the semver requirements for all dependents,\n // then deduplication of this package is not possible.\n console.debug(\n `Could not find a version of \"${packageName}\" that satisfies the semver requirements of all the requiredBy entries.`,\n );\n continue;\n }\n\n entries[satisfiedVersion].requiredBy = requiredBy;\n\n for (const version of availableVersions) {\n if (version == satisfiedVersion) {\n continue;\n }\n detachEntry({ appMap, entry: entries[version] });\n delete appMap[packageName][version];\n }\n\n for (const requiredById of Object.keys(requiredBy)) {\n const { name: requiredByName, version: requiredByVersion } = parseRequiredBy(requiredById);\n appMap[requiredByName][requiredByVersion].dependencies[packageName] = satisfiedVersion;\n }\n\n console.debug(`Removed versions of \"${packageName}\" except for \"${satisfiedVersion}\".`);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detachEntry.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/detachEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"detachEntry.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/detachEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,QAmClF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detachEntry.js","sourceRoot":"","sources":["../../src/createResolveMap/detachEntry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAuD;IACjF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,oBAAoB,GAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEhE,OAAO,oBAAoB,CAAC,MAAM,EAAE,CAAC;QACnC,8FAA8F;QAC9F,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,EAAG,CAAC;QAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAE5C,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/C,SAAS;QACX,CAAC;QAED,uCAAuC;QACvC,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;YACrF,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAExD,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,KAAK,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACrF,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;YAEpE,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;gBACxD,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzD,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import type { ResolveMapEntry } from '
|
|
1
|
+
{"version":3,"file":"detachEntry.js","sourceRoot":"","sources":["../../src/createResolveMap/detachEntry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAuD;IACjF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,MAAM,oBAAoB,GAAsB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEhE,OAAO,oBAAoB,CAAC,MAAM,EAAE,CAAC;QACnC,8FAA8F;QAC9F,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,EAAG,CAAC;QAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAE5C,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/C,SAAS;QACX,CAAC;QAED,uCAAuC;QACvC,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;YACrF,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAExD,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,KAAK,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACrF,MAAM,eAAe,GAAG,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;YAEpE,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;gBACxD,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzD,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAC7C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import type { ResolveMapEntry } from '@ms-cloudpack/common-types';\nimport type { PackageMap } from '../types/PackageMap.js';\nimport { parseRequiredBy } from './parseRequiredBy.js';\n\n/**\n * Removes requiredBy references for an entry being removed.\n */\nexport function detachEntry(options: { appMap: PackageMap; entry: ResolveMapEntry }) {\n const { appMap } = options;\n const dependenciesToDetach: ResolveMapEntry[] = [options.entry];\n\n while (dependenciesToDetach.length) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- already checked length\n const entry = dependenciesToDetach.pop()!;\n const { name, version, requiredBy } = entry;\n\n if (entry.isLinked || !appMap[name]?.[version]) {\n continue;\n }\n\n // Disconnect the entry from consumers.\n for (const requiredByName of Object.keys(requiredBy)) {\n const { name: parentName, version: parentVersion } = parseRequiredBy(requiredByName);\n const parentEntry = appMap[parentName]?.[parentVersion];\n\n if (parentEntry) {\n delete parentEntry.dependencies[name];\n }\n }\n\n // Disconnect dependencies from the entry.\n for (const [dependencyName, dependencyVersion] of Object.entries(entry.dependencies)) {\n const dependencyEntry = appMap[dependencyName]?.[dependencyVersion];\n\n if (dependencyEntry) {\n delete dependencyEntry.requiredBy[`${name}@${version}`];\n if (Object.keys(dependencyEntry.requiredBy).length === 0) {\n dependenciesToDetach.push(dependencyEntry);\n }\n }\n }\n }\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { ResolveMap } from '
|
|
2
|
-
import type { ResolveMapEntry } from '../types/ResolveMapEntry.js';
|
|
1
|
+
import type { ResolveMap, ResolveMapEntry } from '@ms-cloudpack/common-types';
|
|
3
2
|
export interface DiffResolveMapsChanges {
|
|
4
3
|
linked: ResolveMapEntry[];
|
|
5
4
|
internal: ResolveMapEntry[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diffResolveMaps.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/diffResolveMaps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"diffResolveMaps.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/diffResolveMaps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE9E,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,sBAAsB,CAAC;IAC9B,OAAO,EAAE,sBAAsB,CAAC;CACjC;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,wBAmDjF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diffResolveMaps.js","sourceRoot":"","sources":["../../src/createResolveMap/diffResolveMaps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diffResolveMaps.js","sourceRoot":"","sources":["../../src/createResolveMap/diffResolveMaps.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageMap } from '../types/PackageMap.js';\nimport type { ResolveMap, ResolveMapEntry } from '@ms-cloudpack/common-types';\n\nexport interface DiffResolveMapsChanges {\n linked: ResolveMapEntry[];\n internal: ResolveMapEntry[];\n external: ResolveMapEntry[];\n}\n\nexport interface DiffResolveMapsStats {\n added: DiffResolveMapsChanges;\n removed: DiffResolveMapsChanges;\n}\n\nexport function diffResolveMaps(options: { before: ResolveMap; after: ResolveMap }) {\n const { before, after } = options;\n const stats: DiffResolveMapsStats = {\n added: {\n linked: [],\n internal: [],\n external: [],\n },\n\n removed: {\n linked: [],\n internal: [],\n external: [],\n },\n };\n\n const oldPackageMap = toPackageMap(before);\n const newPackageMap = toPackageMap(after);\n\n // We will traverse the entries in the new list to compare with the old list. As we find entries that exist in the old,\n // we will remove them from the old. This will leave the old list with only entries that were removed.\n for (const [name, newVersions] of Object.entries(newPackageMap)) {\n const oldVersions = oldPackageMap[name];\n\n for (const [version, entry] of Object.entries(newVersions)) {\n if (!oldVersions) {\n trackEntry(entry, stats.added);\n } else if (!oldVersions[version]) {\n trackEntry(entry, stats.added);\n } else {\n delete oldVersions[version];\n }\n }\n\n if (oldVersions) {\n for (const entry of Object.values(oldVersions)) {\n trackEntry(entry, stats.removed);\n }\n\n delete oldPackageMap[name];\n }\n }\n\n // Iterate through the remaining entries in the old list to find any that were removed.\n for (const oldVersions of Object.values(oldPackageMap)) {\n for (const entry of Object.values(oldVersions)) {\n trackEntry(entry, stats.removed);\n }\n }\n\n return stats;\n}\n\nfunction trackEntry(entry: ResolveMapEntry, changes: DiffResolveMapsChanges) {\n if (entry.isLinked) {\n changes.linked.push(entry);\n } else if (entry.isExternal) {\n changes.external.push(entry);\n } else {\n changes.internal.push(entry);\n }\n}\n\nfunction toPackageMap(resolveMap: ResolveMap): PackageMap {\n const packageMap: PackageMap = {};\n const entriesToAdd = Object.values(resolveMap);\n\n while (entriesToAdd.length) {\n const entry = entriesToAdd.pop() as ResolveMapEntry;\n const { scopedVersions, ...rest } = entry;\n\n const versions = (packageMap[entry.name] ??= {});\n\n versions[entry.version] = rest;\n\n if (scopedVersions) {\n entriesToAdd.push(...Object.values(scopedVersions));\n }\n }\n\n return packageMap;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrySorter.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/entrySorter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"entrySorter.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/entrySorter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGlE;;GAEG;AAEH,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,UAajE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrySorter.js","sourceRoot":"","sources":["../../src/createResolveMap/entrySorter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B;;GAEG;AAEH,MAAM,UAAU,WAAW,CAAC,CAAkB,EAAE,CAAkB;IAChE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IACrD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IAErD,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC","sourcesContent":["import type { ResolveMapEntry } from '
|
|
1
|
+
{"version":3,"file":"entrySorter.js","sourceRoot":"","sources":["../../src/createResolveMap/entrySorter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B;;GAEG;AAEH,MAAM,UAAU,WAAW,CAAC,CAAkB,EAAE,CAAkB;IAChE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IACrD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IAErD,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;IAED,IAAI,WAAW,GAAG,WAAW,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC","sourcesContent":["import type { ResolveMapEntry } from '@ms-cloudpack/common-types';\nimport { gt } from 'semver';\n\n/**\n * Returns the array of entries, sorted by most required.\n */\n\nexport function entrySorter(a: ResolveMapEntry, b: ResolveMapEntry) {\n const aRequiredBy = Object.keys(a.requiredBy).length;\n const bRequiredBy = Object.keys(b.requiredBy).length;\n\n if (aRequiredBy > bRequiredBy) {\n return -1;\n }\n\n if (aRequiredBy < bRequiredBy) {\n return 1;\n }\n\n return gt(a.version, b.version) ? -1 : 1;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findPackagesFromPath.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/findPackagesFromPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"findPackagesFromPath.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/findPackagesFromPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EAIxB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOzD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE;IACP;;OAEG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,EACD,OAAO,EAAE;IACP;;OAEG;IACH,QAAQ,EAAE,uBAAuB,CAAC;CACnC,GACA,OAAO,CAAC,UAAU,CAAC,CAqDrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findPackagesFromPath.js","sourceRoot":"","sources":["../../src/createResolveMap/findPackagesFromPath.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageDefinitionsCache, PackageImporterContext, PackageJson } from '@ms-cloudpack/common-types';\nimport { isFolder } from '@ms-cloudpack/path-utilities';\nimport glob from 'fast-glob';\nimport path from 'path';\nimport { findPackage } from '../findPackage.js';\nimport { isExternalPackage } from '../isExternalPackage.js';\nimport type { PackageMap } from '../types/PackageMap.js';\nimport type { ResolveMapEntry } from '../types/ResolveMapEntry.js';\nimport { getDependencies } from '../getDependencies.js';\nimport { findProjectRoot } from '../findProjectRoot.js';\nimport { bulletedList } from '@ms-cloudpack/task-reporter';\n\ntype PackagePathInfo = { packagePath: string; importerContext?: PackageImporterContext };\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(\n options: {\n /**\n * Paths to search for package.json files and traverse their dependencies to build a PackageMap.\n */\n searchPaths: string[];\n\n /**\n * Where to stop looking for packages (mainly used for testing).\n * If not specified, will look for the project/git root of the first path in the paths array.\n */\n rootPath?: string;\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 },\n context: {\n /**\n * Package cache.\n */\n packages: PackageDefinitionsCache;\n },\n): Promise<PackageMap> {\n const { searchPaths, discoverPackages } = options;\n const packageMap: PackageMap = {};\n const visitedPaths = new Set<string>();\n const realPathCache: Record<string, string | undefined> = {};\n\n for (const searchPath of searchPaths) {\n if (!(await isFolder(searchPath))) {\n throw new Error(`Path ${searchPath} is not a folder.\\n\\nMake sure the path exists and try again.`);\n }\n\n const rootPath = options.rootPath || findProjectRoot(searchPath, { noPackageRoot: true });\n\n let pathsToVisit: PackagePathInfo[];\n\n if (discoverPackages) {\n const packagePaths = await glob('**/package.json', { cwd: searchPath, ignore: ['**/node_modules/**'] });\n\n pathsToVisit = packagePaths.map((p) => ({ packagePath: path.dirname(path.join(searchPath, p)) }));\n } else {\n pathsToVisit = [{ packagePath: searchPath }];\n }\n\n while (pathsToVisit.length) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- already checked length\n const { packagePath, importerContext } = pathsToVisit.shift()!;\n\n // There's a very slight possibility (not yet observed even in large repos) that both semver\n // and non-semver dependencies could resolve to the same package name and version and therefore\n // be installed at the same path. (If the non-semver dependency was encountered first, the\n // version and possibly name in the package definition would have been transformed to match by\n // getNonSemverTransform.) It would be possible to detect this case if needed, but for now we're\n // not going to bother because it's so rare/theoretical and the effect in practice will probably\n // be the same as a dependency that's forced with `resolutions` to a version violating semver.\n if (!visitedPaths.has(packagePath)) {\n visitedPaths.add(packagePath);\n\n const dependencyPaths = await visitPackage(\n { packagePath, packageMap, rootPath, importerContext, realPathCache },\n context,\n );\n\n for (const dependencyPath of dependencyPaths) {\n // Let's avoid pushing tons of things into the work queue that we'll be skipping later.\n if (!visitedPaths.has(dependencyPath.packagePath)) {\n pathsToVisit.push(dependencyPath);\n }\n }\n }\n }\n }\n\n return packageMap;\n}\n\n/**\n * Visit a package path, and add entries for the package and its dependencies to `packageMap`.\n * Returns a list of additional dependency paths to visit.\n */\nasync function visitPackage(\n options: PackagePathInfo & {\n packageMap: PackageMap;\n rootPath: string | undefined;\n realPathCache?: Record<string, string | undefined>;\n },\n context: Parameters<typeof findPackagesFromPath>[1],\n) {\n const { packagePath, packageMap, rootPath, importerContext, realPathCache } = options;\n const { packages } = context;\n\n const packageDefinition = await packages.get(packagePath, { importerContext });\n if (!packageDefinition) {\n throw new Error(\n `Could not find package definition at \"${packagePath}\".\\n\\n` +\n `Make sure the package.json file exists and try again.\\n`,\n );\n }\n if (!(packageDefinition.name && packageDefinition.version)) {\n return [];\n }\n\n const { name, version } = packageDefinition;\n const entry = ensurePackageEntry({\n packageName: importerContext?.importedName || name,\n packagePath: packagePath,\n packageMap,\n definition: packageDefinition,\n });\n\n // Add all dependencies to the list of paths to visit.\n const dependencies = getDependencies(packageDefinition) as Record<string, string>;\n\n const dependencyPaths: PackagePathInfo[] = [];\n\n for (const [dependencyName, versionRequirement] of Object.entries(dependencies)) {\n const depImporterContext: PackageImporterContext = {\n parentName: name,\n parentVersion: version,\n importedName: dependencyName,\n versionRequirement,\n };\n\n const dependencyPackage = await findPackage(\n { dependencyName, startPath: packagePath, rootPath, importerContext: depImporterContext, realPathCache },\n context,\n );\n if (!dependencyPackage) {\n if (packageDefinition.peerDependencies?.[dependencyName]) {\n // Ignore missing peer dependencies\n continue;\n }\n\n throw new Error(\n [\n `A dependency could not be found:`,\n bulletedList([\n `Dependency: ${dependencyName} (Required: ${versionRequirement})`,\n `Required by: ${packagePath}`,\n ]),\n ``,\n `Make sure the dependency is installed and try again.`,\n ].join('\\n'),\n );\n }\n\n const { packagePath: dependencyPath, definition: dependencyDefinition } = dependencyPackage;\n\n if (!(dependencyDefinition.name && dependencyDefinition.version)) {\n throw new Error(`\"${dependencyPath}/package.json\" is missing a name or version.`);\n }\n\n const dependencyEntry = ensurePackageEntry({\n packagePath: dependencyPath,\n packageName: dependencyName,\n packageMap,\n definition: dependencyDefinition,\n });\n\n entry.dependencies[dependencyName] = dependencyDefinition.version;\n dependencyEntry.requiredBy[`${name}@${version}`] = versionRequirement;\n\n dependencyPaths.push({\n packagePath: dependencyPath,\n importerContext: depImporterContext,\n });\n }\n\n return dependencyPaths;\n}\n\n/**\n * If `packageMap` doesn't already have an entry for this package name and version, create one\n * and add it to `packageMap`. Returns the entry.\n */\nfunction ensurePackageEntry(options: {\n packagePath: string;\n packageName: string;\n packageMap: PackageMap;\n definition: PackageJson;\n}): ResolveMapEntry {\n const { packagePath = '', packageName: name, packageMap, definition } = options;\n // the caller verified that these are set\n const { version } = definition as Required<PackageJson>;\n\n packageMap[name] ??= {};\n\n let entry = packageMap[name][version];\n if (!entry) {\n entry = packageMap[name][version] = {\n name,\n version,\n path: packagePath,\n dependencies: {},\n requiredBy: {},\n };\n\n if (isExternalPackage(packagePath)) {\n entry.isExternal = true;\n }\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 {\n PackageDefinitionsCache,\n PackageImporterContext,\n PackageJson,\n ResolveMapEntry,\n} from '@ms-cloudpack/common-types';\nimport { isFolder } from '@ms-cloudpack/path-utilities';\nimport glob from 'fast-glob';\nimport path from 'path';\nimport { findPackage } from '../findPackage.js';\nimport { isExternalPackage } from '../isExternalPackage.js';\nimport type { PackageMap } from '../types/PackageMap.js';\nimport { getDependencies } from '../getDependencies.js';\nimport { findProjectRoot } from '../findProjectRoot.js';\nimport { bulletedList } from '@ms-cloudpack/task-reporter';\n\ntype PackagePathInfo = { packagePath: string; importerContext?: PackageImporterContext };\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(\n options: {\n /**\n * Paths to search for package.json files and traverse their dependencies to build a PackageMap.\n */\n searchPaths: string[];\n\n /**\n * Where to stop looking for packages (mainly used for testing).\n * If not specified, will look for the project/git root of the first path in the paths array.\n */\n rootPath?: string;\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 },\n context: {\n /**\n * Package cache.\n */\n packages: PackageDefinitionsCache;\n },\n): Promise<PackageMap> {\n const { searchPaths, discoverPackages } = options;\n const packageMap: PackageMap = {};\n const visitedPaths = new Set<string>();\n const realPathCache: Record<string, string | undefined> = {};\n\n for (const searchPath of searchPaths) {\n if (!(await isFolder(searchPath))) {\n throw new Error(`Path ${searchPath} is not a folder.\\n\\nMake sure the path exists and try again.`);\n }\n\n const rootPath = options.rootPath || findProjectRoot(searchPath, { noPackageRoot: true });\n\n let pathsToVisit: PackagePathInfo[];\n\n if (discoverPackages) {\n const packagePaths = await glob('**/package.json', { cwd: searchPath, ignore: ['**/node_modules/**'] });\n\n pathsToVisit = packagePaths.map((p) => ({ packagePath: path.dirname(path.join(searchPath, p)) }));\n } else {\n pathsToVisit = [{ packagePath: searchPath }];\n }\n\n while (pathsToVisit.length) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- already checked length\n const { packagePath, importerContext } = pathsToVisit.shift()!;\n\n // There's a very slight possibility (not yet observed even in large repos) that both semver\n // and non-semver dependencies could resolve to the same package name and version and therefore\n // be installed at the same path. (If the non-semver dependency was encountered first, the\n // version and possibly name in the package definition would have been transformed to match by\n // getNonSemverTransform.) It would be possible to detect this case if needed, but for now we're\n // not going to bother because it's so rare/theoretical and the effect in practice will probably\n // be the same as a dependency that's forced with `resolutions` to a version violating semver.\n if (!visitedPaths.has(packagePath)) {\n visitedPaths.add(packagePath);\n\n const dependencyPaths = await visitPackage(\n { packagePath, packageMap, rootPath, importerContext, realPathCache },\n context,\n );\n\n for (const dependencyPath of dependencyPaths) {\n // Let's avoid pushing tons of things into the work queue that we'll be skipping later.\n if (!visitedPaths.has(dependencyPath.packagePath)) {\n pathsToVisit.push(dependencyPath);\n }\n }\n }\n }\n }\n\n return packageMap;\n}\n\n/**\n * Visit a package path, and add entries for the package and its dependencies to `packageMap`.\n * Returns a list of additional dependency paths to visit.\n */\nasync function visitPackage(\n options: PackagePathInfo & {\n packageMap: PackageMap;\n rootPath: string | undefined;\n realPathCache?: Record<string, string | undefined>;\n },\n context: Parameters<typeof findPackagesFromPath>[1],\n) {\n const { packagePath, packageMap, rootPath, importerContext, realPathCache } = options;\n const { packages } = context;\n\n const packageDefinition = await packages.get(packagePath, { importerContext });\n if (!packageDefinition) {\n throw new Error(\n `Could not find package definition at \"${packagePath}\".\\n\\n` +\n `Make sure the package.json file exists and try again.\\n`,\n );\n }\n if (!(packageDefinition.name && packageDefinition.version)) {\n return [];\n }\n\n const { name, version } = packageDefinition;\n const entry = ensurePackageEntry({\n packageName: importerContext?.importedName || name,\n packagePath: packagePath,\n packageMap,\n definition: packageDefinition,\n });\n\n // Add all dependencies to the list of paths to visit.\n const dependencies = getDependencies(packageDefinition) as Record<string, string>;\n\n const dependencyPaths: PackagePathInfo[] = [];\n\n for (const [dependencyName, versionRequirement] of Object.entries(dependencies)) {\n const depImporterContext: PackageImporterContext = {\n parentName: name,\n parentVersion: version,\n importedName: dependencyName,\n versionRequirement,\n };\n\n const dependencyPackage = await findPackage(\n { dependencyName, startPath: packagePath, rootPath, importerContext: depImporterContext, realPathCache },\n context,\n );\n if (!dependencyPackage) {\n if (packageDefinition.peerDependencies?.[dependencyName]) {\n // Ignore missing peer dependencies\n continue;\n }\n\n throw new Error(\n [\n `A dependency could not be found:`,\n bulletedList([\n `Dependency: ${dependencyName} (Required: ${versionRequirement})`,\n `Required by: ${packagePath}`,\n ]),\n ``,\n `Make sure the dependency is installed and try again.`,\n ].join('\\n'),\n );\n }\n\n const { packagePath: dependencyPath, definition: dependencyDefinition } = dependencyPackage;\n\n if (!(dependencyDefinition.name && dependencyDefinition.version)) {\n throw new Error(`\"${dependencyPath}/package.json\" is missing a name or version.`);\n }\n\n const dependencyEntry = ensurePackageEntry({\n packagePath: dependencyPath,\n packageName: dependencyName,\n packageMap,\n definition: dependencyDefinition,\n });\n\n entry.dependencies[dependencyName] = dependencyDefinition.version;\n dependencyEntry.requiredBy[`${name}@${version}`] = versionRequirement;\n\n dependencyPaths.push({\n packagePath: dependencyPath,\n importerContext: depImporterContext,\n });\n }\n\n return dependencyPaths;\n}\n\n/**\n * If `packageMap` doesn't already have an entry for this package name and version, create one\n * and add it to `packageMap`. Returns the entry.\n */\nfunction ensurePackageEntry(options: {\n packagePath: string;\n packageName: string;\n packageMap: PackageMap;\n definition: PackageJson;\n}): ResolveMapEntry {\n const { packagePath = '', packageName: name, packageMap, definition } = options;\n // the caller verified that these are set\n const { version } = definition as Required<PackageJson>;\n\n packageMap[name] ??= {};\n\n let entry = packageMap[name][version];\n if (!entry) {\n entry = packageMap[name][version] = {\n name,\n version,\n path: packagePath,\n dependencies: {},\n requiredBy: {},\n };\n\n if (isExternalPackage(packagePath)) {\n entry.isExternal = true;\n }\n }\n\n return entry;\n}\n"]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { LinkedPath } from '../types/LinkedPath.js';
|
|
2
1
|
import type { PackageMap } from '../types/PackageMap.js';
|
|
3
|
-
import type { PackageDefinitionsCache, PackageJson } from '@ms-cloudpack/common-types';
|
|
2
|
+
import type { LinkedPath, PackageDefinitionsCache, PackageJson } from '@ms-cloudpack/common-types';
|
|
4
3
|
/**
|
|
5
4
|
* Given a linked path, an appMap, find packages from the linked path and add them to the appMap.
|
|
6
5
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkPath.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/linkPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"linkPath.d.ts","sourceRoot":"","sources":["../../src/createResolveMap/linkPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAMzD,OAAO,KAAK,EAAE,UAAU,EAAmB,uBAAuB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAGpH;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE;IACP,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,WAAW,CAAC;CAC9B,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;CACnC,iBAyGF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linkPath.js","sourceRoot":"","sources":["../../src/createResolveMap/linkPath.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linkPath.js","sourceRoot":"","sources":["../../src/createResolveMap/linkPath.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PackageMap } from '../types/PackageMap.js';\nimport { addLinkedEntryDependencies } from './addLinkedEntryDependencies.js';\nimport { detachEntry } from './detachEntry.js';\nimport { findPackagesFromPath } from './findPackagesFromPath.js';\nimport { parseRequiredBy } from './parseRequiredBy.js';\nimport { slash } from '@ms-cloudpack/path-string-parsing';\nimport type { LinkedPath, ResolveMapEntry, PackageDefinitionsCache, PackageJson } from '@ms-cloudpack/common-types';\nimport { dedupeLinkedPackages } from './dedupeLinkedPackages.js';\n\n/**\n * Given a linked path, an appMap, find packages from the linked path and add them to the appMap.\n */\nexport async function linkPath(\n options: {\n linkedPath: LinkedPath;\n appMap: PackageMap;\n rootPath?: string;\n repoDefinition?: PackageJson;\n },\n context: {\n packages: PackageDefinitionsCache;\n },\n) {\n const { linkedPath, appMap, rootPath, repoDefinition } = options;\n const linkMap = await findPackagesFromPath(\n {\n searchPaths: [linkedPath.path],\n discoverPackages: true,\n },\n context,\n );\n const entriesToLink: ResolveMapEntry[] = [];\n const { path, ignoredPackages = [], includeAll } = linkedPath;\n const resolutions = linkedPath.ignoreResolutions ? undefined : repoDefinition?.resolutions;\n\n // Iterate through the linkMap, looking for internal packages to link to the appMap.\n for (const [packageName, packageVersions] of Object.entries(linkMap)) {\n const appEntries = Object.values(appMap[packageName] || {});\n\n if (!appEntries.length) {\n continue;\n }\n\n const linkedEntries = Object.values(packageVersions);\n const linkedEntry = linkedEntries.length === 1 ? linkedEntries[0] : undefined;\n\n // For linked dependencies, we don't want multiple versions referenced. Remove them\n // all and add them in a second pass.\n if (\n linkedEntry &&\n !linkedEntry.isExternal &&\n ignoredPackages.indexOf(packageName) === -1 &&\n (includeAll || isContainedInPath(linkedEntry.path, path))\n ) {\n // Linked packages use an asterisk for the version description. This keeps it semver compatible with\n // anything.\n linkedEntry.version += '-linked';\n linkedEntry.isLinked = true;\n\n entriesToLink.push(linkedEntry);\n }\n }\n\n // We now have a list of paths to link. Iterate through them, add them to the appMap,\n // and ensure their dependencies are satisfied.\n for (const linkedEntry of entriesToLink) {\n const { name } = linkedEntry;\n const existingEntries = Object.values(appMap[name]);\n\n linkedEntry.requiredBy = {};\n for (const entry of existingEntries) {\n for (const [requiredById, requirement] of Object.entries(entry.requiredBy)) {\n const requiredByName = parseRequiredBy(requiredById).name;\n const linkedParentEntry = Object.values(linkMap[requiredByName] || {})[0];\n const requiredByKey = linkedParentEntry?.isLinked\n ? (`${linkedParentEntry.name}@${linkedParentEntry.version}` as const)\n : requiredById;\n linkedEntry.requiredBy[requiredByKey as `${string}@${string}`] = requirement;\n }\n }\n }\n\n for (const linkedEntry of entriesToLink) {\n const { name } = linkedEntry;\n const existingEntries = Object.values(appMap[name]);\n\n // We need to detach all existing entries from the appMap, along with their dependencies. Note - detaching just means that\n // we disconnect the entry from its parent and children. If the children have no other parents, we disconnect them as well\n // and recurse through their children.\n for (const existingEntry of existingEntries) {\n detachEntry({ appMap, entry: existingEntry });\n }\n\n // Attach the linked entry to the parents' dependencies.\n for (const requiredById of Object.keys(linkedEntry.requiredBy)) {\n const { name: requiredByName, version: requiredByVersion } = parseRequiredBy(requiredById);\n let requiredByEntry = appMap[requiredByName][requiredByVersion];\n\n // If we can't find the requiredBy entry, it likely means that the entry was already replaced with a linked entry\n // in the app map. Fall back to the first entry.\n requiredByEntry ??= Object.values(appMap[requiredByName])[0];\n\n requiredByEntry.dependencies[name] = linkedEntry.version;\n }\n\n // Add the linked entry\n appMap[linkedEntry.name] = { [linkedEntry.version]: linkedEntry };\n }\n\n const allDuplicates = [];\n\n // Once all linked entries have been added, ensure their dependencies are resolved.\n for (const linkedEntry of entriesToLink) {\n const { duplicates } = await addLinkedEntryDependencies(\n { linkedEntry, appMap: appMap, linkMap, resolutions },\n context,\n );\n allDuplicates.push(...duplicates);\n }\n\n if (linkedPath.resolveStrategy !== 'duplicate') {\n await dedupeLinkedPackages(\n { appMap, allDuplicates: new Set(allDuplicates), rootPath, remotePath: linkedPath.path },\n context,\n );\n }\n}\n\nfunction isContainedInPath(path: string, basePath: string) {\n path = normalizePath(path);\n basePath = normalizePath(basePath);\n\n return path.startsWith(basePath);\n}\n\nfunction normalizePath(path: string) {\n let normalizedPath = slash(path);\n\n if (!normalizedPath.endsWith('/')) {\n normalizedPath += '/';\n }\n\n return normalizedPath;\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { ResolveMap } from '
|
|
2
|
-
import type { PackageDefinitionsCache, PackageJson } from '@ms-cloudpack/common-types';
|
|
1
|
+
import type { PackageDefinitionsCache, PackageJson, ResolveMap } from '@ms-cloudpack/common-types';
|
|
3
2
|
/**
|
|
4
3
|
* Ensure that a package is in the resolve map and return the path to the package.
|
|
5
4
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureResolveMapEntry.d.ts","sourceRoot":"","sources":["../src/ensureResolveMapEntry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ensureResolveMapEntry.d.ts","sourceRoot":"","sources":["../src/ensureResolveMapEntry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAInG;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE;IACN,UAAU,EAAE,WAAW,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;CACnC,GACA,OAAO,CAAC;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAA;CAAE,CAAC,CAkFlE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensureResolveMapEntry.js","sourceRoot":"","sources":["../src/ensureResolveMapEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ensureResolveMapEntry.js","sourceRoot":"","sources":["../src/ensureResolveMapEntry.ts"],"names":[],"mappings":"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","sourcesContent":["import { findProjectRoot } from './findProjectRoot.js';\nimport { findResolveMapEntry } from './findResolveMapEntry.js';\nimport type { PackageDefinitionsCache, PackageJson, ResolveMap } from '@ms-cloudpack/common-types';\nimport { findPackage } from './findPackage.js';\nimport { isExternalPackage } from './isExternalPackage.js';\n\n/**\n * Ensure that a package is in the resolve map and return the path to the package.\n */\nexport async function ensureResolveMapEntry(\n params: {\n definition: PackageJson;\n packagePath: string;\n dependencyName: string;\n resolveMap: ResolveMap;\n appPath: string;\n },\n context: {\n packages: PackageDefinitionsCache;\n },\n): Promise<{ dependencyPath?: string; updatedResolution: boolean }> {\n const { dependencyName, resolveMap, packagePath, appPath, definition } = params;\n const { packages } = context;\n if (!definition.name || !definition.version) {\n throw new Error(`Package definition at \"${packagePath}\" is missing a name or version.`);\n }\n\n const parentEntry = findResolveMapEntry({ packageName: definition.name, version: definition.version, resolveMap });\n\n // If we can't find the parent entry, we can't add the dependency.\n if (!parentEntry) {\n return { updatedResolution: false };\n }\n\n const resolveEntry = findResolveMapEntry({ definition, packageName: dependencyName, resolveMap });\n let dependencyPath = resolveEntry?.path;\n let dependencyDefinition = dependencyPath ? await packages.get(dependencyPath) : undefined;\n\n // If the dependency is already in the resolve map and required by the parent, return the path.\n if (dependencyPath && dependencyDefinition && resolveEntry?.requiredBy[`${definition.name}@${definition.version}`]) {\n return { dependencyPath, updatedResolution: false };\n }\n\n const rootPath = findProjectRoot(appPath, { noPackageRoot: true });\n\n const dependencyPackage = await findPackage(\n {\n dependencyName,\n startPath: packagePath,\n rootPath,\n },\n context,\n );\n\n dependencyPath = dependencyPackage?.packagePath;\n dependencyDefinition = dependencyPackage?.definition;\n const version = dependencyDefinition?.version;\n\n // If we can't find the dependency, we can't add it to the resolve map.\n if (!dependencyPath || !dependencyDefinition || !version) {\n return { updatedResolution: false };\n }\n\n // Check if the dependency is already in the resolve map.\n let dependencyEntry = [resolveMap[dependencyName], ...Object.values(resolveMap[dependencyName]?.scopedVersions || {})]\n .filter(Boolean)\n .find((e) => e.version === version && e.path === dependencyPath);\n\n // If it already exists, add the requiredBy entry and return the path.\n if (dependencyEntry) {\n parentEntry.dependencies[dependencyName] = version;\n dependencyEntry.requiredBy[`${definition.name}@${definition.version}`] = version;\n // If the dependency is scoped, we have changed the resolution.\n return { dependencyPath, updatedResolution: dependencyEntry.version !== resolveMap[dependencyName].version };\n }\n\n // If it is missing from the resolve map, add it.\n dependencyEntry = {\n name: dependencyName,\n version,\n path: dependencyPath,\n dependencies: {},\n requiredBy: {\n [`${definition.name}@${definition.version}`]: version,\n },\n };\n\n if (isExternalPackage(dependencyPath)) {\n dependencyEntry.isExternal = true;\n }\n\n parentEntry.dependencies[dependencyName] = version;\n\n // Add the dependency to the resolve map.\n if (!resolveMap[dependencyName]) {\n resolveMap[dependencyName] = dependencyEntry;\n } else {\n resolveMap[dependencyName].scopedVersions ??= {};\n resolveMap[dependencyName].scopedVersions[version] = dependencyEntry;\n }\n\n return { dependencyPath, updatedResolution: true };\n}\n"]}
|
package/lib/findPackage.d.ts
CHANGED
|
@@ -4,10 +4,22 @@ import type { PackageDefinitionsCache, PackageImporterContext, PackageJson } fro
|
|
|
4
4
|
* starting at `startPath` and ending at `rootPath` (usually the git root) or the filesystem root.
|
|
5
5
|
*/
|
|
6
6
|
export declare function findPackage(options: {
|
|
7
|
+
/**
|
|
8
|
+
* Dependency name as specified in the parent's deps and installed in `node_modules`.
|
|
9
|
+
* (This is usually the actual name, except for renamed non-semver deps.)
|
|
10
|
+
*/
|
|
7
11
|
dependencyName: string;
|
|
12
|
+
/** Start searching up from the `node_modules` of this folder. */
|
|
8
13
|
startPath: string;
|
|
14
|
+
/** Context in which `dependencyName` is imported. */
|
|
9
15
|
importerContext?: PackageImporterContext;
|
|
16
|
+
/** Stop searching at this path (usually the git root). Defaults to filesystem root. */
|
|
10
17
|
rootPath?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Cache of realpath results (improves perf, particularly on Windows).
|
|
20
|
+
* As of writing, this is scoped to a `findPackagesFromPath` call.
|
|
21
|
+
* (see https://github.com/microsoft/cloudpack/pull/2184)
|
|
22
|
+
*/
|
|
11
23
|
realPathCache?: Record<string, string | undefined>;
|
|
12
24
|
}, context: {
|
|
13
25
|
packages: PackageDefinitionsCache;
|
package/lib/findPackage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findPackage.d.ts","sourceRoot":"","sources":["../src/findPackage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE/G;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE;IACP,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACpD,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;CACnC,GACA,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"findPackage.d.ts","sourceRoot":"","sources":["../src/findPackage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE/G;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE;IACP;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACpD,EACD,OAAO,EAAE;IACP,QAAQ,EAAE,uBAAuB,CAAC;CACnC,GACA,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,SAAS,CAAC,CA4CvE"}
|
package/lib/findPackage.js
CHANGED
|
@@ -5,7 +5,7 @@ import fs from 'fs';
|
|
|
5
5
|
* starting at `startPath` and ending at `rootPath` (usually the git root) or the filesystem root.
|
|
6
6
|
*/
|
|
7
7
|
export async function findPackage(options, context) {
|
|
8
|
-
const { dependencyName, rootPath, startPath, importerContext, realPathCache } = options;
|
|
8
|
+
const { dependencyName, rootPath, startPath, importerContext, realPathCache = {} } = options;
|
|
9
9
|
const { packages } = context;
|
|
10
10
|
let packagePath = startPath;
|
|
11
11
|
const isStoreLayout = /[\\/]\.(pnpm|store)[\\/]/.test(packagePath);
|
|
@@ -14,6 +14,9 @@ export async function findPackage(options, context) {
|
|
|
14
14
|
let definition;
|
|
15
15
|
let realPath;
|
|
16
16
|
try {
|
|
17
|
+
// Get the realpath in case of a symlinked layout.
|
|
18
|
+
// realpathSync.native is faster than either realpathSync or realpath.
|
|
19
|
+
// https://github.com/microsoft/cloudpack/pull/2127#discussion_r1607070201
|
|
17
20
|
realPath = realPathCache?.[resolvedPath] || fs.realpathSync.native(resolvedPath);
|
|
18
21
|
definition = await packages.get(realPath, { importerContext });
|
|
19
22
|
}
|
|
@@ -21,9 +24,7 @@ export async function findPackage(options, context) {
|
|
|
21
24
|
// Ignore errors and keep looking.
|
|
22
25
|
}
|
|
23
26
|
if (realPath && definition) {
|
|
24
|
-
|
|
25
|
-
realPathCache[resolvedPath] = realPath;
|
|
26
|
-
}
|
|
27
|
+
realPathCache[resolvedPath] = realPath;
|
|
27
28
|
return { packagePath: realPath, definition };
|
|
28
29
|
}
|
|
29
30
|
// We haven't found it. Try to move up a directory.
|
package/lib/findPackage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findPackage.js","sourceRoot":"","sources":["../src/findPackage.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,
|
|
1
|
+
{"version":3,"file":"findPackage.js","sourceRoot":"","sources":["../src/findPackage.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAkBC,EACD,OAEC;IAED,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAC7F,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAE7B,IAAI,WAAW,GAAG,SAAS,CAAC;IAC5B,MAAM,aAAa,GAAG,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAEnE,GAAG,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAC5E,IAAI,UAAmC,CAAC;QACxC,IAAI,QAA4B,CAAC;QAEjC,IAAI,CAAC;YACH,kDAAkD;YAClD,sEAAsE;YACtE,0EAA0E;YAC1E,QAAQ,GAAG,aAAa,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACjF,UAAU,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,kCAAkC;QACpC,CAAC;QAED,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;YAC3B,aAAa,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC;YACvC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;QAC/C,CAAC;QAED,mDAAmD;QACnD,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAExC,oDAAoD;QACpD,gGAAgG;QAChG,yFAAyF;QACzF,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjE,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;QAED,yCAAyC;QACzC,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACzC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,QAAQ,CAAC,CAAC,QAAQ,IAAI,WAAW,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,WAAW,EAAE;IAE5G,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import path from 'path';\nimport fs from 'fs';\nimport type { PackageDefinitionsCache, PackageImporterContext, PackageJson } from '@ms-cloudpack/common-types';\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: {\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 folder. */\n startPath: string;\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;\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 context: {\n packages: PackageDefinitionsCache;\n },\n): Promise<{ packagePath: string; definition: PackageJson } | undefined> {\n const { dependencyName, rootPath, startPath, importerContext, realPathCache = {} } = options;\n const { packages } = context;\n\n let packagePath = startPath;\n const isStoreLayout = /[\\\\/]\\.(pnpm|store)[\\\\/]/.test(packagePath);\n\n do {\n const resolvedPath = path.join(packagePath, 'node_modules', 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.get(realPath, { importerContext });\n } catch (e) {\n // Ignore errors and keep looking.\n }\n\n if (realPath && definition) {\n realPathCache[resolvedPath] = realPath;\n return { packagePath: realPath, definition };\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,6 +1,4 @@
|
|
|
1
|
-
import type { ResolveMap } from '
|
|
2
|
-
import type { ResolveMapEntry } from './types/ResolveMapEntry.js';
|
|
3
|
-
import type { PackageJson } from '@ms-cloudpack/common-types';
|
|
1
|
+
import type { PackageJson, ResolveMap, ResolveMapEntry } from '@ms-cloudpack/common-types';
|
|
4
2
|
/**
|
|
5
3
|
* Helper to find the resolve map entry for a dependency.
|
|
6
4
|
*/
|
|
@@ -10,7 +8,7 @@ export declare function findResolveMapEntry(params: {
|
|
|
10
8
|
resolveMap: ResolveMap;
|
|
11
9
|
/** Requested version of `packageName` */
|
|
12
10
|
version?: string;
|
|
13
|
-
/** "Parent" package which has `packageName` as a dependency */
|
|
14
|
-
definition?: PackageJson
|
|
11
|
+
/** "Parent" package which has `packageName` as a dependency, used to get the appropriate scoped version */
|
|
12
|
+
definition?: Pick<PackageJson, 'name' | 'version'>;
|
|
15
13
|
}): ResolveMapEntry | undefined;
|
|
16
14
|
//# sourceMappingURL=findResolveMapEntry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findResolveMapEntry.d.ts","sourceRoot":"","sources":["../src/findResolveMapEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"findResolveMapEntry.d.ts","sourceRoot":"","sources":["../src/findResolveMapEntry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE3F;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2GAA2G;IAC3G,UAAU,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CACpD,GAAG,eAAe,GAAG,SAAS,CA4B9B"}
|
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export function findResolveMapEntry(params) {
|
|
5
5
|
const { packageName, resolveMap, definition, version } = params;
|
|
6
|
-
|
|
7
|
-
return undefined;
|
|
8
|
-
}
|
|
9
|
-
const resolveEntry = resolveMap[packageName];
|
|
6
|
+
const resolveEntry = packageName && resolveMap[packageName];
|
|
10
7
|
if (!resolveEntry) {
|
|
11
8
|
return undefined;
|
|
12
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findResolveMapEntry.js","sourceRoot":"","sources":["../src/findResolveMapEntry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"findResolveMapEntry.js","sourceRoot":"","sources":["../src/findResolveMapEntry.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAQnC;IACC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEhE,MAAM,YAAY,GAAG,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,YAAY,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACrC,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,OAAO,YAAY,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,YAAY,GAA0B,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;QAE/G,OAAO,WAAW,IAAI,YAAY,CAAC;IACrC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import type { PackageJson, ResolveMap, ResolveMapEntry } from '@ms-cloudpack/common-types';\n\n/**\n * Helper to find the resolve map entry for a dependency.\n */\nexport function findResolveMapEntry(params: {\n /** Package name to find */\n packageName: string;\n resolveMap: ResolveMap;\n /** Requested version of `packageName` */\n version?: string;\n /** \"Parent\" package which has `packageName` as a dependency, used to get the appropriate scoped version */\n definition?: Pick<PackageJson, 'name' | 'version'>;\n}): ResolveMapEntry | undefined {\n const { packageName, resolveMap, definition, version } = params;\n\n const resolveEntry = packageName && resolveMap[packageName];\n if (!resolveEntry) {\n return undefined;\n }\n\n if (!definition && !version) {\n return resolveEntry;\n }\n\n if (version) {\n if (resolveEntry.version === version) {\n return resolveEntry;\n }\n\n return resolveEntry.scopedVersions?.[version];\n }\n\n if (definition) {\n const requiredById: `${string}@${string}` = `${definition.name}@${definition.version}`;\n const scopedEntry = Object.values(resolveEntry.scopedVersions || {}).find((e) => !!e.requiredBy[requiredById]);\n\n return scopedEntry || resolveEntry;\n }\n\n return undefined;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNonSemverTransform.d.ts","sourceRoot":"","sources":["../src/getNonSemverTransform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAe,MAAM,4BAA4B,CAAC;AAM1F;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,0BAA0B,
|
|
1
|
+
{"version":3,"file":"getNonSemverTransform.d.ts","sourceRoot":"","sources":["../src/getNonSemverTransform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAe,MAAM,4BAA4B,CAAC;AAM1F;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,0BAA0B,CAsFlE"}
|
|
@@ -23,9 +23,15 @@ export function getNonSemverTransform() {
|
|
|
23
23
|
if (!depVersion || semver.validRange(depVersion)) {
|
|
24
24
|
continue;
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
// Don't warn about workspace: deps, but still process them as non-semver.
|
|
27
|
+
// (Alternatively, we could change the version of all workspace deps to * in dependencies,
|
|
28
|
+
// but that's risky since there could theoretically be an additional version of that dep
|
|
29
|
+
// from the registry nested somewhere in the tree.)
|
|
30
|
+
if (!depVersion.startsWith('workspace:')) {
|
|
31
|
+
console.debug(`Non-semver dependency found: ${depName}@${depVersion} ` +
|
|
32
|
+
`(in ${definition.name}@${definition.version} at ${packagePath}). ` +
|
|
33
|
+
"Cloudpack will attempt to handle this, but it's recommended to use semantic versions only if possible.");
|
|
34
|
+
}
|
|
29
35
|
// Update the version in the returned dependencies:
|
|
30
36
|
// "bar": "npm:@custom/bar@^1" => "0.0.0-npm--custom-bar--1"
|
|
31
37
|
const resultDeps = (result[depType] ??= { ...deps });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getNonSemverTransform.js","sourceRoot":"","sources":["../src/getNonSemverTransform.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAU,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB;IACnC;;;OAGG;IACH,MAAM,aAAa,GAGf,EAAE,CAAC;IAEP,OAAO,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE;QACtD,MAAM,MAAM,GAAyB,EAAE,CAAC;QAExC,oCAAoC;QACpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAEvC,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjD,SAAS;gBACX,CAAC;gBAED,OAAO,CAAC,KAAK,CACX,gCAAgC,OAAO,IAAI,UAAU,GAAG;
|
|
1
|
+
{"version":3,"file":"getNonSemverTransform.js","sourceRoot":"","sources":["../src/getNonSemverTransform.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAEjF,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAU,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB;IACnC;;;OAGG;IACH,MAAM,aAAa,GAGf,EAAE,CAAC;IAEP,OAAO,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE;QACtD,MAAM,MAAM,GAAyB,EAAE,CAAC;QAExC,oCAAoC;QACpC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAEvC,KAAK,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzD,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjD,SAAS;gBACX,CAAC;gBAED,0EAA0E;gBAC1E,0FAA0F;gBAC1F,wFAAwF;gBACxF,mDAAmD;gBACnD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBACzC,OAAO,CAAC,KAAK,CACX,gCAAgC,OAAO,IAAI,UAAU,GAAG;wBACtD,OAAO,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,OAAO,WAAW,KAAK;wBACnE,wGAAwG,CAC3G,CAAC;gBACJ,CAAC;gBAED,mDAAmD;gBACnD,gEAAgE;gBAChE,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;gBACrD,UAAU,CAAC,OAAO,CAAC,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;gBAE/D,sCAAsC;gBACtC,MAAM,MAAM,GAAG,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;gBAClF,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,6FAA6F;QAC7F,cAAc;QACd,MAAM,mBAAmB,GACvB,eAAe,IAAI,aAAa,CAAC,GAAG,eAAe,CAAC,UAAU,IAAI,eAAe,CAAC,aAAa,EAAE,CAAC,CAAC;QAErG,iFAAiF;QACjF,wGAAwG;QAExG,IAAI,mBAAmB,EAAE,CAAC;YACxB,8EAA8E;YAC9E,uBAAuB;YACvB,kHAAkH;YAClH,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,eAAe,CAAC;YAE7D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBAC1D,SAAS;gBACX,CAAC;gBAED,qFAAqF;gBACrF,sFAAsF;gBACtF,qFAAqF;gBACrF,+BAA+B;gBAC/B,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;gBAC3B,MAAM,CAAC,OAAO,GAAG,kBAAkB,CAAC;gBAEpC,8FAA8F;gBAC9F,IAAI,aAAa,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBAC9D,aAAa,CAAC,GAAG,YAAY,IAAI,kBAAkB,EAAE,CAAC;wBACpD,aAAa,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9D,CAAC;gBAED,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC;QACtC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { PackageDefinitionTransform, PackageJson } from '@ms-cloudpack/common-types';\nimport semver from 'semver';\nimport { generateVersionFromNonSemver } from './generateVersionFromNonSemver.js';\n\nconst depTypes = ['dependencies', 'peerDependencies'] as const;\n\n/**\n * Get a transform which handles non-semver dependencies:\n * - In a parent package, if a dependency is specified with a non-semver version, change the dep\n * to a special `0.0.0-<original-version>` prerelease version.\n * - In a child package, if the package was pulled in as a non-semver dependency by a parent\n * (per the `importerContext`), change its version to the special prerelease version as above.\n */\nexport function getNonSemverTransform(): PackageDefinitionTransform {\n /**\n * Cached info about parent packages with non-semver dependencies:\n * Map from parent name/version => dep type => non-semver dependency names\n */\n const nonSemverDeps: Record<\n `${string}@${string}`,\n Partial<Record<'dependencies' | 'peerDependencies', string[]>>\n > = {};\n\n return ({ definition, packagePath, importerContext }) => {\n const result: Partial<PackageJson> = {};\n\n // Check for non-semver dependencies\n for (const depType of depTypes) {\n const deps = definition[depType] || {};\n\n for (const [depName, depVersion] of Object.entries(deps)) {\n if (!depVersion || semver.validRange(depVersion)) {\n continue;\n }\n\n // Don't warn about workspace: deps, but still process them as non-semver.\n // (Alternatively, we could change the version of all workspace deps to * in dependencies,\n // but that's risky since there could theoretically be an additional version of that dep\n // from the registry nested somewhere in the tree.)\n if (!depVersion.startsWith('workspace:')) {\n console.debug(\n `Non-semver dependency found: ${depName}@${depVersion} ` +\n `(in ${definition.name}@${definition.version} at ${packagePath}). ` +\n \"Cloudpack will attempt to handle this, but it's recommended to use semantic versions only if possible.\",\n );\n }\n\n // Update the version in the returned dependencies:\n // \"bar\": \"npm:@custom/bar@^1\" => \"0.0.0-npm--custom-bar--1\"\n const resultDeps = (result[depType] ??= { ...deps });\n resultDeps[depName] = generateVersionFromNonSemver(depVersion);\n\n // Save that this was a non-semver dep\n const record = (nonSemverDeps[`${definition.name}@${definition.version}`] ??= {});\n (record[depType] ??= []).push(depName);\n }\n }\n\n // If this package's parent pulled it in with a non-semver dependency, make some more updates\n // (see below)\n const nonSemverParentInfo =\n importerContext && nonSemverDeps[`${importerContext.parentName}@${importerContext.parentVersion}`];\n\n // TODO: maybe this could also be used for resolutions if we have problems there:\n // adding a check for !semver.satisfies(requiredAs, definition.version) and forcing the package version?\n\n if (nonSemverParentInfo) {\n // Example: the parent depended on this package as \"bar\": \"npm:@custom/bar@^1\"\n // importedName = bar\n // versionRequirement = 0.0.0-npm--custom-bar--1 (was modified when this transform ran on the parent definition)\n const { importedName, versionRequirement } = importerContext;\n\n for (const depType of depTypes) {\n if (!nonSemverParentInfo[depType]?.includes(importedName)) {\n continue;\n }\n\n // To ensure other code handles this package properly, change its name and version to\n // the ones used by the parent (after transforms). This ensures it works properly with\n // the resolve map and isn't accidentally used by other packages which depend on this\n // package under its real name.\n result.name = importedName;\n result.version = versionRequirement;\n\n // We have changed the definition, so link the entry in nonSemverDeps to the new name/version.\n if (nonSemverDeps[`${definition.name}@${definition.version}`]) {\n nonSemverDeps[`${importedName}@${versionRequirement}`] =\n nonSemverDeps[`${definition.name}@${definition.version}`];\n }\n\n break;\n }\n }\n\n if (Object.keys(result).length) {\n return { ...definition, ...result };\n }\n return undefined;\n };\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { PackageJson, PackageJsonDependencies } from '@ms-cloudpack/common-types';
|
|
2
2
|
/**
|
|
3
|
-
* Get the dependencies that
|
|
4
|
-
*
|
|
3
|
+
* Get the extra dependencies that cloudpack doesn't consider for bundling by default:
|
|
4
|
+
* bundle, bundled, and optional deps that might not be used, and dev deps which shouldn't
|
|
5
|
+
* be used at runtime.
|
|
5
6
|
*/
|
|
6
7
|
export declare function getUnusedDependencies(definition: PackageJson): PackageJsonDependencies;
|
|
7
8
|
//# sourceMappingURL=getUnusedDependencies.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUnusedDependencies.d.ts","sourceRoot":"","sources":["../src/getUnusedDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"getUnusedDependencies.d.ts","sourceRoot":"","sources":["../src/getUnusedDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAEvF;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,WAAW,GAAG,uBAAuB,CAStF"}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import { ensurePackageJsonDependencies } from './ensurePackageJsonDependencies.js';
|
|
2
1
|
/**
|
|
3
|
-
* Get the dependencies that
|
|
4
|
-
*
|
|
2
|
+
* Get the extra dependencies that cloudpack doesn't consider for bundling by default:
|
|
3
|
+
* bundle, bundled, and optional deps that might not be used, and dev deps which shouldn't
|
|
4
|
+
* be used at runtime.
|
|
5
5
|
*/
|
|
6
6
|
export function getUnusedDependencies(definition) {
|
|
7
7
|
// This is very simple but needs to be consistent between multiple places,
|
|
8
8
|
// especially in case it needs to be changed somehow later.
|
|
9
9
|
return {
|
|
10
10
|
...definition.devDependencies,
|
|
11
|
-
...
|
|
12
|
-
...
|
|
11
|
+
...normalizeBundleDependencies(definition.bundleDependencies),
|
|
12
|
+
...normalizeBundleDependencies(definition.bundledDependencies),
|
|
13
13
|
...definition.optionalDependencies,
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
+
/** If the bundle(d) dependencies are an array, normalize them to an object. */
|
|
17
|
+
function normalizeBundleDependencies(dependencies) {
|
|
18
|
+
return Array.isArray(dependencies) ? Object.fromEntries(dependencies.map((dep) => [dep, '*'])) : dependencies;
|
|
19
|
+
}
|
|
16
20
|
//# sourceMappingURL=getUnusedDependencies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUnusedDependencies.js","sourceRoot":"","sources":["../src/getUnusedDependencies.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"getUnusedDependencies.js","sourceRoot":"","sources":["../src/getUnusedDependencies.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAuB;IAC3D,0EAA0E;IAC1E,2DAA2D;IAC3D,OAAO;QACL,GAAG,UAAU,CAAC,eAAe;QAC7B,GAAG,2BAA2B,CAAC,UAAU,CAAC,kBAAkB,CAAC;QAC7D,GAAG,2BAA2B,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAC9D,GAAG,UAAU,CAAC,oBAAoB;KACnC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,SAAS,2BAA2B,CAClC,YAA4D;IAE5D,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AAChH,CAAC","sourcesContent":["import type { PackageJson, PackageJsonDependencies } from '@ms-cloudpack/common-types';\n\n/**\n * Get the extra dependencies that cloudpack doesn't consider for bundling by default:\n * bundle, bundled, and optional deps that might not be used, and dev deps which shouldn't\n * be used at runtime.\n */\nexport function getUnusedDependencies(definition: PackageJson): PackageJsonDependencies {\n // This is very simple but needs to be consistent between multiple places,\n // especially in case it needs to be changed somehow later.\n return {\n ...definition.devDependencies,\n ...normalizeBundleDependencies(definition.bundleDependencies),\n ...normalizeBundleDependencies(definition.bundledDependencies),\n ...definition.optionalDependencies,\n };\n}\n\n/** If the bundle(d) dependencies are an array, normalize them to an object. */\nfunction normalizeBundleDependencies(\n dependencies: PackageJsonDependencies | string[] | undefined,\n): PackageJsonDependencies | undefined {\n return Array.isArray(dependencies) ? Object.fromEntries(dependencies.map((dep) => [dep, '*'])) : dependencies;\n}\n"]}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
export { PackageDefinitions } from './PackageDefinitions.js';
|
|
2
2
|
export { createResolveMap } from './createResolveMap/createResolveMap.js';
|
|
3
|
-
export type { ResolveMap } from '
|
|
4
|
-
export type { ResolveMapEntry } from './types/ResolveMapEntry.js';
|
|
3
|
+
export type { ResolveMap, ResolveMapEntry, LinkedPath } from '@ms-cloudpack/common-types';
|
|
5
4
|
export { findResolveMapEntry } from './findResolveMapEntry.js';
|
|
6
5
|
export type { DiffResolveMapsChanges, DiffResolveMapsStats } from './createResolveMap/diffResolveMaps.js';
|
|
7
6
|
export { diffResolveMaps } from './createResolveMap/diffResolveMaps.js';
|
|
8
|
-
export type { LinkedPath } from './types/LinkedPath.js';
|
|
9
7
|
export { flattenExportsMap } from './flattenExportsMap.js';
|
|
10
8
|
export { createExportsMap } from './createExportsMap.js';
|
|
11
9
|
export { addExportsMapEntry, type AddExportsMapEntryOptions } from './addExportsMapEntry.js';
|
|
@@ -21,7 +19,6 @@ export { getDependencies } from './getDependencies.js';
|
|
|
21
19
|
export { getUnusedDependencies } from './getUnusedDependencies.js';
|
|
22
20
|
export { findProjectRoot } from './findProjectRoot.js';
|
|
23
21
|
export { shouldExternalizePackage } from './shouldExternalizePackage.js';
|
|
24
|
-
export { ensurePackageJsonDependencies } from './ensurePackageJsonDependencies.js';
|
|
25
22
|
export { getSourceEntry } from './getSourceEntry.js';
|
|
26
23
|
export { mergeArrayDefaults } from './mergeArrayDefaults.js';
|
|
27
24
|
export { mergeObjects } from './mergeObjects.js';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,YAAY,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACxH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -22,7 +22,6 @@ export { getDependencies } from './getDependencies.js';
|
|
|
22
22
|
export { getUnusedDependencies } from './getUnusedDependencies.js';
|
|
23
23
|
export { findProjectRoot } from './findProjectRoot.js';
|
|
24
24
|
export { shouldExternalizePackage } from './shouldExternalizePackage.js';
|
|
25
|
-
export { ensurePackageJsonDependencies } from './ensurePackageJsonDependencies.js';
|
|
26
25
|
export { getSourceEntry } from './getSourceEntry.js';
|
|
27
26
|
// Object utilities which could be moved to a separate package if we add more of them
|
|
28
27
|
export { mergeArrayDefaults } from './mergeArrayDefaults.js';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,sBAAsB;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,kCAAkC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAkC,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,8BAA8B;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,0BAA0B;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAA+D,MAAM,wBAAwB,CAAC;AACxH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,qFAAqF;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC","sourcesContent":["// Package definition parsing\nexport { PackageDefinitions } from './PackageDefinitions.js';\n\n// ResolveMap creation\nexport { createResolveMap } from './createResolveMap/createResolveMap.js';\nexport type { ResolveMap, ResolveMapEntry, LinkedPath } from '@ms-cloudpack/common-types';\nexport { findResolveMapEntry } from './findResolveMapEntry.js';\nexport type { DiffResolveMapsChanges, DiffResolveMapsStats } from './createResolveMap/diffResolveMaps.js';\nexport { diffResolveMaps } from './createResolveMap/diffResolveMaps.js';\n\n// ExportsMap parsing and creation\nexport { flattenExportsMap } from './flattenExportsMap.js';\nexport { createExportsMap } from './createExportsMap.js';\nexport { addExportsMapEntry, type AddExportsMapEntryOptions } from './addExportsMapEntry.js';\nexport { getExportsMap } from './getExportsMap.js';\nexport { ensureResolveMapEntry } from './ensureResolveMapEntry.js';\n\n// Import resolution utilities\nexport { resolve } from './resolve.js';\n\n// Other package utilities\nexport { detectModuleType } from './detectModuleType.js';\nexport { isExternalPackage } from './isExternalPackage.js';\nexport { findFileInPackage, type FindFileInPackageOptions, type FindFileInPackageResult } from './findFileInPackage.js';\nexport { getDisplayVersion } from './getDisplayVersion.js';\nexport { getVersion } from './getVersion.js';\nexport { getDependencies } from './getDependencies.js';\nexport { getUnusedDependencies } from './getUnusedDependencies.js';\nexport { findProjectRoot } from './findProjectRoot.js';\nexport { shouldExternalizePackage } from './shouldExternalizePackage.js';\nexport { getSourceEntry } from './getSourceEntry.js';\n\n// Object utilities which could be moved to a separate package if we add more of them\nexport { mergeArrayDefaults } from './mergeArrayDefaults.js';\nexport { mergeObjects } from './mergeObjects.js';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageMap.d.ts","sourceRoot":"","sources":["../../src/types/PackageMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"PackageMap.d.ts","sourceRoot":"","sources":["../../src/types/PackageMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAAC;KACpC,CAAC;CACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageMap.js","sourceRoot":"","sources":["../../src/types/PackageMap.ts"],"names":[],"mappings":"","sourcesContent":["import type { ResolveMapEntry } from '
|
|
1
|
+
{"version":3,"file":"PackageMap.js","sourceRoot":"","sources":["../../src/types/PackageMap.ts"],"names":[],"mappings":"","sourcesContent":["import type { ResolveMapEntry } from '@ms-cloudpack/common-types';\n\n/**\n * Intermediate type used internally by `createResolveMap` helpers.\n * Contains info about every discovered version of each package.\n */\nexport type PackageMap = {\n [name: string]: {\n [version: string]: ResolveMapEntry;\n };\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/package-utilities",
|
|
3
|
-
"version": "8.0
|
|
3
|
+
"version": "8.2.0",
|
|
4
4
|
"description": "Utilities for resolving/parsing packages and their imports.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@ms-cloudpack/common-types": "^0.
|
|
17
|
+
"@ms-cloudpack/common-types": "^0.14.0",
|
|
18
18
|
"@ms-cloudpack/json-utilities": "^0.1.6",
|
|
19
|
-
"@ms-cloudpack/package-overrides": "^0.9.
|
|
20
|
-
"@ms-cloudpack/path-string-parsing": "^1.2.
|
|
21
|
-
"@ms-cloudpack/path-utilities": "^2.7.
|
|
19
|
+
"@ms-cloudpack/package-overrides": "^0.9.16",
|
|
20
|
+
"@ms-cloudpack/path-string-parsing": "^1.2.4",
|
|
21
|
+
"@ms-cloudpack/path-utilities": "^2.7.31",
|
|
22
22
|
"@ms-cloudpack/task-reporter": "^0.14.4",
|
|
23
23
|
"acorn": "^8.11.2",
|
|
24
24
|
"acorn-walk": "^8.2.1",
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import type { PackageJsonDependencies } from '@ms-cloudpack/common-types';
|
|
2
|
-
export declare function ensurePackageJsonDependencies(dependencies: PackageJsonDependencies | string[] | undefined): PackageJsonDependencies;
|
|
3
|
-
//# sourceMappingURL=ensurePackageJsonDependencies.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ensurePackageJsonDependencies.d.ts","sourceRoot":"","sources":["../src/ensurePackageJsonDependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE1E,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,uBAAuB,GAAG,MAAM,EAAE,GAAG,SAAS,GAC3D,uBAAuB,CAWzB"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export function ensurePackageJsonDependencies(dependencies) {
|
|
2
|
-
if (!dependencies) {
|
|
3
|
-
return {};
|
|
4
|
-
}
|
|
5
|
-
else if (Array.isArray(dependencies)) {
|
|
6
|
-
return dependencies.reduce((acc, curr) => {
|
|
7
|
-
acc[curr] = '*';
|
|
8
|
-
return acc;
|
|
9
|
-
}, {});
|
|
10
|
-
}
|
|
11
|
-
else {
|
|
12
|
-
return dependencies;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=ensurePackageJsonDependencies.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ensurePackageJsonDependencies.js","sourceRoot":"","sources":["../src/ensurePackageJsonDependencies.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,6BAA6B,CAC3C,YAA4D;IAE5D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACvC,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YACvC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YAChB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAA6B,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC","sourcesContent":["import type { PackageJsonDependencies } from '@ms-cloudpack/common-types';\n\nexport function ensurePackageJsonDependencies(\n dependencies: PackageJsonDependencies | string[] | undefined,\n): PackageJsonDependencies {\n if (!dependencies) {\n return {};\n } else if (Array.isArray(dependencies)) {\n return dependencies.reduce((acc, curr) => {\n acc[curr] = '*';\n return acc;\n }, {} as PackageJsonDependencies);\n } else {\n return dependencies;\n }\n}\n"]}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Represents a path linked to the resolve map.
|
|
3
|
-
*/
|
|
4
|
-
export interface LinkedPath {
|
|
5
|
-
/**
|
|
6
|
-
* Path to where the link originates.
|
|
7
|
-
*/
|
|
8
|
-
path: string;
|
|
9
|
-
/**
|
|
10
|
-
* Optional git root to limit package resolution discovery.
|
|
11
|
-
*/
|
|
12
|
-
rootPath?: string;
|
|
13
|
-
/**
|
|
14
|
-
* If true, transitive internal packages will be linked rather than only the matched packages.
|
|
15
|
-
*/
|
|
16
|
-
includeAll?: boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Package matches to ignore when linking.
|
|
19
|
-
*/
|
|
20
|
-
ignoredPackages?: string[];
|
|
21
|
-
/**
|
|
22
|
-
* If true, ignores resolutions from the host repo definition to the linked packages.
|
|
23
|
-
*/
|
|
24
|
-
ignoreResolutions?: boolean;
|
|
25
|
-
/** The strategy to use when resolving linked packages. Defaults to "dedupe". */
|
|
26
|
-
resolveStrategy?: 'dedupe' | 'duplicate';
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=LinkedPath.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedPath.d.ts","sourceRoot":"","sources":["../../src/types/LinkedPath.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,gFAAgF;IAChF,eAAe,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC;CAC1C"}
|
package/lib/types/LinkedPath.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LinkedPath.js","sourceRoot":"","sources":["../../src/types/LinkedPath.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Represents a path linked to the resolve map.\n */\nexport interface LinkedPath {\n /**\n * Path to where the link originates.\n */\n path: string;\n\n /**\n * Optional git root to limit package resolution discovery.\n */\n rootPath?: string;\n\n /**\n * If true, transitive internal packages will be linked rather than only the matched packages.\n */\n includeAll?: boolean;\n\n /**\n * Package matches to ignore when linking.\n */\n ignoredPackages?: string[];\n\n /**\n * If true, ignores resolutions from the host repo definition to the linked packages.\n */\n ignoreResolutions?: boolean;\n\n /** The strategy to use when resolving linked packages. Defaults to \"dedupe\". */\n resolveStrategy?: 'dedupe' | 'duplicate';\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResolveMap.d.ts","sourceRoot":"","sources":["../../src/types/ResolveMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC"}
|
package/lib/types/ResolveMap.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResolveMap.js","sourceRoot":"","sources":["../../src/types/ResolveMap.ts"],"names":[],"mappings":"","sourcesContent":["import type { ResolveMapEntry } from './ResolveMapEntry.js';\n\n/**\n * A map of package names to ResolveMapEntry objects.\n */\nexport type ResolveMap = Record<string, ResolveMapEntry>;\n"]}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
export type ResolveMapEntry = {
|
|
2
|
-
/** Package name. */
|
|
3
|
-
name: string;
|
|
4
|
-
/**
|
|
5
|
-
* Resolved/installed package version. For a linked internal package, this will end in `-linked`.
|
|
6
|
-
* (The docs for `isExternal` explain what "internal" means.)
|
|
7
|
-
*/
|
|
8
|
-
version: string;
|
|
9
|
-
/** Path to the resolved/installed package. */
|
|
10
|
-
path: string;
|
|
11
|
-
/** Map from dependency name to resolved/installed version. */
|
|
12
|
-
dependencies: Record<string, string>;
|
|
13
|
-
/**
|
|
14
|
-
* Map from requesting package name `@` the actual version of that package to the original
|
|
15
|
-
* version of this package that it requested.
|
|
16
|
-
*
|
|
17
|
-
* Example: if this entry is for package `bar`, and `foo@1.0.0` depends on `"bar": "^2.0.0"`,
|
|
18
|
-
* this will be `{ "foo@1.0.0": "^2.0.0" }`.
|
|
19
|
-
*/
|
|
20
|
-
requiredBy: Record<`${string}@${string}`, string>;
|
|
21
|
-
/**
|
|
22
|
-
* A package is considered "external" if it was installed from a package manager (its realpath
|
|
23
|
-
* contains `node_modules`). This is the opposite of "internal", which means that the package
|
|
24
|
-
* is defined in a local folder/repo.
|
|
25
|
-
*/
|
|
26
|
-
isExternal?: boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Whether this package is linked **AND** is internal to its actual folder/repo.
|
|
29
|
-
* (The docs for `isExternal` explain what "internal" means.)
|
|
30
|
-
*/
|
|
31
|
-
isLinked?: boolean;
|
|
32
|
-
/**
|
|
33
|
-
* Additional installed versions of this package, which are required per semver by some other
|
|
34
|
-
* package in the map.
|
|
35
|
-
*/
|
|
36
|
-
scopedVersions?: {
|
|
37
|
-
[version: string]: ResolveMapEntry;
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=ResolveMapEntry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResolveMapEntry.d.ts","sourceRoot":"","sources":["../../src/types/ResolveMapEntry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IAEb,8DAA8D;IAC9D,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;IAElD;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,cAAc,CAAC,EAAE;QACf,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAAC;KACpC,CAAC;CACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ResolveMapEntry.js","sourceRoot":"","sources":["../../src/types/ResolveMapEntry.ts"],"names":[],"mappings":"","sourcesContent":["export type ResolveMapEntry = {\n /** Package name. */\n name: string;\n\n /**\n * Resolved/installed package version. For a linked internal package, this will end in `-linked`.\n * (The docs for `isExternal` explain what \"internal\" means.)\n */\n version: string;\n\n /** Path to the resolved/installed package. */\n path: string;\n\n /** Map from dependency name to resolved/installed version. */\n dependencies: Record<string, string>;\n\n /**\n * Map from requesting package name `@` the actual version of that package to the original\n * version of this package that it requested.\n *\n * Example: if this entry is for package `bar`, and `foo@1.0.0` depends on `\"bar\": \"^2.0.0\"`,\n * this will be `{ \"foo@1.0.0\": \"^2.0.0\" }`.\n */\n requiredBy: Record<`${string}@${string}`, string>;\n\n /**\n * A package is considered \"external\" if it was installed from a package manager (its realpath\n * contains `node_modules`). This is the opposite of \"internal\", which means that the package\n * is defined in a local folder/repo.\n */\n isExternal?: boolean;\n\n /**\n * Whether this package is linked **AND** is internal to its actual folder/repo.\n * (The docs for `isExternal` explain what \"internal\" means.)\n */\n isLinked?: boolean;\n\n /**\n * Additional installed versions of this package, which are required per semver by some other\n * package in the map.\n */\n scopedVersions?: {\n [version: string]: ResolveMapEntry;\n };\n};\n"]}
|