@comake/skl-js-engine
Version:
Standard Knowledge Language Javascript Engine
58 lines • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validatePermissionConfig = exports.buildDenoPermissions = void 0;
/**
* Builds Deno permissions array based on options
* @param config - Permission configuration
* @returns Array of permission strings for Deno command
*/
function buildDenoPermissions(config) {
const permissions = [];
// Add network permissions if enabled
if (config.allowNetwork) {
if (config.allowedDomains.length > 0) {
permissions.push(`--allow-net=${config.allowedDomains.join(',')}`);
}
else {
permissions.push('--allow-net');
}
}
// Add env permissions if enabled
if (config.allowEnv) {
permissions.push('--allow-env');
}
// Add read permissions if enabled
if (config.allowRead) {
permissions.push('--allow-read');
}
return permissions;
}
exports.buildDenoPermissions = buildDenoPermissions;
/**
* Basic domain validation
* @param domain - Domain to validate
* @returns True if domain format is valid
*/
function isValidDomain(domain) {
// Basic domain validation - can be enhanced as needed
const domainRegex = /^[\dA-Za-z]([\dA-Za-z-]{0,61}[\dA-Za-z])?(\.[\dA-Za-z]([\dA-Za-z-]{0,61}[\dA-Za-z])?)*$/u;
return domainRegex.test(domain) && domain.length <= 253;
}
/**
* Validates permission configuration
* @param config - Permission configuration to validate
* @throws Error if configuration is invalid
*/
function validatePermissionConfig(config) {
if (config.allowedDomains.length > 0 && !config.allowNetwork) {
throw new Error('allowedDomains specified but allowNetwork is false');
}
// Validate domain format
for (const domain of config.allowedDomains) {
if (!isValidDomain(domain)) {
throw new Error(`Invalid domain format: ${domain}`);
}
}
}
exports.validatePermissionConfig = validatePermissionConfig;
//# sourceMappingURL=PermissionBuilder.js.map