@esri/hub-common 11.4.0 → 11.5.0
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.
- package/dist/esm/content/get-family.js +4 -1
- package/dist/esm/content/get-family.js.map +1 -1
- package/dist/esm/urls/index.js +1 -0
- package/dist/esm/urls/index.js.map +1 -1
- package/dist/esm/urls/is-safe-redirect-url.js +31 -0
- package/dist/esm/urls/is-safe-redirect-url.js.map +1 -0
- package/dist/node/content/get-family.js +4 -1
- package/dist/node/content/get-family.js.map +1 -1
- package/dist/node/urls/index.js +1 -0
- package/dist/node/urls/index.js.map +1 -1
- package/dist/node/urls/is-safe-redirect-url.js +35 -0
- package/dist/node/urls/is-safe-redirect-url.js.map +1 -0
- package/dist/types/urls/index.d.ts +1 -0
- package/dist/types/urls/is-safe-redirect-url.d.ts +14 -0
- package/package.json +1 -1
|
@@ -62,7 +62,10 @@ export function getFamilyTypes(family) {
|
|
|
62
62
|
]);
|
|
63
63
|
break;
|
|
64
64
|
case "template":
|
|
65
|
-
types =
|
|
65
|
+
types = [
|
|
66
|
+
...getCollectionTypes("template"),
|
|
67
|
+
...getCollectionTypes("solution"),
|
|
68
|
+
];
|
|
66
69
|
break;
|
|
67
70
|
case "dataset":
|
|
68
71
|
types = getCollectionTypes(family.toLowerCase()).filter((type) => type !== "Feature Collection Template" &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-family.js","sourceRoot":"","sources":["../../../src/content/get-family.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEnE,2BAA2B;AAC3B,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,MAAM,SAAS,GAAQ;QACrB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,UAAU;KACrB,CAAC;IACF,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,IAAI,MAAM,CAAC;IACX,8EAA8E;IAC9E,mVAAmV;IACnV,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE;QAC1B,KAAK,eAAe;YAClB,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;QACR,KAAK,iBAAiB,CAAC;QACvB,KAAK,cAAc;YACjB,sDAAsD;YACtD,MAAM,GAAG,KAAK,CAAC;YACf,MAAM;QACR,KAAK,iBAAiB;YACpB,MAAM,GAAG,UAAU,CAAC;YACpB,MAAM;QACR,KAAK,aAAa,CAAC;QACnB,KAAK,6BAA6B,CAAC;QACnC,KAAK,iBAAiB;YACpB,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;QACR,KAAK,aAAa;YAChB,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;QACR;YACE,oCAAoC;YACpC,MAAM,GAAG,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;KACpD;IACD,OAAO,MAAmB,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAiB;IAC9C,IAAI,KAAK,CAAC;IACV,8EAA8E;IAC9E,mVAAmV;IACnV,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE;QAC5B,KAAK,SAAS;YACZ,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACpC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;gBACnB,aAAa;gBACb,6BAA6B;gBAC7B,iBAAiB;aAClB,CAAC,CAAC;YACH,MAAM;QACR,KAAK,UAAU;YACb,KAAK,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"get-family.js","sourceRoot":"","sources":["../../../src/content/get-family.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/urls/index.js
CHANGED
|
@@ -19,6 +19,7 @@ export * from "./getPortalBaseFromOrgUrl";
|
|
|
19
19
|
export * from "./getGroupHomeUrl";
|
|
20
20
|
export * from "./getUserHomeUrl";
|
|
21
21
|
export * from "./get-campaign-url";
|
|
22
|
+
export * from "./is-safe-redirect-url";
|
|
22
23
|
const MAP_OR_FEATURE_SERVER_URL_REGEX = /\/(map|feature)server/i;
|
|
23
24
|
/**
|
|
24
25
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/urls/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/urls/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AAEvC,MAAM,+BAA+B,GAAG,wBAAwB,CAAC;AAEjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE;IACrD,OAAO,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAW,EAAE,EAAE;IACnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,YAAY,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC;AAC/D,CAAC,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { __rest } from "tslib";
|
|
2
|
+
import { domainExists } from "../sites/domains/domain-exists";
|
|
3
|
+
const SAFE_REDIRECT_URL = new RegExp("^https?:\\/\\/([a-z0-9-]+\\.)*(arcgis|esri)\\.com");
|
|
4
|
+
const HTTP_PROTOCOL = new RegExp("^https?:$");
|
|
5
|
+
/**
|
|
6
|
+
* Determines if a given URL is safe to redirect to.
|
|
7
|
+
* All URLs to *.esri.com and *.arcgis.com are considered
|
|
8
|
+
* safe. Non esri/arcgis domains must have a domain record.
|
|
9
|
+
* @param options.url url A URL
|
|
10
|
+
* @param ...options An IHubRequestOptions object
|
|
11
|
+
* @returns a promise that resolves a boolean
|
|
12
|
+
*/
|
|
13
|
+
export async function isSafeRedirectUrl(options) {
|
|
14
|
+
const { url } = options, hubRequestOptions = __rest(options, ["url"]);
|
|
15
|
+
let isSafe;
|
|
16
|
+
try {
|
|
17
|
+
isSafe = SAFE_REDIRECT_URL.test(url);
|
|
18
|
+
if (!isSafe) {
|
|
19
|
+
const { protocol, hostname } = new URL(url);
|
|
20
|
+
if (!HTTP_PROTOCOL.test(protocol)) {
|
|
21
|
+
throw new Error("invalid protocol");
|
|
22
|
+
}
|
|
23
|
+
isSafe = await domainExists(hostname, hubRequestOptions);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
isSafe = false;
|
|
28
|
+
}
|
|
29
|
+
return isSafe;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=is-safe-redirect-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-safe-redirect-url.js","sourceRoot":"","sources":["../../../src/urls/is-safe-redirect-url.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAClC,mDAAmD,CACpD,CAAC;AAEF,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;AAM9C;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAkC;IAElC,MAAM,EAAE,GAAG,KAA2B,OAAO,EAA7B,iBAAiB,UAAK,OAAO,EAAvC,OAA6B,CAAU,CAAC;IAC9C,IAAI,MAAM,CAAC;IACX,IAAI;QACF,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;aACrC;YACD,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;SAC1D;KACF;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,GAAG,KAAK,CAAC;KAChB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -66,7 +66,10 @@ function getFamilyTypes(family) {
|
|
|
66
66
|
]);
|
|
67
67
|
break;
|
|
68
68
|
case "template":
|
|
69
|
-
types =
|
|
69
|
+
types = [
|
|
70
|
+
...collections_1.getCollectionTypes("template"),
|
|
71
|
+
...collections_1.getCollectionTypes("solution"),
|
|
72
|
+
];
|
|
70
73
|
break;
|
|
71
74
|
case "dataset":
|
|
72
75
|
types = collections_1.getCollectionTypes(family.toLowerCase()).filter((type) => type !== "Feature Collection Template" &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-family.js","sourceRoot":"","sources":["../../../src/content/get-family.ts"],"names":[],"mappings":";;;AACA,gDAAmE;AAEnE,2BAA2B;AAC3B,SAAS,kBAAkB,CAAC,UAAkB;IAC5C,MAAM,SAAS,GAAQ;QACrB,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,UAAU;KACrB,CAAC;IACF,OAAO,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAgB,SAAS,CAAC,IAAY;IACpC,IAAI,MAAM,CAAC;IACX,8EAA8E;IAC9E,mVAAmV;IACnV,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE;QAC1B,KAAK,eAAe;YAClB,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;QACR,KAAK,iBAAiB,CAAC;QACvB,KAAK,cAAc;YACjB,sDAAsD;YACtD,MAAM,GAAG,KAAK,CAAC;YACf,MAAM;QACR,KAAK,iBAAiB;YACpB,MAAM,GAAG,UAAU,CAAC;YACpB,MAAM;QACR,KAAK,aAAa,CAAC;QACnB,KAAK,6BAA6B,CAAC;QACnC,KAAK,iBAAiB;YACpB,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;QACR,KAAK,aAAa;YAChB,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;QACR;YACE,oCAAoC;YACpC,MAAM,GAAG,kBAAkB,CAAC,2BAAa,CAAC,IAAI,CAAC,CAAC,CAAC;KACpD;IACD,OAAO,MAAmB,CAAC;AAC7B,CAAC;AA7BD,8BA6BC;AAED;;;;;GAKG;AACH,SAAgB,cAAc,CAAC,MAAiB;IAC9C,IAAI,KAAK,CAAC;IACV,8EAA8E;IAC9E,mVAAmV;IACnV,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE;QAC5B,KAAK,SAAS;YACZ,KAAK,GAAG,gCAAkB,CAAC,OAAO,CAAC,CAAC;YACpC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;gBACnB,aAAa;gBACb,6BAA6B;gBAC7B,iBAAiB;aAClB,CAAC,CAAC;YACH,MAAM;QACR,KAAK,UAAU;YACb,KAAK,GAAG,gCAAkB,CAAC,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"get-family.js","sourceRoot":"","sources":["../../../src/content/get-family.ts"],"names":[],"mappings":"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"}
|
package/dist/node/urls/index.js
CHANGED
|
@@ -23,6 +23,7 @@ tslib_1.__exportStar(require("./getPortalBaseFromOrgUrl"), exports);
|
|
|
23
23
|
tslib_1.__exportStar(require("./getGroupHomeUrl"), exports);
|
|
24
24
|
tslib_1.__exportStar(require("./getUserHomeUrl"), exports);
|
|
25
25
|
tslib_1.__exportStar(require("./get-campaign-url"), exports);
|
|
26
|
+
tslib_1.__exportStar(require("./is-safe-redirect-url"), exports);
|
|
26
27
|
const MAP_OR_FEATURE_SERVER_URL_REGEX = /\/(map|feature)server/i;
|
|
27
28
|
/**
|
|
28
29
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/urls/index.ts"],"names":[],"mappings":";;;;AAAA,kCAAqC;AACrC,sDAA4B;AAC5B,qEAA2C;AAC3C,+DAAqC;AACrC,2DAAiC;AACjC,2DAAiC;AACjC,6DAAmC;AACnC,2DAAiC;AACjC,qEAA2C;AAC3C,0DAAgC;AAChC,wEAA8C;AAC9C,oEAA0C;AAC1C,8DAAoC;AACpC,6DAAmC;AACnC,8DAAoC;AACpC,wEAA8C;AAC9C,mEAAyC;AACzC,oEAA0C;AAC1C,4DAAkC;AAClC,2DAAiC;AACjC,6DAAmC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/urls/index.ts"],"names":[],"mappings":";;;;AAAA,kCAAqC;AACrC,sDAA4B;AAC5B,qEAA2C;AAC3C,+DAAqC;AACrC,2DAAiC;AACjC,2DAAiC;AACjC,6DAAmC;AACnC,2DAAiC;AACjC,qEAA2C;AAC3C,0DAAgC;AAChC,wEAA8C;AAC9C,oEAA0C;AAC1C,8DAAoC;AACpC,6DAAmC;AACnC,8DAAoC;AACpC,wEAA8C;AAC9C,mEAAyC;AACzC,oEAA0C;AAC1C,4DAAkC;AAClC,2DAAiC;AACjC,6DAAmC;AACnC,iEAAuC;AAEvC,MAAM,+BAA+B,GAAG,wBAAwB,CAAC;AAEjE;;;;GAIG;AACU,QAAA,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE;IACrD,OAAO,+BAA+B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF;;;;;GAKG;AACU,QAAA,qBAAqB,GAAG,CAAC,GAAW,EAAE,EAAE;IACnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,YAAY,IAAI,GAAG,iBAAU,CAAC,YAAY,CAAC,UAAU,CAAC;AAC/D,CAAC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isSafeRedirectUrl = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const domain_exists_1 = require("../sites/domains/domain-exists");
|
|
6
|
+
const SAFE_REDIRECT_URL = new RegExp("^https?:\\/\\/([a-z0-9-]+\\.)*(arcgis|esri)\\.com");
|
|
7
|
+
const HTTP_PROTOCOL = new RegExp("^https?:$");
|
|
8
|
+
/**
|
|
9
|
+
* Determines if a given URL is safe to redirect to.
|
|
10
|
+
* All URLs to *.esri.com and *.arcgis.com are considered
|
|
11
|
+
* safe. Non esri/arcgis domains must have a domain record.
|
|
12
|
+
* @param options.url url A URL
|
|
13
|
+
* @param ...options An IHubRequestOptions object
|
|
14
|
+
* @returns a promise that resolves a boolean
|
|
15
|
+
*/
|
|
16
|
+
async function isSafeRedirectUrl(options) {
|
|
17
|
+
const { url } = options, hubRequestOptions = tslib_1.__rest(options, ["url"]);
|
|
18
|
+
let isSafe;
|
|
19
|
+
try {
|
|
20
|
+
isSafe = SAFE_REDIRECT_URL.test(url);
|
|
21
|
+
if (!isSafe) {
|
|
22
|
+
const { protocol, hostname } = new URL(url);
|
|
23
|
+
if (!HTTP_PROTOCOL.test(protocol)) {
|
|
24
|
+
throw new Error("invalid protocol");
|
|
25
|
+
}
|
|
26
|
+
isSafe = await domain_exists_1.domainExists(hostname, hubRequestOptions);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
isSafe = false;
|
|
31
|
+
}
|
|
32
|
+
return isSafe;
|
|
33
|
+
}
|
|
34
|
+
exports.isSafeRedirectUrl = isSafeRedirectUrl;
|
|
35
|
+
//# sourceMappingURL=is-safe-redirect-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-safe-redirect-url.js","sourceRoot":"","sources":["../../../src/urls/is-safe-redirect-url.ts"],"names":[],"mappings":";;;;AAAA,kEAA8D;AAG9D,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAClC,mDAAmD,CACpD,CAAC;AAEF,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC;AAM9C;;;;;;;GAOG;AACI,KAAK,UAAU,iBAAiB,CACrC,OAAkC;IAElC,MAAM,EAAE,GAAG,KAA2B,OAAO,EAA7B,iBAAiB,kBAAK,OAAO,EAAvC,OAA6B,CAAU,CAAC;IAC9C,IAAI,MAAM,CAAC;IACX,IAAI;QACF,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACjC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;aACrC;YACD,MAAM,GAAG,MAAM,4BAAY,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;SAC1D;KACF;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,GAAG,KAAK,CAAC;KAChB;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAlBD,8CAkBC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IHubRequestOptions } from "../types";
|
|
2
|
+
interface IIsSafeRedirectUrlOptions extends IHubRequestOptions {
|
|
3
|
+
url: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Determines if a given URL is safe to redirect to.
|
|
7
|
+
* All URLs to *.esri.com and *.arcgis.com are considered
|
|
8
|
+
* safe. Non esri/arcgis domains must have a domain record.
|
|
9
|
+
* @param options.url url A URL
|
|
10
|
+
* @param ...options An IHubRequestOptions object
|
|
11
|
+
* @returns a promise that resolves a boolean
|
|
12
|
+
*/
|
|
13
|
+
export declare function isSafeRedirectUrl(options: IIsSafeRedirectUrlOptions): Promise<boolean>;
|
|
14
|
+
export {};
|