UNPKG

r2-navigator-js

Version:

Readium 2 'navigator' for NodeJS (TypeScript)

44 lines 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertCustomSchemeToHttpUrl = exports.convertHttpUrlToCustomScheme = exports.READIUM2_ELECTRON_HTTP_PROTOCOL = exports.R2_SESSION_WEBVIEW = void 0; exports.R2_SESSION_WEBVIEW = "persist:readium2pubwebview"; const UrlUtils_1 = require("r2-utils-js/dist/es7-es2016/src/_utils/http/UrlUtils"); exports.READIUM2_ELECTRON_HTTP_PROTOCOL = "httpsr2"; const convertHttpUrlToCustomScheme = (url) => { const matches = url.match(/(https?|thoriumhttps):\/\/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)(?::([0-9]+))?\/pub\/([^\/]+)(\/.*)?/); if (matches && matches.length > 1) { const idMatch = matches[4]; const decoded = decodeURIComponent(idMatch); const pubID = decoded.replace(/([A-Z])/g, (match) => { const ret = "_" + match.toLowerCase(); return ret; }).replace(/=/g, "-").replace(/\//g, "."); const url_ = exports.READIUM2_ELECTRON_HTTP_PROTOCOL + "://" + "id" + pubID + "/x" + matches[1] + "/ip" + matches[2] + "/p" + (matches[3] ? matches[3] : "") + matches[5]; return url_; } return url; }; exports.convertHttpUrlToCustomScheme = convertHttpUrlToCustomScheme; const convertCustomSchemeToHttpUrl = (url) => { let url_ = url.replace(exports.READIUM2_ELECTRON_HTTP_PROTOCOL + "://", ""); const matches = url_.match(/id([^\/]+)\/x(https?|thoriumhttps)\/ip([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\/p([0-9]+)?(\/.*)?/); if (matches && matches.length > 1) { const pubID = (0, UrlUtils_1.encodeURIComponent_RFC3986)(matches[1].replace(/-/g, "=").replace(/\./g, "\/").replace(/(_[a-zA-Z])/g, (match) => { const ret = match.substr(1).toUpperCase(); return ret; })); url_ = matches[2] + "://" + matches[3] + (matches[4] ? (":" + matches[4]) : "") + "/pub/" + pubID + matches[5]; return url_; } return url; }; exports.convertCustomSchemeToHttpUrl = convertCustomSchemeToHttpUrl; //# sourceMappingURL=sessions.js.map