UNPKG

@esri/arcgis-rest-auth

Version:

Authentication helpers for @esri/arcgis-rest-js.

67 lines 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.canUseOnlineToken = exports.isFederated = exports.getOnlineEnvironment = exports.normalizeOnlinePortalUrl = exports.isOnline = void 0; var arcgis_rest_request_1 = require("@esri/arcgis-rest-request"); /** * Used to test if a URL is an ArcGIS Online URL */ var arcgisOnlineUrlRegex = /^https?:\/\/(\S+)\.arcgis\.com.+/; /** * Used to test if a URL is production ArcGIS Online Portal */ var arcgisOnlinePortalRegex = /^https?:\/\/(dev|devext|qa|qaext|www)\.arcgis\.com\/sharing\/rest+/; /** * Used to test if a URL is an ArcGIS Online Organization Portal */ var arcgisOnlineOrgPortalRegex = /^https?:\/\/(?:[a-z0-9-]+\.maps(dev|devext|qa|qaext)?)?.arcgis\.com\/sharing\/rest/; function isOnline(url) { return arcgisOnlineUrlRegex.test(url); } exports.isOnline = isOnline; function normalizeOnlinePortalUrl(portalUrl) { if (!arcgisOnlineUrlRegex.test(portalUrl)) { return portalUrl; } switch (getOnlineEnvironment(portalUrl)) { case "dev": return "https://devext.arcgis.com/sharing/rest"; case "qa": return "https://qaext.arcgis.com/sharing/rest"; default: return "https://www.arcgis.com/sharing/rest"; } } exports.normalizeOnlinePortalUrl = normalizeOnlinePortalUrl; function getOnlineEnvironment(url) { if (!arcgisOnlineUrlRegex.test(url)) { return null; } var match = url.match(arcgisOnlineUrlRegex); var subdomain = match[1].split(".").pop(); if (subdomain.includes("dev")) { return "dev"; } if (subdomain.includes("qa")) { return "qa"; } return "production"; } exports.getOnlineEnvironment = getOnlineEnvironment; function isFederated(owningSystemUrl, portalUrl) { var normalizedPortalUrl = arcgis_rest_request_1.cleanUrl(normalizeOnlinePortalUrl(portalUrl)).replace(/https?:\/\//, ""); var normalizedOwningSystemUrl = arcgis_rest_request_1.cleanUrl(owningSystemUrl).replace(/https?:\/\//, ""); return new RegExp(normalizedOwningSystemUrl, "i").test(normalizedPortalUrl); } exports.isFederated = isFederated; function canUseOnlineToken(portalUrl, requestUrl) { var portalIsOnline = isOnline(portalUrl); var requestIsOnline = isOnline(requestUrl); var portalEnv = getOnlineEnvironment(portalUrl); var requestEnv = getOnlineEnvironment(requestUrl); if (portalIsOnline && requestIsOnline && portalEnv === requestEnv) { return true; } return false; } exports.canUseOnlineToken = canUseOnlineToken; //# sourceMappingURL=federation-utils.js.map