@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
110 lines (109 loc) • 5.45 kB
JavaScript
;
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.SharingInfoGeneratorTest = void 0;
const ProjectInfoItem_1 = __importDefault(require("./ProjectInfoItem"));
const IProjectItemData_1 = require("../app/IProjectItemData");
const IInfoItemData_1 = require("./IInfoItemData");
const IProjectItemData_2 = require("../app/IProjectItemData");
const ProjectItemUtilities_1 = __importDefault(require("../app/ProjectItemUtilities"));
const BehaviorManifestDefinition_1 = __importDefault(require("../minecraft/BehaviorManifestDefinition"));
var SharingInfoGeneratorTest;
(function (SharingInfoGeneratorTest) {
SharingInfoGeneratorTest[SharingInfoGeneratorTest["requiresCustomCapabilities"] = 100] = "requiresCustomCapabilities";
SharingInfoGeneratorTest[SharingInfoGeneratorTest["hasStrongLanguageContent"] = 101] = "hasStrongLanguageContent";
})(SharingInfoGeneratorTest || (exports.SharingInfoGeneratorTest = SharingInfoGeneratorTest = {}));
const TopicTestIdBase = 500;
const UnsupportedForSharingTypes = [
IProjectItemData_1.ProjectItemType.jigsawProcessorList,
IProjectItemData_1.ProjectItemType.jigsawStructure,
IProjectItemData_1.ProjectItemType.jigsawStructureSet,
IProjectItemData_1.ProjectItemType.jigsawTemplatePool,
IProjectItemData_1.ProjectItemType.aimAssistPresetJson,
IProjectItemData_1.ProjectItemType.aimAssistCategoryJson,
IProjectItemData_1.ProjectItemType.behaviorTreeJson,
IProjectItemData_1.ProjectItemType.spawnGroupJson,
];
const UnsupportedForSharingTypesSet = new Set(UnsupportedForSharingTypes);
/**
* Validates content for sharing best practices and platform compatibility.
*
* @see {@link ../../public/data/forms/mctoolsval/sharing.form.json} for topic definitions
*/
class SharingInfoGenerator {
id = "SHARING";
title = "Sharing Best Practices";
canAlwaysProcess = true;
getTopicData(topicId) {
if (topicId >= TopicTestIdBase) {
return {
title: ProjectItemUtilities_1.default.getDescriptionForType(topicId - TopicTestIdBase),
};
}
return {
title: topicId.toString(),
};
}
summarize(info, infoSet) { }
async generate(project, contentIndex) {
const items = [];
const itemsByType = {};
const lineSizeCounts = [];
for (let i = 0; i < IProjectItemData_2.MaxItemTypes; i++) {
lineSizeCounts[i] = 0;
}
const itemsCopy = project.getItemsCopy();
for (let i = 0; i < itemsCopy.length; i++) {
const pi = itemsCopy[i];
let projInfoItem = undefined;
if (pi.storageType === IProjectItemData_1.ProjectItemStorageType.singleFile) {
if (!pi.isContentLoaded) {
await pi.loadContent();
}
if (pi.primaryFile) {
/*
let strongLanguageContent = await BasicValidators.hasStrongLanguageContent(pi.availableFile);
if (strongLanguageContent) {
projInfoItem = new ProjectInfoItem(
InfoItemType.error,
this.id,
SharingInfoGeneratorTest.hasStrongLanguageContent,
`Contains strong language content: ` + strongLanguageContent,
pi
);
itemsByType[pi.itemType] = projInfoItem;
items.push(projInfoItem);
}*/
}
}
if (UnsupportedForSharingTypesSet.has(pi.itemType)) {
projInfoItem = new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.error, this.id, TopicTestIdBase + pi.itemType, ProjectItemUtilities_1.default.getDescriptionForType(pi.itemType) +
" is not supported for sharing - probably because this item is still an experimental feature.", pi);
itemsByType[pi.itemType] = projInfoItem;
items.push(projInfoItem);
}
else if (pi.itemType === IProjectItemData_1.ProjectItemType.behaviorPackManifestJson) {
if (!pi.isContentLoaded) {
await pi.loadContent();
}
if (pi.primaryFile) {
const bpManifest = await BehaviorManifestDefinition_1.default.ensureOnFile(pi.primaryFile);
if (bpManifest) {
await bpManifest.load();
if (bpManifest && bpManifest.definition && bpManifest.definition.capabilities) {
projInfoItem = new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.error, this.id, SharingInfoGeneratorTest.requiresCustomCapabilities, `Declares a custom capabilities requirement, which is not recommended for sharing.`, pi, JSON.stringify(bpManifest.definition.capabilities, null, 2));
itemsByType[pi.itemType] = projInfoItem;
items.push(projInfoItem);
}
}
}
}
}
return items;
}
}
exports.default = SharingInfoGenerator;