Handle references into inactive modules
This commit is contained in:
@@ -32,7 +32,7 @@ function compareOwner(sourceScope, targetOwner) {
|
||||
return "allowed";
|
||||
}
|
||||
|
||||
export function buildFindings({ files, references, i18n }={}) {
|
||||
export function buildFindings({ files, references, i18n, packageActivity }={}) {
|
||||
const fileByLocator = new Map(files.map(file => [createCanonicalLocator(file.storage, file.path), file]));
|
||||
const fileLocators = files.map(file => ({
|
||||
storage: file.storage,
|
||||
@@ -43,6 +43,7 @@ export function buildFindings({ files, references, i18n }={}) {
|
||||
const refsByLocator = new Map();
|
||||
const wildcardReferences = [];
|
||||
const findings = [];
|
||||
const inactiveModuleReferenceIds = new Set();
|
||||
|
||||
for (const reference of resolvedReferences) {
|
||||
const normalized = reference.normalized;
|
||||
@@ -84,6 +85,10 @@ export function buildFindings({ files, references, i18n }={}) {
|
||||
|
||||
const ownerRelation = compareOwner(reference.sourceScope, file.ownerHint);
|
||||
if (ownerRelation === "non-package-to-package") {
|
||||
if (isInactiveModuleTarget(file, packageActivity)) {
|
||||
inactiveModuleReferenceIds.add(file.ownerHint.ownerId);
|
||||
continue;
|
||||
}
|
||||
if (isAnchoredInOwningPackage(file, matchingReferencesForFile(file, refsByLocator, wildcardReferences))) continue;
|
||||
findings.push({
|
||||
kind: "non-package-to-package-reference",
|
||||
@@ -137,7 +142,10 @@ export function buildFindings({ files, references, i18n }={}) {
|
||||
});
|
||||
}
|
||||
|
||||
return findings;
|
||||
return {
|
||||
findings,
|
||||
notices: createNotices({ inactiveModuleReferenceIds, packageActivity, i18n })
|
||||
};
|
||||
}
|
||||
|
||||
function resolveReferenceTarget(reference, fileByLocator, fileLocators) {
|
||||
@@ -225,6 +233,27 @@ function shouldReportOrphan(file, references) {
|
||||
return false;
|
||||
}
|
||||
|
||||
function isInactiveModuleTarget(file, packageActivity) {
|
||||
if (file.ownerHint?.ownerType !== "module") return false;
|
||||
const active = packageActivity?.modules?.get?.(file.ownerHint.ownerId);
|
||||
return active === false;
|
||||
}
|
||||
|
||||
function createNotices({ inactiveModuleReferenceIds, packageActivity, i18n }) {
|
||||
const moduleIds = [...inactiveModuleReferenceIds].sort((a, b) => a.localeCompare(b));
|
||||
if (!moduleIds.length) return [];
|
||||
const moduleLabels = moduleIds.map(id => packageActivity?.moduleLabels?.get?.(id) ?? id);
|
||||
return [{
|
||||
kind: "inactive-module-references",
|
||||
severity: "info",
|
||||
moduleIds,
|
||||
moduleLabels,
|
||||
message: format(i18n, "KSA.Notice.InactiveModuleReferences", {
|
||||
modules: moduleLabels.join(", ")
|
||||
})
|
||||
}];
|
||||
}
|
||||
|
||||
function isDerivedSceneThumbnail(file) {
|
||||
const path = String(file.path ?? "");
|
||||
return /^worlds\/[^/]+\/assets\/scenes\/[^/]+-thumb\.(?:png|webp)$/u.test(path);
|
||||
|
||||
Reference in New Issue
Block a user