@esri/hub-common 15.17.1 → 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.
- package/dist/esm/core/_internal/computeItemLinks.js +4 -1
- package/dist/esm/core/_internal/computeItemLinks.js.map +1 -1
- package/dist/esm/items/_internal/slugConverters.js +7 -4
- package/dist/esm/items/_internal/slugConverters.js.map +1 -1
- package/dist/esm/items/_internal/slugs.js +12 -3
- package/dist/esm/items/_internal/slugs.js.map +1 -1
- package/dist/esm/items/getItemIdentifier.js +10 -4
- package/dist/esm/items/getItemIdentifier.js.map +1 -1
- package/dist/esm/pages/_internal/computeLinks.js +8 -0
- package/dist/esm/pages/_internal/computeLinks.js.map +1 -1
- package/dist/node/core/_internal/computeItemLinks.js +4 -1
- package/dist/node/core/_internal/computeItemLinks.js.map +1 -1
- package/dist/node/items/_internal/slugConverters.js +9 -6
- package/dist/node/items/_internal/slugConverters.js.map +1 -1
- package/dist/node/items/_internal/slugs.js +13 -4
- package/dist/node/items/_internal/slugs.js.map +1 -1
- package/dist/node/items/getItemIdentifier.js +10 -4
- package/dist/node/items/getItemIdentifier.js.map +1 -1
- package/dist/node/pages/_internal/computeLinks.js +8 -0
- package/dist/node/pages/_internal/computeLinks.js.map +1 -1
- package/dist/types/items/_internal/slugConverters.d.ts +2 -0
- package/dist/types/items/_internal/slugs.d.ts +7 -0
- package/dist/types/items/getItemIdentifier.d.ts +1 -1
- package/package.json +1 -1
|
@@ -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,
|
|
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,
|
|
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(
|
|
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(
|
|
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,
|
|
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(`^((.*)${
|
|
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;
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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;
|
|
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;
|
|
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,
|
|
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,
|
|
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(
|
|
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(
|
|
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":";
|
|
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(`^((.*)${
|
|
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;
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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;
|
|
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;
|
|
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"}
|
|
@@ -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;
|