UNPKG

zeysdk

Version:
322 lines (270 loc) 8.19 kB
var mod = {}; var fs = require('fs'); var help = require('./_help.js'); var path = require('path'); var val = require('agraddy.validate'); mod.appExists = function(item, name, message, type) { var passed; try { let stat = fs.lstatSync(item[0]); passed = !(stat.isFile() || stat.isDirectory()); } catch(err) { passed = true; } return val.result(passed, message, type); }; mod.appInside = function(item, name, message, type) { var passed; try { let stat = fs.lstatSync('.zeysdk.package.json'); passed = !stat.isFile() } catch(err) { passed = true; } return val.result(passed, message, type); }; mod.appInsideSubdirectory = function(item, name, message, type) { var passed; try { let stat = fs.lstatSync(path.join('..', '.zeysdk.package.json')); passed = !stat.isFile() } catch(err) { passed = true; } return val.result(passed, message, type); }; mod.assetKeyExists = function(item, name, message, type) { let passed; try { let json = require(path.join(process.cwd(), '.zeysdk.assets.json')); let file_without_extension = help.getBaseNameFromFile(item[1]); passed = !(json[item[0] + 's'] && json[item[0] + 's'][file_without_extension]); } catch(err) { passed = true; } return val.result(passed, message, type); }; mod.badAssetJSON = function(item, name, message, type) { var passed; try { require(path.join(process.cwd(), '.zeysdk.assets.json')); passed = true; } catch(err) { passed = false; } return val.result(passed, message, type); }; mod.badFileCharacters = function(item, name, message, type) { let passed = !!item && /^[\w.:-]+$/.test(item) return val.result(passed, message, type); }; mod.badProperties = function(item, name, message, type) { let passed = true; let service_types = ['timing', 'remotecall', 'after_creation', 'before_modification', 'after_modifivation', 'after_creation_modification', 'before_deletion', 'after_deletion']; let weblet_types = ['integrated', 'standalone', 'detached', 'popup_framed', 'popup_plain', 'embedded_framed', 'embedded_collapsed', 'embedded_plain']; if (item.parts[0] == 'service') { if (item.args.type !== undefined && service_types.indexOf(item.args.type) == -1) { passed = false; message = ''; message += 'The property "type" must be one of the following values:\n* '; message += service_types.join('\n* '); } if (item.args.interval !== undefined && !(item.args.interval > 0)) { passed = false; message = ''; message += 'The property "interval" must be a number > 0!'; } } else if(item.parts[0] == 'weblet') { if (item.args.type !== undefined && weblet_types.indexOf(item.args.type) == -1) { passed = false; message = ''; message += 'The property "type" must be one of the following values:\n* '; message += weblet_types.join('\n* '); } } else if (item.parts[0] === 'resource') { if (item.args.public !== undefined && item.args.public != 0 && item.args.public != 1) { passed = false; message = ''; message += 'The property "public" must be 0 or 1'; } } return val.result(passed, message, type); }; mod.destinationKeyExist = function(item, name, message, type) { var passed; var json; var file_without_extension; try { json = require(path.join(process.cwd(), '.zeysdk.assets.json')); file_without_extension = help.getBaseNameFromFile(item[2]); passed = !( json[item[0] + 's'] && json[item[0] + 's'][file_without_extension] !== undefined && item[0] === item[3] && item[1] === item[2] ) } catch(err) { // console.error(err); passed = true; } return val.result(passed, message, type); }; mod.everything = function(item, name, message, type) { var passed = false; return val.result(passed, message, type); } mod.invalidAssetClass = function(item, name, message, type) { let passed = item && help.asset_classes.indexOf(item.toLowerCase()) != -1; return val.result(passed, message, type); }; mod.invalidCreateOptions = function(items, name, message, type) { passed = !items.some(item => !['name', 'version', 'vendor'].includes(item)); return val.result(passed, message, type); }; mod.invalidMimetype = function(item, name, message, type) { let extension = help.getExtensionFromFile(item); let passed = !!help.getMimetype(extension) return val.result(passed, message, type); }; mod.invalidPackageJSON = function(item, name, message, type) { let passed; let json; try { json = require(path.join(process.cwd(), '.zeysdk.package.json')); passed = !!(json.identifier && json.name) } catch(err) { passed = false; } return val.result(passed, message, type); }; mod.invalidResourceMimetype = function(item, name, message, type) { var extension; var passed; try { extension = help.getExtensionFromFile(item); if(help.asset_resource_extensions.indexOf(extension) != -1) { passed = true; } else { passed = false; } } catch(err) { passed = false; } return val.result(passed, message, type); }; mod.invalidScriptMimetype = function(item, name, message, type) { let extension = help.getExtensionFromFile(item); let passed = help.asset_script_extensions.indexOf(extension) != -1 return val.result(passed, message, type); }; mod.invalidSyncJSON = function(item, name, message, type) { let passed; try { let json = require(path.join(process.cwd(), '.zeysdk.sync.json')); passed = !!(json.id && json.url); } catch(err) { passed = false; } return val.result(passed, message, type); }; mod.lessThan = function(input) { return function(item, name, message, type) { return val.result(item >= input, message, type); } } mod.missingAssetFile = function(item, name, message, type) { let passed; try { let stat = fs.lstatSync(item[0] + 's' + '/' + item[1]); passed = stat.isFile(); } catch(err) { passed = false; } // .zeysdk.package.json only compares properties and not the file if (item[1] == '.zeysdk.package.json') { passed = true; } return val.result(passed, message, type); }; mod.missingAssetJSON = function(item, name, message, type) { let passed; try { let stat = fs.lstatSync('.zeysdk.assets.json'); passed = stat.isFile(); } catch(err) { passed = false; } return val.result(passed, message, type); }; mod.missingAssetKey = function(item, name, message, type) { var passed; var json; var file_without_extension; try { json = require(path.join(process.cwd(), '.zeysdk.assets.json')); file_without_extension = help.getBaseNameFromFile(item[1]); passed = json[item[0] + 's'] && json[item[0] + 's'][file_without_extension] !== undefined } catch(err) { passed = false; } return val.result(passed, message, type); }; mod.missingSettingFile = mod.missingAssetFile; mod.missingSyncInstanceFile = function(item, name, message, type) { var json; var passed; var stat; var try_instance_file = false; try { stat = fs.lstatSync('.zeysdk.sync.json'); if (stat.isFile()) { json = require(path.join(process.cwd(), '.zeysdk.sync.json')); if(json.id == item[0]) { passed = true; } else { try_instance_file = true; } } else { passed = false; } if(try_instance_file) { stat = fs.lstatSync('.zeysdk.sync.' + item[0] + '.json'); if(stat.isFile()) { passed = true; } else { passed = false; } } } catch(err) { passed = false; } return val.result(passed, message, type); }; mod.missingSyncFile = function(item, name, message, type) { var passed; var stat; try { let stat = fs.lstatSync('.zeysdk.sync.json'); passed = stat.isFile(); } catch(err) { passed = false; } return val.result(passed, message, type); }; mod.nonInteger = function(item, name, message, type) { return val.result(Number.isInteger(Number(item)), message, type); }; mod.nonZeyURL = function(item, name, message, type) { let passed = typeof item !== 'string' || /^https?:\/\/cloud\.zeyos\.com\//.test(item); return val.result(passed, message, type); }; mod.syncActive = function(item, name, message, type) { var passed; try { let json = require(path.join(process.cwd(), '.zeysdk.sync.json')); passed = json.id != item[0] } catch(err) { passed = true; } return val.result(passed, message, type); }; module.exports = mod;