@esri/hub-common 15.17.0 → 15.18.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.
@@ -18,8 +18,11 @@ export function computeItemLinks(item, requestOptions) {
18
18
  }
19
19
  return {
20
20
  self: getItemHomeUrl(item.id, requestOptions),
21
- siteRelative: getHubRelativeUrl(item.type, getItemIdentifier(item), item.typeKeywords),
21
+ siteRelative: getHubRelativeUrl(item.type,
22
+ // use slug if available, otherwise id
23
+ getItemIdentifier(item), item.typeKeywords),
22
24
  siteRelativeEntityType: getHubRelativeUrl(item.type),
25
+ // no SEO for workspace, so we always use id instead of slug
23
26
  workspaceRelative: getRelativeWorkspaceUrl(item.type, item.id),
24
27
  thumbnail: getItemThumbnailUrl(item, requestOptions, token),
25
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"computeItemLinks.js","sourceRoot":"","sources":["../../../../src/core/_internal/computeItemLinks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAW,EACX,cAA+B;IAE/B,IAAI,KAAa,CAAC;IAClB,IAAI,cAAc,CAAC,cAAc,EAAE;QACjC,MAAM,OAAO,GAAgB,cAAc,CAAC,cAA6B,CAAC;QAC1E,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KACvB;IAED,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC;QAC7C,YAAY,EAAE,iBAAiB,CAC7B,IAAI,CAAC,IAAI,EACT,iBAAiB,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,YAAY,CAClB;QACD,sBAAsB,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpD,iBAAiB,EAAE,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9D,SAAS,EAAE,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC;KAC5D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"computeItemLinks.js","sourceRoot":"","sources":["../../../../src/core/_internal/computeItemLinks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAW,EACX,cAA+B;IAE/B,IAAI,KAAa,CAAC;IAClB,IAAI,cAAc,CAAC,cAAc,EAAE;QACjC,MAAM,OAAO,GAAgB,cAAc,CAAC,cAA6B,CAAC;QAC1E,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KACvB;IAED,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC;QAC7C,YAAY,EAAE,iBAAiB,CAC7B,IAAI,CAAC,IAAI;QACT,sCAAsC;QACtC,iBAAiB,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,YAAY,CAClB;QACD,sBAAsB,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpD,4DAA4D;QAC5D,iBAAiB,EAAE,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9D,SAAS,EAAE,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC;KAC5D,CAAC;AACJ,CAAC"}
@@ -1,3 +1,6 @@
1
+ // TODO: use these const in other utils
2
+ export const SLUG_ORG_SEPARATOR_URI = "::";
3
+ export const SLUG_ORG_SEPARATOR_KEYWORD = "|";
1
4
  // TODO: work out how to unify content slug fns
2
5
  // https: github.com/Esri/hub.js/blob/master/packages/common/src/content/index.ts#L301-L348
3
6
  /**
@@ -7,8 +10,8 @@
7
10
  * @returns
8
11
  */
9
12
  export function uriSlugToKeywordSlug(slug) {
10
- if (slug.indexOf("::") > -1) {
11
- slug = slug.replace("::", "|");
13
+ if (slug.indexOf(SLUG_ORG_SEPARATOR_URI) > -1) {
14
+ slug = slug.replace(SLUG_ORG_SEPARATOR_URI, SLUG_ORG_SEPARATOR_KEYWORD);
12
15
  }
13
16
  return slug;
14
17
  }
@@ -18,8 +21,8 @@ export function uriSlugToKeywordSlug(slug) {
18
21
  * @returns
19
22
  */
20
23
  export function keywordSlugToUriSlug(slug) {
21
- if (slug.indexOf("|") > -1) {
22
- slug = slug.replace("|", "::");
24
+ if (slug.indexOf(SLUG_ORG_SEPARATOR_KEYWORD) > -1) {
25
+ slug = slug.replace(SLUG_ORG_SEPARATOR_KEYWORD, SLUG_ORG_SEPARATOR_URI);
23
26
  }
24
27
  return slug;
25
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"slugConverters.js","sourceRoot":"","sources":["../../../../src/items/_internal/slugConverters.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,2FAA2F;AAC3F;;;;;GAKG;AAEH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;QAC3B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAChC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD;;;;GAIG;AAEH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;QAC1B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAChC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"slugConverters.js","sourceRoot":"","sources":["../../../../src/items/_internal/slugConverters.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAC3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE9C,+CAA+C;AAC/C,2FAA2F;AAC3F;;;;;GAKG;AAEH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE;QAC7C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,0BAA0B,CAAC,CAAC;KACzE;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AACD;;;;GAIG;AAEH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,EAAE;QACjD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,sBAAsB,CAAC,CAAC;KACzE;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import { isGuid } from "../../utils/is-guid";
2
+ import { SLUG_ORG_SEPARATOR_KEYWORD, SLUG_ORG_SEPARATOR_URI, } from "./slugConverters";
2
3
  const SLUG_ID_SEPARATOR = "~";
3
- // TODO: use this const in other utils
4
- const SLUG_ORG_KEY_SEPARATOR = "::";
5
4
  const TYPEKEYWORD_MAX_LENGTH = 256;
6
5
  export const TYPEKEYWORD_SLUG_PREFIX = "slug";
7
6
  /**
@@ -53,7 +52,7 @@ export const parseIdentifier = (identifier) => {
53
52
  // otherwise try parsing id, slug, and org key from the identifier
54
53
  let slugParts;
55
54
  [slugParts, id] = identifier.split(SLUG_ID_SEPARATOR);
56
- const match = slugParts.match(new RegExp(`^((.*)${SLUG_ORG_KEY_SEPARATOR})?(.*)$`));
55
+ const match = slugParts.match(new RegExp(`^((.*)${SLUG_ORG_SEPARATOR_URI})?(.*)$`));
57
56
  // istanbul ignore next - I think that regex will always match at least the slug
58
57
  if (match) {
59
58
  orgKey = match[2];
@@ -66,4 +65,14 @@ export const parseIdentifier = (identifier) => {
66
65
  orgKey,
67
66
  };
68
67
  };
68
+ /**
69
+ * strip org key prefix from a slug and append an id
70
+ * @param slug
71
+ * @param id
72
+ * @returns
73
+ */
74
+ export const appendIdToSlug = (slug, id) => {
75
+ const slugWithoutOrgKey = slug.split(SLUG_ORG_SEPARATOR_KEYWORD).pop();
76
+ return `${slugWithoutOrgKey}${SLUG_ID_SEPARATOR}${id}`;
77
+ };
69
78
  //# sourceMappingURL=slugs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slugs.js","sourceRoot":"","sources":["../../../../src/items/_internal/slugs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,sCAAsC;AACtC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc,EAAE,UAAU,GAAG,CAAC;IACvE,uEAAuE;IACvE,0DAA0D;IAC1D,OAAO,CACL;QACE,kCAAkC;QAClC,uBAAuB;QACvB,yBAAyB;QACzB,MAAM,CAAC,WAAW,EAAE;QACpB,kCAAkC;QAClC,IAAI;KACL;SACE,IAAI,CAAC,GAAG,CAAC;SACT,SAAS,CAAC,CAAC,EAAE,sBAAsB,GAAG,UAAU,CAAC;QAClD,2BAA2B;SAC1B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,kEAAkE;SACjE,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,uBAAuB,KAAK,CAAC,EAAE,EAAE,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,MAAM,GAAG,GAAG,uBAAuB,IAAI,MAAM,GAAG,CAAC;IACvD,OAAO,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;AAChD,CAAC;AAWD;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAqB,EAAE;IACvE,IAAI,MAAM,CAAC;IACX,IAAI,IAAI,CAAC;IACT,+DAA+D;IAC/D,IAAI,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;IAC1C,IAAI,CAAC,EAAE,EAAE;QACP,kEAAkE;QAClE,IAAI,SAAS,CAAC;QACd,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAC3B,IAAI,MAAM,CAAC,SAAS,sBAAsB,SAAS,CAAC,CACrD,CAAC;QACF,gFAAgF;QAChF,IAAI,KAAK,EAAE;YACT,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACjB;KACF;IACD,OAAO;QACL,EAAE;QACF,IAAI;QACJ,MAAM;KACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"slugs.js","sourceRoot":"","sources":["../../../../src/items/_internal/slugs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,MAAc,EAAE,UAAU,GAAG,CAAC;IACvE,uEAAuE;IACvE,0DAA0D;IAC1D,OAAO,CACL;QACE,kCAAkC;QAClC,uBAAuB;QACvB,yBAAyB;QACzB,MAAM,CAAC,WAAW,EAAE;QACpB,kCAAkC;QAClC,IAAI;KACL;SACE,IAAI,CAAC,GAAG,CAAC;SACT,SAAS,CAAC,CAAC,EAAE,sBAAsB,GAAG,UAAU,CAAC;QAClD,2BAA2B;SAC1B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,kEAAkE;SACjE,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,uBAAuB,KAAK,CAAC,EAAE,EAAE,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,MAAM,GAAG,GAAG,uBAAuB,IAAI,MAAM,GAAG,CAAC;IACvD,OAAO,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;AAChD,CAAC;AAWD;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAqB,EAAE;IACvE,IAAI,MAAM,CAAC;IACX,IAAI,IAAI,CAAC;IACT,+DAA+D;IAC/D,IAAI,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;IAC1C,IAAI,CAAC,EAAE,EAAE;QACP,kEAAkE;QAClE,IAAI,SAAS,CAAC;QACd,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAC3B,IAAI,MAAM,CAAC,SAAS,sBAAsB,SAAS,CAAC,CACrD,CAAC;QACF,gFAAgF;QAChF,IAAI,KAAK,EAAE;YACT,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACjB;KACF;IACD,OAAO;QACL,EAAE;QACF,IAAI;QACJ,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAU,EAAU,EAAE;IACjE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAE,CAAC;IACvE,OAAO,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,EAAE,EAAE,CAAC;AACzD,CAAC,CAAC"}
@@ -1,12 +1,18 @@
1
1
  import { keywordSlugToUriSlug } from "./_internal/slugConverters";
2
+ import { appendIdToSlug } from "./_internal/slugs";
2
3
  /**
3
4
  * Consistent means to get an item's identifier - either the slug or the id
4
5
  * @param item
5
6
  * @returns
6
7
  */
7
- export function getItemIdentifier(item) {
8
- var _a;
9
- const slug = (_a = item.properties) === null || _a === void 0 ? void 0 : _a.slug;
10
- return slug ? keywordSlugToUriSlug(slug) : item.id;
8
+ export function getItemIdentifier(item,
9
+ // for backwards compatibility, we do not include the id in the slug by default
10
+ // once all of the routes have been updated to expect slugs w/ ids, we should always include the id
11
+ includeIdInSlug = false) {
12
+ const { id, properties } = item;
13
+ const slug = properties === null || properties === void 0 ? void 0 : properties.slug;
14
+ return slug
15
+ ? keywordSlugToUriSlug(includeIdInSlug ? appendIdToSlug(slug, id) : slug)
16
+ : id;
11
17
  }
12
18
  //# sourceMappingURL=getItemIdentifier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getItemIdentifier.js","sourceRoot":"","sources":["../../../src/items/getItemIdentifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAW;;IAC3C,MAAM,IAAI,SAAG,IAAI,CAAC,UAAU,0CAAE,IAAI,CAAC;IACnC,OAAO,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"getItemIdentifier.js","sourceRoot":"","sources":["../../../src/items/getItemIdentifier.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAW;AACX,+EAA+E;AAC/E,mGAAmG;AACnG,eAAe,GAAG,KAAK;IAEvB,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,IAAI,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC;IAC9B,OAAO,IAAI;QACT,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,CAAC,CAAC,EAAE,CAAC;AACT,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { computeItemLinks } from "../../core/_internal/computeItemLinks";
2
+ import { getHubRelativeUrl } from "../../content/_internal/internalContentUtils";
3
+ import { getItemIdentifier } from "../../items/getItemIdentifier";
2
4
  /**
3
5
  * Compute the links that get appended to a Hub Site
4
6
  * search result and entity
@@ -8,7 +10,13 @@ import { computeItemLinks } from "../../core/_internal/computeItemLinks";
8
10
  */
9
11
  export function computeLinks(item, requestOptions) {
10
12
  const links = computeItemLinks(item, requestOptions);
13
+ // re-compute the site relative link to include the id
14
+ // NOTE: when we expand this beyond pages we should drop this override
15
+ // and just pass true to getItemIdentifier in computeItemLinks
16
+ const siteRelative = getHubRelativeUrl(item.type, getItemIdentifier(item, true), item.typeKeywords);
11
17
  return Object.assign(Object.assign({}, links), {
18
+ // add id to site relative link
19
+ siteRelative,
12
20
  // add the layout relative link
13
21
  layoutRelative: `/pages/${item.id}/edit` });
14
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"computeLinks.js","sourceRoot":"","sources":["../../../../src/pages/_internal/computeLinks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAW,EACX,cAA+B;IAE/B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACrD,uCACK,KAAK;QACR,+BAA+B;QAC/B,cAAc,EAAE,UAAU,IAAI,CAAC,EAAE,OAAO,IACxC;AACJ,CAAC"}
1
+ {"version":3,"file":"computeLinks.js","sourceRoot":"","sources":["../../../../src/pages/_internal/computeLinks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAW,EACX,cAA+B;IAE/B,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACrD,sDAAsD;IACtD,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,YAAY,GAAG,iBAAiB,CACpC,IAAI,CAAC,IAAI,EACT,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAC7B,IAAI,CAAC,YAAY,CAClB,CAAC;IACF,uCACK,KAAK;QACR,+BAA+B;QAC/B,YAAY;QACZ,+BAA+B;QAC/B,cAAc,EAAE,UAAU,IAAI,CAAC,EAAE,OAAO,IACxC;AACJ,CAAC"}
@@ -21,8 +21,11 @@ function computeItemLinks(item, requestOptions) {
21
21
  }
22
22
  return {
23
23
  self: urls_1.getItemHomeUrl(item.id, requestOptions),
24
- siteRelative: internalContentUtils_1.getHubRelativeUrl(item.type, items_1.getItemIdentifier(item), item.typeKeywords),
24
+ siteRelative: internalContentUtils_1.getHubRelativeUrl(item.type,
25
+ // use slug if available, otherwise id
26
+ items_1.getItemIdentifier(item), item.typeKeywords),
25
27
  siteRelativeEntityType: internalContentUtils_1.getHubRelativeUrl(item.type),
28
+ // no SEO for workspace, so we always use id instead of slug
26
29
  workspaceRelative: getRelativeWorkspaceUrl_1.getRelativeWorkspaceUrl(item.type, item.id),
27
30
  thumbnail: get_item_thumbnail_url_1.getItemThumbnailUrl(item, requestOptions, token),
28
31
  };
@@ -1 +1 @@
1
- {"version":3,"file":"computeItemLinks.js","sourceRoot":"","sources":["../../../../src/core/_internal/computeItemLinks.ts"],"names":[],"mappings":";;;AAGA,qCAA4C;AAE5C,uCAAgD;AAChD,gFAA6E;AAC7E,mFAA6E;AAC7E,uFAAiF;AAEjF;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAC9B,IAAW,EACX,cAA+B;IAE/B,IAAI,KAAa,CAAC;IAClB,IAAI,cAAc,CAAC,cAAc,EAAE;QACjC,MAAM,OAAO,GAAgB,cAAc,CAAC,cAA6B,CAAC;QAC1E,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KACvB;IAED,OAAO;QACL,IAAI,EAAE,qBAAc,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC;QAC7C,YAAY,EAAE,wCAAiB,CAC7B,IAAI,CAAC,IAAI,EACT,yBAAiB,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,YAAY,CAClB;QACD,sBAAsB,EAAE,wCAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpD,iBAAiB,EAAE,iDAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9D,SAAS,EAAE,4CAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC;KAC5D,CAAC;AACJ,CAAC;AArBD,4CAqBC"}
1
+ {"version":3,"file":"computeItemLinks.js","sourceRoot":"","sources":["../../../../src/core/_internal/computeItemLinks.ts"],"names":[],"mappings":";;;AAGA,qCAA4C;AAE5C,uCAAgD;AAChD,gFAA6E;AAC7E,mFAA6E;AAC7E,uFAAiF;AAEjF;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAC9B,IAAW,EACX,cAA+B;IAE/B,IAAI,KAAa,CAAC;IAClB,IAAI,cAAc,CAAC,cAAc,EAAE;QACjC,MAAM,OAAO,GAAgB,cAAc,CAAC,cAA6B,CAAC;QAC1E,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;KACvB;IAED,OAAO;QACL,IAAI,EAAE,qBAAc,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC;QAC7C,YAAY,EAAE,wCAAiB,CAC7B,IAAI,CAAC,IAAI;QACT,sCAAsC;QACtC,yBAAiB,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,YAAY,CAClB;QACD,sBAAsB,EAAE,wCAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpD,4DAA4D;QAC5D,iBAAiB,EAAE,iDAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9D,SAAS,EAAE,4CAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,CAAC;KAC5D,CAAC;AACJ,CAAC;AAvBD,4CAuBC"}
@@ -1,4 +1,9 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.keywordSlugToUriSlug = exports.uriSlugToKeywordSlug = exports.SLUG_ORG_SEPARATOR_KEYWORD = exports.SLUG_ORG_SEPARATOR_URI = void 0;
4
+ // TODO: use these const in other utils
5
+ exports.SLUG_ORG_SEPARATOR_URI = "::";
6
+ exports.SLUG_ORG_SEPARATOR_KEYWORD = "|";
2
7
  // TODO: work out how to unify content slug fns
3
8
  // https: github.com/Esri/hub.js/blob/master/packages/common/src/content/index.ts#L301-L348
4
9
  /**
@@ -7,11 +12,9 @@
7
12
  * @param slug
8
13
  * @returns
9
14
  */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.keywordSlugToUriSlug = exports.uriSlugToKeywordSlug = void 0;
12
15
  function uriSlugToKeywordSlug(slug) {
13
- if (slug.indexOf("::") > -1) {
14
- slug = slug.replace("::", "|");
16
+ if (slug.indexOf(exports.SLUG_ORG_SEPARATOR_URI) > -1) {
17
+ slug = slug.replace(exports.SLUG_ORG_SEPARATOR_URI, exports.SLUG_ORG_SEPARATOR_KEYWORD);
15
18
  }
16
19
  return slug;
17
20
  }
@@ -22,8 +25,8 @@ exports.uriSlugToKeywordSlug = uriSlugToKeywordSlug;
22
25
  * @returns
23
26
  */
24
27
  function keywordSlugToUriSlug(slug) {
25
- if (slug.indexOf("|") > -1) {
26
- slug = slug.replace("|", "::");
28
+ if (slug.indexOf(exports.SLUG_ORG_SEPARATOR_KEYWORD) > -1) {
29
+ slug = slug.replace(exports.SLUG_ORG_SEPARATOR_KEYWORD, exports.SLUG_ORG_SEPARATOR_URI);
27
30
  }
28
31
  return slug;
29
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"slugConverters.js","sourceRoot":"","sources":["../../../../src/items/_internal/slugConverters.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,2FAA2F;AAC3F;;;;;GAKG;;;AAEH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;QAC3B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAChC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AALD,oDAKC;AACD;;;;GAIG;AAEH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;QAC1B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KAChC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AALD,oDAKC"}
1
+ {"version":3,"file":"slugConverters.js","sourceRoot":"","sources":["../../../../src/items/_internal/slugConverters.ts"],"names":[],"mappings":";;;AAAA,uCAAuC;AAC1B,QAAA,sBAAsB,GAAG,IAAI,CAAC;AAC9B,QAAA,0BAA0B,GAAG,GAAG,CAAC;AAE9C,+CAA+C;AAC/C,2FAA2F;AAC3F;;;;;GAKG;AAEH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,8BAAsB,CAAC,GAAG,CAAC,CAAC,EAAE;QAC7C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,8BAAsB,EAAE,kCAA0B,CAAC,CAAC;KACzE;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AALD,oDAKC;AACD;;;;GAIG;AAEH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,IAAI,IAAI,CAAC,OAAO,CAAC,kCAA0B,CAAC,GAAG,CAAC,CAAC,EAAE;QACjD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,kCAA0B,EAAE,8BAAsB,CAAC,CAAC;KACzE;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AALD,oDAKC"}
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.parseIdentifier = exports.getSlugMaxLength = exports.truncateSlug = exports.TYPEKEYWORD_SLUG_PREFIX = void 0;
3
+ exports.appendIdToSlug = exports.parseIdentifier = exports.getSlugMaxLength = exports.truncateSlug = exports.TYPEKEYWORD_SLUG_PREFIX = void 0;
4
4
  const is_guid_1 = require("../../utils/is-guid");
5
+ const slugConverters_1 = require("./slugConverters");
5
6
  const SLUG_ID_SEPARATOR = "~";
6
- // TODO: use this const in other utils
7
- const SLUG_ORG_KEY_SEPARATOR = "::";
8
7
  const TYPEKEYWORD_MAX_LENGTH = 256;
9
8
  exports.TYPEKEYWORD_SLUG_PREFIX = "slug";
10
9
  /**
@@ -58,7 +57,7 @@ exports.parseIdentifier = (identifier) => {
58
57
  // otherwise try parsing id, slug, and org key from the identifier
59
58
  let slugParts;
60
59
  [slugParts, id] = identifier.split(SLUG_ID_SEPARATOR);
61
- const match = slugParts.match(new RegExp(`^((.*)${SLUG_ORG_KEY_SEPARATOR})?(.*)$`));
60
+ const match = slugParts.match(new RegExp(`^((.*)${slugConverters_1.SLUG_ORG_SEPARATOR_URI})?(.*)$`));
62
61
  // istanbul ignore next - I think that regex will always match at least the slug
63
62
  if (match) {
64
63
  orgKey = match[2];
@@ -71,4 +70,14 @@ exports.parseIdentifier = (identifier) => {
71
70
  orgKey,
72
71
  };
73
72
  };
73
+ /**
74
+ * strip org key prefix from a slug and append an id
75
+ * @param slug
76
+ * @param id
77
+ * @returns
78
+ */
79
+ exports.appendIdToSlug = (slug, id) => {
80
+ const slugWithoutOrgKey = slug.split(slugConverters_1.SLUG_ORG_SEPARATOR_KEYWORD).pop();
81
+ return `${slugWithoutOrgKey}${SLUG_ID_SEPARATOR}${id}`;
82
+ };
74
83
  //# sourceMappingURL=slugs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slugs.js","sourceRoot":"","sources":["../../../../src/items/_internal/slugs.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAE7C,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,sCAAsC;AACtC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEtB,QAAA,uBAAuB,GAAG,MAAM,CAAC;AAE9C;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAC,IAAY,EAAE,MAAc,EAAE,UAAU,GAAG,CAAC;IACvE,uEAAuE;IACvE,0DAA0D;IAC1D,OAAO,CACL;QACE,kCAAkC;QAClC,+BAAuB;QACvB,yBAAyB;QACzB,MAAM,CAAC,WAAW,EAAE;QACpB,kCAAkC;QAClC,IAAI;KACL;SACE,IAAI,CAAC,GAAG,CAAC;SACT,SAAS,CAAC,CAAC,EAAE,sBAAsB,GAAG,UAAU,CAAC;QAClD,2BAA2B;SAC1B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,kEAAkE;SACjE,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,+BAAuB,KAAK,CAAC,EAAE,EAAE,CAAC,CAC7D,CAAC;AACJ,CAAC;AAnBD,oCAmBC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,MAAM,MAAM,GAAG,GAAG,+BAAuB,IAAI,MAAM,GAAG,CAAC;IACvD,OAAO,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;AAChD,CAAC;AAHD,4CAGC;AAWD;;;;GAIG;AACU,QAAA,eAAe,GAAG,CAAC,UAAkB,EAAqB,EAAE;IACvE,IAAI,MAAM,CAAC;IACX,IAAI,IAAI,CAAC;IACT,+DAA+D;IAC/D,IAAI,EAAE,GAAG,gBAAM,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;IAC1C,IAAI,CAAC,EAAE,EAAE;QACP,kEAAkE;QAClE,IAAI,SAAS,CAAC;QACd,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAC3B,IAAI,MAAM,CAAC,SAAS,sBAAsB,SAAS,CAAC,CACrD,CAAC;QACF,gFAAgF;QAChF,IAAI,KAAK,EAAE;YACT,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACjB;KACF;IACD,OAAO;QACL,EAAE;QACF,IAAI;QACJ,MAAM;KACP,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"slugs.js","sourceRoot":"","sources":["../../../../src/items/_internal/slugs.ts"],"names":[],"mappings":";;;AAAA,iDAA6C;AAC7C,qDAG0B;AAE1B,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAEtB,QAAA,uBAAuB,GAAG,MAAM,CAAC;AAE9C;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAC,IAAY,EAAE,MAAc,EAAE,UAAU,GAAG,CAAC;IACvE,uEAAuE;IACvE,0DAA0D;IAC1D,OAAO,CACL;QACE,kCAAkC;QAClC,+BAAuB;QACvB,yBAAyB;QACzB,MAAM,CAAC,WAAW,EAAE;QACpB,kCAAkC;QAClC,IAAI;KACL;SACE,IAAI,CAAC,GAAG,CAAC;SACT,SAAS,CAAC,CAAC,EAAE,sBAAsB,GAAG,UAAU,CAAC;QAClD,2BAA2B;SAC1B,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACnB,kEAAkE;SACjE,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,+BAAuB,KAAK,CAAC,EAAE,EAAE,CAAC,CAC7D,CAAC;AACJ,CAAC;AAnBD,oCAmBC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,MAAM,MAAM,GAAG,GAAG,+BAAuB,IAAI,MAAM,GAAG,CAAC;IACvD,OAAO,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;AAChD,CAAC;AAHD,4CAGC;AAWD;;;;GAIG;AACU,QAAA,eAAe,GAAG,CAAC,UAAkB,EAAqB,EAAE;IACvE,IAAI,MAAM,CAAC;IACX,IAAI,IAAI,CAAC;IACT,+DAA+D;IAC/D,IAAI,EAAE,GAAG,gBAAM,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;IAC1C,IAAI,CAAC,EAAE,EAAE;QACP,kEAAkE;QAClE,IAAI,SAAS,CAAC;QACd,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAC3B,IAAI,MAAM,CAAC,SAAS,uCAAsB,SAAS,CAAC,CACrD,CAAC;QACF,gFAAgF;QAChF,IAAI,KAAK,EAAE;YACT,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACjB;KACF;IACD,OAAO;QACL,EAAE;QACF,IAAI;QACJ,MAAM;KACP,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACU,QAAA,cAAc,GAAG,CAAC,IAAY,EAAE,EAAU,EAAU,EAAE;IACjE,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,2CAA0B,CAAC,CAAC,GAAG,EAAE,CAAC;IACvE,OAAO,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,EAAE,EAAE,CAAC;AACzD,CAAC,CAAC"}
@@ -2,15 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getItemIdentifier = void 0;
4
4
  const slugConverters_1 = require("./_internal/slugConverters");
5
+ const slugs_1 = require("./_internal/slugs");
5
6
  /**
6
7
  * Consistent means to get an item's identifier - either the slug or the id
7
8
  * @param item
8
9
  * @returns
9
10
  */
10
- function getItemIdentifier(item) {
11
- var _a;
12
- const slug = (_a = item.properties) === null || _a === void 0 ? void 0 : _a.slug;
13
- return slug ? slugConverters_1.keywordSlugToUriSlug(slug) : item.id;
11
+ function getItemIdentifier(item,
12
+ // for backwards compatibility, we do not include the id in the slug by default
13
+ // once all of the routes have been updated to expect slugs w/ ids, we should always include the id
14
+ includeIdInSlug = false) {
15
+ const { id, properties } = item;
16
+ const slug = properties === null || properties === void 0 ? void 0 : properties.slug;
17
+ return slug
18
+ ? slugConverters_1.keywordSlugToUriSlug(includeIdInSlug ? slugs_1.appendIdToSlug(slug, id) : slug)
19
+ : id;
14
20
  }
15
21
  exports.getItemIdentifier = getItemIdentifier;
16
22
  //# sourceMappingURL=getItemIdentifier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getItemIdentifier.js","sourceRoot":"","sources":["../../../src/items/getItemIdentifier.ts"],"names":[],"mappings":";;;AACA,+DAAkE;AAElE;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,IAAW;;IAC3C,MAAM,IAAI,SAAG,IAAI,CAAC,UAAU,0CAAE,IAAI,CAAC;IACnC,OAAO,IAAI,CAAC,CAAC,CAAC,qCAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACrD,CAAC;AAHD,8CAGC"}
1
+ {"version":3,"file":"getItemIdentifier.js","sourceRoot":"","sources":["../../../src/items/getItemIdentifier.ts"],"names":[],"mappings":";;;AACA,+DAAkE;AAClE,6CAAmD;AAEnD;;;;GAIG;AACH,SAAgB,iBAAiB,CAC/B,IAAW;AACX,+EAA+E;AAC/E,mGAAmG;AACnG,eAAe,GAAG,KAAK;IAEvB,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,IAAI,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,IAAI,CAAC;IAC9B,OAAO,IAAI;QACT,CAAC,CAAC,qCAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,sBAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAXD,8CAWC"}
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.computeLinks = void 0;
4
4
  const computeItemLinks_1 = require("../../core/_internal/computeItemLinks");
5
+ const internalContentUtils_1 = require("../../content/_internal/internalContentUtils");
6
+ const getItemIdentifier_1 = require("../../items/getItemIdentifier");
5
7
  /**
6
8
  * Compute the links that get appended to a Hub Site
7
9
  * search result and entity
@@ -11,7 +13,13 @@ const computeItemLinks_1 = require("../../core/_internal/computeItemLinks");
11
13
  */
12
14
  function computeLinks(item, requestOptions) {
13
15
  const links = computeItemLinks_1.computeItemLinks(item, requestOptions);
16
+ // re-compute the site relative link to include the id
17
+ // NOTE: when we expand this beyond pages we should drop this override
18
+ // and just pass true to getItemIdentifier in computeItemLinks
19
+ const siteRelative = internalContentUtils_1.getHubRelativeUrl(item.type, getItemIdentifier_1.getItemIdentifier(item, true), item.typeKeywords);
14
20
  return Object.assign(Object.assign({}, links), {
21
+ // add id to site relative link
22
+ siteRelative,
15
23
  // add the layout relative link
16
24
  layoutRelative: `/pages/${item.id}/edit` });
17
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"computeLinks.js","sourceRoot":"","sources":["../../../../src/pages/_internal/computeLinks.ts"],"names":[],"mappings":";;;AAGA,4EAAyE;AAEzE;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,IAAW,EACX,cAA+B;IAE/B,MAAM,KAAK,GAAG,mCAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACrD,uCACK,KAAK;QACR,+BAA+B;QAC/B,cAAc,EAAE,UAAU,IAAI,CAAC,EAAE,OAAO,IACxC;AACJ,CAAC;AAVD,oCAUC"}
1
+ {"version":3,"file":"computeLinks.js","sourceRoot":"","sources":["../../../../src/pages/_internal/computeLinks.ts"],"names":[],"mappings":";;;AAGA,4EAAyE;AACzE,uFAAiF;AACjF,qEAAkE;AAElE;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,IAAW,EACX,cAA+B;IAE/B,MAAM,KAAK,GAAG,mCAAgB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACrD,sDAAsD;IACtD,sEAAsE;IACtE,8DAA8D;IAC9D,MAAM,YAAY,GAAG,wCAAiB,CACpC,IAAI,CAAC,IAAI,EACT,qCAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAC7B,IAAI,CAAC,YAAY,CAClB,CAAC;IACF,uCACK,KAAK;QACR,+BAA+B;QAC/B,YAAY;QACZ,+BAA+B;QAC/B,cAAc,EAAE,UAAU,IAAI,CAAC,EAAE,OAAO,IACxC;AACJ,CAAC;AApBD,oCAoBC"}
@@ -838,7 +838,7 @@ export interface ISearchChannels extends Partial<IPagingParams>, Partial<IWithSo
838
838
  access?: SharingAccess[];
839
839
  relations?: ChannelRelation[];
840
840
  name?: string;
841
- orgId?: string;
841
+ orgIds?: string[];
842
842
  discussion?: string;
843
843
  }
844
844
  /**
@@ -1,3 +1,5 @@
1
+ export declare const SLUG_ORG_SEPARATOR_URI = "::";
2
+ export declare const SLUG_ORG_SEPARATOR_KEYWORD = "|";
1
3
  /**
2
4
  * Uri slugs have `::` as a separator, but we need to use `|` in the typeKeywords. This function
3
5
  * converts a uri slug to a typeKeyword slug.
@@ -25,3 +25,10 @@ export interface IParsedIdentifier {
25
25
  * @returns
26
26
  */
27
27
  export declare const parseIdentifier: (identifier: string) => IParsedIdentifier;
28
+ /**
29
+ * strip org key prefix from a slug and append an id
30
+ * @param slug
31
+ * @param id
32
+ * @returns
33
+ */
34
+ export declare const appendIdToSlug: (slug: string, id: string) => string;
@@ -4,4 +4,4 @@ import { IItem } from "@esri/arcgis-rest-portal";
4
4
  * @param item
5
5
  * @returns
6
6
  */
7
- export declare function getItemIdentifier(item: IItem): string;
7
+ export declare function getItemIdentifier(item: IItem, includeIdInSlug?: boolean): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esri/hub-common",
3
- "version": "15.17.0",
3
+ "version": "15.18.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",