UNPKG

iop

Version:
44 lines 1.63 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateAppSslipDomain = generateAppSslipDomain; exports.shouldUseSslip = shouldUseSslip; const crypto_1 = __importDefault(require("crypto")); /** * Validates if a string is a valid IPv4 address */ function isValidIPv4(ip) { const ipRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; return ipRegex.test(ip); } /** * Sanitizes a hostname or IP address for DNS usage */ function sanitizeHostForDns(host) { return host.replace(/\./g, '-').replace(/[^a-zA-Z0-9-]/g, ''); } /** * Generates a deterministic hash for app.iop.run domain */ function generateDeterministicHash(projectName, appName, serverHost) { const input = `${projectName}:${appName}:${serverHost}`; return crypto_1.default.createHash('sha256').update(input).digest('hex').substring(0, 8); } /** * Generates a deterministic app.iop.run domain for an app */ function generateAppSslipDomain(projectName, appName, serverHost) { const hash = generateDeterministicHash(projectName, appName, serverHost); const sanitizedHost = sanitizeHostForDns(serverHost); return `${hash}-${appName}-iop-${sanitizedHost}.app.iop.run`; } /** * Checks if app.iop.run should be used for domain generation */ function shouldUseSslip(hosts) { // Use app.iop.run if no custom hosts are specified return !hosts || hosts.length === 0; } //# sourceMappingURL=sslip.js.map