{"version":3,"names":["BrokenLinkAnalysis","ModuleDependencyAnalysis","__SystemJSRewritingHack","FETCH_TIMEOUT","_export","setters","_srcClientPathsJs","Paths","default","execute","_recorder_","_src_client_analysis_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","extractLinks","file","content","url","includes","match","links","Array","statusCache","Map","extractedLinks","extractedLink","normalizedLink","normalizePath","status","validateLink","link","location","push","console","log","response","fetch","method","mode","redirect","referrer","type","ok","e","options","timeout","Promise","race","_","reject","setTimeout","Error","resolveModuleDependencies","fileUrl","dependencies","resolvedDependencies","dependency","resolvedDependency","System","resolve"],"sources":["analysis.js"],"sourcesContent":["import Paths from \"src/client/paths.js\"\n\nconst FETCH_TIMEOUT = 5000\n\nexport class BrokenLinkAnalysis {\n\n  static async extractLinks(file) {\n    if (!file || !file.content || file.url.includes(\"/src/external/\") || file.url.match(/\\.js$/)) {\n      return [];\n    }\n  \n    var links = new Array()\n    var statusCache = new Map()\n    var extractedLinks =  new Array()\n    \n    if (file.url.match(/\\.md$/)) {\n      // #BUG prevents loading in #FireFox due to invalid regexp group\n      // FF RegExp version does not support lookbehinds. https://stackoverflow.com/questions/49816707/firefox-invalid-regex-group\n      // #TODO Refactor\n\n      // let patternMdFiles = /(?<=(\\]:\\s*)|(\\]\\s*\\())((http(s)?:\\/\\/(w{3}[.])?([a-z0-9.-]{1,63}(([:]{1}[0-9]{4,})|([.]{1}){1,}([a-z]{2,})){1,})([a-zA-Z0-9\\/\\.\\-\\_#.?=%;]*))|((([./]+|[a-zA-Z\\-_]))([a-zA-Z0-9\\-_]+\\.|[a-zA-Z0-9\\-_]+\\/)+([a-zA-Z0-9\\-_#.?=%;]+)?))/gm\n      //      // /(?<=<|\\[.*\\]:\\s*|\\[.*\\]\\)|src\\s*=\\s*('|\")|href\\s*=\\s*('|\"))((((http(s)?:\\/\\/)(w{3}[.])?)([a-z0-9-]{1,63}(([:]{1}[0-9]{4,})|([.]{1}){1,}([a-z]{2,})){1,}))|([./]+|[a-zA-Z_-]))([a-zA-Z0-9\\-_]+\\.|[a-zA-Z0-9\\-_]+\\/)+((\\.)?[a-zA-Z0-9\\-_#.?=%;]+(\\/)?)/gm\n      // extractedLinks = file.content.match(patternMdFiles)\n      \n      \n    } else if (file.url.match(/\\.(css|(x)?html)$/)) {\n      \n      // #TODO Refactor\n      \n      // let patternHtmlCssFiles = /(?<=(src\\s*=\\s*|href\\s*=\\s*|[a-zA-Z0-9\\-_]+\\s*\\{\\s*.*\\s*:\\s*)('|\"))((((http(s)?:\\/\\/)(w{3}[.])?)([a-z0-9-]{1,63}(([:]{1}[0-9]{4,})|([.]{1}){1,}([a-z]{2,})){1,}))|([./]+|[a-zA-Z\\-_]))([a-zA-Z0-9\\-_]+\\.|[a-zA-Z0-9\\-_]+\\/)+((\\.)?[a-zA-Z0-9\\-_#.?=%;]+(\\/)?)/gm\n      // extractedLinks = file.content.match(patternHtmlCssFiles)\n    }\n    if(!extractedLinks) {\n      return [];\n    }\n    for (const extractedLink of extractedLinks) {\n      var normalizedLink = Paths.normalizePath(extractedLink, file.url)\n      var status = statusCache.get(normalizedLink)\n      if (!status) {\n        status = await this.validateLink(normalizedLink)\n        statusCache.set(normalizedLink, status)\n      }\n      \n      let link = {\n        link: extractedLink,\n        location: extractedLink.includes('lively-kernel.org') ? \"internal\" : \"external\",\n        url: file.url,\n        status: status,\n      }\n      links.push(link)  \n    }\n    return links\n  }\n   \n  static async validateLink(url) { \n    console.log(\"[fileindex] validateLink \" + url)  \n    try {\n      var response = await  BrokenLinkAnalysis.fetch(url, { \n        method: \"GET\", // \"GET\" or \"HEAD\" or \"OPTIONS\" \n        mode: 'no-cors', \n        redirect: \"follow\",\n        referrer: \"no-referrer\", // no-referrer, *client\n      }, FETCH_TIMEOUT) \n\n      if (response.type === \"basic\") { // internal link\n        if (response.ok) {\n          return \"alive\"\n        } else {\n          return \"broken\"\n        } \n      } else if (response.type === \"opaque\") { // external link\n        return \"alive\"\n      }\n    } catch(e) {\n      return \"broken\"\n    } \n    return \"alive\" // at least nothing went wrong?\n  }\n\n  static async fetch(url, options, timeout) {\n    return Promise.race([\n        fetch(url, options),\n        new Promise((_, reject) =>\n            setTimeout(() => {\n              reject(new Error('Fetch timeout: ' + url))\n        }, timeout)\n        )\n    ]);\n  }\n}\n\n\nexport class ModuleDependencyAnalysis {\n  \n   static async resolveModuleDependencies(fileUrl, dependencies) {\n    let resolvedDependencies = new Array()\n    for (const dependency of dependencies) {\n      let resolvedDependency = await System.resolve(dependency.url, fileUrl)\n      if (!resolvedDependency) {\n        resolvedDependencies.push(dependency.url)  \n      } else {\n        resolvedDependencies.push(resolvedDependency)\n      }\n    }\n     \n    return {\n      url: fileUrl,\n      dependencies: resolvedDependencies\n    }\n  }\n}\n\n\n"],"mappings":"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"}