@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
98 lines (96 loc) • 3.48 kB
JavaScript
;
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