UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

87 lines (85 loc) 3.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const plugin_error_1 = tslib_1.__importDefault(require("plugin-error")); const through2_1 = tslib_1.__importDefault(require("through2")); const PLUGIN_NAME = 'schema-form-validate-resource-string'; function gulpSchemaFormResourceStringValidator(options) { const resourceKeyPrefix = 'resources:strings:'; let strings; function checkFile(file) { let validationResult = true; let stringsFile = process.cwd() + '/src/assets/strings/strings.json'; if (options && options.stringsFile) { stringsFile = options.stringsFile; } strings = require(stringsFile); const lines = file.contents.toString('utf8').split('\n'); for (let i = 0; i < lines.length; i++) { const line = lines[i]; const resourceStringStartIndex = line.indexOf(resourceKeyPrefix); if (resourceStringStartIndex !== -1) { const resourceString = getResourceString(line, resourceStringStartIndex); if (resourceString) { const result = checkResourceString(resourceString); if (!result) { // eslint-disable-next-line no-console console.error('ERROR: ' + file.path + '[' + (i + 1) + ', ' + resourceStringStartIndex + ']: Cannot find resource key: ' + resourceString); validationResult = false; } } } } return validationResult; } function checkResourceString(resourceString) { let currentObject = strings.Strings; const resourceStringSections = resourceString.split('.'); let valid = true; for (let i = 0; i < resourceStringSections.length; i++) { const resourceStringSection = resourceStringSections[i]; if (currentObject.hasOwnProperty(resourceStringSection)) { currentObject = currentObject[resourceStringSection]; } else { valid = false; break; } } return valid; } function getResourceString(code, resourceStringStartIndex) { let result = ''; let useSingleQuote = true; if (code[resourceStringStartIndex - 1] === '""') { useSingleQuote = false; } for (let i = resourceStringStartIndex + resourceKeyPrefix.length; i < code.length; i++) { if (((useSingleQuote && code[i] === '\'') || (!useSingleQuote && code === '"')) && code[i - 1] !== '\\') { break; } result += code[i]; } return result; } return through2_1.default.obj( /** * Transform */ function (file, encoding, callback) { if (checkFile(file)) { return callback(); } callback(new plugin_error_1.default({ plugin: PLUGIN_NAME, message: 'Schema resource string validation failed.' })); }); } module.exports = gulpSchemaFormResourceStringValidator; //# sourceMappingURL=index.js.map