@teambit/objects 0.0.594 → 0.0.595
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/dist/models/dependencies-graph.js.map +1 -1
- package/dist/models/dependencies-graph.spec.js.map +1 -1
- package/models/dependencies-graph.spec.ts +12 -9
- package/models/dependencies-graph.ts +3 -1
- package/package.json +26 -26
- /package/dist/{preview-1785493814568.js → preview-1785520628900.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_semver","data","_interopRequireDefault","require","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEPENDENCIES_GRAPH_SCHEMA_VERSION","DependenciesGraph","constructor","packages","edges","schemaVersion","serialize","JSON","stringify","fromEntries","entries","deserialize","parsed","parse","undefined","Map","merge","graph","rootEdge","findRootEdge","incomingRootEdge","directDependencies","neighbours","directDep","existingDirectDep","find","existingDep","isSameDirectDependency","isWildcardSpecifier","specifier","id","nodeIdLessThan","newPkgId","newPkgAttr","set","ROOT_EDGE_ID","normalizePeerProviderVersions","pruneUnreachableFromRoot","isEmpty","size","edgesById","edge","reachableEdges","Set","reachablePackages","visited","stack","map","neighbour","nodeId","pop","has","add","nodeIdWithoutPeerSuffix","peerId","splitPeerIds","isPatchHashSegment","get","attr","pkgId","Array","from","values","delete","versionsByPackageName","collectVersionsByPackageName","getBestCompatiblePeer","name","range","version","semver","satisfies","includePrerelease","getHighestPeer","rewritePeerId","peerDependencies","parsedPeer","parsePkgId","nestedPeerDependencies","peerIds","nestedPeerId","rewrittenBase","bestPeer","createPeerSuffix","rewritePeerDep","depId","peerIdsByName","parsedDep","rewriteNodeId","changed","rewrittenPeerIds","rewrittenPeerId","rewriteNeighbour","rewrittenId","rewrittenEdge","existingEdge","mergeNeighbours","addVersion","valid","versions","sort","version1","version2","rcompare","exports","dep1","dep2","nodeId1","nodeId2","getVersionFromNodeId","lt","existingNeighbours","newNeighbours","newNeighbour","existingNeighbour","depPathWithoutPeerSuffix","versionStart","lastIndexOf","slice","suffixStart","indexOf","depth","peerStart","index","char","patchSegments","peerSegments","join","segment","startsWith","coerce"],"sources":["dependencies-graph.ts"],"sourcesContent":["import semver from 'semver';\nimport type { LockfilePackageInfo } from '@pnpm/lockfile.types';\n\nexport type PackagesMap = Map<string, PackageAttributes>;\n\nexport type PackageAttributes = LockfilePackageInfo & {\n component?: {\n scope: string;\n name: string;\n };\n requiresBuild?: boolean;\n};\n\nexport type DependencyEdge = {\n id: string;\n neighbours: DependencyNeighbour[];\n attr?: {\n pkgId?: string;\n transitivePeerDependencies?: string[];\n };\n};\n\nexport type DependencyNeighbour = {\n id: string;\n /**\n * This is true when the dependency is from optionalDependencies.\n */\n optional?: boolean;\n name?: string;\n specifier?: string;\n lifecycle?: 'runtime' | 'dev';\n};\n\nconst DEPENDENCIES_GRAPH_SCHEMA_VERSION = '2.0';\n\nexport class DependenciesGraph {\n static ROOT_EDGE_ID = '.';\n\n schemaVersion: string;\n packages: PackagesMap;\n edges: DependencyEdge[];\n\n constructor({\n packages,\n edges,\n schemaVersion,\n }: {\n packages: PackagesMap;\n edges: DependencyEdge[];\n schemaVersion?: string;\n }) {\n this.packages = packages;\n this.edges = edges;\n this.schemaVersion = schemaVersion ?? DEPENDENCIES_GRAPH_SCHEMA_VERSION;\n }\n\n serialize(): string {\n return JSON.stringify({\n schemaVersion: this.schemaVersion,\n packages: Object.fromEntries(this.packages.entries()),\n edges: this.edges,\n });\n }\n\n static deserialize(data: string): DependenciesGraph | undefined {\n const parsed = JSON.parse(data);\n // If the schema version is not supported, then we just ignore the data\n if (parsed.schemaVersion !== DEPENDENCIES_GRAPH_SCHEMA_VERSION) {\n return undefined;\n }\n return new DependenciesGraph({\n schemaVersion: parsed.schemaVersion,\n edges: parsed.edges,\n packages: new Map(Object.entries(parsed.packages)),\n });\n }\n\n merge(graph: DependenciesGraph): void {\n const rootEdge = this.findRootEdge();\n const incomingRootEdge = graph.findRootEdge();\n const directDependencies = incomingRootEdge?.neighbours;\n if (directDependencies && rootEdge) {\n for (const directDep of directDependencies) {\n const existingDirectDep = rootEdge.neighbours.find((existingDep) =>\n isSameDirectDependency(existingDep, directDep)\n );\n if (existingDirectDep == null) {\n rootEdge.neighbours.push(directDep);\n } else {\n if (isWildcardSpecifier(existingDirectDep.specifier) && !isWildcardSpecifier(directDep.specifier)) {\n existingDirectDep.specifier = directDep.specifier;\n }\n if (existingDirectDep.id !== directDep.id && nodeIdLessThan(existingDirectDep.id, directDep.id)) {\n existingDirectDep.id = directDep.id;\n }\n }\n }\n } else if (incomingRootEdge) {\n this.edges.push(incomingRootEdge);\n }\n for (const [newPkgId, newPkgAttr] of graph.packages.entries()) {\n this.packages.set(newPkgId, newPkgAttr);\n }\n this.edges.push(...graph.edges.filter(({ id }) => id !== DependenciesGraph.ROOT_EDGE_ID));\n this.normalizePeerProviderVersions();\n this.pruneUnreachableFromRoot();\n }\n\n isEmpty(): boolean {\n return this.packages.size === 0 && this.edges.length === 0;\n }\n\n /**\n * Returns the edge related to the root component\n */\n findRootEdge(): DependencyEdge | undefined {\n return this.edges.find(({ id }) => id === DependenciesGraph.ROOT_EDGE_ID);\n }\n\n private pruneUnreachableFromRoot(): void {\n const rootEdge = this.findRootEdge();\n if (!rootEdge) return;\n const edgesById = new Map<string, DependencyEdge>();\n for (const edge of this.edges) {\n if (edge.id !== DependenciesGraph.ROOT_EDGE_ID) {\n edgesById.set(edge.id, edge);\n }\n }\n const reachableEdges = new Set<string>();\n const reachablePackages = new Set<string>();\n // An explicit stack: deep dependency chains would overflow the call\n // stack with a recursive walk. Every node id is processed once — the\n // guard must sit before the suffix pushes, or a node referenced by M\n // edges re-pushes its suffix ids M times and nested suffixes multiply\n // that per level.\n const visited = new Set<string>();\n const stack = rootEdge.neighbours.map((neighbour) => neighbour.id);\n while (stack.length > 0) {\n const nodeId = stack.pop()!;\n if (visited.has(nodeId)) continue;\n visited.add(nodeId);\n reachablePackages.add(nodeIdWithoutPeerSuffix(nodeId));\n for (const peerId of splitPeerIds(nodeId)) {\n if (!isPatchHashSegment(peerId)) stack.push(peerId);\n }\n const edge = edgesById.get(nodeId);\n if (!edge) continue;\n reachableEdges.add(nodeId);\n if (edge.attr?.pkgId) reachablePackages.add(edge.attr.pkgId);\n for (const neighbour of edge.neighbours) {\n stack.push(neighbour.id);\n }\n }\n this.edges = [rootEdge, ...Array.from(edgesById.values()).filter((edge) => reachableEdges.has(edge.id))];\n for (const pkgId of this.packages.keys()) {\n if (!reachablePackages.has(pkgId)) {\n this.packages.delete(pkgId);\n }\n }\n }\n\n private normalizePeerProviderVersions(): void {\n const versionsByPackageName = this.collectVersionsByPackageName();\n const getBestCompatiblePeer = (name: string, range: string) =>\n versionsByPackageName\n .get(name)\n ?.find(({ version }) => semver.satisfies(version, range, { includePrerelease: true }));\n const getHighestPeer = (name: string) => versionsByPackageName.get(name)?.[0];\n const rewritePeerId = (peerId: string, peerDependencies?: Record<string, string>): string => {\n const parsedPeer = parsePkgId(peerId);\n const nestedPeerDependencies = this.packages.get(nodeIdWithoutPeerSuffix(peerId))?.peerDependencies;\n const peerIds = splitPeerIds(peerId).map((nestedPeerId) => rewritePeerId(nestedPeerId, nestedPeerDependencies));\n let rewrittenBase = nodeIdWithoutPeerSuffix(peerId);\n if (parsedPeer) {\n const range = peerDependencies?.[parsedPeer.name];\n const bestPeer = range ? getBestCompatiblePeer(parsedPeer.name, range) : getHighestPeer(parsedPeer.name);\n if (bestPeer) rewrittenBase = `${parsedPeer.name}@${bestPeer.version}`;\n }\n return `${rewrittenBase}${createPeerSuffix(peerIds)}`;\n };\n const rewritePeerDep = (\n depId: string,\n peerDependencies?: Record<string, string>,\n peerIdsByName?: Map<string, string>\n ) => {\n const peerId = peerIdsByName?.get(parsePkgId(depId)?.name ?? '');\n if (peerId) return peerId;\n if (!peerDependencies) return depId;\n const parsedDep = parsePkgId(depId);\n if (!parsedDep) return depId;\n const range = peerDependencies[parsedDep.name];\n if (!range) return depId;\n const bestPeer = getBestCompatiblePeer(parsedDep.name, range);\n if (!bestPeer) return depId;\n return `${parsedDep.name}@${bestPeer.version}`;\n };\n const rewriteNodeId = (nodeId: string) => {\n const pkgId = nodeIdWithoutPeerSuffix(nodeId);\n const peerDependencies = this.packages.get(pkgId)?.peerDependencies;\n const peerIds = splitPeerIds(nodeId);\n if (peerIds.length === 0) return nodeId;\n let changed = false;\n const rewrittenPeerIds = peerIds.map((peerId) => {\n const rewrittenPeerId = rewritePeerId(peerId, peerDependencies);\n if (rewrittenPeerId === peerId) return peerId;\n changed = true;\n return rewrittenPeerId;\n });\n if (!changed) return nodeId;\n return `${pkgId}${createPeerSuffix(rewrittenPeerIds)}`;\n };\n const rewriteNeighbour = (\n neighbour: DependencyNeighbour,\n peerDependencies?: Record<string, string>,\n peerIdsByName?: Map<string, string>\n ) => {\n const rewrittenId = rewriteNodeId(rewritePeerDep(neighbour.id, peerDependencies, peerIdsByName));\n return rewrittenId === neighbour.id ? neighbour : { ...neighbour, id: rewrittenId };\n };\n const edgesById = new Map<string, DependencyEdge>();\n for (const edge of this.edges) {\n const peerDependencies =\n edge.id === DependenciesGraph.ROOT_EDGE_ID\n ? undefined\n : this.packages.get(edge.attr?.pkgId ?? nodeIdWithoutPeerSuffix(edge.id))?.peerDependencies;\n const peerIdsByName = new Map<string, string>();\n for (const peerId of splitPeerIds(edge.id)) {\n const rewrittenPeerId = rewritePeerId(peerId, peerDependencies);\n const parsedPeer = parsePkgId(rewrittenPeerId);\n if (parsedPeer) peerIdsByName.set(parsedPeer.name, rewrittenPeerId);\n }\n const rewrittenEdge: DependencyEdge = {\n ...edge,\n id: edge.id === DependenciesGraph.ROOT_EDGE_ID ? edge.id : rewriteNodeId(edge.id),\n neighbours: edge.neighbours.map((neighbour) => rewriteNeighbour(neighbour, peerDependencies, peerIdsByName)),\n };\n const existingEdge = edgesById.get(rewrittenEdge.id);\n if (existingEdge) {\n mergeNeighbours(existingEdge.neighbours, rewrittenEdge.neighbours);\n } else {\n edgesById.set(rewrittenEdge.id, rewrittenEdge);\n }\n }\n this.edges = Array.from(edgesById.values());\n }\n\n private collectVersionsByPackageName(): Map<string, Array<{ version: string }>> {\n const versionsByPackageName = new Map<string, Array<{ version: string }>>();\n const addVersion = (pkgId: string) => {\n const parsed = parsePkgId(pkgId);\n if (!parsed || !semver.valid(parsed.version)) return;\n const versions = versionsByPackageName.get(parsed.name) ?? [];\n versions.push({ version: parsed.version });\n versionsByPackageName.set(parsed.name, versions);\n for (const peerId of splitPeerIds(pkgId)) {\n addVersion(peerId);\n }\n };\n for (const pkgId of this.packages.keys()) {\n addVersion(pkgId);\n }\n for (const edge of this.edges) {\n addVersion(edge.id);\n for (const neighbour of edge.neighbours) {\n addVersion(neighbour.id);\n }\n }\n for (const versions of versionsByPackageName.values()) {\n versions.sort((version1, version2) => semver.rcompare(version1.version, version2.version));\n }\n return versionsByPackageName;\n }\n}\n\nfunction isSameDirectDependency(dep1: DependencyNeighbour, dep2: DependencyNeighbour): boolean {\n if (!dep1.name || !dep2.name) return dep1.id === dep2.id;\n if (dep1.name !== dep2.name) return false;\n return dep1.specifier === dep2.specifier || isWildcardSpecifier(dep1.specifier) || isWildcardSpecifier(dep2.specifier);\n}\n\nfunction isWildcardSpecifier(specifier?: string): boolean {\n return specifier === '*' || specifier == null || specifier === '';\n}\n\nfunction nodeIdLessThan(nodeId1: string, nodeId2: string): boolean {\n const version1 = getVersionFromNodeId(nodeId1);\n if (!version1) return false;\n const version2 = getVersionFromNodeId(nodeId2);\n if (!version2) return false;\n return semver.lt(version1, version2);\n}\n\nfunction mergeNeighbours(existingNeighbours: DependencyNeighbour[], newNeighbours: DependencyNeighbour[]): void {\n for (const newNeighbour of newNeighbours) {\n const existingNeighbour = existingNeighbours.find((neighbour) => neighbour.id === newNeighbour.id);\n if (!existingNeighbour) existingNeighbours.push(newNeighbour);\n }\n}\n\nfunction parsePkgId(pkgId: string): { name: string; version: string } | undefined {\n const depPathWithoutPeerSuffix = nodeIdWithoutPeerSuffix(pkgId);\n const versionStart = depPathWithoutPeerSuffix.lastIndexOf('@');\n if (versionStart <= 0) return undefined;\n const name = depPathWithoutPeerSuffix.slice(0, versionStart);\n const version = depPathWithoutPeerSuffix.slice(versionStart + 1);\n if (!name || !version) return undefined;\n return { name, version };\n}\n\nfunction splitPeerIds(nodeId: string): string[] {\n const suffixStart = nodeId.indexOf('(');\n if (suffixStart === -1) return [];\n const peerIds: string[] = [];\n let depth = 0;\n let peerStart: number | undefined;\n for (let index = suffixStart; index < nodeId.length; index += 1) {\n const char = nodeId[index];\n if (char === '(') {\n if (depth === 0) peerStart = index + 1;\n depth += 1;\n } else if (char === ')') {\n depth -= 1;\n if (depth === 0 && peerStart != null) {\n peerIds.push(nodeId.slice(peerStart, index));\n peerStart = undefined;\n }\n }\n }\n return peerIds;\n}\n\nfunction createPeerSuffix(peerIds: string[]): string {\n const patchSegments = peerIds.filter(isPatchHashSegment);\n const peerSegments = peerIds.filter((peerId) => !isPatchHashSegment(peerId)).sort();\n return [...patchSegments, ...peerSegments].map((peerId) => `(${peerId})`).join('');\n}\n\nfunction isPatchHashSegment(segment: string): boolean {\n return segment.startsWith('patch_hash=');\n}\n\nfunction getVersionFromNodeId(nodeId: string): string | undefined {\n const depPathWithoutPeerSuffix = nodeIdWithoutPeerSuffix(nodeId);\n const versionStart = depPathWithoutPeerSuffix.lastIndexOf('@');\n if (versionStart === -1) return undefined;\n const version = depPathWithoutPeerSuffix.slice(versionStart + 1);\n return semver.valid(version) ?? semver.coerce(version)?.version;\n}\n\nfunction nodeIdWithoutPeerSuffix(nodeId: string): string {\n const suffixStart = nodeId.indexOf('(');\n return suffixStart === -1 ? nodeId : nodeId.slice(0, suffixStart);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_semver","data","_interopRequireDefault","require","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","DEPENDENCIES_GRAPH_SCHEMA_VERSION","DependenciesGraph","constructor","packages","edges","schemaVersion","serialize","JSON","stringify","fromEntries","entries","deserialize","parsed","parse","undefined","Map","merge","graph","rootEdge","findRootEdge","incomingRootEdge","directDependencies","neighbours","directDep","existingDirectDep","find","existingDep","isSameDirectDependency","isWildcardSpecifier","specifier","id","nodeIdLessThan","newPkgId","newPkgAttr","set","ROOT_EDGE_ID","normalizePeerProviderVersions","pruneUnreachableFromRoot","isEmpty","size","edgesById","edge","reachableEdges","Set","reachablePackages","visited","stack","map","neighbour","nodeId","pop","has","add","nodeIdWithoutPeerSuffix","peerId","splitPeerIds","isPatchHashSegment","get","attr","pkgId","Array","from","values","delete","versionsByPackageName","collectVersionsByPackageName","getBestCompatiblePeer","name","range","version","semver","satisfies","includePrerelease","getHighestPeer","rewritePeerId","peerDependencies","parsedPeer","parsePkgId","nestedPeerDependencies","peerIds","nestedPeerId","rewrittenBase","bestPeer","createPeerSuffix","rewritePeerDep","depId","peerIdsByName","parsedDep","rewriteNodeId","changed","rewrittenPeerIds","rewrittenPeerId","rewriteNeighbour","rewrittenId","rewrittenEdge","existingEdge","mergeNeighbours","addVersion","valid","versions","sort","version1","version2","rcompare","exports","dep1","dep2","nodeId1","nodeId2","getVersionFromNodeId","lt","existingNeighbours","newNeighbours","newNeighbour","existingNeighbour","depPathWithoutPeerSuffix","versionStart","lastIndexOf","slice","suffixStart","indexOf","depth","peerStart","index","char","patchSegments","peerSegments","join","segment","startsWith","coerce"],"sources":["dependencies-graph.ts"],"sourcesContent":["import semver from 'semver';\nimport type { LockfilePackageInfo } from '@pnpm/lockfile.types';\n\nexport type PackagesMap = Map<string, PackageAttributes>;\n\nexport type PackageAttributes = LockfilePackageInfo & {\n component?: {\n scope: string;\n name: string;\n };\n requiresBuild?: boolean;\n};\n\nexport type DependencyEdge = {\n id: string;\n neighbours: DependencyNeighbour[];\n attr?: {\n pkgId?: string;\n transitivePeerDependencies?: string[];\n };\n};\n\nexport type DependencyNeighbour = {\n id: string;\n /**\n * This is true when the dependency is from optionalDependencies.\n */\n optional?: boolean;\n name?: string;\n specifier?: string;\n lifecycle?: 'runtime' | 'dev';\n};\n\nconst DEPENDENCIES_GRAPH_SCHEMA_VERSION = '2.0';\n\nexport class DependenciesGraph {\n static ROOT_EDGE_ID = '.';\n\n schemaVersion: string;\n packages: PackagesMap;\n edges: DependencyEdge[];\n\n constructor({\n packages,\n edges,\n schemaVersion,\n }: {\n packages: PackagesMap;\n edges: DependencyEdge[];\n schemaVersion?: string;\n }) {\n this.packages = packages;\n this.edges = edges;\n this.schemaVersion = schemaVersion ?? DEPENDENCIES_GRAPH_SCHEMA_VERSION;\n }\n\n serialize(): string {\n return JSON.stringify({\n schemaVersion: this.schemaVersion,\n packages: Object.fromEntries(this.packages.entries()),\n edges: this.edges,\n });\n }\n\n static deserialize(data: string): DependenciesGraph | undefined {\n const parsed = JSON.parse(data);\n // If the schema version is not supported, then we just ignore the data\n if (parsed.schemaVersion !== DEPENDENCIES_GRAPH_SCHEMA_VERSION) {\n return undefined;\n }\n return new DependenciesGraph({\n schemaVersion: parsed.schemaVersion,\n edges: parsed.edges,\n packages: new Map(Object.entries(parsed.packages)),\n });\n }\n\n merge(graph: DependenciesGraph): void {\n const rootEdge = this.findRootEdge();\n const incomingRootEdge = graph.findRootEdge();\n const directDependencies = incomingRootEdge?.neighbours;\n if (directDependencies && rootEdge) {\n for (const directDep of directDependencies) {\n const existingDirectDep = rootEdge.neighbours.find((existingDep) =>\n isSameDirectDependency(existingDep, directDep)\n );\n if (existingDirectDep == null) {\n rootEdge.neighbours.push(directDep);\n } else {\n if (isWildcardSpecifier(existingDirectDep.specifier) && !isWildcardSpecifier(directDep.specifier)) {\n existingDirectDep.specifier = directDep.specifier;\n }\n if (existingDirectDep.id !== directDep.id && nodeIdLessThan(existingDirectDep.id, directDep.id)) {\n existingDirectDep.id = directDep.id;\n }\n }\n }\n } else if (incomingRootEdge) {\n this.edges.push(incomingRootEdge);\n }\n for (const [newPkgId, newPkgAttr] of graph.packages.entries()) {\n this.packages.set(newPkgId, newPkgAttr);\n }\n this.edges.push(...graph.edges.filter(({ id }) => id !== DependenciesGraph.ROOT_EDGE_ID));\n this.normalizePeerProviderVersions();\n this.pruneUnreachableFromRoot();\n }\n\n isEmpty(): boolean {\n return this.packages.size === 0 && this.edges.length === 0;\n }\n\n /**\n * Returns the edge related to the root component\n */\n findRootEdge(): DependencyEdge | undefined {\n return this.edges.find(({ id }) => id === DependenciesGraph.ROOT_EDGE_ID);\n }\n\n private pruneUnreachableFromRoot(): void {\n const rootEdge = this.findRootEdge();\n if (!rootEdge) return;\n const edgesById = new Map<string, DependencyEdge>();\n for (const edge of this.edges) {\n if (edge.id !== DependenciesGraph.ROOT_EDGE_ID) {\n edgesById.set(edge.id, edge);\n }\n }\n const reachableEdges = new Set<string>();\n const reachablePackages = new Set<string>();\n // An explicit stack: deep dependency chains would overflow the call\n // stack with a recursive walk. Every node id is processed once — the\n // guard must sit before the suffix pushes, or a node referenced by M\n // edges re-pushes its suffix ids M times and nested suffixes multiply\n // that per level.\n const visited = new Set<string>();\n const stack = rootEdge.neighbours.map((neighbour) => neighbour.id);\n while (stack.length > 0) {\n const nodeId = stack.pop()!;\n if (visited.has(nodeId)) continue;\n visited.add(nodeId);\n reachablePackages.add(nodeIdWithoutPeerSuffix(nodeId));\n for (const peerId of splitPeerIds(nodeId)) {\n if (!isPatchHashSegment(peerId)) stack.push(peerId);\n }\n const edge = edgesById.get(nodeId);\n if (!edge) continue;\n reachableEdges.add(nodeId);\n if (edge.attr?.pkgId) reachablePackages.add(edge.attr.pkgId);\n for (const neighbour of edge.neighbours) {\n stack.push(neighbour.id);\n }\n }\n this.edges = [rootEdge, ...Array.from(edgesById.values()).filter((edge) => reachableEdges.has(edge.id))];\n for (const pkgId of this.packages.keys()) {\n if (!reachablePackages.has(pkgId)) {\n this.packages.delete(pkgId);\n }\n }\n }\n\n private normalizePeerProviderVersions(): void {\n const versionsByPackageName = this.collectVersionsByPackageName();\n const getBestCompatiblePeer = (name: string, range: string) =>\n versionsByPackageName\n .get(name)\n ?.find(({ version }) => semver.satisfies(version, range, { includePrerelease: true }));\n const getHighestPeer = (name: string) => versionsByPackageName.get(name)?.[0];\n const rewritePeerId = (peerId: string, peerDependencies?: Record<string, string>): string => {\n const parsedPeer = parsePkgId(peerId);\n const nestedPeerDependencies = this.packages.get(nodeIdWithoutPeerSuffix(peerId))?.peerDependencies;\n const peerIds = splitPeerIds(peerId).map((nestedPeerId) => rewritePeerId(nestedPeerId, nestedPeerDependencies));\n let rewrittenBase = nodeIdWithoutPeerSuffix(peerId);\n if (parsedPeer) {\n const range = peerDependencies?.[parsedPeer.name];\n const bestPeer = range ? getBestCompatiblePeer(parsedPeer.name, range) : getHighestPeer(parsedPeer.name);\n if (bestPeer) rewrittenBase = `${parsedPeer.name}@${bestPeer.version}`;\n }\n return `${rewrittenBase}${createPeerSuffix(peerIds)}`;\n };\n const rewritePeerDep = (\n depId: string,\n peerDependencies?: Record<string, string>,\n peerIdsByName?: Map<string, string>\n ) => {\n const peerId = peerIdsByName?.get(parsePkgId(depId)?.name ?? '');\n if (peerId) return peerId;\n if (!peerDependencies) return depId;\n const parsedDep = parsePkgId(depId);\n if (!parsedDep) return depId;\n const range = peerDependencies[parsedDep.name];\n if (!range) return depId;\n const bestPeer = getBestCompatiblePeer(parsedDep.name, range);\n if (!bestPeer) return depId;\n return `${parsedDep.name}@${bestPeer.version}`;\n };\n const rewriteNodeId = (nodeId: string) => {\n const pkgId = nodeIdWithoutPeerSuffix(nodeId);\n const peerDependencies = this.packages.get(pkgId)?.peerDependencies;\n const peerIds = splitPeerIds(nodeId);\n if (peerIds.length === 0) return nodeId;\n let changed = false;\n const rewrittenPeerIds = peerIds.map((peerId) => {\n const rewrittenPeerId = rewritePeerId(peerId, peerDependencies);\n if (rewrittenPeerId === peerId) return peerId;\n changed = true;\n return rewrittenPeerId;\n });\n if (!changed) return nodeId;\n return `${pkgId}${createPeerSuffix(rewrittenPeerIds)}`;\n };\n const rewriteNeighbour = (\n neighbour: DependencyNeighbour,\n peerDependencies?: Record<string, string>,\n peerIdsByName?: Map<string, string>\n ) => {\n const rewrittenId = rewriteNodeId(rewritePeerDep(neighbour.id, peerDependencies, peerIdsByName));\n return rewrittenId === neighbour.id ? neighbour : { ...neighbour, id: rewrittenId };\n };\n const edgesById = new Map<string, DependencyEdge>();\n for (const edge of this.edges) {\n const peerDependencies =\n edge.id === DependenciesGraph.ROOT_EDGE_ID\n ? undefined\n : this.packages.get(edge.attr?.pkgId ?? nodeIdWithoutPeerSuffix(edge.id))?.peerDependencies;\n const peerIdsByName = new Map<string, string>();\n for (const peerId of splitPeerIds(edge.id)) {\n const rewrittenPeerId = rewritePeerId(peerId, peerDependencies);\n const parsedPeer = parsePkgId(rewrittenPeerId);\n if (parsedPeer) peerIdsByName.set(parsedPeer.name, rewrittenPeerId);\n }\n const rewrittenEdge: DependencyEdge = {\n ...edge,\n id: edge.id === DependenciesGraph.ROOT_EDGE_ID ? edge.id : rewriteNodeId(edge.id),\n neighbours: edge.neighbours.map((neighbour) => rewriteNeighbour(neighbour, peerDependencies, peerIdsByName)),\n };\n const existingEdge = edgesById.get(rewrittenEdge.id);\n if (existingEdge) {\n mergeNeighbours(existingEdge.neighbours, rewrittenEdge.neighbours);\n } else {\n edgesById.set(rewrittenEdge.id, rewrittenEdge);\n }\n }\n this.edges = Array.from(edgesById.values());\n }\n\n private collectVersionsByPackageName(): Map<string, Array<{ version: string }>> {\n const versionsByPackageName = new Map<string, Array<{ version: string }>>();\n const addVersion = (pkgId: string) => {\n const parsed = parsePkgId(pkgId);\n if (!parsed || !semver.valid(parsed.version)) return;\n const versions = versionsByPackageName.get(parsed.name) ?? [];\n versions.push({ version: parsed.version });\n versionsByPackageName.set(parsed.name, versions);\n for (const peerId of splitPeerIds(pkgId)) {\n addVersion(peerId);\n }\n };\n for (const pkgId of this.packages.keys()) {\n addVersion(pkgId);\n }\n for (const edge of this.edges) {\n addVersion(edge.id);\n for (const neighbour of edge.neighbours) {\n addVersion(neighbour.id);\n }\n }\n for (const versions of versionsByPackageName.values()) {\n versions.sort((version1, version2) => semver.rcompare(version1.version, version2.version));\n }\n return versionsByPackageName;\n }\n}\n\nfunction isSameDirectDependency(dep1: DependencyNeighbour, dep2: DependencyNeighbour): boolean {\n if (!dep1.name || !dep2.name) return dep1.id === dep2.id;\n if (dep1.name !== dep2.name) return false;\n return (\n dep1.specifier === dep2.specifier || isWildcardSpecifier(dep1.specifier) || isWildcardSpecifier(dep2.specifier)\n );\n}\n\nfunction isWildcardSpecifier(specifier?: string): boolean {\n return specifier === '*' || specifier == null || specifier === '';\n}\n\nfunction nodeIdLessThan(nodeId1: string, nodeId2: string): boolean {\n const version1 = getVersionFromNodeId(nodeId1);\n if (!version1) return false;\n const version2 = getVersionFromNodeId(nodeId2);\n if (!version2) return false;\n return semver.lt(version1, version2);\n}\n\nfunction mergeNeighbours(existingNeighbours: DependencyNeighbour[], newNeighbours: DependencyNeighbour[]): void {\n for (const newNeighbour of newNeighbours) {\n const existingNeighbour = existingNeighbours.find((neighbour) => neighbour.id === newNeighbour.id);\n if (!existingNeighbour) existingNeighbours.push(newNeighbour);\n }\n}\n\nfunction parsePkgId(pkgId: string): { name: string; version: string } | undefined {\n const depPathWithoutPeerSuffix = nodeIdWithoutPeerSuffix(pkgId);\n const versionStart = depPathWithoutPeerSuffix.lastIndexOf('@');\n if (versionStart <= 0) return undefined;\n const name = depPathWithoutPeerSuffix.slice(0, versionStart);\n const version = depPathWithoutPeerSuffix.slice(versionStart + 1);\n if (!name || !version) return undefined;\n return { name, version };\n}\n\nfunction splitPeerIds(nodeId: string): string[] {\n const suffixStart = nodeId.indexOf('(');\n if (suffixStart === -1) return [];\n const peerIds: string[] = [];\n let depth = 0;\n let peerStart: number | undefined;\n for (let index = suffixStart; index < nodeId.length; index += 1) {\n const char = nodeId[index];\n if (char === '(') {\n if (depth === 0) peerStart = index + 1;\n depth += 1;\n } else if (char === ')') {\n depth -= 1;\n if (depth === 0 && peerStart != null) {\n peerIds.push(nodeId.slice(peerStart, index));\n peerStart = undefined;\n }\n }\n }\n return peerIds;\n}\n\nfunction createPeerSuffix(peerIds: string[]): string {\n const patchSegments = peerIds.filter(isPatchHashSegment);\n const peerSegments = peerIds.filter((peerId) => !isPatchHashSegment(peerId)).sort();\n return [...patchSegments, ...peerSegments].map((peerId) => `(${peerId})`).join('');\n}\n\nfunction isPatchHashSegment(segment: string): boolean {\n return segment.startsWith('patch_hash=');\n}\n\nfunction getVersionFromNodeId(nodeId: string): string | undefined {\n const depPathWithoutPeerSuffix = nodeIdWithoutPeerSuffix(nodeId);\n const versionStart = depPathWithoutPeerSuffix.lastIndexOf('@');\n if (versionStart === -1) return undefined;\n const version = depPathWithoutPeerSuffix.slice(versionStart + 1);\n return semver.valid(version) ?? semver.coerce(version)?.version;\n}\n\nfunction nodeIdWithoutPeerSuffix(nodeId: string): string {\n const suffixStart = nodeId.indexOf('(');\n return suffixStart === -1 ? nodeId : nodeId.slice(0, suffixStart);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_chai","data","require","_dependenciesGraph","describe","it","base","createGraph","rootEdge","id","name","specifier","edge","incoming","merge","foo","findRootEdge","neighbours","find","neighbour","expect","to","equal","packages","set","peerDependencies","typescript","plugin","has","bar","depth","edges","packageIds","i","push","graph","size","Map","map","DependenciesGraph","ROOT_EDGE_ID"],"sources":["dependencies-graph.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport type { DependencyEdge, PackagesMap } from './dependencies-graph';\nimport { DependenciesGraph } from './dependencies-graph';\n\ndescribe('DependenciesGraph.merge', () => {\n it('adopts the more specific specifier when a wildcard direct dep merges with a manifest spec', () => {\n const base = createGraph([rootEdge([{ id: 'foo@1.0.0', name: 'foo', specifier: '*' }]), edge('foo@1.0.0')]
|
|
1
|
+
{"version":3,"names":["_chai","data","require","_dependenciesGraph","describe","it","base","createGraph","rootEdge","id","name","specifier","edge","incoming","merge","foo","findRootEdge","neighbours","find","neighbour","expect","to","equal","packages","set","peerDependencies","typescript","plugin","has","bar","depth","edges","packageIds","i","push","graph","size","Map","map","DependenciesGraph","ROOT_EDGE_ID"],"sources":["dependencies-graph.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport type { DependencyEdge, PackagesMap } from './dependencies-graph';\nimport { DependenciesGraph } from './dependencies-graph';\n\ndescribe('DependenciesGraph.merge', () => {\n it('adopts the more specific specifier when a wildcard direct dep merges with a manifest spec', () => {\n const base = createGraph(\n [rootEdge([{ id: 'foo@1.0.0', name: 'foo', specifier: '*' }]), edge('foo@1.0.0')],\n ['foo@1.0.0']\n );\n const incoming = createGraph(\n [rootEdge([{ id: 'foo@1.0.0', name: 'foo', specifier: '^1.0.0' }]), edge('foo@1.0.0')],\n ['foo@1.0.0']\n );\n\n base.merge(incoming);\n\n const foo = base.findRootEdge()?.neighbours.find((neighbour) => neighbour.name === 'foo');\n expect(foo?.specifier).to.equal('^1.0.0');\n });\n\n it('rewrites nested peer providers within their parent provider peer ranges', () => {\n const base = createGraph(\n [\n rootEdge([{ id: 'plugin@1.0.0(parser@1.0.0(typescript@5.0.0))', name: 'plugin', specifier: '1.0.0' }]),\n edge('plugin@1.0.0(parser@1.0.0(typescript@5.0.0))'),\n edge('parser@1.0.0(typescript@5.0.0)'),\n edge('typescript@5.0.0'),\n ],\n ['plugin@1.0.0', 'typescript@5.0.0']\n );\n base.packages.set('parser@1.0.0', { peerDependencies: { typescript: '^5.0.0' } } as any);\n const incoming = createGraph(\n [rootEdge([{ id: 'typescript@6.0.0', name: 'typescript', specifier: '6.0.0' }]), edge('typescript@6.0.0')],\n ['typescript@6.0.0']\n );\n\n base.merge(incoming);\n\n const plugin = base.findRootEdge()?.neighbours.find((neighbour) => neighbour.name === 'plugin');\n expect(plugin?.id).to.equal(\n 'plugin@1.0.0(parser@1.0.0(typescript@5.0.0))',\n 'typescript@6.0.0 does not satisfy parser@1.0.0 peer range ^5.0.0'\n );\n });\n\n it('keeps a peer provider that is referenced only inside a depPath suffix', () => {\n const base = createGraph(\n [\n rootEdge([{ id: 'consumer@1.0.0(peer@2.0.0)', name: 'consumer', specifier: '1.0.0' }]),\n edge('consumer@1.0.0(peer@2.0.0)'),\n ],\n ['consumer@1.0.0', 'peer@2.0.0']\n );\n\n base.merge(createGraph([], []));\n\n expect(base.packages.has('peer@2.0.0')).to.equal(true);\n });\n\n it('keeps the patch_hash segment in front of sorted peer segments', () => {\n const base = createGraph(\n [\n rootEdge([{ id: 'foo@1.0.0(patch_hash=abc)(bar@1.0.0)', name: 'foo', specifier: '1.0.0' }]),\n edge('foo@1.0.0(patch_hash=abc)(bar@1.0.0)'),\n edge('bar@1.0.0'),\n ],\n ['foo@1.0.0', 'bar@1.0.0']\n );\n base.packages.set('foo@1.0.0', { peerDependencies: { bar: '^1.0.0' } } as any);\n const incoming = createGraph(\n [rootEdge([{ id: 'bar@1.0.0', name: 'bar', specifier: '1.0.0' }]), edge('bar@1.0.0')],\n ['bar@1.0.0']\n );\n\n base.merge(incoming);\n\n const foo = base.findRootEdge()?.neighbours.find((neighbour) => neighbour.name === 'foo');\n expect(foo?.id).to.equal('foo@1.0.0(patch_hash=abc)(bar@1.0.0)');\n });\n\n it('does not overflow the stack on a deep dependency chain', () => {\n const depth = 50000;\n const edges: DependencyEdge[] = [rootEdge([{ id: 'pkg0@1.0.0', name: 'pkg0', specifier: '1.0.0' }])];\n const packageIds: string[] = [];\n for (let i = 0; i < depth; i += 1) {\n const id = `pkg${i}@1.0.0`;\n packageIds.push(id);\n edges.push(edge(id, i + 1 < depth ? [{ id: `pkg${i + 1}@1.0.0` }] : []));\n }\n const graph = createGraph(edges, packageIds);\n\n graph.merge(createGraph([], []));\n\n expect(graph.packages.size).to.equal(depth);\n });\n});\n\nfunction createGraph(edges: DependencyEdge[], packageIds: string[]): DependenciesGraph {\n const packages: PackagesMap = new Map(packageIds.map((id) => [id, {} as any]));\n return new DependenciesGraph({ packages, edges });\n}\n\nfunction rootEdge(neighbours: DependencyEdge['neighbours']): DependencyEdge {\n return { id: DependenciesGraph.ROOT_EDGE_ID, neighbours };\n}\n\nfunction edge(id: string, neighbours: DependencyEdge['neighbours'] = []): DependencyEdge {\n return { id, neighbours };\n}\n"],"mappings":";;AAAA,SAAAA,MAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,KAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAE,mBAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,kBAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEAG,QAAQ,CAAC,yBAAyB,EAAE,MAAM;EACxCC,EAAE,CAAC,2FAA2F,EAAE,MAAM;IACpG,MAAMC,IAAI,GAAGC,WAAW,CACtB,CAACC,QAAQ,CAAC,CAAC;MAAEC,EAAE,EAAE,WAAW;MAAEC,IAAI,EAAE,KAAK;MAAEC,SAAS,EAAE;IAAI,CAAC,CAAC,CAAC,EAAEC,IAAI,CAAC,WAAW,CAAC,CAAC,EACjF,CAAC,WAAW,CACd,CAAC;IACD,MAAMC,QAAQ,GAAGN,WAAW,CAC1B,CAACC,QAAQ,CAAC,CAAC;MAAEC,EAAE,EAAE,WAAW;MAAEC,IAAI,EAAE,KAAK;MAAEC,SAAS,EAAE;IAAS,CAAC,CAAC,CAAC,EAAEC,IAAI,CAAC,WAAW,CAAC,CAAC,EACtF,CAAC,WAAW,CACd,CAAC;IAEDN,IAAI,CAACQ,KAAK,CAACD,QAAQ,CAAC;IAEpB,MAAME,GAAG,GAAGT,IAAI,CAACU,YAAY,CAAC,CAAC,EAAEC,UAAU,CAACC,IAAI,CAAEC,SAAS,IAAKA,SAAS,CAACT,IAAI,KAAK,KAAK,CAAC;IACzF,IAAAU,cAAM,EAACL,GAAG,EAAEJ,SAAS,CAAC,CAACU,EAAE,CAACC,KAAK,CAAC,QAAQ,CAAC;EAC3C,CAAC,CAAC;EAEFjB,EAAE,CAAC,yEAAyE,EAAE,MAAM;IAClF,MAAMC,IAAI,GAAGC,WAAW,CACtB,CACEC,QAAQ,CAAC,CAAC;MAAEC,EAAE,EAAE,8CAA8C;MAAEC,IAAI,EAAE,QAAQ;MAAEC,SAAS,EAAE;IAAQ,CAAC,CAAC,CAAC,EACtGC,IAAI,CAAC,8CAA8C,CAAC,EACpDA,IAAI,CAAC,gCAAgC,CAAC,EACtCA,IAAI,CAAC,kBAAkB,CAAC,CACzB,EACD,CAAC,cAAc,EAAE,kBAAkB,CACrC,CAAC;IACDN,IAAI,CAACiB,QAAQ,CAACC,GAAG,CAAC,cAAc,EAAE;MAAEC,gBAAgB,EAAE;QAAEC,UAAU,EAAE;MAAS;IAAE,CAAQ,CAAC;IACxF,MAAMb,QAAQ,GAAGN,WAAW,CAC1B,CAACC,QAAQ,CAAC,CAAC;MAAEC,EAAE,EAAE,kBAAkB;MAAEC,IAAI,EAAE,YAAY;MAAEC,SAAS,EAAE;IAAQ,CAAC,CAAC,CAAC,EAAEC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAC1G,CAAC,kBAAkB,CACrB,CAAC;IAEDN,IAAI,CAACQ,KAAK,CAACD,QAAQ,CAAC;IAEpB,MAAMc,MAAM,GAAGrB,IAAI,CAACU,YAAY,CAAC,CAAC,EAAEC,UAAU,CAACC,IAAI,CAAEC,SAAS,IAAKA,SAAS,CAACT,IAAI,KAAK,QAAQ,CAAC;IAC/F,IAAAU,cAAM,EAACO,MAAM,EAAElB,EAAE,CAAC,CAACY,EAAE,CAACC,KAAK,CACzB,8CAA8C,EAC9C,kEACF,CAAC;EACH,CAAC,CAAC;EAEFjB,EAAE,CAAC,uEAAuE,EAAE,MAAM;IAChF,MAAMC,IAAI,GAAGC,WAAW,CACtB,CACEC,QAAQ,CAAC,CAAC;MAAEC,EAAE,EAAE,4BAA4B;MAAEC,IAAI,EAAE,UAAU;MAAEC,SAAS,EAAE;IAAQ,CAAC,CAAC,CAAC,EACtFC,IAAI,CAAC,4BAA4B,CAAC,CACnC,EACD,CAAC,gBAAgB,EAAE,YAAY,CACjC,CAAC;IAEDN,IAAI,CAACQ,KAAK,CAACP,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAE/B,IAAAa,cAAM,EAACd,IAAI,CAACiB,QAAQ,CAACK,GAAG,CAAC,YAAY,CAAC,CAAC,CAACP,EAAE,CAACC,KAAK,CAAC,IAAI,CAAC;EACxD,CAAC,CAAC;EAEFjB,EAAE,CAAC,+DAA+D,EAAE,MAAM;IACxE,MAAMC,IAAI,GAAGC,WAAW,CACtB,CACEC,QAAQ,CAAC,CAAC;MAAEC,EAAE,EAAE,sCAAsC;MAAEC,IAAI,EAAE,KAAK;MAAEC,SAAS,EAAE;IAAQ,CAAC,CAAC,CAAC,EAC3FC,IAAI,CAAC,sCAAsC,CAAC,EAC5CA,IAAI,CAAC,WAAW,CAAC,CAClB,EACD,CAAC,WAAW,EAAE,WAAW,CAC3B,CAAC;IACDN,IAAI,CAACiB,QAAQ,CAACC,GAAG,CAAC,WAAW,EAAE;MAAEC,gBAAgB,EAAE;QAAEI,GAAG,EAAE;MAAS;IAAE,CAAQ,CAAC;IAC9E,MAAMhB,QAAQ,GAAGN,WAAW,CAC1B,CAACC,QAAQ,CAAC,CAAC;MAAEC,EAAE,EAAE,WAAW;MAAEC,IAAI,EAAE,KAAK;MAAEC,SAAS,EAAE;IAAQ,CAAC,CAAC,CAAC,EAAEC,IAAI,CAAC,WAAW,CAAC,CAAC,EACrF,CAAC,WAAW,CACd,CAAC;IAEDN,IAAI,CAACQ,KAAK,CAACD,QAAQ,CAAC;IAEpB,MAAME,GAAG,GAAGT,IAAI,CAACU,YAAY,CAAC,CAAC,EAAEC,UAAU,CAACC,IAAI,CAAEC,SAAS,IAAKA,SAAS,CAACT,IAAI,KAAK,KAAK,CAAC;IACzF,IAAAU,cAAM,EAACL,GAAG,EAAEN,EAAE,CAAC,CAACY,EAAE,CAACC,KAAK,CAAC,sCAAsC,CAAC;EAClE,CAAC,CAAC;EAEFjB,EAAE,CAAC,wDAAwD,EAAE,MAAM;IACjE,MAAMyB,KAAK,GAAG,KAAK;IACnB,MAAMC,KAAuB,GAAG,CAACvB,QAAQ,CAAC,CAAC;MAAEC,EAAE,EAAE,YAAY;MAAEC,IAAI,EAAE,MAAM;MAAEC,SAAS,EAAE;IAAQ,CAAC,CAAC,CAAC,CAAC;IACpG,MAAMqB,UAAoB,GAAG,EAAE;IAC/B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,KAAK,EAAEG,CAAC,IAAI,CAAC,EAAE;MACjC,MAAMxB,EAAE,GAAG,MAAMwB,CAAC,QAAQ;MAC1BD,UAAU,CAACE,IAAI,CAACzB,EAAE,CAAC;MACnBsB,KAAK,CAACG,IAAI,CAACtB,IAAI,CAACH,EAAE,EAAEwB,CAAC,GAAG,CAAC,GAAGH,KAAK,GAAG,CAAC;QAAErB,EAAE,EAAE,MAAMwB,CAAC,GAAG,CAAC;MAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1E;IACA,MAAME,KAAK,GAAG5B,WAAW,CAACwB,KAAK,EAAEC,UAAU,CAAC;IAE5CG,KAAK,CAACrB,KAAK,CAACP,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAEhC,IAAAa,cAAM,EAACe,KAAK,CAACZ,QAAQ,CAACa,IAAI,CAAC,CAACf,EAAE,CAACC,KAAK,CAACQ,KAAK,CAAC;EAC7C,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,SAASvB,WAAWA,CAACwB,KAAuB,EAAEC,UAAoB,EAAqB;EACrF,MAAMT,QAAqB,GAAG,IAAIc,GAAG,CAACL,UAAU,CAACM,GAAG,CAAE7B,EAAE,IAAK,CAACA,EAAE,EAAE,CAAC,CAAC,CAAQ,CAAC,CAAC;EAC9E,OAAO,KAAI8B,sCAAiB,EAAC;IAAEhB,QAAQ;IAAEQ;EAAM,CAAC,CAAC;AACnD;AAEA,SAASvB,QAAQA,CAACS,UAAwC,EAAkB;EAC1E,OAAO;IAAER,EAAE,EAAE8B,sCAAiB,CAACC,YAAY;IAAEvB;EAAW,CAAC;AAC3D;AAEA,SAASL,IAAIA,CAACH,EAAU,EAAEQ,UAAwC,GAAG,EAAE,EAAkB;EACvF,OAAO;IAAER,EAAE;IAAEQ;EAAW,CAAC;AAC3B","ignoreList":[]}
|
|
@@ -4,9 +4,10 @@ import { DependenciesGraph } from './dependencies-graph';
|
|
|
4
4
|
|
|
5
5
|
describe('DependenciesGraph.merge', () => {
|
|
6
6
|
it('adopts the more specific specifier when a wildcard direct dep merges with a manifest spec', () => {
|
|
7
|
-
const base = createGraph(
|
|
8
|
-
'foo@1.0.0',
|
|
9
|
-
|
|
7
|
+
const base = createGraph(
|
|
8
|
+
[rootEdge([{ id: 'foo@1.0.0', name: 'foo', specifier: '*' }]), edge('foo@1.0.0')],
|
|
9
|
+
['foo@1.0.0']
|
|
10
|
+
);
|
|
10
11
|
const incoming = createGraph(
|
|
11
12
|
[rootEdge([{ id: 'foo@1.0.0', name: 'foo', specifier: '^1.0.0' }]), edge('foo@1.0.0')],
|
|
12
13
|
['foo@1.0.0']
|
|
@@ -29,9 +30,10 @@ describe('DependenciesGraph.merge', () => {
|
|
|
29
30
|
['plugin@1.0.0', 'typescript@5.0.0']
|
|
30
31
|
);
|
|
31
32
|
base.packages.set('parser@1.0.0', { peerDependencies: { typescript: '^5.0.0' } } as any);
|
|
32
|
-
const incoming = createGraph(
|
|
33
|
-
'typescript@6.0.0',
|
|
34
|
-
|
|
33
|
+
const incoming = createGraph(
|
|
34
|
+
[rootEdge([{ id: 'typescript@6.0.0', name: 'typescript', specifier: '6.0.0' }]), edge('typescript@6.0.0')],
|
|
35
|
+
['typescript@6.0.0']
|
|
36
|
+
);
|
|
35
37
|
|
|
36
38
|
base.merge(incoming);
|
|
37
39
|
|
|
@@ -66,9 +68,10 @@ describe('DependenciesGraph.merge', () => {
|
|
|
66
68
|
['foo@1.0.0', 'bar@1.0.0']
|
|
67
69
|
);
|
|
68
70
|
base.packages.set('foo@1.0.0', { peerDependencies: { bar: '^1.0.0' } } as any);
|
|
69
|
-
const incoming = createGraph(
|
|
70
|
-
'bar@1.0.0',
|
|
71
|
-
|
|
71
|
+
const incoming = createGraph(
|
|
72
|
+
[rootEdge([{ id: 'bar@1.0.0', name: 'bar', specifier: '1.0.0' }]), edge('bar@1.0.0')],
|
|
73
|
+
['bar@1.0.0']
|
|
74
|
+
);
|
|
72
75
|
|
|
73
76
|
base.merge(incoming);
|
|
74
77
|
|
|
@@ -275,7 +275,9 @@ export class DependenciesGraph {
|
|
|
275
275
|
function isSameDirectDependency(dep1: DependencyNeighbour, dep2: DependencyNeighbour): boolean {
|
|
276
276
|
if (!dep1.name || !dep2.name) return dep1.id === dep2.id;
|
|
277
277
|
if (dep1.name !== dep2.name) return false;
|
|
278
|
-
return
|
|
278
|
+
return (
|
|
279
|
+
dep1.specifier === dep2.specifier || isWildcardSpecifier(dep1.specifier) || isWildcardSpecifier(dep2.specifier)
|
|
280
|
+
);
|
|
279
281
|
}
|
|
280
282
|
|
|
281
283
|
function isWildcardSpecifier(specifier?: string): boolean {
|
package/package.json
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/objects",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.595",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/scope/objects",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.scope",
|
|
8
8
|
"name": "objects",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.595"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@pnpm/lockfile.types": "1100.0.12",
|
|
13
|
-
"semver": "7.7.1",
|
|
14
12
|
"lodash": "4.17.21",
|
|
15
|
-
"uuid": "8.3.2",
|
|
16
|
-
"async-mutex": "0.3.1",
|
|
17
|
-
"p-map-series": "2.1.0",
|
|
18
13
|
"tar-stream": "2.2.0",
|
|
14
|
+
"p-map-series": "2.1.0",
|
|
15
|
+
"async-mutex": "0.3.1",
|
|
19
16
|
"fs-extra": "10.0.0",
|
|
20
17
|
"glob": "13.0.0",
|
|
21
18
|
"uid-number": "0.0.6",
|
|
19
|
+
"@pnpm/lockfile.types": "1100.0.12",
|
|
20
|
+
"semver": "7.7.1",
|
|
21
|
+
"uuid": "8.3.2",
|
|
22
22
|
"@teambit/harmony": "0.4.12",
|
|
23
|
+
"@teambit/cli": "0.0.1360",
|
|
23
24
|
"@teambit/component-id": "1.2.4",
|
|
25
|
+
"@teambit/component.snap-distance": "0.0.144",
|
|
26
|
+
"@teambit/graph.cleargraph": "0.0.11",
|
|
27
|
+
"@teambit/harmony.modules.concurrency": "0.0.40",
|
|
28
|
+
"@teambit/legacy.logger": "0.0.54",
|
|
29
|
+
"@teambit/legacy.scope": "0.0.143",
|
|
30
|
+
"@teambit/toolbox.promise.map-pool": "0.0.19",
|
|
31
|
+
"@teambit/legacy.constants": "0.0.39",
|
|
24
32
|
"@teambit/legacy.utils": "0.0.47",
|
|
33
|
+
"@teambit/toolbox.crypto.sha1": "0.0.20",
|
|
25
34
|
"@teambit/bit-error": "0.0.404",
|
|
26
35
|
"@teambit/component-version": "1.0.4",
|
|
27
|
-
"@teambit/lane-id": "0.0.312",
|
|
28
|
-
"@teambit/legacy.cli.error": "0.0.54",
|
|
29
|
-
"@teambit/legacy.constants": "0.0.39",
|
|
30
|
-
"@teambit/legacy.logger": "0.0.54",
|
|
31
|
-
"@teambit/toolbox.crypto.sha1": "0.0.20",
|
|
32
|
-
"@teambit/harmony.modules.concurrency": "0.0.40",
|
|
33
|
-
"@teambit/legacy-bit-id": "1.1.3",
|
|
34
|
-
"@teambit/legacy-component-log": "0.0.427",
|
|
35
|
-
"@teambit/pkg.modules.semver-helper": "0.0.32",
|
|
36
|
-
"@teambit/toolbox.array.duplications-finder": "0.0.12",
|
|
37
|
-
"@teambit/toolbox.promise.map-pool": "0.0.19",
|
|
38
|
-
"@teambit/graph.cleargraph": "0.0.11",
|
|
39
|
-
"@teambit/bit.get-bit-version": "0.0.25",
|
|
40
36
|
"@teambit/harmony.modules.in-memory-cache": "0.0.43",
|
|
41
37
|
"@teambit/toolbox.fs.remove-empty-dir": "0.0.18",
|
|
42
|
-
"@teambit/
|
|
38
|
+
"@teambit/lane-id": "0.0.312",
|
|
43
39
|
"@teambit/harmony.modules.get-basic-log": "0.0.144",
|
|
44
|
-
"@teambit/component.snap-distance": "0.0.144",
|
|
45
40
|
"@teambit/config-store": "0.0.241",
|
|
46
|
-
"@teambit/legacy.
|
|
41
|
+
"@teambit/legacy.cli.error": "0.0.54",
|
|
47
42
|
"@teambit/component.sources": "0.0.195",
|
|
43
|
+
"@teambit/legacy-bit-id": "1.1.3",
|
|
44
|
+
"@teambit/legacy-component-log": "0.0.427",
|
|
48
45
|
"@teambit/legacy.consumer-component": "0.0.144",
|
|
49
46
|
"@teambit/legacy.consumer-config": "0.0.143",
|
|
50
47
|
"@teambit/legacy.extension-data": "0.0.145",
|
|
48
|
+
"@teambit/pkg.modules.semver-helper": "0.0.32",
|
|
49
|
+
"@teambit/toolbox.array.duplications-finder": "0.0.12",
|
|
50
|
+
"@teambit/bit.get-bit-version": "0.0.25",
|
|
51
51
|
"@teambit/semantics.doc-parser": "0.0.151",
|
|
52
|
-
"@teambit/graph": "1.0.
|
|
52
|
+
"@teambit/graph": "1.0.1088"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@types/semver": "7.5.8",
|
|
56
55
|
"@types/lodash": "4.14.165",
|
|
57
|
-
"@types/uuid": "8.3.4",
|
|
58
56
|
"@types/fs-extra": "9.0.7",
|
|
57
|
+
"@types/semver": "7.5.8",
|
|
58
|
+
"@types/uuid": "8.3.4",
|
|
59
59
|
"@teambit/harmony.envs.core-aspect-env": "2.0.4"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
File without changes
|