swh.web 0.16.3__py3-none-any.whl → 0.16.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- swh/web/add_forge_now/templates/add-forge-request-dashboard.html +5 -2
- swh/web/api/views/origin.py +2 -2
- swh/web/archive_coverage/views.py +4 -7
- swh/web/badges/__init__.py +1 -1
- swh/web/badges/assets/index.js +40 -14
- swh/web/browse/assets/browse/browse.css +5 -0
- swh/web/browse/assets/browse/sidetabs.js +3 -16
- swh/web/browse/templates/browse-iframe.html +9 -7
- swh/web/browse/templates/browse-origin-visits.html +2 -2
- swh/web/browse/templates/browse-revision.html +5 -3
- swh/web/browse/templates/includes/content-display.html +10 -5
- swh/web/browse/templates/includes/readme-display.html +3 -2
- swh/web/browse/templates/includes/show-metadata.html +3 -2
- swh/web/browse/templates/includes/sidetabs.html +9 -7
- swh/web/browse/templates/includes/top-navigation.html +2 -1
- swh/web/browse/tests/views/test_origin.py +3 -1
- swh/web/deposit/templates/deposit-admin.html +6 -1
- swh/web/static/css/{archive_coverage.70eba3d32ed75472d638.css → archive_coverage.df54ae8fe40453ecd972.css} +2 -2
- swh/web/static/css/archive_coverage.df54ae8fe40453ecd972.css.map +1 -0
- swh/web/static/css/browse.633076034514e6a3977d.css +2 -0
- swh/web/static/css/browse.633076034514e6a3977d.css.map +1 -0
- swh/web/static/css/guided_tour.d496a0c252e1bb193496.css +2 -0
- swh/web/static/css/{guided_tour.62c03630e944b8b8d9ad.css.map → guided_tour.d496a0c252e1bb193496.css.map} +1 -1
- swh/web/static/css/{highlightjs.0c1b181eb006699a4c3e.css → highlightjs.37238c93749cb449800d.css} +2 -2
- swh/web/static/css/highlightjs.37238c93749cb449800d.css.map +1 -0
- swh/web/static/css/origin_visits.9a796c4df6606bd9905f.css +2 -0
- swh/web/static/css/origin_visits.9a796c4df6606bd9905f.css.map +1 -0
- swh/web/static/css/vendors.a4844da6ce54cbc04960.css +24 -0
- swh/web/static/css/vendors.a4844da6ce54cbc04960.css.map +1 -0
- swh/web/static/css/{webapp.4655323082740f1a4862.css → webapp.e995faa24f8c84db0d06.css} +2 -2
- swh/web/static/css/webapp.e995faa24f8c84db0d06.css.map +1 -0
- swh/web/static/js/add_forge_now.e85d09463e38c1e19632.js +3 -0
- swh/web/static/js/add_forge_now.e85d09463e38c1e19632.js.map +1 -0
- swh/web/static/js/auth.06c697ab58b81d08ebce.js +3 -0
- swh/web/static/js/auth.06c697ab58b81d08ebce.js.map +1 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js +3 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js.LICENSE.txt +6 -0
- swh/web/static/js/badges.50941e27bf5e4453b0e0.js.map +1 -0
- swh/web/static/js/browse.3f22819b69002c8b6407.js +3 -0
- swh/web/static/js/browse.3f22819b69002c8b6407.js.map +1 -0
- swh/web/static/js/deposit.d47e18177b16ccdbdb84.js.map +1 -1
- swh/web/static/js/{highlightjs.14fc09414685bf90c554.js → highlightjs.516e784a1e62011c7605.js} +3 -3
- swh/web/static/js/highlightjs.516e784a1e62011c7605.js.map +1 -0
- swh/web/static/js/mailmap.de04f685e56eff5b627f.js +3 -0
- swh/web/static/js/mailmap.de04f685e56eff5b627f.js.map +1 -0
- swh/web/static/js/mathjax.98ef576f318f1a0b0c4a.js.map +1 -1
- swh/web/static/js/pdf.worker.min.js +1 -1
- swh/web/static/js/pdfjs.018d9890c044b3612ece.js +3 -0
- swh/web/static/js/pdfjs.018d9890c044b3612ece.js.map +1 -0
- swh/web/static/js/{revision.61c9277f4a4c63df0f45.js → revision.122a31614a5f9abffc3c.js} +3 -3
- swh/web/static/js/revision.122a31614a5f9abffc3c.js.map +1 -0
- swh/web/static/js/save_code_now.d4d8fc47420a4badb683.js +3 -0
- swh/web/static/js/save_code_now.d4d8fc47420a4badb683.js.map +1 -0
- swh/web/static/js/vault.d2ec3dd1d84a8d038a6c.js +3 -0
- swh/web/static/js/vault.d2ec3dd1d84a8d038a6c.js.map +1 -0
- swh/web/static/js/vendors.f62cb86cf3b92ae280ee.js +3 -0
- swh/web/static/js/{vendors.9fc5b97b8e4691b7272e.js.LICENSE.txt → vendors.f62cb86cf3b92ae280ee.js.LICENSE.txt} +5 -1
- swh/web/static/js/vendors.f62cb86cf3b92ae280ee.js.map +1 -0
- swh/web/static/js/webapp.e93873983e400db67bf8.js +3 -0
- swh/web/static/js/{webapp.c5e37f8f7bfc8bb87ad8.js.map → webapp.e93873983e400db67bf8.js.map} +1 -1
- swh/web/static/jssources/assets/src/utils/functions.js +4 -4
- swh/web/static/jssources/datatables.net/js/dataTables.mjs +108 -44
- swh/web/static/jssources/datatables.net-fixedheader/js/dataTables.fixedHeader.mjs +10 -4
- swh/web/static/jssources/datatables.net-fixedheader/node_modules/datatables.net/js/dataTables.mjs +14027 -0
- swh/web/static/jssources/datatables.net-fixedheader-bs5/node_modules/datatables.net/js/dataTables.mjs +14027 -0
- swh/web/static/jssources/datatables.net-fixedheader-bs5/node_modules/datatables.net-bs5/js/dataTables.bootstrap5.mjs +81 -0
- swh/web/static/jssources/highlightjs-macaulay2/dist/macaulay2.min.js +3 -3
- swh/web/static/jssources/jslicenses.json +1 -1
- swh/web/static/jssources/pdfjs-dist/build/pdf.worker.mjs +885 -596
- swh/web/static/jssources/pdfjs-dist/legacy/build/pdf.mjs +4982 -4566
- swh/web/static/jssources/swh/web/badges/assets/index.js +40 -14
- swh/web/static/jssources/swh/web/browse/assets/browse/sidetabs.js +3 -16
- swh/web/static/jssources/swh/web/vault/assets/vault-ui.js +6 -4
- swh/web/static/jssources/swh/web/webapp/assets/webapp/webapp-utils.js +18 -1
- swh/web/static/security.txt +3 -0
- swh/web/static/webpack-stats.json +240 -235
- swh/web/utils/swh_templatetags.py +8 -13
- swh/web/vault/assets/vault-ui.js +6 -4
- swh/web/webapp/assets/webapp/webapp-utils.js +18 -1
- swh/web/webapp/assets/webapp/webapp.css +8 -0
- swh/web/webapp/templates/layout.html +13 -10
- swh/web/webapp/tests/test_views.py +16 -1
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/METADATA +2 -3
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/RECORD +98 -93
- swh/web/static/css/archive_coverage.70eba3d32ed75472d638.css.map +0 -1
- swh/web/static/css/browse.0a250d3b07ce628588a5.css +0 -2
- swh/web/static/css/browse.0a250d3b07ce628588a5.css.map +0 -1
- swh/web/static/css/guided_tour.62c03630e944b8b8d9ad.css +0 -2
- swh/web/static/css/highlightjs.0c1b181eb006699a4c3e.css.map +0 -1
- swh/web/static/css/origin_visits.88099d68a63f86af2f8e.css +0 -2
- swh/web/static/css/origin_visits.88099d68a63f86af2f8e.css.map +0 -1
- swh/web/static/css/vendors.1cfc8080eed63af482cf.css +0 -24
- swh/web/static/css/vendors.1cfc8080eed63af482cf.css.map +0 -1
- swh/web/static/css/webapp.4655323082740f1a4862.css.map +0 -1
- swh/web/static/js/add_forge_now.e25d1ad2ab6c45e60b67.js +0 -3
- swh/web/static/js/add_forge_now.e25d1ad2ab6c45e60b67.js.map +0 -1
- swh/web/static/js/auth.bd2f475f49caa9f84e99.js +0 -3
- swh/web/static/js/auth.bd2f475f49caa9f84e99.js.map +0 -1
- swh/web/static/js/badges.f02607179ad0264e7522.js +0 -2
- swh/web/static/js/badges.f02607179ad0264e7522.js.map +0 -1
- swh/web/static/js/browse.fc5d5fafca71e03d2add.js +0 -3
- swh/web/static/js/browse.fc5d5fafca71e03d2add.js.map +0 -1
- swh/web/static/js/highlightjs.14fc09414685bf90c554.js.map +0 -1
- swh/web/static/js/mailmap.631c53127ba5511ebda7.js +0 -3
- swh/web/static/js/mailmap.631c53127ba5511ebda7.js.map +0 -1
- swh/web/static/js/pdfjs.40675676ebcbdde8baab.js +0 -3
- swh/web/static/js/pdfjs.40675676ebcbdde8baab.js.map +0 -1
- swh/web/static/js/revision.61c9277f4a4c63df0f45.js.map +0 -1
- swh/web/static/js/save_code_now.4211098f5dd740dc49b4.js +0 -3
- swh/web/static/js/save_code_now.4211098f5dd740dc49b4.js.map +0 -1
- swh/web/static/js/vault.4eaa8dbf376ebe9cdc7f.js +0 -3
- swh/web/static/js/vault.4eaa8dbf376ebe9cdc7f.js.map +0 -1
- swh/web/static/js/vendors.9fc5b97b8e4691b7272e.js +0 -3
- swh/web/static/js/vendors.9fc5b97b8e4691b7272e.js.map +0 -1
- swh/web/static/js/webapp.c5e37f8f7bfc8bb87ad8.js +0 -3
- /swh/web/static/js/{add_forge_now.e25d1ad2ab6c45e60b67.js.LICENSE.txt → add_forge_now.e85d09463e38c1e19632.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{auth.bd2f475f49caa9f84e99.js.LICENSE.txt → auth.06c697ab58b81d08ebce.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{browse.fc5d5fafca71e03d2add.js.LICENSE.txt → browse.3f22819b69002c8b6407.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{highlightjs.14fc09414685bf90c554.js.LICENSE.txt → highlightjs.516e784a1e62011c7605.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{mailmap.631c53127ba5511ebda7.js.LICENSE.txt → mailmap.de04f685e56eff5b627f.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{pdfjs.40675676ebcbdde8baab.js.LICENSE.txt → pdfjs.018d9890c044b3612ece.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{revision.61c9277f4a4c63df0f45.js.LICENSE.txt → revision.122a31614a5f9abffc3c.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{save_code_now.4211098f5dd740dc49b4.js.LICENSE.txt → save_code_now.d4d8fc47420a4badb683.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{vault.4eaa8dbf376ebe9cdc7f.js.LICENSE.txt → vault.d2ec3dd1d84a8d038a6c.js.LICENSE.txt} +0 -0
- /swh/web/static/js/{webapp.c5e37f8f7bfc8bb87ad8.js.LICENSE.txt → webapp.e93873983e400db67bf8.js.LICENSE.txt} +0 -0
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/WHEEL +0 -0
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/licenses/AUTHORS +0 -0
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/licenses/LICENSE +0 -0
- {swh_web-0.16.3.dist-info → swh_web-0.16.4.dist-info}/top_level.txt +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"js/deposit.d47e18177b16ccdbdb84.js","mappings":"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","sources":["webpack://swh/webpack/universalModuleDefinition","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorKeys.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://swh/./assets/src/utils/functions.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js","webpack://swh/./node_modules/xml-formatter/dist/cjs/index.js","webpack://swh/./node_modules/@babel/runtime/helpers/regenerator.js","webpack://swh/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://swh/./assets/src/utils/constants.js","webpack://swh/./node_modules/@babel/runtime/helpers/OverloadYield.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorValues.js","webpack://swh/./node_modules/@babel/runtime/regenerator/index.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorAsync.js","webpack://swh/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://swh/./node_modules/@babel/runtime/helpers/typeof.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorDefine.js","webpack://swh/./node_modules/xml-parser-xo/dist/cjs/index.js","webpack://swh/webpack/bootstrap","webpack://swh/webpack/runtime/compat get default export","webpack://swh/webpack/runtime/define property getters","webpack://swh/webpack/runtime/hasOwnProperty shorthand","webpack://swh/webpack/runtime/make namespace object","webpack://swh/./swh/web/deposit/assets/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"swh\"] = factory();\n\telse\n\t\troot[\"swh\"] = root[\"swh\"] || {}, root[\"swh\"][\"deposit\"] = factory();\n})(self, function() {\nreturn ","var regenerator = require(\"./regenerator.js\");\nvar regeneratorAsyncIterator = require(\"./regeneratorAsyncIterator.js\");\nfunction _regeneratorAsyncGen(r, e, t, o, n) {\n return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise);\n}\nmodule.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _regeneratorKeys(e) {\n var n = Object(e),\n r = [];\n for (var t in n) r.unshift(t);\n return function e() {\n for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e;\n return e.done = !0, e;\n };\n}\nmodule.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var OverloadYield = require(\"./OverloadYield.js\");\nvar regenerator = require(\"./regenerator.js\");\nvar regeneratorAsync = require(\"./regeneratorAsync.js\");\nvar regeneratorAsyncGen = require(\"./regeneratorAsyncGen.js\");\nvar regeneratorAsyncIterator = require(\"./regeneratorAsyncIterator.js\");\nvar regeneratorKeys = require(\"./regeneratorKeys.js\");\nvar regeneratorValues = require(\"./regeneratorValues.js\");\nfunction _regeneratorRuntime() {\n \"use strict\";\n\n var r = regenerator(),\n e = r.m(_regeneratorRuntime),\n t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;\n function n(r) {\n var e = \"function\" == typeof r && r.constructor;\n return !!e && (e === t || \"GeneratorFunction\" === (e.displayName || e.name));\n }\n var o = {\n \"throw\": 1,\n \"return\": 2,\n \"break\": 3,\n \"continue\": 3\n };\n function a(r) {\n var e, t;\n return function (n) {\n e || (e = {\n stop: function stop() {\n return t(n.a, 2);\n },\n \"catch\": function _catch() {\n return n.v;\n },\n abrupt: function abrupt(r, e) {\n return t(n.a, o[r], e);\n },\n delegateYield: function delegateYield(r, o, a) {\n return e.resultName = o, t(n.d, regeneratorValues(r), a);\n },\n finish: function finish(r) {\n return t(n.f, r);\n }\n }, t = function t(r, _t, o) {\n n.p = e.prev, n.n = e.next;\n try {\n return r(_t, o);\n } finally {\n e.next = n.n;\n }\n }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;\n try {\n return r.call(this, e);\n } finally {\n n.p = e.prev, n.n = e.next;\n }\n };\n }\n return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return {\n wrap: function wrap(e, t, n, o) {\n return r.w(a(e), t, n, o && o.reverse());\n },\n isGeneratorFunction: n,\n mark: r.m,\n awrap: function awrap(r, e) {\n return new OverloadYield(r, e);\n },\n AsyncIterator: regeneratorAsyncIterator,\n async: function async(r, e, t, o, u) {\n return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u);\n },\n keys: regeneratorKeys,\n values: regeneratorValues\n };\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Copyright (C) 2018-2025 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\n// utility functions\n\nimport Cookies from 'js-cookie';\n\nexport function handleFetchError(response) {\n if (!response.ok) {\n throw response;\n }\n return response;\n}\n\nexport function handleFetchErrors(responses) {\n for (let i = 0; i < responses.length; ++i) {\n if (!responses[i].ok) {\n throw responses[i];\n }\n }\n return responses;\n}\n\nexport function errorMessageFromResponse(errorData, defaultMessage) {\n let errorMessage = '';\n try {\n const reason = JSON.parse(errorData['reason']);\n Object.entries(reason).forEach((keys, _) => {\n const key = keys[0];\n const message = keys[1][0]; // take only the first issue\n errorMessage += `\\n${key}: ${message}`;\n });\n } catch (_) {\n errorMessage = errorData['reason']; // can't parse it, leave it raw\n }\n return errorMessage ? `Error: ${errorMessage}` : defaultMessage;\n}\n\nexport function staticAsset(asset, origin) {\n let url = `${__STATIC__}${asset}`;\n if (url.startsWith('/') && origin) {\n url = origin + url;\n }\n return url;\n}\n\nexport function csrfPost(url, headers = {}, body = null) {\n headers['X-CSRFToken'] = Cookies.get('csrftoken');\n return fetch(url, {\n credentials: 'include',\n headers: headers,\n method: 'POST',\n body: body\n });\n}\n\nexport function isGitRepoUrl(url, pathPrefix = '/') {\n const allowedProtocols = ['http:', 'https:', 'git:'];\n if (allowedProtocols.find(protocol => protocol === url.protocol) === undefined) {\n return false;\n }\n if (!url.pathname.startsWith(pathPrefix)) {\n return false;\n }\n const re = new RegExp('[\\\\w\\\\.-]+\\\\/?(?!=.git)(?:\\\\.git\\\\/?)?$');\n return re.test(url.pathname.slice(pathPrefix.length)) || url.pathname === '/';\n};\n\nexport function removeUrlFragment() {\n history.replaceState('', document.title, window.location.pathname + window.location.search);\n}\n\nexport function selectText(startNode, endNode) {\n const selection = window.getSelection();\n selection.removeAllRanges();\n const range = document.createRange();\n range.setStart(startNode, 0);\n if (endNode.nodeName !== '#text') {\n range.setEnd(endNode, endNode.childNodes.length);\n } else {\n range.setEnd(endNode, endNode.textContent.length);\n }\n selection.addRange(range);\n}\n\nexport function textToHTML(text) {\n const textArea = document.createElement('textarea');\n textArea.innerText = text;\n return textArea.innerHTML;\n}\n\nexport function htmlAlert(type, message, closable = false) {\n let closeButton = '';\n let extraClasses = '';\n if (closable) {\n closeButton =\n `<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>`;\n extraClasses = 'alert-dismissible';\n }\n return `<div class=\"alert alert-${type} ${extraClasses}\" role=\"alert\">${message}${closeButton}</div>`;\n}\n\nexport function validateUrl(url, allowedProtocols = []) {\n let originUrl = null;\n let validUrl = true;\n\n try {\n originUrl = new URL(url);\n } catch (TypeError) {\n validUrl = false;\n }\n\n if (validUrl && allowedProtocols.length) {\n validUrl = (\n allowedProtocols.find(protocol => protocol === originUrl.protocol) !== undefined\n );\n }\n\n return validUrl ? originUrl : null;\n}\n\nexport async function isArchivedOrigin(originPath, visitType) {\n if (!validateUrl(originPath)) {\n // Not a valid URL, return immediately\n return false;\n } else {\n let url = `${Urls.api_1_origin_visit_latest(originPath)}?require_snapshot=true`;\n if (visitType && visitType !== 'any') {\n url += `&visit_type=${visitType}`;\n }\n const response = await fetch(url);\n return response.ok;\n }\n}\n\nasync function getCanonicalGithubOriginURL(ownerRepo) {\n const ghApiResponse = await fetch(`https://api.github.com/repos/${ownerRepo}`);\n if (ghApiResponse.ok && ghApiResponse.status === 200) {\n const ghApiResponseData = await ghApiResponse.json();\n return ghApiResponseData.html_url;\n }\n}\n\nexport async function getCanonicalOriginURL(originUrl) {\n let originUrlLower = originUrl.toLowerCase();\n // github.com URL processing\n const ghUrlRegex = /^http[s]*:\\/\\/github.com\\//;\n if (originUrlLower.match(ghUrlRegex)) {\n // remove trailing .git\n if (originUrlLower.endsWith('.git')) {\n originUrlLower = originUrlLower.slice(0, -4);\n }\n // remove trailing slash\n if (originUrlLower.endsWith('/')) {\n originUrlLower = originUrlLower.slice(0, -1);\n }\n // extract {owner}/{repo}\n const ownerRepo = originUrlLower.replace(ghUrlRegex, '');\n // fetch canonical URL from github Web API\n const url = await getCanonicalGithubOriginURL(ownerRepo);\n if (url) {\n return url;\n }\n }\n\n const ghpagesUrlRegex = /^http[s]*:\\/\\/(?<owner>[^/]+).github.io\\/(?<repo>[^/]+)\\/?.*/;\n const parsedUrl = originUrlLower.match(ghpagesUrlRegex);\n if (parsedUrl) {\n const ownerRepo = `${parsedUrl.groups.owner}/${parsedUrl.groups.repo}`;\n // fetch canonical URL from github Web API\n const url = await getCanonicalGithubOriginURL(ownerRepo);\n if (url) {\n return url;\n }\n }\n\n return originUrl;\n}\n\nexport function getHumanReadableDate(data) {\n // Display iso format date string into a human readable date\n // This is expected to be used by date field in datatable listing views\n // Example: 3/24/2022, 10:31:08 AM\n const date = new Date(data);\n return date.toLocaleString();\n}\n\nexport function genLink(sanitizedUrl, type, openInNewTab = false, linkText = '') {\n // Display link. It's up to the caller to sanitize sanitizedUrl first.\n if (type === 'display' && sanitizedUrl) {\n const encodedSanitizedUrl = encodeURI(sanitizedUrl);\n if (!linkText) {\n linkText = encodedSanitizedUrl;\n }\n let attrs = '';\n if (openInNewTab) {\n attrs = 'target=\"_blank\" rel=\"noopener noreferrer\"';\n }\n return `<a href=\"${encodedSanitizedUrl}\" ${attrs}>${linkText}</a>`;\n }\n return sanitizedUrl;\n}\n","var OverloadYield = require(\"./OverloadYield.js\");\nvar regeneratorDefine = require(\"./regeneratorDefine.js\");\nfunction AsyncIterator(t, e) {\n function n(r, o, i, f) {\n try {\n var c = t[r](o),\n u = c.value;\n return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) {\n n(\"next\", t, i, f);\n }, function (t) {\n n(\"throw\", t, i, f);\n }) : e.resolve(u).then(function (t) {\n c.value = t, i(c);\n }, function (t) {\n return n(\"throw\", t, i, f);\n });\n } catch (t) {\n f(t);\n }\n }\n var r;\n this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, \"function\" == typeof Symbol && Symbol.asyncIterator || \"@asyncIterator\", function () {\n return this;\n })), regeneratorDefine(this, \"_invoke\", function (t, o, i) {\n function f() {\n return new e(function (e, r) {\n n(t, i, e, r);\n });\n }\n return r = r ? r.then(f, f) : f();\n }, !0);\n}\nmodule.exports = AsyncIterator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst xml_parser_xo_1 = __importDefault(require(\"xml-parser-xo\"));\nfunction newLine(state) {\n if (!state.options.indentation && !state.options.lineSeparator)\n return;\n state.content += state.options.lineSeparator;\n let i;\n for (i = 0; i < state.level; i++) {\n state.content += state.options.indentation;\n }\n}\nfunction indent(state) {\n state.content = state.content.replace(/ +$/, '');\n let i;\n for (i = 0; i < state.level; i++) {\n state.content += state.options.indentation;\n }\n}\nfunction appendContent(state, content) {\n state.content += content;\n}\nfunction processNode(node, state, preserveSpace) {\n if (node.type === 'Element') {\n processElementNode(node, state, preserveSpace);\n }\n else if (node.type === 'ProcessingInstruction') {\n processProcessingIntruction(node, state);\n }\n else if (typeof node.content === 'string') {\n processContent(node.content, state, preserveSpace);\n }\n else {\n throw new Error('Unknown node type: ' + node.type);\n }\n}\nfunction processContent(content, state, preserveSpace) {\n if (!preserveSpace) {\n const trimmedContent = content.trim();\n if (state.options.lineSeparator) {\n content = trimmedContent;\n }\n else if (trimmedContent.length === 0) {\n content = trimmedContent;\n }\n }\n if (content.length > 0) {\n if (!preserveSpace && state.content.length > 0) {\n newLine(state);\n }\n appendContent(state, content);\n }\n}\nfunction isPathMatchingIgnoredPaths(path, ignoredPaths) {\n const fullPath = '/' + path.join('/');\n const pathLastPart = path[path.length - 1];\n return ignoredPaths.includes(pathLastPart) || ignoredPaths.includes(fullPath);\n}\nfunction processElementNode(node, state, preserveSpace) {\n state.path.push(node.name);\n if (!preserveSpace && state.content.length > 0) {\n newLine(state);\n }\n appendContent(state, '<' + node.name);\n processAttributes(state, node.attributes);\n if (node.children === null || (state.options.forceSelfClosingEmptyTag && node.children.length === 0)) {\n const selfClosingNodeClosingTag = state.options.whiteSpaceAtEndOfSelfclosingTag ? ' />' : '/>';\n // self-closing node\n appendContent(state, selfClosingNodeClosingTag);\n }\n else if (node.children.length === 0) {\n // empty node\n appendContent(state, '></' + node.name + '>');\n }\n else {\n const nodeChildren = node.children;\n appendContent(state, '>');\n state.level++;\n let nodePreserveSpace = node.attributes['xml:space'] === 'preserve' || preserveSpace;\n let ignoredPath = false;\n if (!nodePreserveSpace && state.options.ignoredPaths) {\n ignoredPath = isPathMatchingIgnoredPaths(state.path, state.options.ignoredPaths);\n nodePreserveSpace = ignoredPath;\n }\n if (!nodePreserveSpace && state.options.collapseContent) {\n let containsTextNodes = false;\n let containsTextNodesWithLineBreaks = false;\n let containsNonTextNodes = false;\n nodeChildren.forEach(function (child, index) {\n if (child.type === 'Text') {\n if (child.content.includes('\\n')) {\n containsTextNodesWithLineBreaks = true;\n child.content = child.content.trim();\n }\n else if ((index === 0 || index === nodeChildren.length - 1) && !preserveSpace) {\n if (child.content.trim().length === 0) {\n // If the text node is at the start or end and is empty, it should be ignored when formatting\n child.content = '';\n }\n }\n // If there is some content or whitespaces have been removed and there is no other siblings\n if (child.content.trim().length > 0 || nodeChildren.length === 1) {\n containsTextNodes = true;\n }\n }\n else if (child.type === 'CDATA') {\n containsTextNodes = true;\n }\n else {\n containsNonTextNodes = true;\n }\n });\n if (containsTextNodes && (!containsNonTextNodes || !containsTextNodesWithLineBreaks)) {\n nodePreserveSpace = true;\n }\n }\n nodeChildren.forEach(function (child) {\n processNode(child, state, preserveSpace || nodePreserveSpace);\n });\n state.level--;\n if (!preserveSpace && !nodePreserveSpace) {\n newLine(state);\n }\n if (ignoredPath) {\n indent(state);\n }\n appendContent(state, '</' + node.name + '>');\n }\n state.path.pop();\n}\nfunction processAttributes(state, attributes) {\n Object.keys(attributes).forEach(function (attr) {\n const escaped = attributes[attr].replace(/\"/g, '"');\n appendContent(state, ' ' + attr + '=\"' + escaped + '\"');\n });\n}\nfunction processProcessingIntruction(node, state) {\n if (state.content.length > 0) {\n newLine(state);\n }\n appendContent(state, '<?' + node.name);\n appendContent(state, ' ' + node.content.trim());\n appendContent(state, '?>');\n}\n/**\n * Converts the given XML into human readable format.\n */\nfunction formatXml(xml, options = {}) {\n options.indentation = 'indentation' in options ? options.indentation : ' ';\n options.collapseContent = options.collapseContent === true;\n options.lineSeparator = 'lineSeparator' in options ? options.lineSeparator : '\\r\\n';\n options.whiteSpaceAtEndOfSelfclosingTag = options.whiteSpaceAtEndOfSelfclosingTag === true;\n options.throwOnFailure = options.throwOnFailure !== false;\n try {\n const parsedXml = (0, xml_parser_xo_1.default)(xml, { filter: options.filter, strictMode: options.strictMode });\n const state = { content: '', level: 0, options: options, path: [] };\n if (parsedXml.declaration) {\n processProcessingIntruction(parsedXml.declaration, state);\n }\n parsedXml.children.forEach(function (child) {\n processNode(child, state, false);\n });\n if (!options.lineSeparator) {\n return state.content;\n }\n return state.content\n .replace(/\\r\\n/g, '\\n')\n .replace(/\\n/g, options.lineSeparator);\n }\n catch (err) {\n if (options.throwOnFailure) {\n throw err;\n }\n return xml;\n }\n}\nformatXml.minify = (xml, options = {}) => {\n return formatXml(xml, Object.assign(Object.assign({}, options), { indentation: '', lineSeparator: '' }));\n};\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = formatXml;\n}\nexports.default = formatXml;\n//# sourceMappingURL=index.js.map","var regeneratorDefine = require(\"./regeneratorDefine.js\");\nfunction _regenerator() {\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */\n var e,\n t,\n r = \"function\" == typeof Symbol ? Symbol : {},\n n = r.iterator || \"@@iterator\",\n o = r.toStringTag || \"@@toStringTag\";\n function i(r, n, o, i) {\n var c = n && n.prototype instanceof Generator ? n : Generator,\n u = Object.create(c.prototype);\n return regeneratorDefine(u, \"_invoke\", function (r, n, o) {\n var i,\n c,\n u,\n f = 0,\n p = o || [],\n y = !1,\n G = {\n p: 0,\n n: 0,\n v: e,\n a: d,\n f: d.bind(e, 4),\n d: function d(t, r) {\n return i = t, c = 0, u = e, G.n = r, a;\n }\n };\n function d(r, n) {\n for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {\n var o,\n i = p[t],\n d = G.p,\n l = i[2];\n r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));\n }\n if (o || r > 1) return a;\n throw y = !0, n;\n }\n return function (o, p, l) {\n if (f > 1) throw TypeError(\"Generator is already running\");\n for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {\n i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);\n try {\n if (f = 2, i) {\n if (c || (o = \"next\"), t = i[o]) {\n if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\");\n if (!t.done) return t;\n u = t.value, c < 2 && (c = 0);\n } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1);\n i = e;\n } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;\n } catch (t) {\n i = e, c = 1, u = t;\n } finally {\n f = 1;\n }\n }\n return {\n value: t,\n done: y\n };\n };\n }(r, o, i), !0), u;\n }\n var a = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n t = Object.getPrototypeOf;\n var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () {\n return this;\n }), t),\n u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);\n function f(e) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e;\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, \"constructor\", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", regeneratorDefine(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), regeneratorDefine(u), regeneratorDefine(u, o, \"Generator\"), regeneratorDefine(u, n, function () {\n return this;\n }), regeneratorDefine(u, \"toString\", function () {\n return \"[object Generator]\";\n }), (module.exports = _regenerator = function _regenerator() {\n return {\n w: i,\n m: f\n };\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _regenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/**\n * Copyright (C) 2019 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\nimport {staticAsset} from 'utils/functions';\n\n// Constants defining Bootstrap Breakpoints\nexport const BREAKPOINT_SM = 768;\nexport const BREAKPOINT_MD = 992;\nexport const BREAKPOINT_LG = 1200;\n\nexport const swhSpinnerSrc = staticAsset('img/swh-spinner.gif');\n\nexport const dataTableCommonConfig = {\n serverSide: true,\n processing: true,\n language: {\n processing: `<img src=\"${swhSpinnerSrc}\"></img>`\n },\n fixedHeader: true,\n lengthMenu: [10, 25, 50, 100, 1000],\n scrollCollapse: true,\n searchDelay: 1000\n};\n","function _OverloadYield(e, d) {\n this.v = e, this.k = d;\n}\nmodule.exports = _OverloadYield, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorValues(e) {\n if (null != e) {\n var t = e[\"function\" == typeof Symbol && Symbol.iterator || \"@@iterator\"],\n r = 0;\n if (t) return t.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) return {\n next: function next() {\n return e && r >= e.length && (e = void 0), {\n value: e && e[r++],\n done: !e\n };\n }\n };\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n}\nmodule.exports = _regeneratorValues, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var regeneratorAsyncGen = require(\"./regeneratorAsyncGen.js\");\nfunction _regeneratorAsync(n, e, r, t, o) {\n var a = regeneratorAsyncGen(n, e, r, t, o);\n return a.next().then(function (n) {\n return n.done ? n.value : a.next();\n });\n}\nmodule.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _regeneratorDefine(e, r, n, t) {\n var i = Object.defineProperty;\n try {\n i({}, \"\", {});\n } catch (e) {\n i = 0;\n }\n module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) {\n function o(r, n) {\n _regeneratorDefine(e, r, function (e) {\n return this._invoke(r, n, e);\n });\n }\n r ? i ? i(e, r, {\n value: n,\n enumerable: !t,\n configurable: !t,\n writable: !t\n }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2));\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _regeneratorDefine(e, r, n, t);\n}\nmodule.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParsingError = void 0;\nclass ParsingError extends Error {\n constructor(message, cause) {\n super(message);\n this.cause = cause;\n }\n}\nexports.ParsingError = ParsingError;\nlet parsingState;\nfunction nextChild() {\n return element(false) || text() || comment() || cdata() || processingInstruction();\n}\nfunction nextRootChild() {\n match(/\\s*/);\n return element(true) || comment() || doctype() || processingInstruction();\n}\nfunction parseDocument() {\n const declaration = processingInstruction();\n const children = [];\n let documentRootNode;\n let child = nextRootChild();\n while (child) {\n if (child.node.type === 'Element') {\n if (documentRootNode) {\n throw new Error('Found multiple root nodes');\n }\n documentRootNode = child.node;\n }\n if (!child.excluded) {\n children.push(child.node);\n }\n child = nextRootChild();\n }\n if (!documentRootNode) {\n throw new ParsingError('Failed to parse XML', 'Root Element not found');\n }\n if (parsingState.xml.length !== 0) {\n throw new ParsingError('Failed to parse XML', 'Not Well-Formed XML');\n }\n return {\n declaration: declaration ? declaration.node : null,\n root: documentRootNode,\n children\n };\n}\nfunction processingInstruction() {\n const m = match(/^<\\?([\\w-:.]+)\\s*/);\n if (!m)\n return;\n // tag\n const node = {\n name: m[1],\n type: 'ProcessingInstruction',\n content: ''\n };\n const endMarkerIndex = parsingState.xml.indexOf('?>');\n if (endMarkerIndex > -1) {\n node.content = parsingState.xml.substring(0, endMarkerIndex).trim();\n parsingState.xml = parsingState.xml.slice(endMarkerIndex);\n }\n else {\n throw new ParsingError('Failed to parse XML', 'ProcessingInstruction closing tag not found');\n }\n match(/\\?>/);\n return {\n excluded: parsingState.options.filter(node) === false,\n node\n };\n}\nfunction element(matchRoot) {\n const m = match(/^<([^?!</>\\s]+)\\s*/);\n if (!m)\n return;\n // name\n const node = {\n type: 'Element',\n name: m[1],\n attributes: {},\n children: []\n };\n const excluded = matchRoot ? false : parsingState.options.filter(node) === false;\n // attributes\n while (!(eos() || is('>') || is('?>') || is('/>'))) {\n const attr = attribute();\n if (attr) {\n node.attributes[attr.name] = attr.value;\n }\n else {\n return;\n }\n }\n // self closing tag\n if (match(/^\\s*\\/>/)) {\n node.children = null;\n return {\n excluded,\n node\n };\n }\n match(/\\??>/);\n // children\n let child = nextChild();\n while (child) {\n if (!child.excluded) {\n node.children.push(child.node);\n }\n child = nextChild();\n }\n // closing\n if (parsingState.options.strictMode) {\n const closingTag = `</${node.name}>`;\n if (parsingState.xml.startsWith(closingTag)) {\n parsingState.xml = parsingState.xml.slice(closingTag.length);\n }\n else {\n throw new ParsingError('Failed to parse XML', `Closing tag not matching \"${closingTag}\"`);\n }\n }\n else {\n match(/^<\\/[\\w-:.\\u00C0-\\u00FF]+\\s*>/);\n }\n return {\n excluded,\n node\n };\n}\nfunction doctype() {\n const m = match(/^<!DOCTYPE\\s+\\S+\\s+SYSTEM[^>]*>/) ||\n match(/^<!DOCTYPE\\s+\\S+\\s+PUBLIC[^>]*>/) ||\n match(/^<!DOCTYPE\\s+\\S+\\s*\\[[^\\]]*]>/) ||\n match(/^<!DOCTYPE\\s+\\S+\\s*>/);\n if (m) {\n const node = {\n type: 'DocumentType',\n content: m[0]\n };\n return {\n excluded: parsingState.options.filter(node) === false,\n node\n };\n }\n}\nfunction cdata() {\n if (parsingState.xml.startsWith('<![CDATA[')) {\n const endPositionStart = parsingState.xml.indexOf(']]>');\n if (endPositionStart > -1) {\n const endPositionFinish = endPositionStart + 3;\n const node = {\n type: 'CDATA',\n content: parsingState.xml.substring(0, endPositionFinish)\n };\n parsingState.xml = parsingState.xml.slice(endPositionFinish);\n return {\n excluded: parsingState.options.filter(node) === false,\n node\n };\n }\n }\n}\nfunction comment() {\n const m = match(/^<!--[\\s\\S]*?-->/);\n if (m) {\n const node = {\n type: 'Comment',\n content: m[0]\n };\n return {\n excluded: parsingState.options.filter(node) === false,\n node\n };\n }\n}\nfunction text() {\n const m = match(/^([^<]+)/);\n if (m) {\n const node = {\n type: 'Text',\n content: m[1]\n };\n return {\n excluded: parsingState.options.filter(node) === false,\n node\n };\n }\n}\nfunction attribute() {\n const m = match(/([^=]+)\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^>\\s]+)\\s*/);\n if (m) {\n return {\n name: m[1].trim(),\n value: stripQuotes(m[2].trim())\n };\n }\n}\nfunction stripQuotes(val) {\n return val.replace(/^['\"]|['\"]$/g, '');\n}\n/**\n * Match `re` and advance the string.\n */\nfunction match(re) {\n const m = parsingState.xml.match(re);\n if (m) {\n parsingState.xml = parsingState.xml.slice(m[0].length);\n return m;\n }\n}\n/**\n * End-of-source.\n */\nfunction eos() {\n return 0 === parsingState.xml.length;\n}\n/**\n * Check for `prefix`.\n */\nfunction is(prefix) {\n return 0 === parsingState.xml.indexOf(prefix);\n}\n/**\n * Parse the given XML string into an object.\n */\nfunction parseXml(xml, options = {}) {\n xml = xml.trim();\n const filter = options.filter || (() => true);\n parsingState = {\n xml,\n options: Object.assign(Object.assign({}, options), { filter, strictMode: options.strictMode === true })\n };\n return parseDocument();\n}\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = parseXml;\n}\nexports.default = parseXml;\n//# sourceMappingURL=index.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Copyright (C) 2018-2024 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\nimport xmlFormat from 'xml-formatter';\n\nimport {getHumanReadableDate, genLink} from 'utils/functions';\nimport {dataTableCommonConfig} from 'utils/constants';\n\nfunction genSwhLink(data, type, linkText = '') {\n if (type === 'display' && data && data.startsWith('swh')) {\n const browseUrl = Urls.browse_swhid(data);\n const formattedSWHID = data.replace(/;/g, ';<br/>');\n if (!linkText) {\n linkText = formattedSWHID;\n }\n return `<a href=\"${browseUrl}\">${linkText}</a>`;\n }\n return data;\n}\n\nexport function initDepositAdmin(username, isStaff) {\n let depositsTable;\n $(document).ready(() => {\n $.fn.dataTable.ext.errMode = 'none';\n depositsTable = $('#swh-admin-deposit-list')\n .on('error.dt', (e, settings, techNote, message) => {\n $('#swh-admin-deposit-list-error').text(message);\n })\n .DataTable({\n ...dataTableCommonConfig,\n // let's define the order of table options display\n // f: (f)ilter\n // l: (l)ength changing\n // r: p(r)ocessing\n // t: (t)able\n // i: (i)nfo\n // p: (p)agination\n // see https://datatables.net/examples/basic_init/dom.html\n dom: '<<\"d-flex justify-content-between align-items-center\"f' +\n '<\"#list-exclude\">l>rt<\"row mt-2\"<\"col-sm-5\"i><\"col-sm-7\"p>>',\n // div#list-exclude is a custom filter added next to dataTable\n // initialization below through js dom manipulation, see\n // https://datatables.net/examples/advanced_init/dom_toolbar.html\n ajax: {\n url: Urls.admin_deposit_list(),\n data: d => {\n d.excludePattern = $('#swh-admin-deposit-list-exclude-filter').val();\n }\n },\n columns: [\n {\n data: 'id',\n name: 'id'\n },\n {\n data: 'type',\n name: 'type'\n },\n {\n data: 'uri',\n name: 'uri',\n render: (data, type, row) => {\n const sanitizedURL = $.fn.dataTable.render.text().display(data);\n let swhLink = '';\n let originLink = '';\n if (row.swhid_context && data) {\n swhLink = genSwhLink(row.swhid_context, type, sanitizedURL);\n } else if (data) {\n swhLink = sanitizedURL;\n }\n if (data) {\n originLink = genLink(sanitizedURL, type, true,\n '<i class=\"mdi mdi-open-in-new\" aria-hidden=\"true\"></i>');\n }\n return swhLink + ' ' + originLink;\n }\n },\n {\n data: 'reception_date',\n name: 'reception_date',\n render: getHumanReadableDate\n },\n {\n data: 'status',\n name: 'status'\n },\n {\n data: 'raw_metadata',\n name: 'raw_metadata',\n render: (data, type, row) => {\n if (type === 'display') {\n if (row.raw_metadata) {\n return `<button class=\"btn btn-secondary metadata\">display</button>`;\n }\n }\n return data;\n }\n },\n {\n data: 'status_detail',\n name: 'status_detail',\n render: (data, type, row) => {\n if (type === 'display' && data) {\n let text = data;\n if (typeof data === 'object') {\n text = JSON.stringify(data, null, 4);\n }\n return `<div style=\"width: 200px; white-space: pre; overflow-x: auto;\">${text}</div>`;\n }\n return data;\n },\n orderable: false,\n visible: false\n },\n {\n data: 'swhid',\n name: 'swhid',\n render: (data, type, row) => {\n return genSwhLink(data, type);\n },\n orderable: false,\n visible: false\n },\n {\n data: 'swhid_context',\n name: 'swhid_context',\n render: (data, type, row) => {\n return genSwhLink(data, type);\n },\n orderable: false,\n visible: false\n }\n ],\n scrollX: true,\n order: [[0, 'desc']]\n });\n\n // Some more customization is needed on the table\n $('div#list-exclude').html(`\n <div id=\"swh-admin-deposit-list-exclude-div-wrapper\" class=\"dataTables_filter\">\n <label for=\"swh-admin-deposit-list-exclude-filter\">\n Exclude:\n </label>\n <input id=\"swh-admin-deposit-list-exclude-filter\"\n type=\"search\"\n value=\"check-deposit\"\n class=\"form-control form-control-sm mb-2\"\n placeholder=\"exclude-pattern\" aria-controls=\"swh-admin-deposit-list\">\n </input>\n </div>`);\n\n // Show a modal when the \"metadata\" button is clicked\n $('#swh-admin-deposit-list tbody').on('click', 'tr button.metadata', function() {\n var row = depositsTable.row(this.parentNode.parentNode).data();\n var metadata = xmlFormat(row.raw_metadata, {indentation: ' ',\n collapseContent: true,\n lineSeparator: '\\n'});\n var escapedMetadata = $('<div/>').text(metadata).html();\n swh.webapp.showModalHtml(\n `Metadata of deposit ${row.id}`,\n `<pre style=\"max-height: 75vh;\"><code class=\"xml\">${escapedMetadata}</code></pre>`,\n '90%');\n swh.webapp.highlightCode();\n });\n\n // Adding exclusion pattern update behavior, when typing, update search\n $('#swh-admin-deposit-list-exclude-filter').keyup(function() {\n depositsTable.draw();\n });\n\n // at last draw the table\n depositsTable.draw();\n });\n\n $('a.toggle-col').on('click', function(e) {\n e.preventDefault();\n var column = depositsTable.column($(this).attr('data-column'));\n column.visible(!column.visible());\n if (column.visible()) {\n $(this).removeClass('col-hidden');\n } else {\n $(this).addClass('col-hidden');\n }\n });\n\n}\n"],"names":["root","factory","exports","module","define","amd","self","regenerator","regeneratorAsyncIterator","r","e","t","o","n","w","Promise","__esModule","Object","unshift","length","pop","value","done","OverloadYield","regeneratorAsync","regeneratorAsyncGen","regeneratorKeys","regeneratorValues","_regeneratorRuntime","m","getPrototypeOf","__proto__","constructor","displayName","name","a","stop","v","abrupt","delegateYield","resultName","d","finish","f","_t","p","prev","next","sent","call","this","wrap","reverse","isGeneratorFunction","mark","awrap","AsyncIterator","async","u","keys","values","staticAsset","asset","origin","url","__STATIC__","startsWith","getHumanReadableDate","data","Date","toLocaleString","genLink","sanitizedUrl","type","openInNewTab","linkText","encodedSanitizedUrl","encodeURI","attrs","regeneratorDefine","i","c","resolve","then","prototype","Symbol","asyncIterator","__importDefault","mod","defineProperty","xml_parser_xo_1","newLine","state","options","indentation","lineSeparator","content","level","appendContent","processNode","node","preserveSpace","path","push","attributes","forEach","attr","escaped","replace","processAttributes","children","forceSelfClosingEmptyTag","selfClosingNodeClosingTag","whiteSpaceAtEndOfSelfclosingTag","nodeChildren","nodePreserveSpace","ignoredPath","ignoredPaths","fullPath","join","pathLastPart","includes","isPathMatchingIgnoredPaths","collapseContent","containsTextNodes","containsTextNodesWithLineBreaks","containsNonTextNodes","child","index","trim","indent","processElementNode","processProcessingIntruction","Error","trimmedContent","processContent","formatXml","xml","throwOnFailure","parsedXml","default","filter","strictMode","declaration","err","minify","assign","_regenerator","iterator","toStringTag","Generator","create","y","G","bind","l","TypeError","GeneratorFunction","GeneratorFunctionPrototype","setPrototypeOf","target","arguments","source","key","init","converter","defaultAttributes","set","document","expires","now","toUTCString","encodeURIComponent","decodeURIComponent","escape","stringifiedAttributes","attributeName","split","cookie","write","get","cookies","jar","parts","slice","found","read","remove","withAttributes","withConverter","freeze","dataTableCommonConfig","serverSide","processing","language","fixedHeader","lengthMenu","scrollCollapse","searchDelay","k","_typeof","isNaN","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","_extends","hasOwnProperty","apply","_regeneratorDefine","_invoke","enumerable","configurable","writable","ParsingError","message","cause","super","parsingState","nextChild","element","match","excluded","text","comment","endPositionStart","indexOf","endPositionFinish","substring","cdata","processingInstruction","nextRootChild","doctype","endMarkerIndex","matchRoot","eos","is","attribute","closingTag","val","re","prefix","parseXml","documentRootNode","parseDocument","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","definition","obj","prop","genSwhLink","browseUrl","Urls","browse_swhid","formattedSWHID","initDepositAdmin","username","isStaff","depositsTable","$","ready","fn","dataTable","ext","errMode","on","settings","techNote","DataTable","dom","ajax","admin_deposit_list","excludePattern","columns","render","row","sanitizedURL","display","swhLink","originLink","swhid_context","raw_metadata","JSON","stringify","orderable","visible","scrollX","order","html","parentNode","metadata","xmlFormat","escapedMetadata","swh","webapp","showModalHtml","id","highlightCode","keyup","draw","preventDefault","column","removeClass","addClass"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"js/deposit.d47e18177b16ccdbdb84.js","mappings":"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","sources":["webpack://swh/webpack/universalModuleDefinition","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorAsyncGen.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorKeys.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://swh/./assets/src/utils/functions.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorAsyncIterator.js","webpack://swh/./node_modules/xml-formatter/dist/cjs/index.js","webpack://swh/./node_modules/@babel/runtime/helpers/regenerator.js","webpack://swh/./node_modules/js-cookie/dist/js.cookie.mjs","webpack://swh/./assets/src/utils/constants.js","webpack://swh/./node_modules/@babel/runtime/helpers/OverloadYield.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorValues.js","webpack://swh/./node_modules/@babel/runtime/regenerator/index.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorAsync.js","webpack://swh/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://swh/./node_modules/@babel/runtime/helpers/typeof.js","webpack://swh/./node_modules/@babel/runtime/helpers/regeneratorDefine.js","webpack://swh/./node_modules/xml-parser-xo/dist/cjs/index.js","webpack://swh/webpack/bootstrap","webpack://swh/webpack/runtime/compat get default export","webpack://swh/webpack/runtime/define property getters","webpack://swh/webpack/runtime/hasOwnProperty shorthand","webpack://swh/webpack/runtime/make namespace object","webpack://swh/./swh/web/deposit/assets/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"swh\"] = factory();\n\telse\n\t\troot[\"swh\"] = root[\"swh\"] || {}, root[\"swh\"][\"deposit\"] = factory();\n})(self, function() {\nreturn ","var regenerator = require(\"./regenerator.js\");\nvar regeneratorAsyncIterator = require(\"./regeneratorAsyncIterator.js\");\nfunction _regeneratorAsyncGen(r, e, t, o, n) {\n return new regeneratorAsyncIterator(regenerator().w(r, e, t, o), n || Promise);\n}\nmodule.exports = _regeneratorAsyncGen, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _regeneratorKeys(e) {\n var n = Object(e),\n r = [];\n for (var t in n) r.unshift(t);\n return function e() {\n for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e;\n return e.done = !0, e;\n };\n}\nmodule.exports = _regeneratorKeys, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var OverloadYield = require(\"./OverloadYield.js\");\nvar regenerator = require(\"./regenerator.js\");\nvar regeneratorAsync = require(\"./regeneratorAsync.js\");\nvar regeneratorAsyncGen = require(\"./regeneratorAsyncGen.js\");\nvar regeneratorAsyncIterator = require(\"./regeneratorAsyncIterator.js\");\nvar regeneratorKeys = require(\"./regeneratorKeys.js\");\nvar regeneratorValues = require(\"./regeneratorValues.js\");\nfunction _regeneratorRuntime() {\n \"use strict\";\n\n var r = regenerator(),\n e = r.m(_regeneratorRuntime),\n t = (Object.getPrototypeOf ? Object.getPrototypeOf(e) : e.__proto__).constructor;\n function n(r) {\n var e = \"function\" == typeof r && r.constructor;\n return !!e && (e === t || \"GeneratorFunction\" === (e.displayName || e.name));\n }\n var o = {\n \"throw\": 1,\n \"return\": 2,\n \"break\": 3,\n \"continue\": 3\n };\n function a(r) {\n var e, t;\n return function (n) {\n e || (e = {\n stop: function stop() {\n return t(n.a, 2);\n },\n \"catch\": function _catch() {\n return n.v;\n },\n abrupt: function abrupt(r, e) {\n return t(n.a, o[r], e);\n },\n delegateYield: function delegateYield(r, o, a) {\n return e.resultName = o, t(n.d, regeneratorValues(r), a);\n },\n finish: function finish(r) {\n return t(n.f, r);\n }\n }, t = function t(r, _t, o) {\n n.p = e.prev, n.n = e.next;\n try {\n return r(_t, o);\n } finally {\n e.next = n.n;\n }\n }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n;\n try {\n return r.call(this, e);\n } finally {\n n.p = e.prev, n.n = e.next;\n }\n };\n }\n return (module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return {\n wrap: function wrap(e, t, n, o) {\n return r.w(a(e), t, n, o && o.reverse());\n },\n isGeneratorFunction: n,\n mark: r.m,\n awrap: function awrap(r, e) {\n return new OverloadYield(r, e);\n },\n AsyncIterator: regeneratorAsyncIterator,\n async: function async(r, e, t, o, u) {\n return (n(e) ? regeneratorAsyncGen : regeneratorAsync)(a(r), e, t, o, u);\n },\n keys: regeneratorKeys,\n values: regeneratorValues\n };\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/**\n * Copyright (C) 2018-2025 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\n// utility functions\n\nimport Cookies from 'js-cookie';\n\nexport function handleFetchError(response, noRaiseForStatuses = []) {\n if (!response.ok && $.inArray(response.status, noRaiseForStatuses)) {\n throw response;\n }\n return response;\n}\n\nexport function handleFetchErrors(responses, noRaiseForStatuses = []) {\n for (let i = 0; i < responses.length; ++i) {\n if (!responses[i].ok && $.inArray(responses[i].status, noRaiseForStatuses)) {\n throw responses[i];\n }\n }\n return responses;\n}\n\nexport function errorMessageFromResponse(errorData, defaultMessage) {\n let errorMessage = '';\n try {\n const reason = JSON.parse(errorData['reason']);\n Object.entries(reason).forEach((keys, _) => {\n const key = keys[0];\n const message = keys[1][0]; // take only the first issue\n errorMessage += `\\n${key}: ${message}`;\n });\n } catch (_) {\n errorMessage = errorData['reason']; // can't parse it, leave it raw\n }\n return errorMessage ? `Error: ${errorMessage}` : defaultMessage;\n}\n\nexport function staticAsset(asset, origin) {\n let url = `${__STATIC__}${asset}`;\n if (url.startsWith('/') && origin) {\n url = origin + url;\n }\n return url;\n}\n\nexport function csrfPost(url, headers = {}, body = null) {\n headers['X-CSRFToken'] = Cookies.get('csrftoken');\n return fetch(url, {\n credentials: 'include',\n headers: headers,\n method: 'POST',\n body: body\n });\n}\n\nexport function isGitRepoUrl(url, pathPrefix = '/') {\n const allowedProtocols = ['http:', 'https:', 'git:'];\n if (allowedProtocols.find(protocol => protocol === url.protocol) === undefined) {\n return false;\n }\n if (!url.pathname.startsWith(pathPrefix)) {\n return false;\n }\n const re = new RegExp('[\\\\w\\\\.-]+\\\\/?(?!=.git)(?:\\\\.git\\\\/?)?$');\n return re.test(url.pathname.slice(pathPrefix.length)) || url.pathname === '/';\n};\n\nexport function removeUrlFragment() {\n history.replaceState('', document.title, window.location.pathname + window.location.search);\n}\n\nexport function selectText(startNode, endNode) {\n const selection = window.getSelection();\n selection.removeAllRanges();\n const range = document.createRange();\n range.setStart(startNode, 0);\n if (endNode.nodeName !== '#text') {\n range.setEnd(endNode, endNode.childNodes.length);\n } else {\n range.setEnd(endNode, endNode.textContent.length);\n }\n selection.addRange(range);\n}\n\nexport function textToHTML(text) {\n const textArea = document.createElement('textarea');\n textArea.innerText = text;\n return textArea.innerHTML;\n}\n\nexport function htmlAlert(type, message, closable = false) {\n let closeButton = '';\n let extraClasses = '';\n if (closable) {\n closeButton =\n `<button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>`;\n extraClasses = 'alert-dismissible';\n }\n return `<div class=\"alert alert-${type} ${extraClasses}\" role=\"alert\">${message}${closeButton}</div>`;\n}\n\nexport function validateUrl(url, allowedProtocols = []) {\n let originUrl = null;\n let validUrl = true;\n\n try {\n originUrl = new URL(url);\n } catch (TypeError) {\n validUrl = false;\n }\n\n if (validUrl && allowedProtocols.length) {\n validUrl = (\n allowedProtocols.find(protocol => protocol === originUrl.protocol) !== undefined\n );\n }\n\n return validUrl ? originUrl : null;\n}\n\nexport async function isArchivedOrigin(originPath, visitType) {\n if (!validateUrl(originPath)) {\n // Not a valid URL, return immediately\n return false;\n } else {\n let url = `${Urls.api_1_origin_visit_latest(originPath)}?require_snapshot=true`;\n if (visitType && visitType !== 'any') {\n url += `&visit_type=${visitType}`;\n }\n const response = await fetch(url);\n return response.ok;\n }\n}\n\nasync function getCanonicalGithubOriginURL(ownerRepo) {\n const ghApiResponse = await fetch(`https://api.github.com/repos/${ownerRepo}`);\n if (ghApiResponse.ok && ghApiResponse.status === 200) {\n const ghApiResponseData = await ghApiResponse.json();\n return ghApiResponseData.html_url;\n }\n}\n\nexport async function getCanonicalOriginURL(originUrl) {\n let originUrlLower = originUrl.toLowerCase();\n // github.com URL processing\n const ghUrlRegex = /^http[s]*:\\/\\/github.com\\//;\n if (originUrlLower.match(ghUrlRegex)) {\n // remove trailing .git\n if (originUrlLower.endsWith('.git')) {\n originUrlLower = originUrlLower.slice(0, -4);\n }\n // remove trailing slash\n if (originUrlLower.endsWith('/')) {\n originUrlLower = originUrlLower.slice(0, -1);\n }\n // extract {owner}/{repo}\n const ownerRepo = originUrlLower.replace(ghUrlRegex, '');\n // fetch canonical URL from github Web API\n const url = await getCanonicalGithubOriginURL(ownerRepo);\n if (url) {\n return url;\n }\n }\n\n const ghpagesUrlRegex = /^http[s]*:\\/\\/(?<owner>[^/]+).github.io\\/(?<repo>[^/]+)\\/?.*/;\n const parsedUrl = originUrlLower.match(ghpagesUrlRegex);\n if (parsedUrl) {\n const ownerRepo = `${parsedUrl.groups.owner}/${parsedUrl.groups.repo}`;\n // fetch canonical URL from github Web API\n const url = await getCanonicalGithubOriginURL(ownerRepo);\n if (url) {\n return url;\n }\n }\n\n return originUrl;\n}\n\nexport function getHumanReadableDate(data) {\n // Display iso format date string into a human readable date\n // This is expected to be used by date field in datatable listing views\n // Example: 3/24/2022, 10:31:08 AM\n const date = new Date(data);\n return date.toLocaleString();\n}\n\nexport function genLink(sanitizedUrl, type, openInNewTab = false, linkText = '') {\n // Display link. It's up to the caller to sanitize sanitizedUrl first.\n if (type === 'display' && sanitizedUrl) {\n const encodedSanitizedUrl = encodeURI(sanitizedUrl);\n if (!linkText) {\n linkText = encodedSanitizedUrl;\n }\n let attrs = '';\n if (openInNewTab) {\n attrs = 'target=\"_blank\" rel=\"noopener noreferrer\"';\n }\n return `<a href=\"${encodedSanitizedUrl}\" ${attrs}>${linkText}</a>`;\n }\n return sanitizedUrl;\n}\n","var OverloadYield = require(\"./OverloadYield.js\");\nvar regeneratorDefine = require(\"./regeneratorDefine.js\");\nfunction AsyncIterator(t, e) {\n function n(r, o, i, f) {\n try {\n var c = t[r](o),\n u = c.value;\n return u instanceof OverloadYield ? e.resolve(u.v).then(function (t) {\n n(\"next\", t, i, f);\n }, function (t) {\n n(\"throw\", t, i, f);\n }) : e.resolve(u).then(function (t) {\n c.value = t, i(c);\n }, function (t) {\n return n(\"throw\", t, i, f);\n });\n } catch (t) {\n f(t);\n }\n }\n var r;\n this.next || (regeneratorDefine(AsyncIterator.prototype), regeneratorDefine(AsyncIterator.prototype, \"function\" == typeof Symbol && Symbol.asyncIterator || \"@asyncIterator\", function () {\n return this;\n })), regeneratorDefine(this, \"_invoke\", function (t, o, i) {\n function f() {\n return new e(function (e, r) {\n n(t, i, e, r);\n });\n }\n return r = r ? r.then(f, f) : f();\n }, !0);\n}\nmodule.exports = AsyncIterator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst xml_parser_xo_1 = __importDefault(require(\"xml-parser-xo\"));\nfunction newLine(state) {\n if (!state.options.indentation && !state.options.lineSeparator)\n return;\n state.content += state.options.lineSeparator;\n let i;\n for (i = 0; i < state.level; i++) {\n state.content += state.options.indentation;\n }\n}\nfunction indent(state) {\n state.content = state.content.replace(/ +$/, '');\n let i;\n for (i = 0; i < state.level; i++) {\n state.content += state.options.indentation;\n }\n}\nfunction appendContent(state, content) {\n state.content += content;\n}\nfunction processNode(node, state, preserveSpace) {\n if (node.type === 'Element') {\n processElementNode(node, state, preserveSpace);\n }\n else if (node.type === 'ProcessingInstruction') {\n processProcessingIntruction(node, state);\n }\n else if (typeof node.content === 'string') {\n processContent(node.content, state, preserveSpace);\n }\n else {\n throw new Error('Unknown node type: ' + node.type);\n }\n}\nfunction processContent(content, state, preserveSpace) {\n if (!preserveSpace) {\n const trimmedContent = content.trim();\n if (state.options.lineSeparator) {\n content = trimmedContent;\n }\n else if (trimmedContent.length === 0) {\n content = trimmedContent;\n }\n }\n if (content.length > 0) {\n if (!preserveSpace && state.content.length > 0) {\n newLine(state);\n }\n appendContent(state, content);\n }\n}\nfunction isPathMatchingIgnoredPaths(path, ignoredPaths) {\n const fullPath = '/' + path.join('/');\n const pathLastPart = path[path.length - 1];\n return ignoredPaths.includes(pathLastPart) || ignoredPaths.includes(fullPath);\n}\nfunction processElementNode(node, state, preserveSpace) {\n state.path.push(node.name);\n if (!preserveSpace && state.content.length > 0) {\n newLine(state);\n }\n appendContent(state, '<' + node.name);\n processAttributes(state, node.attributes);\n if (node.children === null || (state.options.forceSelfClosingEmptyTag && node.children.length === 0)) {\n const selfClosingNodeClosingTag = state.options.whiteSpaceAtEndOfSelfclosingTag ? ' />' : '/>';\n // self-closing node\n appendContent(state, selfClosingNodeClosingTag);\n }\n else if (node.children.length === 0) {\n // empty node\n appendContent(state, '></' + node.name + '>');\n }\n else {\n const nodeChildren = node.children;\n appendContent(state, '>');\n state.level++;\n let nodePreserveSpace = node.attributes['xml:space'] === 'preserve' || preserveSpace;\n let ignoredPath = false;\n if (!nodePreserveSpace && state.options.ignoredPaths) {\n ignoredPath = isPathMatchingIgnoredPaths(state.path, state.options.ignoredPaths);\n nodePreserveSpace = ignoredPath;\n }\n if (!nodePreserveSpace && state.options.collapseContent) {\n let containsTextNodes = false;\n let containsTextNodesWithLineBreaks = false;\n let containsNonTextNodes = false;\n nodeChildren.forEach(function (child, index) {\n if (child.type === 'Text') {\n if (child.content.includes('\\n')) {\n containsTextNodesWithLineBreaks = true;\n child.content = child.content.trim();\n }\n else if ((index === 0 || index === nodeChildren.length - 1) && !preserveSpace) {\n if (child.content.trim().length === 0) {\n // If the text node is at the start or end and is empty, it should be ignored when formatting\n child.content = '';\n }\n }\n // If there is some content or whitespaces have been removed and there is no other siblings\n if (child.content.trim().length > 0 || nodeChildren.length === 1) {\n containsTextNodes = true;\n }\n }\n else if (child.type === 'CDATA') {\n containsTextNodes = true;\n }\n else {\n containsNonTextNodes = true;\n }\n });\n if (containsTextNodes && (!containsNonTextNodes || !containsTextNodesWithLineBreaks)) {\n nodePreserveSpace = true;\n }\n }\n nodeChildren.forEach(function (child) {\n processNode(child, state, preserveSpace || nodePreserveSpace);\n });\n state.level--;\n if (!preserveSpace && !nodePreserveSpace) {\n newLine(state);\n }\n if (ignoredPath) {\n indent(state);\n }\n appendContent(state, '</' + node.name + '>');\n }\n state.path.pop();\n}\nfunction processAttributes(state, attributes) {\n Object.keys(attributes).forEach(function (attr) {\n const escaped = attributes[attr].replace(/\"/g, '"');\n appendContent(state, ' ' + attr + '=\"' + escaped + '\"');\n });\n}\nfunction processProcessingIntruction(node, state) {\n if (state.content.length > 0) {\n newLine(state);\n }\n appendContent(state, '<?' + node.name);\n appendContent(state, ' ' + node.content.trim());\n appendContent(state, '?>');\n}\n/**\n * Converts the given XML into human readable format.\n */\nfunction formatXml(xml, options = {}) {\n options.indentation = 'indentation' in options ? options.indentation : ' ';\n options.collapseContent = options.collapseContent === true;\n options.lineSeparator = 'lineSeparator' in options ? options.lineSeparator : '\\r\\n';\n options.whiteSpaceAtEndOfSelfclosingTag = options.whiteSpaceAtEndOfSelfclosingTag === true;\n options.throwOnFailure = options.throwOnFailure !== false;\n try {\n const parsedXml = (0, xml_parser_xo_1.default)(xml, { filter: options.filter, strictMode: options.strictMode });\n const state = { content: '', level: 0, options: options, path: [] };\n if (parsedXml.declaration) {\n processProcessingIntruction(parsedXml.declaration, state);\n }\n parsedXml.children.forEach(function (child) {\n processNode(child, state, false);\n });\n if (!options.lineSeparator) {\n return state.content;\n }\n return state.content\n .replace(/\\r\\n/g, '\\n')\n .replace(/\\n/g, options.lineSeparator);\n }\n catch (err) {\n if (options.throwOnFailure) {\n throw err;\n }\n return xml;\n }\n}\nformatXml.minify = (xml, options = {}) => {\n return formatXml(xml, Object.assign(Object.assign({}, options), { indentation: '', lineSeparator: '' }));\n};\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = formatXml;\n}\nexports.default = formatXml;\n//# sourceMappingURL=index.js.map","var regeneratorDefine = require(\"./regeneratorDefine.js\");\nfunction _regenerator() {\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */\n var e,\n t,\n r = \"function\" == typeof Symbol ? Symbol : {},\n n = r.iterator || \"@@iterator\",\n o = r.toStringTag || \"@@toStringTag\";\n function i(r, n, o, i) {\n var c = n && n.prototype instanceof Generator ? n : Generator,\n u = Object.create(c.prototype);\n return regeneratorDefine(u, \"_invoke\", function (r, n, o) {\n var i,\n c,\n u,\n f = 0,\n p = o || [],\n y = !1,\n G = {\n p: 0,\n n: 0,\n v: e,\n a: d,\n f: d.bind(e, 4),\n d: function d(t, r) {\n return i = t, c = 0, u = e, G.n = r, a;\n }\n };\n function d(r, n) {\n for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {\n var o,\n i = p[t],\n d = G.p,\n l = i[2];\n r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));\n }\n if (o || r > 1) return a;\n throw y = !0, n;\n }\n return function (o, p, l) {\n if (f > 1) throw TypeError(\"Generator is already running\");\n for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {\n i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);\n try {\n if (f = 2, i) {\n if (c || (o = \"next\"), t = i[o]) {\n if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\");\n if (!t.done) return t;\n u = t.value, c < 2 && (c = 0);\n } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1);\n i = e;\n } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;\n } catch (t) {\n i = e, c = 1, u = t;\n } finally {\n f = 1;\n }\n }\n return {\n value: t,\n done: y\n };\n };\n }(r, o, i), !0), u;\n }\n var a = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n t = Object.getPrototypeOf;\n var c = [][n] ? t(t([][n]())) : (regeneratorDefine(t = {}, n, function () {\n return this;\n }), t),\n u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);\n function f(e) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, regeneratorDefine(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e;\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, regeneratorDefine(u, \"constructor\", GeneratorFunctionPrototype), regeneratorDefine(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", regeneratorDefine(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), regeneratorDefine(u), regeneratorDefine(u, o, \"Generator\"), regeneratorDefine(u, n, function () {\n return this;\n }), regeneratorDefine(u, \"toString\", function () {\n return \"[object Generator]\";\n }), (module.exports = _regenerator = function _regenerator() {\n return {\n w: i,\n m: f\n };\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports)();\n}\nmodule.exports = _regenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","/**\n * Copyright (C) 2019 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\nimport {staticAsset} from 'utils/functions';\n\n// Constants defining Bootstrap Breakpoints\nexport const BREAKPOINT_SM = 768;\nexport const BREAKPOINT_MD = 992;\nexport const BREAKPOINT_LG = 1200;\n\nexport const swhSpinnerSrc = staticAsset('img/swh-spinner.gif');\n\nexport const dataTableCommonConfig = {\n serverSide: true,\n processing: true,\n language: {\n processing: `<img src=\"${swhSpinnerSrc}\"></img>`\n },\n fixedHeader: true,\n lengthMenu: [10, 25, 50, 100, 1000],\n scrollCollapse: true,\n searchDelay: 1000\n};\n","function _OverloadYield(e, d) {\n this.v = e, this.k = d;\n}\nmodule.exports = _OverloadYield, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorValues(e) {\n if (null != e) {\n var t = e[\"function\" == typeof Symbol && Symbol.iterator || \"@@iterator\"],\n r = 0;\n if (t) return t.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) return {\n next: function next() {\n return e && r >= e.length && (e = void 0), {\n value: e && e[r++],\n done: !e\n };\n }\n };\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n}\nmodule.exports = _regeneratorValues, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var regeneratorAsyncGen = require(\"./regeneratorAsyncGen.js\");\nfunction _regeneratorAsync(n, e, r, t, o) {\n var a = regeneratorAsyncGen(n, e, r, t, o);\n return a.next().then(function (n) {\n return n.done ? n.value : a.next();\n });\n}\nmodule.exports = _regeneratorAsync, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _regeneratorDefine(e, r, n, t) {\n var i = Object.defineProperty;\n try {\n i({}, \"\", {});\n } catch (e) {\n i = 0;\n }\n module.exports = _regeneratorDefine = function regeneratorDefine(e, r, n, t) {\n function o(r, n) {\n _regeneratorDefine(e, r, function (e) {\n return this._invoke(r, n, e);\n });\n }\n r ? i ? i(e, r, {\n value: n,\n enumerable: !t,\n configurable: !t,\n writable: !t\n }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2));\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _regeneratorDefine(e, r, n, t);\n}\nmodule.exports = _regeneratorDefine, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParsingError = void 0;\nclass ParsingError extends Error {\n constructor(message, cause) {\n super(message);\n this.cause = cause;\n }\n}\nexports.ParsingError = ParsingError;\nlet parsingState;\nfunction nextChild() {\n return element(false) || text() || comment() || cdata() || processingInstruction();\n}\nfunction nextRootChild() {\n match(/\\s*/);\n return element(true) || comment() || doctype() || processingInstruction();\n}\nfunction parseDocument() {\n const declaration = processingInstruction();\n const children = [];\n let documentRootNode;\n let child = nextRootChild();\n while (child) {\n if (child.node.type === 'Element') {\n if (documentRootNode) {\n throw new Error('Found multiple root nodes');\n }\n documentRootNode = child.node;\n }\n if (!child.excluded) {\n children.push(child.node);\n }\n child = nextRootChild();\n }\n if (!documentRootNode) {\n throw new ParsingError('Failed to parse XML', 'Root Element not found');\n }\n if (parsingState.xml.length !== 0) {\n throw new ParsingError('Failed to parse XML', 'Not Well-Formed XML');\n }\n return {\n declaration: declaration ? declaration.node : null,\n root: documentRootNode,\n children\n };\n}\nfunction processingInstruction() {\n const m = match(/^<\\?([\\w-:.]+)\\s*/);\n if (!m)\n return;\n // tag\n const node = {\n name: m[1],\n type: 'ProcessingInstruction',\n content: ''\n };\n const endMarkerIndex = parsingState.xml.indexOf('?>');\n if (endMarkerIndex > -1) {\n node.content = parsingState.xml.substring(0, endMarkerIndex).trim();\n parsingState.xml = parsingState.xml.slice(endMarkerIndex);\n }\n else {\n throw new ParsingError('Failed to parse XML', 'ProcessingInstruction closing tag not found');\n }\n match(/\\?>/);\n return {\n excluded: parsingState.options.filter(node) === false,\n node\n };\n}\nfunction element(matchRoot) {\n const m = match(/^<([^?!</>\\s]+)\\s*/);\n if (!m)\n return;\n // name\n const node = {\n type: 'Element',\n name: m[1],\n attributes: {},\n children: []\n };\n const excluded = matchRoot ? false : parsingState.options.filter(node) === false;\n // attributes\n while (!(eos() || is('>') || is('?>') || is('/>'))) {\n const attr = attribute();\n if (attr) {\n node.attributes[attr.name] = attr.value;\n }\n else {\n return;\n }\n }\n // self closing tag\n if (match(/^\\s*\\/>/)) {\n node.children = null;\n return {\n excluded,\n node\n };\n }\n match(/\\??>/);\n // children\n let child = nextChild();\n while (child) {\n if (!child.excluded) {\n node.children.push(child.node);\n }\n child = nextChild();\n }\n // closing\n if (parsingState.options.strictMode) {\n const closingTag = `</${node.name}>`;\n if (parsingState.xml.startsWith(closingTag)) {\n parsingState.xml = parsingState.xml.slice(closingTag.length);\n }\n else {\n throw new ParsingError('Failed to parse XML', `Closing tag not matching \"${closingTag}\"`);\n }\n }\n else {\n match(/^<\\/[\\w-:.\\u00C0-\\u00FF]+\\s*>/);\n }\n return {\n excluded,\n node\n };\n}\nfunction doctype() {\n const m = match(/^<!DOCTYPE\\s+\\S+\\s+SYSTEM[^>]*>/) ||\n match(/^<!DOCTYPE\\s+\\S+\\s+PUBLIC[^>]*>/) ||\n match(/^<!DOCTYPE\\s+\\S+\\s*\\[[^\\]]*]>/) ||\n match(/^<!DOCTYPE\\s+\\S+\\s*>/);\n if (m) {\n const node = {\n type: 'DocumentType',\n content: m[0]\n };\n return {\n excluded: parsingState.options.filter(node) === false,\n node\n };\n }\n}\nfunction cdata() {\n if (parsingState.xml.startsWith('<![CDATA[')) {\n const endPositionStart = parsingState.xml.indexOf(']]>');\n if (endPositionStart > -1) {\n const endPositionFinish = endPositionStart + 3;\n const node = {\n type: 'CDATA',\n content: parsingState.xml.substring(0, endPositionFinish)\n };\n parsingState.xml = parsingState.xml.slice(endPositionFinish);\n return {\n excluded: parsingState.options.filter(node) === false,\n node\n };\n }\n }\n}\nfunction comment() {\n const m = match(/^<!--[\\s\\S]*?-->/);\n if (m) {\n const node = {\n type: 'Comment',\n content: m[0]\n };\n return {\n excluded: parsingState.options.filter(node) === false,\n node\n };\n }\n}\nfunction text() {\n const m = match(/^([^<]+)/);\n if (m) {\n const node = {\n type: 'Text',\n content: m[1]\n };\n return {\n excluded: parsingState.options.filter(node) === false,\n node\n };\n }\n}\nfunction attribute() {\n const m = match(/([^=]+)\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^>\\s]+)\\s*/);\n if (m) {\n return {\n name: m[1].trim(),\n value: stripQuotes(m[2].trim())\n };\n }\n}\nfunction stripQuotes(val) {\n return val.replace(/^['\"]|['\"]$/g, '');\n}\n/**\n * Match `re` and advance the string.\n */\nfunction match(re) {\n const m = parsingState.xml.match(re);\n if (m) {\n parsingState.xml = parsingState.xml.slice(m[0].length);\n return m;\n }\n}\n/**\n * End-of-source.\n */\nfunction eos() {\n return 0 === parsingState.xml.length;\n}\n/**\n * Check for `prefix`.\n */\nfunction is(prefix) {\n return 0 === parsingState.xml.indexOf(prefix);\n}\n/**\n * Parse the given XML string into an object.\n */\nfunction parseXml(xml, options = {}) {\n xml = xml.trim();\n const filter = options.filter || (() => true);\n parsingState = {\n xml,\n options: Object.assign(Object.assign({}, options), { filter, strictMode: options.strictMode === true })\n };\n return parseDocument();\n}\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = parseXml;\n}\nexports.default = parseXml;\n//# sourceMappingURL=index.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Copyright (C) 2018-2024 The Software Heritage developers\n * See the AUTHORS file at the top-level directory of this distribution\n * License: GNU Affero General Public License version 3, or any later version\n * See top-level LICENSE file for more information\n */\n\nimport xmlFormat from 'xml-formatter';\n\nimport {getHumanReadableDate, genLink} from 'utils/functions';\nimport {dataTableCommonConfig} from 'utils/constants';\n\nfunction genSwhLink(data, type, linkText = '') {\n if (type === 'display' && data && data.startsWith('swh')) {\n const browseUrl = Urls.browse_swhid(data);\n const formattedSWHID = data.replace(/;/g, ';<br/>');\n if (!linkText) {\n linkText = formattedSWHID;\n }\n return `<a href=\"${browseUrl}\">${linkText}</a>`;\n }\n return data;\n}\n\nexport function initDepositAdmin(username, isStaff) {\n let depositsTable;\n $(document).ready(() => {\n $.fn.dataTable.ext.errMode = 'none';\n depositsTable = $('#swh-admin-deposit-list')\n .on('error.dt', (e, settings, techNote, message) => {\n $('#swh-admin-deposit-list-error').text(message);\n })\n .DataTable({\n ...dataTableCommonConfig,\n // let's define the order of table options display\n // f: (f)ilter\n // l: (l)ength changing\n // r: p(r)ocessing\n // t: (t)able\n // i: (i)nfo\n // p: (p)agination\n // see https://datatables.net/examples/basic_init/dom.html\n dom: '<<\"d-flex justify-content-between align-items-center\"f' +\n '<\"#list-exclude\">l>rt<\"row mt-2\"<\"col-sm-5\"i><\"col-sm-7\"p>>',\n // div#list-exclude is a custom filter added next to dataTable\n // initialization below through js dom manipulation, see\n // https://datatables.net/examples/advanced_init/dom_toolbar.html\n ajax: {\n url: Urls.admin_deposit_list(),\n data: d => {\n d.excludePattern = $('#swh-admin-deposit-list-exclude-filter').val();\n }\n },\n columns: [\n {\n data: 'id',\n name: 'id'\n },\n {\n data: 'type',\n name: 'type'\n },\n {\n data: 'uri',\n name: 'uri',\n render: (data, type, row) => {\n const sanitizedURL = $.fn.dataTable.render.text().display(data);\n let swhLink = '';\n let originLink = '';\n if (row.swhid_context && data) {\n swhLink = genSwhLink(row.swhid_context, type, sanitizedURL);\n } else if (data) {\n swhLink = sanitizedURL;\n }\n if (data) {\n originLink = genLink(sanitizedURL, type, true,\n '<i class=\"mdi mdi-open-in-new\" aria-hidden=\"true\"></i>');\n }\n return swhLink + ' ' + originLink;\n }\n },\n {\n data: 'reception_date',\n name: 'reception_date',\n render: getHumanReadableDate\n },\n {\n data: 'status',\n name: 'status'\n },\n {\n data: 'raw_metadata',\n name: 'raw_metadata',\n render: (data, type, row) => {\n if (type === 'display') {\n if (row.raw_metadata) {\n return `<button class=\"btn btn-secondary metadata\">display</button>`;\n }\n }\n return data;\n }\n },\n {\n data: 'status_detail',\n name: 'status_detail',\n render: (data, type, row) => {\n if (type === 'display' && data) {\n let text = data;\n if (typeof data === 'object') {\n text = JSON.stringify(data, null, 4);\n }\n return `<div style=\"width: 200px; white-space: pre; overflow-x: auto;\">${text}</div>`;\n }\n return data;\n },\n orderable: false,\n visible: false\n },\n {\n data: 'swhid',\n name: 'swhid',\n render: (data, type, row) => {\n return genSwhLink(data, type);\n },\n orderable: false,\n visible: false\n },\n {\n data: 'swhid_context',\n name: 'swhid_context',\n render: (data, type, row) => {\n return genSwhLink(data, type);\n },\n orderable: false,\n visible: false\n }\n ],\n scrollX: true,\n order: [[0, 'desc']]\n });\n\n // Some more customization is needed on the table\n $('div#list-exclude').html(`\n <div id=\"swh-admin-deposit-list-exclude-div-wrapper\" class=\"dataTables_filter\">\n <label for=\"swh-admin-deposit-list-exclude-filter\">\n Exclude:\n </label>\n <input id=\"swh-admin-deposit-list-exclude-filter\"\n type=\"search\"\n value=\"check-deposit\"\n class=\"form-control form-control-sm mb-2\"\n placeholder=\"exclude-pattern\" aria-controls=\"swh-admin-deposit-list\">\n </input>\n </div>`);\n\n // Show a modal when the \"metadata\" button is clicked\n $('#swh-admin-deposit-list tbody').on('click', 'tr button.metadata', function() {\n var row = depositsTable.row(this.parentNode.parentNode).data();\n var metadata = xmlFormat(row.raw_metadata, {indentation: ' ',\n collapseContent: true,\n lineSeparator: '\\n'});\n var escapedMetadata = $('<div/>').text(metadata).html();\n swh.webapp.showModalHtml(\n `Metadata of deposit ${row.id}`,\n `<pre style=\"max-height: 75vh;\"><code class=\"xml\">${escapedMetadata}</code></pre>`,\n '90%');\n swh.webapp.highlightCode();\n });\n\n // Adding exclusion pattern update behavior, when typing, update search\n $('#swh-admin-deposit-list-exclude-filter').keyup(function() {\n depositsTable.draw();\n });\n\n // at last draw the table\n depositsTable.draw();\n });\n\n $('a.toggle-col').on('click', function(e) {\n e.preventDefault();\n var column = depositsTable.column($(this).attr('data-column'));\n column.visible(!column.visible());\n if (column.visible()) {\n $(this).removeClass('col-hidden');\n } else {\n $(this).addClass('col-hidden');\n }\n });\n\n}\n"],"names":["root","factory","exports","module","define","amd","self","regenerator","regeneratorAsyncIterator","r","e","t","o","n","w","Promise","__esModule","Object","unshift","length","pop","value","done","OverloadYield","regeneratorAsync","regeneratorAsyncGen","regeneratorKeys","regeneratorValues","_regeneratorRuntime","m","getPrototypeOf","__proto__","constructor","displayName","name","a","stop","v","abrupt","delegateYield","resultName","d","finish","f","_t","p","prev","next","sent","call","this","wrap","reverse","isGeneratorFunction","mark","awrap","AsyncIterator","async","u","keys","values","staticAsset","asset","origin","url","__STATIC__","startsWith","getHumanReadableDate","data","Date","toLocaleString","genLink","sanitizedUrl","type","openInNewTab","linkText","encodedSanitizedUrl","encodeURI","attrs","regeneratorDefine","i","c","resolve","then","prototype","Symbol","asyncIterator","__importDefault","mod","defineProperty","xml_parser_xo_1","newLine","state","options","indentation","lineSeparator","content","level","appendContent","processNode","node","preserveSpace","path","push","attributes","forEach","attr","escaped","replace","processAttributes","children","forceSelfClosingEmptyTag","selfClosingNodeClosingTag","whiteSpaceAtEndOfSelfclosingTag","nodeChildren","nodePreserveSpace","ignoredPath","ignoredPaths","fullPath","join","pathLastPart","includes","isPathMatchingIgnoredPaths","collapseContent","containsTextNodes","containsTextNodesWithLineBreaks","containsNonTextNodes","child","index","trim","indent","processElementNode","processProcessingIntruction","Error","trimmedContent","processContent","formatXml","xml","throwOnFailure","parsedXml","default","filter","strictMode","declaration","err","minify","assign","_regenerator","iterator","toStringTag","Generator","create","y","G","bind","l","TypeError","GeneratorFunction","GeneratorFunctionPrototype","setPrototypeOf","target","arguments","source","key","init","converter","defaultAttributes","set","document","expires","now","toUTCString","encodeURIComponent","decodeURIComponent","escape","stringifiedAttributes","attributeName","split","cookie","write","get","cookies","jar","parts","slice","found","read","remove","withAttributes","withConverter","freeze","dataTableCommonConfig","serverSide","processing","language","fixedHeader","lengthMenu","scrollCollapse","searchDelay","k","_typeof","isNaN","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","_extends","hasOwnProperty","apply","_regeneratorDefine","_invoke","enumerable","configurable","writable","ParsingError","message","cause","super","parsingState","nextChild","element","match","excluded","text","comment","endPositionStart","indexOf","endPositionFinish","substring","cdata","processingInstruction","nextRootChild","doctype","endMarkerIndex","matchRoot","eos","is","attribute","closingTag","val","re","prefix","parseXml","documentRootNode","parseDocument","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","definition","obj","prop","genSwhLink","browseUrl","Urls","browse_swhid","formattedSWHID","initDepositAdmin","username","isStaff","depositsTable","$","ready","fn","dataTable","ext","errMode","on","settings","techNote","DataTable","dom","ajax","admin_deposit_list","excludePattern","columns","render","row","sanitizedURL","display","swhLink","originLink","swhid_context","raw_metadata","JSON","stringify","orderable","visible","scrollX","order","html","parentNode","metadata","xmlFormat","escapedMetadata","swh","webapp","showModalHtml","id","highlightCode","keyup","draw","preventDefault","column","removeClass","addClass"],"sourceRoot":""}
|