@coana-tech/cli 14.12.102 → 14.12.104
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/cli.mjs +441 -465
- package/package.json +1 -1
- package/reachability-analyzers-cli.mjs +14 -11
- package/repos/coana-tech/class-graph-analysis/dist/bundle/class-graph-analysis-cli.mjs +75 -44
- package/repos/coana-tech/goana/bin/goana-darwin-amd64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-darwin-arm64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-linux-amd64.gz +0 -0
- package/repos/coana-tech/goana/bin/goana-linux-arm64.gz +0 -0
- package/repos/coana-tech/javap-service/javap-service.jar +0 -0
package/package.json
CHANGED
|
@@ -111651,7 +111651,7 @@ async function getCurrentCommitHash(project) {
|
|
|
111651
111651
|
}
|
|
111652
111652
|
function detectedOccurrencesFromAPMatches(matches, pathPrefixToRemove) {
|
|
111653
111653
|
for (const match2 of Object.values(matches))
|
|
111654
|
-
for (const stack of
|
|
111654
|
+
for (const stack of match2.stacks)
|
|
111655
111655
|
for (const cl of stack) {
|
|
111656
111656
|
if (cl.package === "<app>")
|
|
111657
111657
|
cl.package = ROOT_NODE_STR;
|
|
@@ -111661,8 +111661,8 @@ function detectedOccurrencesFromAPMatches(matches, pathPrefixToRemove) {
|
|
|
111661
111661
|
return ({ vulnerabilityAccessPaths }) => getStacksFromAccPaths(matches, { vulnerabilityAccessPaths });
|
|
111662
111662
|
}
|
|
111663
111663
|
function detectedOccurrencesFromAPMatchesRuby(matches, pathPrefixToPackage) {
|
|
111664
|
-
for (const
|
|
111665
|
-
for (const stack of
|
|
111664
|
+
for (const stacks of Object.values(matches))
|
|
111665
|
+
for (const stack of stacks)
|
|
111666
111666
|
for (const cl of stack) {
|
|
111667
111667
|
if (cl.package === "<app>")
|
|
111668
111668
|
cl.package = ROOT_NODE_STR;
|
|
@@ -111739,7 +111739,11 @@ var PythonCodeAwareVulnerabilityScanner = class {
|
|
|
111739
111739
|
reachedDependencies: false,
|
|
111740
111740
|
terminatedEarly: false,
|
|
111741
111741
|
diagnostics: { timeout: false, aborted: false },
|
|
111742
|
-
computeDetectedOccurrences: (
|
|
111742
|
+
computeDetectedOccurrences: import_lodash14.default.constant({
|
|
111743
|
+
analysisLevel: "function-level",
|
|
111744
|
+
affectedPackages: [],
|
|
111745
|
+
stacks: []
|
|
111746
|
+
})
|
|
111743
111747
|
};
|
|
111744
111748
|
const packagesToExclude = heuristic.getPackagesToExcludeFromAnalysis?.(vulns);
|
|
111745
111749
|
const vulnAccPaths = sortedUniq(vulns.flatMap((v) => v.vulnerabilityAccessPaths).sort());
|
|
@@ -112667,7 +112671,7 @@ function augmentVulnsWithDetectedOccurrences(vulns, codeAwareScanner, heuristic,
|
|
|
112667
112671
|
const packagesFailedToInstall = codeAwareScanner.getPackagesExcludedUnrelatedToHeuristic();
|
|
112668
112672
|
for (const v of vulns) {
|
|
112669
112673
|
const detectedOccurrences = result.computeDetectedOccurrences(v);
|
|
112670
|
-
if (
|
|
112674
|
+
if (detectedOccurrences.stacks.length === 0) {
|
|
112671
112675
|
if (SOCKET_MODE && result.terminatedEarly && !result.reachedDependencies && Object.keys(v.vulnChainDetails.transitiveDependencies).length > 1) {
|
|
112672
112676
|
v.results = {
|
|
112673
112677
|
type: "analysisError",
|
|
@@ -112745,16 +112749,15 @@ var GoAnalyzer = class {
|
|
|
112745
112749
|
const res = otherVulns.length ? await analyzeWithHeuristics(this.state, otherVulns, [GoanaHeuristics.DEFAULT], false, new GoCodeAwareVulnerabilityScanner(this.projectDir, this.state.reachabilityAnalysisOptions), analysisMetadataCollector, statusUpdater) : [];
|
|
112746
112750
|
if (unreachableVulns.length) {
|
|
112747
112751
|
const heuristicName = GoanaHeuristics.IMPORT_REACHABILITY.name;
|
|
112748
|
-
const detectedOccurrences = {
|
|
112749
|
-
analysisLevel: "function-level",
|
|
112750
|
-
affectedPackages: [],
|
|
112751
|
-
stacks: []
|
|
112752
|
-
};
|
|
112753
112752
|
const scanResult = {
|
|
112754
112753
|
type: "success",
|
|
112755
112754
|
heuristicName,
|
|
112756
112755
|
terminatedEarly: false,
|
|
112757
|
-
detectedOccurrences
|
|
112756
|
+
detectedOccurrences: {
|
|
112757
|
+
analysisLevel: "function-level",
|
|
112758
|
+
affectedPackages: [],
|
|
112759
|
+
stacks: []
|
|
112760
|
+
}
|
|
112758
112761
|
};
|
|
112759
112762
|
analysisMetadataCollector?.({
|
|
112760
112763
|
vulnUrls: unreachableVulns.map((v) => v.url),
|
|
@@ -7353,7 +7353,9 @@ var ClassfileSourceResolver = class {
|
|
|
7353
7353
|
file,
|
|
7354
7354
|
name: className,
|
|
7355
7355
|
displayName: className,
|
|
7356
|
-
nodeType: "class"
|
|
7356
|
+
nodeType: "class",
|
|
7357
|
+
isEntryPoint: appOrDep === "app"
|
|
7358
|
+
// class nodes are entry points
|
|
7357
7359
|
};
|
|
7358
7360
|
const nodeIdx = graph.addNode(node);
|
|
7359
7361
|
if (nodeIdx !== void 0) {
|
|
@@ -7994,14 +7996,14 @@ var ClassGraphRunner = class {
|
|
|
7994
7996
|
this.options.externalResolutionManager?.resolveDefinitions(this.graph)
|
|
7995
7997
|
]);
|
|
7996
7998
|
const allNodes = this.graph.getNodes();
|
|
7997
|
-
const
|
|
7999
|
+
const entryPointIndices = allNodes.map((node, idx) => node.appOrDep === "app" && node.isEntryPoint ? idx : void 0).filter((idx) => idx !== void 0);
|
|
7998
8000
|
const visited = /* @__PURE__ */ new Set();
|
|
7999
8001
|
await Promise.all([
|
|
8000
|
-
this.options.internalResolutionManager?.resolveEdges(this.graph,
|
|
8001
|
-
this.options.externalResolutionManager?.resolveEdges(this.graph,
|
|
8002
|
+
this.options.internalResolutionManager?.resolveEdges(this.graph, entryPointIndices, entryPointIndices.filter((idx) => !this.options.isExternalNode?.(allNodes[idx])), visited, "DIRECT_DEPENDENCIES"),
|
|
8003
|
+
this.options.externalResolutionManager?.resolveEdges(this.graph, entryPointIndices, entryPointIndices.filter((idx) => this.options.isExternalNode?.(allNodes[idx])), visited, "DIRECT_DEPENDENCIES")
|
|
8002
8004
|
]);
|
|
8003
8005
|
const reachablePackageIds = /* @__PURE__ */ new Set();
|
|
8004
|
-
for (const idx of findReachableNodes(this.graph,
|
|
8006
|
+
for (const idx of findReachableNodes(this.graph, entryPointIndices)) {
|
|
8005
8007
|
reachablePackageIds.add(allNodes[idx].packageId);
|
|
8006
8008
|
}
|
|
8007
8009
|
return Array.from(reachablePackageIds);
|
|
@@ -8046,18 +8048,18 @@ var ClassGraphRunner = class {
|
|
|
8046
8048
|
this.options.externalResolutionManager?.resolveDefinitions(this.graph)
|
|
8047
8049
|
]);
|
|
8048
8050
|
const allNodes = this.graph.getNodes();
|
|
8049
|
-
const
|
|
8051
|
+
const entryPointIndices = allNodes.map((node, idx) => node.appOrDep === "app" && node.isEntryPoint ? idx : void 0).filter((idx) => idx !== void 0);
|
|
8050
8052
|
const visited = /* @__PURE__ */ new Set();
|
|
8051
|
-
const internalWorklist =
|
|
8052
|
-
const externalWorklist = this.options.externalResolutionManager ?
|
|
8053
|
+
const internalWorklist = entryPointIndices.filter((idx) => !this.options.isExternalNode?.(allNodes[idx]));
|
|
8054
|
+
const externalWorklist = this.options.externalResolutionManager ? entryPointIndices.filter((idx) => this.options.isExternalNode?.(allNodes[idx])) : [];
|
|
8053
8055
|
while (internalWorklist.length !== 0 || externalWorklist.length !== 0) {
|
|
8054
8056
|
await Promise.all([
|
|
8055
|
-
this.options.internalResolutionManager?.resolveEdges(this.graph,
|
|
8056
|
-
this.options.externalResolutionManager?.resolveEdges(this.graph,
|
|
8057
|
+
this.options.internalResolutionManager?.resolveEdges(this.graph, entryPointIndices, internalWorklist, visited, "FULL_GRAPH"),
|
|
8058
|
+
this.options.externalResolutionManager?.resolveEdges(this.graph, entryPointIndices, externalWorklist, visited, "FULL_GRAPH")
|
|
8057
8059
|
]);
|
|
8058
8060
|
internalWorklist.length = 0;
|
|
8059
8061
|
externalWorklist.length = 0;
|
|
8060
|
-
const allReachableNodes = findReachableNodes(this.graph,
|
|
8062
|
+
const allReachableNodes = findReachableNodes(this.graph, entryPointIndices);
|
|
8061
8063
|
for (const reachableIdx of allReachableNodes) {
|
|
8062
8064
|
if (!visited.has(reachableIdx)) {
|
|
8063
8065
|
const node = allNodes[reachableIdx];
|
|
@@ -8080,9 +8082,9 @@ var ClassGraphRunner = class {
|
|
|
8080
8082
|
}
|
|
8081
8083
|
vulnerableClassToIndices.get(node.displayName).push(idx);
|
|
8082
8084
|
});
|
|
8083
|
-
const vulnerablePaths = this.computeVulnerablePaths(this.graph,
|
|
8085
|
+
const vulnerablePaths = this.computeVulnerablePaths(this.graph, entryPointIndices, allNodes, vulnerableClassToIndices);
|
|
8084
8086
|
const reachablePackageIds = /* @__PURE__ */ new Set();
|
|
8085
|
-
for (const idx of findReachableNodes(this.graph,
|
|
8087
|
+
for (const idx of findReachableNodes(this.graph, entryPointIndices)) {
|
|
8086
8088
|
reachablePackageIds.add(allNodes[idx].packageId);
|
|
8087
8089
|
}
|
|
8088
8090
|
const analysisDiagnostics = {
|
|
@@ -8356,7 +8358,9 @@ var JavaSourceResolver = class {
|
|
|
8356
8358
|
file,
|
|
8357
8359
|
name: fullyQualifiedName,
|
|
8358
8360
|
displayName: fullyQualifiedName,
|
|
8359
|
-
nodeType: "class"
|
|
8361
|
+
nodeType: "class",
|
|
8362
|
+
isEntryPoint: appOrDep === "app"
|
|
8363
|
+
// class nodes are entry points
|
|
8360
8364
|
};
|
|
8361
8365
|
const nodeIndex = graph.addNode(node);
|
|
8362
8366
|
if (nodeIndex !== void 0) {
|
|
@@ -8937,7 +8941,9 @@ var KotlinSourceResolver = class {
|
|
|
8937
8941
|
file,
|
|
8938
8942
|
name: fullyQualifiedName,
|
|
8939
8943
|
displayName: fullyQualifiedName,
|
|
8940
|
-
nodeType: "class"
|
|
8944
|
+
nodeType: "class",
|
|
8945
|
+
isEntryPoint: appOrDep === "app"
|
|
8946
|
+
// class nodes are entry points
|
|
8941
8947
|
};
|
|
8942
8948
|
const nodeIndex = graph.addNode(node);
|
|
8943
8949
|
if (nodeIndex !== void 0) {
|
|
@@ -9339,7 +9345,9 @@ var PropertiesSourceResolver = class {
|
|
|
9339
9345
|
file,
|
|
9340
9346
|
name: key,
|
|
9341
9347
|
displayName: `${key} (property)`,
|
|
9342
|
-
nodeType: "property"
|
|
9348
|
+
nodeType: "property",
|
|
9349
|
+
isEntryPoint: false
|
|
9350
|
+
// property nodes are not entry points
|
|
9343
9351
|
};
|
|
9344
9352
|
const idx = graph.addNode(node);
|
|
9345
9353
|
if (idx !== void 0) {
|
|
@@ -9424,7 +9432,9 @@ var ScalaSourceResolver = class {
|
|
|
9424
9432
|
file,
|
|
9425
9433
|
name: fullyQualifiedName,
|
|
9426
9434
|
displayName: fullyQualifiedName,
|
|
9427
|
-
nodeType: "class"
|
|
9435
|
+
nodeType: "class",
|
|
9436
|
+
isEntryPoint: appOrDep === "app"
|
|
9437
|
+
// class nodes are entry points
|
|
9428
9438
|
};
|
|
9429
9439
|
const nodeIndex = graph.addNode(node);
|
|
9430
9440
|
if (nodeIndex !== void 0) {
|
|
@@ -10063,7 +10073,9 @@ var ServiceSourceResolver = class {
|
|
|
10063
10073
|
file,
|
|
10064
10074
|
name: serviceInterface,
|
|
10065
10075
|
displayName: `${serviceInterface} (service)`,
|
|
10066
|
-
nodeType: "service"
|
|
10076
|
+
nodeType: "service",
|
|
10077
|
+
isEntryPoint: appOrDep === "app"
|
|
10078
|
+
// service nodes are entry points
|
|
10067
10079
|
};
|
|
10068
10080
|
graph.addNode(node);
|
|
10069
10081
|
}
|
|
@@ -10113,7 +10125,9 @@ var SpringFactoriesSourceResolver = class {
|
|
|
10113
10125
|
file,
|
|
10114
10126
|
name: interfaceName,
|
|
10115
10127
|
displayName: `${interfaceName} (spring-factory)`,
|
|
10116
|
-
nodeType: "spring-factory"
|
|
10128
|
+
nodeType: "spring-factory",
|
|
10129
|
+
isEntryPoint: appOrDep === "app"
|
|
10130
|
+
// spring-factory nodes are entry points
|
|
10117
10131
|
};
|
|
10118
10132
|
graph.addNode(node);
|
|
10119
10133
|
}
|
|
@@ -10217,7 +10231,9 @@ var PropertiesXmlSourceResolver = class {
|
|
|
10217
10231
|
file,
|
|
10218
10232
|
name: key,
|
|
10219
10233
|
displayName: `${key} (property)`,
|
|
10220
|
-
nodeType: "property"
|
|
10234
|
+
nodeType: "property",
|
|
10235
|
+
isEntryPoint: false
|
|
10236
|
+
// property nodes are not entry points
|
|
10221
10237
|
};
|
|
10222
10238
|
nodes.push(node);
|
|
10223
10239
|
}
|
|
@@ -10277,7 +10293,9 @@ var SpringBeansXmlSourceResolver = class {
|
|
|
10277
10293
|
name: beanId,
|
|
10278
10294
|
// Can be referenced via ApplicationContext.getBean("beanId")
|
|
10279
10295
|
displayName: `${beanId} (bean)`,
|
|
10280
|
-
nodeType: "bean"
|
|
10296
|
+
nodeType: "bean",
|
|
10297
|
+
isEntryPoint: appOrDep === "app"
|
|
10298
|
+
// bean nodes are entry points
|
|
10281
10299
|
};
|
|
10282
10300
|
nodes.push(node);
|
|
10283
10301
|
}
|
|
@@ -10300,7 +10318,9 @@ var SpringBeansXmlSourceResolver = class {
|
|
|
10300
10318
|
file,
|
|
10301
10319
|
name: nestedBeanId,
|
|
10302
10320
|
displayName: `${nestedBeanId} (bean)`,
|
|
10303
|
-
nodeType: "bean"
|
|
10321
|
+
nodeType: "bean",
|
|
10322
|
+
isEntryPoint: appOrDep === "app"
|
|
10323
|
+
// bean nodes are entry points
|
|
10304
10324
|
};
|
|
10305
10325
|
nodes.push(node);
|
|
10306
10326
|
}
|
|
@@ -10458,7 +10478,9 @@ var StrutsXmlSourceResolver = class {
|
|
|
10458
10478
|
name: actionId,
|
|
10459
10479
|
// Can be referenced via Struts action mapping
|
|
10460
10480
|
displayName: `${actionId} (struts)`,
|
|
10461
|
-
nodeType: "struts-action"
|
|
10481
|
+
nodeType: "struts-action",
|
|
10482
|
+
isEntryPoint: false
|
|
10483
|
+
// struts-action nodes are not entry points
|
|
10462
10484
|
};
|
|
10463
10485
|
nodes.push(node);
|
|
10464
10486
|
}
|
|
@@ -10522,7 +10544,9 @@ var StrutsConfigXmlSourceResolver = class {
|
|
|
10522
10544
|
name: formBeanName,
|
|
10523
10545
|
// Can be referenced in action mappings
|
|
10524
10546
|
displayName: `${formBeanName} (struts)`,
|
|
10525
|
-
nodeType: "struts-form-bean"
|
|
10547
|
+
nodeType: "struts-form-bean",
|
|
10548
|
+
isEntryPoint: false
|
|
10549
|
+
// struts-form-bean nodes are not entry points
|
|
10526
10550
|
};
|
|
10527
10551
|
nodes.push(node);
|
|
10528
10552
|
}
|
|
@@ -10544,7 +10568,9 @@ var StrutsConfigXmlSourceResolver = class {
|
|
|
10544
10568
|
name: actionPath,
|
|
10545
10569
|
// Can be referenced via URL paths
|
|
10546
10570
|
displayName: `${actionPath} (struts)`,
|
|
10547
|
-
nodeType: "struts-action-path"
|
|
10571
|
+
nodeType: "struts-action-path",
|
|
10572
|
+
isEntryPoint: false
|
|
10573
|
+
// struts-action-path nodes are not entry points
|
|
10548
10574
|
};
|
|
10549
10575
|
nodes.push(node);
|
|
10550
10576
|
}
|
|
@@ -10642,7 +10668,9 @@ var WebXmlSourceResolver = class {
|
|
|
10642
10668
|
name: fragmentName,
|
|
10643
10669
|
// For web-fragment: fragment name (can be referenced in absolute-ordering); for web-app: undefined
|
|
10644
10670
|
displayName: fragmentName ? `${fragmentName} (${nodeType})` : nodeType,
|
|
10645
|
-
nodeType
|
|
10671
|
+
nodeType,
|
|
10672
|
+
isEntryPoint: appOrDep === "app"
|
|
10673
|
+
// web-app and web-fragment nodes are entry points
|
|
10646
10674
|
};
|
|
10647
10675
|
nodes.push(fileLevelNode);
|
|
10648
10676
|
this.processServletNames(rootElement, packageId, appOrDep, dir, file, nodes);
|
|
@@ -10666,7 +10694,9 @@ var WebXmlSourceResolver = class {
|
|
|
10666
10694
|
name: servletName,
|
|
10667
10695
|
// Can be referenced reflectively in servlet mappings
|
|
10668
10696
|
displayName: `${servletName} (web.xml servlet)`,
|
|
10669
|
-
nodeType: "servlet"
|
|
10697
|
+
nodeType: "servlet",
|
|
10698
|
+
isEntryPoint: false
|
|
10699
|
+
// servlet nodes are not entry points
|
|
10670
10700
|
};
|
|
10671
10701
|
nodes.push(node);
|
|
10672
10702
|
}
|
|
@@ -10688,7 +10718,9 @@ var WebXmlSourceResolver = class {
|
|
|
10688
10718
|
name: filterName,
|
|
10689
10719
|
// Can be referenced reflectively in filter mappings
|
|
10690
10720
|
displayName: filterName,
|
|
10691
|
-
nodeType: "filter"
|
|
10721
|
+
nodeType: "filter",
|
|
10722
|
+
isEntryPoint: false
|
|
10723
|
+
// filter nodes are not entry points
|
|
10692
10724
|
};
|
|
10693
10725
|
nodes.push(node);
|
|
10694
10726
|
}
|
|
@@ -10710,7 +10742,9 @@ var WebXmlSourceResolver = class {
|
|
|
10710
10742
|
name: urlPattern,
|
|
10711
10743
|
// URL patterns can be referenced in mappings
|
|
10712
10744
|
displayName: `${urlPattern} (web.xml url-pattern)`,
|
|
10713
|
-
nodeType: "url-pattern"
|
|
10745
|
+
nodeType: "url-pattern",
|
|
10746
|
+
isEntryPoint: false
|
|
10747
|
+
// url-pattern nodes are not entry points
|
|
10714
10748
|
};
|
|
10715
10749
|
nodes.push(node);
|
|
10716
10750
|
}
|
|
@@ -10730,7 +10764,9 @@ var WebXmlSourceResolver = class {
|
|
|
10730
10764
|
name: urlPattern,
|
|
10731
10765
|
// URL patterns can be referenced in mappings
|
|
10732
10766
|
displayName: `${urlPattern} (web.xml url-pattern)`,
|
|
10733
|
-
nodeType: "url-pattern"
|
|
10767
|
+
nodeType: "url-pattern",
|
|
10768
|
+
isEntryPoint: false
|
|
10769
|
+
// url-pattern nodes are not entry points
|
|
10734
10770
|
};
|
|
10735
10771
|
nodes.push(node);
|
|
10736
10772
|
}
|
|
@@ -10962,7 +10998,9 @@ var PersistenceXmlSourceResolver = class {
|
|
|
10962
10998
|
name: unitName,
|
|
10963
10999
|
// Can be referenced via Persistence.createEntityManagerFactory("name")
|
|
10964
11000
|
displayName: `${unitName} (persistence)`,
|
|
10965
|
-
nodeType: "persistence-unit"
|
|
11001
|
+
nodeType: "persistence-unit",
|
|
11002
|
+
isEntryPoint: false
|
|
11003
|
+
// persistence-unit nodes are not entry points
|
|
10966
11004
|
};
|
|
10967
11005
|
nodes.push(node);
|
|
10968
11006
|
}
|
|
@@ -11382,14 +11420,6 @@ var JvmResolutionContextProvider = class {
|
|
|
11382
11420
|
springFactoryMap.set(factoryInterfaceName, []);
|
|
11383
11421
|
}
|
|
11384
11422
|
springFactoryMap.get(factoryInterfaceName).push(idx);
|
|
11385
|
-
if (!sourceClassMap.has(factoryInterfaceName)) {
|
|
11386
|
-
sourceClassMap.set(factoryInterfaceName, []);
|
|
11387
|
-
}
|
|
11388
|
-
sourceClassMap.get(factoryInterfaceName).push(idx);
|
|
11389
|
-
if (!bytecodeClassMap.has(factoryInterfaceName)) {
|
|
11390
|
-
bytecodeClassMap.set(factoryInterfaceName, []);
|
|
11391
|
-
}
|
|
11392
|
-
bytecodeClassMap.get(factoryInterfaceName).push(idx);
|
|
11393
11423
|
}
|
|
11394
11424
|
break;
|
|
11395
11425
|
}
|
|
@@ -18170,9 +18200,6 @@ async function createJvmResolverCallbacks(resources) {
|
|
|
18170
18200
|
if (isServiceFile(file)) {
|
|
18171
18201
|
return serviceSourceResolver;
|
|
18172
18202
|
}
|
|
18173
|
-
if (isSpringFactoriesFile(file)) {
|
|
18174
|
-
return springFactoriesSourceResolver;
|
|
18175
|
-
}
|
|
18176
18203
|
};
|
|
18177
18204
|
return { sourceCallback, bytecodeCallback };
|
|
18178
18205
|
}
|
|
@@ -27367,7 +27394,9 @@ var CSharpSourceResolver = class {
|
|
|
27367
27394
|
dir,
|
|
27368
27395
|
file,
|
|
27369
27396
|
name: fullyQualifiedName,
|
|
27370
|
-
displayName: fullyQualifiedName
|
|
27397
|
+
displayName: fullyQualifiedName,
|
|
27398
|
+
isEntryPoint: appOrDep === "app"
|
|
27399
|
+
// All app-level classes are entry points
|
|
27371
27400
|
};
|
|
27372
27401
|
const nodeIndex = graph.addNode(node);
|
|
27373
27402
|
if (nodeIndex !== void 0) {
|
|
@@ -28393,7 +28422,9 @@ var RustSourceResolver = class {
|
|
|
28393
28422
|
displayName: fullyQualifiedName,
|
|
28394
28423
|
crate: additionalProps.crate,
|
|
28395
28424
|
fileModule: additionalProps.fileModule,
|
|
28396
|
-
aliasFor: additionalProps.aliasFor
|
|
28425
|
+
aliasFor: additionalProps.aliasFor,
|
|
28426
|
+
isEntryPoint: appOrDep === "app"
|
|
28427
|
+
// All app-level items are entry points
|
|
28397
28428
|
};
|
|
28398
28429
|
const idx = graph.addNode(node);
|
|
28399
28430
|
if (idx !== void 0) {
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|