@ms-cloudpack/package-utilities 2.3.11 → 2.3.12
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/createResolveMap.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { PackageDefinitions } from './PackageDefinitions.js';
|
|
2
2
|
import { findPackagePath } from './findPackagePath.js';
|
|
3
|
-
import
|
|
4
|
-
const { realpath } = fs.promises;
|
|
3
|
+
import fsPromises from 'fs/promises';
|
|
5
4
|
export async function createResolveMap(options) {
|
|
6
5
|
var _a, _b, _c, _d;
|
|
7
6
|
const { appPath, additionalPaths = [], gitRootPath, strictVersioning, packages = PackageDefinitions.getInstance(), } = options;
|
|
@@ -20,7 +19,7 @@ export async function createResolveMap(options) {
|
|
|
20
19
|
while (pathsToVisit.length) {
|
|
21
20
|
let packagePath = pathsToVisit.shift();
|
|
22
21
|
if (packagePath) {
|
|
23
|
-
packagePath = await realpath(packagePath);
|
|
22
|
+
packagePath = await fsPromises.realpath(packagePath);
|
|
24
23
|
const definition = await packages.get(packagePath);
|
|
25
24
|
if (definition && definition.name && definition.version) {
|
|
26
25
|
const packageId = `${definition.name}@${definition.version}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createResolveMap.js","sourceRoot":"","sources":["../src/createResolveMap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,
|
|
1
|
+
{"version":3,"file":"createResolveMap.js","sourceRoot":"","sources":["../src/createResolveMap.ts"],"names":[],"mappings":"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","sourcesContent":["import { PackageDefinitions } from './PackageDefinitions.js';\nimport { findPackagePath } from './findPackagePath.js';\nimport type { PackageJson, PackageDefinitionsCache } from '@ms-cloudpack/bundler-types';\nimport fsPromises from 'fs/promises';\n\nexport type PackageNameVersion = `${string}@${string}`;\n\nexport type ResolveMapEntry = {\n name: string;\n version: string;\n path: string;\n requiredBy: Record<string, string>;\n scopedVersions?: {\n [version: string]: ResolveMapEntry;\n };\n};\n\nexport type ResolveMap = Record<string, ResolveMapEntry>;\n\nexport async function createResolveMap(options: {\n appPath: string;\n additionalPaths?: string[];\n gitRootPath?: string;\n strictVersioning?: boolean;\n packages?: PackageDefinitionsCache;\n}): Promise<ResolveMap> {\n const {\n appPath,\n additionalPaths = [],\n gitRootPath,\n strictVersioning,\n packages = PackageDefinitions.getInstance(),\n } = options;\n const visitedPaths = new Set<string>([appPath, ...additionalPaths]);\n const allEntries: Record<string, Record<string, ResolveMapEntry>> = {};\n const appDefinition = await packages.get(appPath);\n\n if (!appDefinition) {\n throw new Error(`Could not find package.json for ${appPath}`);\n }\n if (!appDefinition.name || !appDefinition.version) {\n throw new Error(`package.json for ${appPath} is missing a name or version`);\n }\n\n const appId = `${appDefinition.name}@${appDefinition.version}`;\n\n for (const rootPath of [appPath, ...additionalPaths]) {\n const pathsToVisit: string[] = [rootPath];\n\n while (pathsToVisit.length) {\n let packagePath = pathsToVisit.shift();\n\n if (packagePath) {\n packagePath = await fsPromises.realpath(packagePath);\n\n const definition = await packages.get(packagePath);\n\n if (definition && definition.name && definition.version) {\n const packageId: PackageNameVersion = `${definition.name}@${definition.version}`;\n\n const namedEntries = (allEntries[definition.name] ??= {});\n\n namedEntries[definition.version] ??= createMapEntry(definition, packagePath);\n\n const packageDependencies = [\n ...Object.keys(definition?.dependencies || {}),\n ...Object.keys(definition?.peerDependencies || {}),\n ];\n for (const depName of packageDependencies) {\n const requiredVersion =\n definition?.dependencies?.[depName] || (definition?.peerDependencies?.[depName] as string);\n const dependencyPath = await findPackagePath(\n depName,\n strictVersioning ? requiredVersion : undefined,\n packagePath,\n gitRootPath,\n !!definition?.peerDependencies?.[depName],\n );\n\n if (dependencyPath) {\n const dependencyDefinition = await packages.get(dependencyPath);\n\n if (dependencyDefinition?.name && dependencyDefinition.version) {\n const dependencyNamedEntries = (allEntries[dependencyDefinition.name] ??= {});\n const dependencyEntry = (dependencyNamedEntries[dependencyDefinition.version] ??= createMapEntry(\n dependencyDefinition,\n dependencyPath,\n ));\n\n dependencyEntry.requiredBy[packageId] = requiredVersion;\n\n if (!visitedPaths.has(dependencyPath)) {\n visitedPaths.add(dependencyPath);\n pathsToVisit.push(dependencyPath);\n }\n }\n }\n }\n }\n }\n }\n }\n\n // Now we have all entries and relationships. Iterate through the relationships to build\n // The final resolve map.\n const resolveMap: ResolveMap = {};\n\n for (const [name, versions] of Object.entries(allEntries)) {\n const [dominantVersion, ...otherVersions] = Object.keys(versions).sort((a, b) => {\n if (versions[a].requiredBy[appId]) {\n return -1;\n }\n\n if (versions[b].requiredBy[appId]) {\n return 1;\n }\n\n // If both are transitive to the app, sort by the number of dependencies.\n const aDependentCount = Object.keys(versions[a].requiredBy).length;\n const bDependentCount = Object.keys(versions[b].requiredBy).length;\n\n return aDependentCount > bDependentCount ? -1 : 1;\n });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const entry = (resolveMap[name] = allEntries[name][dominantVersion] as any as ResolveMapEntry);\n\n if (otherVersions?.length) {\n entry.scopedVersions = otherVersions.reduce((scopedVersions, version) => {\n scopedVersions[version] = allEntries[name][version];\n return scopedVersions;\n }, {} as Record<string, ResolveMapEntry>);\n }\n }\n\n return resolveMap;\n}\n\nfunction createMapEntry(packageDefinition: PackageJson, packagePath: string): ResolveMapEntry {\n const { name = '', version = '' } = packageDefinition;\n\n return {\n name,\n version,\n path: packagePath,\n requiredBy: {},\n };\n}\n"]}
|
package/lib/detectModuleType.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
const { readFile } = fs.promises;
|
|
1
|
+
import fsPromises from 'fs/promises';
|
|
3
2
|
function removeComments(source) {
|
|
4
3
|
// Takes a string of code, not an actual function.
|
|
5
4
|
return source.replace(/\/\*[\s\S]*?\*\/|\/\/.*/g, '').trim(); // Strip comments
|
|
@@ -26,7 +25,7 @@ export function detectModuleTypeFromSource(source) {
|
|
|
26
25
|
export async function detectModuleType(filePath) {
|
|
27
26
|
let source;
|
|
28
27
|
try {
|
|
29
|
-
source = (await readFile(filePath, 'utf8')).toString();
|
|
28
|
+
source = (await fsPromises.readFile(filePath, 'utf8')).toString();
|
|
30
29
|
}
|
|
31
30
|
catch (e) {
|
|
32
31
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detectModuleType.js","sourceRoot":"","sources":["../src/detectModuleType.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"detectModuleType.js","sourceRoot":"","sources":["../src/detectModuleType.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,SAAS,cAAc,CAAC,MAAc;IACpC,kDAAkD;IAClD,OAAO,MAAM,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,iBAAiB;AACjF,CAAC;AAID;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAc;IACvD,IAAI,MAA8B,CAAC;IAEnC,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAEvC,IACE,OAAO,CAAC,KAAK,CACX,wGAAwG,CACzG,EACD;QACA,MAAM,GAAG,KAAK,CAAC;KAChB;SAAM,IAAI,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,EAAE;QACxF,MAAM,GAAG,KAAK,CAAC;KAChB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACrD,IAAI,MAAc,CAAC;IAEnB,IAAI;QACF,MAAM,GAAG,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;KACnE;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,0BAA0B,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5D,CAAC","sourcesContent":["import fsPromises from 'fs/promises';\n\nfunction removeComments(source: string) {\n // Takes a string of code, not an actual function.\n return source.replace(/\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*/g, '').trim(); // Strip comments\n}\n\nexport type ModuleType = 'esm' | 'cjs';\n\n/**\n * Determines if the given source is commonjs or esm.\n * @returns \"esm\" | \"cjs\" | undefined\n */\nexport function detectModuleTypeFromSource(source: string): ModuleType | undefined {\n let result: ModuleType | undefined;\n\n const content = removeComments(source);\n\n if (\n content.match(\n /(import *)|(import {)|(export {)|(export \\*)|(export (default )?[_a-zA-Z0-9]+)|(export [a-zA-Z]+ from)/,\n )\n ) {\n result = 'esm';\n } else if (content.match(/module\\.exports[ =]+|exports\\.|typeof exports|require\\(['\"]+/)) {\n result = 'cjs';\n }\n\n return result;\n}\n\n/**\n * Determines if the given file is commonjs or esm.\n * @returns \"esm\" | \"cjs\" | undefined\n */\nexport async function detectModuleType(filePath: string): Promise<ModuleType | undefined> {\n let source: string;\n\n try {\n source = (await fsPromises.readFile(filePath, 'utf8')).toString();\n } catch (e) {\n return undefined;\n }\n\n return detectModuleTypeFromSource(removeComments(source));\n}\n"]}
|
package/lib/findPackagePath.js
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import
|
|
2
|
+
import fsPromises from 'fs/promises';
|
|
3
3
|
import semver from 'semver';
|
|
4
4
|
import { PackageDefinitions } from './PackageDefinitions.js';
|
|
5
|
-
const { realpath } = fs.promises;
|
|
6
5
|
export async function findPackagePath(dependencyName, versionRequirement, cwd, gitRootPath, isOptional) {
|
|
7
6
|
let packagePath = cwd;
|
|
8
7
|
do {
|
|
9
8
|
const resolvedPath = path.join(packagePath, 'node_modules', dependencyName);
|
|
10
9
|
const definition = await PackageDefinitions.getInstance().get(resolvedPath);
|
|
11
10
|
if (definition?.version && (!versionRequirement || semver.satisfies(definition.version, versionRequirement))) {
|
|
12
|
-
return
|
|
11
|
+
return fsPromises.realpath(resolvedPath);
|
|
13
12
|
}
|
|
14
13
|
// We haven't found it. Try to move up a directory.
|
|
15
14
|
packagePath = path.dirname(packagePath);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findPackagePath.js","sourceRoot":"","sources":["../src/findPackagePath.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"findPackagePath.js","sourceRoot":"","sources":["../src/findPackagePath.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,UAAU,MAAM,aAAa,CAAC;AACrC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,cAAsB,EACtB,kBAAsC,EACtC,GAAW,EACX,WAAoB,EACpB,UAAoB;IAEpB,IAAI,WAAW,GAAG,GAAG,CAAC;IAEtB,GAAG;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;QAC5E,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE5E,IAAI,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC,kBAAkB,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE;YAC5G,OAAO,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;SAC1C;QAED,mDAAmD;QACnD,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAExC,oDAAoD;QACpD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YAC9C,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SACzC;QAED,yCAAyC;QACzC,IAAI,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YACxC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SACzC;KACF,QAAQ,CAAC,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,WAAW,EAAE;IAElH,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,IAAI,KAAK,CACb,sBAAsB,cAAc,GAClC,kBAAkB,CAAC,CAAC,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAClD,WAAW,GAAG,0DAA0D,CACzE,CAAC;KACH;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import path from 'path';\nimport fsPromises from 'fs/promises';\nimport semver from 'semver';\nimport { PackageDefinitions } from './PackageDefinitions.js';\n\nexport async function findPackagePath(\n dependencyName: string,\n versionRequirement: string | undefined,\n cwd: string,\n gitRootPath?: string,\n isOptional?: boolean,\n): Promise<string | undefined> {\n let packagePath = cwd;\n\n do {\n const resolvedPath = path.join(packagePath, 'node_modules', dependencyName);\n const definition = await PackageDefinitions.getInstance().get(resolvedPath);\n\n if (definition?.version && (!versionRequirement || semver.satisfies(definition.version, versionRequirement))) {\n return fsPromises.realpath(resolvedPath);\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 if (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 ((!gitRootPath || packagePath.length >= gitRootPath.length) && path.dirname(packagePath) !== packagePath);\n\n if (!isOptional) {\n throw new Error(\n `Could not resolve \"${dependencyName}${\n versionRequirement ? `@${versionRequirement}` : ``\n }\" from \"${cwd}\". Make sure you have installed the latest dependencies.`,\n );\n }\n\n return undefined;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ms-cloudpack/package-utilities",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.12",
|
|
4
4
|
"description": "Utilities for resolving/parsing packages and their imports.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"@babel/parser": "^7.16.12",
|
|
17
17
|
"@babel/traverse": "^7.16.10",
|
|
18
18
|
"@ms-cloudpack/bundler-types": "^0.12.0",
|
|
19
|
-
"@ms-cloudpack/json-utilities": "^0.0.
|
|
19
|
+
"@ms-cloudpack/json-utilities": "^0.0.6",
|
|
20
20
|
"@ms-cloudpack/package-overrides": "^0.3.4",
|
|
21
|
-
"@ms-cloudpack/path-utilities": "^2.1.
|
|
21
|
+
"@ms-cloudpack/path-utilities": "^2.1.2",
|
|
22
22
|
"@ms-cloudpack/path-string-parsing": "^1.0.1",
|
|
23
23
|
"merge": "^2.1.1",
|
|
24
24
|
"resolve": "^1.22.0"
|