UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

104 lines (103 loc) 6.22 kB
"use strict"; // 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.SoundsDefinitionInfoGeneratorTest = void 0; const ProjectInfoItem_1 = __importDefault(require("../ProjectInfoItem")); const IInfoItemData_1 = require("../IInfoItemData"); const ProjectInfoUtilities_1 = __importDefault(require("../ProjectInfoUtilities")); const IProjectItemData_1 = require("../../app/IProjectItemData"); const ISoundDefinitionCatalog_1 = require("../../minecraft/ISoundDefinitionCatalog"); const zod_1 = require("zod"); const StorageUtilities_1 = __importDefault(require("../../storage/StorageUtilities")); var SoundsDefinitionInfoGeneratorTest; (function (SoundsDefinitionInfoGeneratorTest) { SoundsDefinitionInfoGeneratorTest[SoundsDefinitionInfoGeneratorTest["multipleSoundsDefinitionManifests"] = 101] = "multipleSoundsDefinitionManifests"; SoundsDefinitionInfoGeneratorTest[SoundsDefinitionInfoGeneratorTest["invalidSoundsDefinitionManifest"] = 102] = "invalidSoundsDefinitionManifest"; SoundsDefinitionInfoGeneratorTest[SoundsDefinitionInfoGeneratorTest["soundsDefinitionManifestInvalidJson"] = 103] = "soundsDefinitionManifestInvalidJson"; SoundsDefinitionInfoGeneratorTest[SoundsDefinitionInfoGeneratorTest["foundALooseSoundDefinition"] = 104] = "foundALooseSoundDefinition"; })(SoundsDefinitionInfoGeneratorTest || (exports.SoundsDefinitionInfoGeneratorTest = SoundsDefinitionInfoGeneratorTest = {})); /*********** * Generator for validating Sounds Definition Manifest Files * * Will ensure: * * only one Sounds Definition Manifest exists * * Sounds Definition Manifest is valid JSON * * Sounds Definition Manifest is formatted correctly * * @see {@link ../../../public/data/forms/mctoolsval/sndsdef.form.json} for topic definitions */ class SoundsDefinitionInfoGenerator { id = "SNDSDEF"; title = "Sound Definitions"; summarize(info, infoSet) { info.multipleSoundsManifests = infoSet.getSummedDataValue(this.id, SoundsDefinitionInfoGeneratorTest.multipleSoundsDefinitionManifests); info.soundsDefinitionManifestFormatIsValid = infoSet.getSummedDataValue(this.id, SoundsDefinitionInfoGeneratorTest.invalidSoundsDefinitionManifest); info.soundsDefinitionManifestIsNotValidJson = infoSet.getSummedDataValue(this.id, SoundsDefinitionInfoGeneratorTest.soundsDefinitionManifestInvalidJson); } async generate(project) { const items = []; const projItems = project.getItemsCopy(); const packsWithSoundManifests = {}; for (const item of projItems) { if (item.itemType !== IProjectItemData_1.ProjectItemType.soundDefinitionCatalog && item.itemType) { continue; } const pack = await item.getPack(); if (!pack || !pack.projectItem.projectPath) { items.push(new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.error, this.id, SoundsDefinitionInfoGeneratorTest.foundALooseSoundDefinition, ProjectInfoUtilities_1.default.getTitleFromEnum(SoundsDefinitionInfoGeneratorTest, SoundsDefinitionInfoGeneratorTest.foundALooseSoundDefinition), item)); continue; } if (packsWithSoundManifests[pack.projectItem.projectPath]) { items.push(new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.error, this.id, SoundsDefinitionInfoGeneratorTest.multipleSoundsDefinitionManifests, ProjectInfoUtilities_1.default.getTitleFromEnum(SoundsDefinitionInfoGeneratorTest, SoundsDefinitionInfoGeneratorTest.multipleSoundsDefinitionManifests), item)); continue; } else { packsWithSoundManifests[pack.projectItem.projectPath] = true; } if (!item.isContentLoaded) { await item.loadContent(); } if (!item.primaryFile) { continue; } if (!item.primaryFile.isContentLoaded) { await item.primaryFile.loadContent(); } const content = item.primaryFile.content; if (!content || typeof content !== "string") { continue; } const parsedContent = StorageUtilities_1.default.getJsonObject(item.primaryFile); if (!parsedContent) { items.push(new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.error, this.id, SoundsDefinitionInfoGeneratorTest.soundsDefinitionManifestInvalidJson, ProjectInfoUtilities_1.default.getTitleFromEnum(SoundsDefinitionInfoGeneratorTest, SoundsDefinitionInfoGeneratorTest.soundsDefinitionManifestInvalidJson), item)); continue; } items.push(...this.getIsManifestValidResult(parsedContent)); } return items; } // Uses a union to check for both possible versions of a Sound Manifest (per comment in ISoundDefinitionCatalog) getIsManifestValidResult(fileContent) { const results = []; const parseResult = ISoundDefinitionCatalog_1.SoundDefinitionCatalogSchema.safeParse(fileContent); if (!parseResult.success) { const parsedErrors = []; for (const issue of parseResult.error.issues) { if (issue.code === zod_1.ZodIssueCode.invalid_union) { for (const e of issue.unionErrors) { for (const i of e.issues) { parsedErrors.push(`${i.message} at ${i.path.join("/")}`); } } } } results.push(new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.error, this.id, SoundsDefinitionInfoGeneratorTest.invalidSoundsDefinitionManifest, `${ProjectInfoUtilities_1.default.getTitleFromEnum(SoundsDefinitionInfoGeneratorTest, SoundsDefinitionInfoGeneratorTest.invalidSoundsDefinitionManifest)}: ${parsedErrors.join(", ")}`)); } return results; } } exports.default = SoundsDefinitionInfoGenerator;