@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.
@@ -62,7 +62,10 @@ export function getFamilyTypes(family) {
62
62
  ]);
63
63
  break;
64
64
  case "template":
65
- types = getCollectionTypes("solution");
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":"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"}
1
+ {"version":3,"file":"get-family.js","sourceRoot":"","sources":["../../../src/content/get-family.ts"],"names":[],"mappings":"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"}
@@ -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;AAEnC,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"}
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 = collections_1.getCollectionTypes("solution");
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":"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"}
1
+ {"version":3,"file":"get-family.js","sourceRoot":"","sources":["../../../src/content/get-family.ts"],"names":[],"mappings":"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"}
@@ -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;AAEnC,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"}
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"}
@@ -18,6 +18,7 @@ export * from "./getPortalBaseFromOrgUrl";
18
18
  export * from "./getGroupHomeUrl";
19
19
  export * from "./getUserHomeUrl";
20
20
  export * from "./get-campaign-url";
21
+ export * from "./is-safe-redirect-url";
21
22
  /**
22
23
  *
23
24
  * @param url
@@ -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 {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esri/hub-common",
3
- "version": "11.4.0",
3
+ "version": "11.5.0",
4
4
  "description": "Common TypeScript types and utility functions for @esri/hub.js.",
5
5
  "main": "dist/node/index.js",
6
6
  "module": "dist/esm/index.js",