UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

98 lines (96 loc) 3.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BasicValidators = void 0; const StorageUtilities_1 = require("./StorageUtilities"); const obscenity_1 = require("obscenity"); class BasicValidators { static async isFolderSharingValid(folder, isChildFolder) { if (!this.isFolderNameOKForSharing(folder.name)) { return folder.name + " is an unsupported folder name."; } await folder.load(); if (!isChildFolder && folder.fileCount > 0) { return "Folder that contains files at the root."; } for (const childFileName in folder.files) { const childFile = folder.files[childFileName]; if (childFile) { const result = this.isFileNameOKForSharing(childFile.name); if (!result) { return childFile.name + " is an unsupported file name."; } const res = await this.isFileContentOKForSharing(childFile); if (res) { return childFile.name + " has unsupported content."; } } } for (const childFolderName in folder.folders) { const childFolder = folder.folders[childFolderName]; if (childFolder) { const result = await this.isFolderSharingValid(childFolder, true); if (result) { return result; } } } return undefined; } static isFileNameOKForSharing(fileName) { fileName = fileName.toLowerCase(); const ext = StorageUtilities_1.default.getTypeFromName(fileName); if (ext !== "ts" && ext !== "js" && ext !== "json") { return false; } if (fileName.startsWith(".") || fileName.startsWith("just.config") || fileName.endsWith(".config.ts") || fileName.endsWith(".config.js") || (fileName.startsWith("manifest") && fileName.endsWith("json")) || (fileName.startsWith("package") && fileName.endsWith("json"))) { return false; } return true; } static isFolderNameOKForSharing(folderName) { if (folderName.startsWith(".") || folderName === "lib" || folderName === "node_modules" || folderName === ".git" || folderName === "dist" || folderName === "build") { return false; } return true; } static async isFileContentOKForSharing(file) { await file.loadContent(); if (file.isBinary) { return false; } const str = file.content; if (!str) { return false; } if (typeof str !== "string") { return false; } if (str.length < 1) { return false; } const content = str.toLowerCase(); if (this.contentMatcher === undefined) { this.contentMatcher = new obscenity_1.RegExpMatcher({ ...obscenity_1.englishDataset.build(), ...obscenity_1.englishRecommendedTransformers, }); } if (this.contentMatcher.hasMatch(content)) { return true; } return false; } } exports.BasicValidators = BasicValidators; BasicValidators.contentMatcher = undefined; //# sourceMappingURL=../maps/storage/BasicValidators.js.map