UNPKG

@comake/skl-js-engine

Version:

Standard Knowledge Language Javascript Engine

58 lines 2.01 kB
"use strict"; 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