@remkoj/optimizely-graph-client 6.0.0-pre8 → 6.0.0-rc.1
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/LICENSE +12 -12
- package/README.md +5 -1
- package/dist/admin-api/client/OptimizelyGraphAdminApi.d.ts +2 -0
- package/dist/admin-api/client/OptimizelyGraphAdminApi.js +3 -1
- package/dist/admin-api/client/OptimizelyGraphAdminApi.js.map +1 -1
- package/dist/admin-api/client/core/OpenAPI.js +1 -1
- package/dist/admin-api/client/index.d.ts +8 -0
- package/dist/admin-api/client/index.js +1 -0
- package/dist/admin-api/client/index.js.map +1 -1
- package/dist/admin-api/client/models/Partial_PinnedCollectionPayload_.d.ts +8 -0
- package/dist/admin-api/client/models/Partial_PinnedCollectionPayload_.js +2 -0
- package/dist/admin-api/client/models/Partial_PinnedCollectionPayload_.js.map +1 -0
- package/dist/admin-api/client/models/PinnedCollectionPayload.d.ts +5 -0
- package/dist/admin-api/client/models/PinnedCollectionPayload.js +2 -0
- package/dist/admin-api/client/models/PinnedCollectionPayload.js.map +1 -0
- package/dist/admin-api/client/models/PinnedCollectionResult.d.ts +8 -0
- package/dist/admin-api/client/models/PinnedCollectionResult.js +2 -0
- package/dist/admin-api/client/models/PinnedCollectionResult.js.map +1 -0
- package/dist/admin-api/client/models/PinnedItemPayload.d.ts +27 -0
- package/dist/admin-api/client/models/PinnedItemPayload.js +2 -0
- package/dist/admin-api/client/models/PinnedItemPayload.js.map +1 -0
- package/dist/admin-api/client/models/PinnedItemResult.d.ts +31 -0
- package/dist/admin-api/client/models/PinnedItemResult.js +2 -0
- package/dist/admin-api/client/models/PinnedItemResult.js.map +1 -0
- package/dist/admin-api/client/models/PinnedResultMatchParams.d.ts +8 -0
- package/dist/admin-api/client/models/PinnedResultMatchParams.js +2 -0
- package/dist/admin-api/client/models/PinnedResultMatchParams.js.map +1 -0
- package/dist/admin-api/client/models/Response.d.ts +6 -0
- package/dist/admin-api/client/models/Response.js +2 -0
- package/dist/admin-api/client/models/Response.js.map +1 -0
- package/dist/admin-api/client/services/BestBetsService.d.ts +4 -0
- package/dist/admin-api/client/services/BestBetsService.js +4 -0
- package/dist/admin-api/client/services/BestBetsService.js.map +1 -1
- package/dist/admin-api/client/services/PinnedResultsService.d.ts +118 -0
- package/dist/admin-api/client/services/PinnedResultsService.js +221 -0
- package/dist/admin-api/client/services/PinnedResultsService.js.map +1 -0
- package/dist/admin-api/client/services/ResourcesService.d.ts +11 -0
- package/dist/admin-api/client/services/ResourcesService.js +20 -0
- package/dist/admin-api/client/services/ResourcesService.js.map +1 -1
- package/dist/admin-api/index.d.ts +9 -0
- package/dist/admin-api/index.js +14 -0
- package/dist/admin-api/index.js.map +1 -1
- package/dist/client/client.d.ts +3 -0
- package/dist/client/client.js +21 -7
- package/dist/client/client.js.map +1 -1
- package/dist/client/types.d.ts +15 -0
- package/dist/config.d.ts +7 -0
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/services/channel-repository/definition.d.ts +8 -1
- package/dist/services/channel-repository/definition.js +12 -5
- package/dist/services/channel-repository/definition.js.map +1 -1
- package/dist/services/channel-repository/queries.js +88 -88
- package/dist/services/routing/queries/cms12/index.d.ts +2 -0
- package/dist/services/routing/queries/cms12/index.js +3 -0
- package/dist/services/routing/queries/cms12/index.js.map +1 -1
- package/dist/services/routing/queries/cms13/getAllRoutes.d.ts +2 -15
- package/dist/services/routing/queries/cms13/getAllRoutes.js +4 -1
- package/dist/services/routing/queries/cms13/getAllRoutes.js.map +1 -1
- package/dist/services/routing/queries/cms13/getRouteById.d.ts +2 -1
- package/dist/services/routing/queries/cms13/getRouteById.js +8 -4
- package/dist/services/routing/queries/cms13/getRouteById.js.map +1 -1
- package/dist/services/routing/queries/cms13/getRouteByPath.d.ts +5 -3
- package/dist/services/routing/queries/cms13/getRouteByPath.js +6 -3
- package/dist/services/routing/queries/cms13/getRouteByPath.js.map +1 -1
- package/dist/services/routing/queries/cms13/index.d.ts +4 -2
- package/dist/services/routing/queries/cms13/index.js +122 -26
- package/dist/services/routing/queries/cms13/index.js.map +1 -1
- package/dist/services/routing/queries/cms13/types.d.ts +18 -0
- package/dist/services/routing/queries/cms13/types.js +2 -0
- package/dist/services/routing/queries/cms13/types.js.map +1 -0
- package/dist/services/routing/queries/types.d.ts +4 -2
- package/dist/services/routing/resolver.d.ts +11 -7
- package/dist/services/routing/resolver.js +17 -9
- package/dist/services/routing/resolver.js.map +1 -1
- package/dist/services/routing/types.d.ts +23 -4
- package/dist/services/types.d.ts +7 -0
- package/dist/services/utils.d.ts +4 -3
- package/dist/services/utils.js +20 -11
- package/dist/services/utils.js.map +1 -1
- package/dist/version.d.ts +4 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/package.json +11 -10
|
@@ -1,93 +1,93 @@
|
|
|
1
1
|
import { gql } from 'graphql-request';
|
|
2
|
-
export const getAll = gql `query GetAllChannels {
|
|
3
|
-
GetAllChannels:SiteDefinition {
|
|
4
|
-
channels: items {
|
|
5
|
-
id: Id
|
|
6
|
-
name: Name,
|
|
7
|
-
domains: Hosts {
|
|
8
|
-
name: Name
|
|
9
|
-
type: Type
|
|
10
|
-
forLocale: Language {
|
|
11
|
-
code: Name
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
locales:Languages {
|
|
15
|
-
code:Name
|
|
16
|
-
slug:UrlSegment
|
|
17
|
-
isDefault:IsMasterLanguage
|
|
18
|
-
}
|
|
19
|
-
content: ContentRoots {
|
|
20
|
-
startPage: StartPage {
|
|
21
|
-
id:Id,
|
|
22
|
-
guidValue:GuidValue
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
2
|
+
export const getAll = gql `query GetAllChannels {
|
|
3
|
+
GetAllChannels:SiteDefinition {
|
|
4
|
+
channels: items {
|
|
5
|
+
id: Id
|
|
6
|
+
name: Name,
|
|
7
|
+
domains: Hosts {
|
|
8
|
+
name: Name
|
|
9
|
+
type: Type
|
|
10
|
+
forLocale: Language {
|
|
11
|
+
code: Name
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
locales:Languages {
|
|
15
|
+
code:Name
|
|
16
|
+
slug:UrlSegment
|
|
17
|
+
isDefault:IsMasterLanguage
|
|
18
|
+
}
|
|
19
|
+
content: ContentRoots {
|
|
20
|
+
startPage: StartPage {
|
|
21
|
+
id:Id,
|
|
22
|
+
guidValue:GuidValue
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
27
|
}`;
|
|
28
|
-
export const getById = gql `query GetChannelById($id: String!) {
|
|
29
|
-
GetChannelById:SiteDefinition (
|
|
30
|
-
where: {
|
|
31
|
-
Id: { eq: $id }
|
|
32
|
-
}
|
|
33
|
-
limit: 1
|
|
34
|
-
) {
|
|
35
|
-
channels: items {
|
|
36
|
-
id: Id
|
|
37
|
-
name: Name,
|
|
38
|
-
domains: Hosts {
|
|
39
|
-
name: Name
|
|
40
|
-
type: Type
|
|
41
|
-
forLocale: Language {
|
|
42
|
-
code: Name
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
locales:Languages {
|
|
46
|
-
code:Name
|
|
47
|
-
slug:UrlSegment
|
|
48
|
-
isDefault:IsMasterLanguage
|
|
49
|
-
}
|
|
50
|
-
content: ContentRoots {
|
|
51
|
-
startPage: StartPage {
|
|
52
|
-
id:Id,
|
|
53
|
-
guidValue:GuidValue
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
28
|
+
export const getById = gql `query GetChannelById($id: String!) {
|
|
29
|
+
GetChannelById:SiteDefinition (
|
|
30
|
+
where: {
|
|
31
|
+
Id: { eq: $id }
|
|
32
|
+
}
|
|
33
|
+
limit: 1
|
|
34
|
+
) {
|
|
35
|
+
channels: items {
|
|
36
|
+
id: Id
|
|
37
|
+
name: Name,
|
|
38
|
+
domains: Hosts {
|
|
39
|
+
name: Name
|
|
40
|
+
type: Type
|
|
41
|
+
forLocale: Language {
|
|
42
|
+
code: Name
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
locales:Languages {
|
|
46
|
+
code:Name
|
|
47
|
+
slug:UrlSegment
|
|
48
|
+
isDefault:IsMasterLanguage
|
|
49
|
+
}
|
|
50
|
+
content: ContentRoots {
|
|
51
|
+
startPage: StartPage {
|
|
52
|
+
id:Id,
|
|
53
|
+
guidValue:GuidValue
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
58
|
}`;
|
|
59
|
-
export const getByDomain = gql `query GetChannelByDomain($domain: String!, $fallback: String! = "___") {
|
|
60
|
-
GetChannelByDomain:SiteDefinition (
|
|
61
|
-
where: {
|
|
62
|
-
_or: [
|
|
63
|
-
{Hosts: { Name: { eq: $domain }}},
|
|
64
|
-
{Hosts: { Name: { eq: $fallback }}}
|
|
65
|
-
]
|
|
66
|
-
}
|
|
67
|
-
limit: 1
|
|
68
|
-
) {
|
|
69
|
-
channels: items {
|
|
70
|
-
id: Id
|
|
71
|
-
name: Name,
|
|
72
|
-
domains: Hosts {
|
|
73
|
-
name: Name
|
|
74
|
-
type: Type
|
|
75
|
-
forLocale: Language {
|
|
76
|
-
code: Name
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
locales:Languages {
|
|
80
|
-
code:Name
|
|
81
|
-
slug:UrlSegment
|
|
82
|
-
isDefault:IsMasterLanguage
|
|
83
|
-
}
|
|
84
|
-
content: ContentRoots {
|
|
85
|
-
startPage: StartPage {
|
|
86
|
-
id:Id,
|
|
87
|
-
guidValue:GuidValue
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
59
|
+
export const getByDomain = gql `query GetChannelByDomain($domain: String!, $fallback: String! = "___") {
|
|
60
|
+
GetChannelByDomain:SiteDefinition (
|
|
61
|
+
where: {
|
|
62
|
+
_or: [
|
|
63
|
+
{Hosts: { Name: { eq: $domain }}},
|
|
64
|
+
{Hosts: { Name: { eq: $fallback }}}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
limit: 1
|
|
68
|
+
) {
|
|
69
|
+
channels: items {
|
|
70
|
+
id: Id
|
|
71
|
+
name: Name,
|
|
72
|
+
domains: Hosts {
|
|
73
|
+
name: Name
|
|
74
|
+
type: Type
|
|
75
|
+
forLocale: Language {
|
|
76
|
+
code: Name
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
locales:Languages {
|
|
80
|
+
code:Name
|
|
81
|
+
slug:UrlSegment
|
|
82
|
+
isDefault:IsMasterLanguage
|
|
83
|
+
}
|
|
84
|
+
content: ContentRoots {
|
|
85
|
+
startPage: StartPage {
|
|
86
|
+
id:Id,
|
|
87
|
+
guidValue:GuidValue
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
92
|
}`;
|
|
93
93
|
//# sourceMappingURL=queries.js.map
|
|
@@ -2,12 +2,14 @@ import * as GetAllRoutes from './getAllRoutes.js';
|
|
|
2
2
|
import type { Route } from '../../types.js';
|
|
3
3
|
import { type IOptiGraphClient as GraphQLClient } from '../../../../client/types.js';
|
|
4
4
|
import { type OptimizelyCmsRoutingApi } from '../types.js';
|
|
5
|
+
import { AnyContentLink } from '../../../types.js';
|
|
5
6
|
export declare class OptimizelyCms12Client implements OptimizelyCmsRoutingApi {
|
|
6
7
|
enablePreview(): void;
|
|
7
8
|
disablePreview(): void;
|
|
8
9
|
getRoutes(client: GraphQLClient, siteId?: string): Promise<Route[]>;
|
|
9
10
|
getRouteByPath(client: GraphQLClient, path: string, siteId?: string): Promise<undefined | Route>;
|
|
10
11
|
getRouteById(client: GraphQLClient, contentId: string, locale: string, version: string | number): Promise<undefined | Route>;
|
|
12
|
+
getRouteByLink(client: GraphQLClient, contentLink: AnyContentLink): Promise<undefined | Route>;
|
|
11
13
|
protected parseIdString(id: string): [number, number | null];
|
|
12
14
|
protected convertResponse(item: GetAllRoutes.Route): Route;
|
|
13
15
|
protected tryConvertResponse(item: GetAllRoutes.Route): Route | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/routing/queries/cms12/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/routing/queries/cms12/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAMrD,MAAM,OAAO,qBAAqB;IAEhC,aAAa;QACX,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IAED,cAAc;QACZ,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAqB,EAAE,MAAe;QACpD,MAAM,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,KAAK,CAAA,kBAAkB,EAAE,EAAE,IAAI,CAAC,CAAA;QACjE,IAAI,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAA8C,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAA;QAChI,IAAI,OAAO,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAA;QACxC,MAAM,UAAU,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,CAAA;QAE1C,IAAI,UAAU,GAAG,CAAC,IAAI,MAAM,KAAK,EAAE,IAAI,UAAU,GAAG,OAAO,CAAC,MAAM;YAChE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;gBAC9E,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAA8C;oBACvE,QAAQ,EAAE,YAAY,CAAC,KAAK;oBAC5B,SAAS,EAAE;wBACT,MAAM;wBACN,MAAM;wBACN,UAAU,EAAE,MAAM;qBACnB;iBACF,CAAC,CAAA;gBACF,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAA;YACrD,CAAC;QAEH,MAAM,CAAC,YAAY,EAAE,CAAA;QACrB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;IAC1F,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAqB,EAAE,IAAY,EAAE,MAAe;QACvE,IAAI,MAAM,CAAC,KAAK;YACd,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;QAEjG,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAAkD;YACtF,QAAQ,EAAE,cAAc,CAAC,KAAK;YAC9B,SAAS,EAAE;gBACT,IAAI;gBACJ,MAAM;aACP;SACF,CAAC,CAAA;QAEF,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YAClD,IAAI,MAAM,CAAC,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC5D,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;QAE9F,IAAI,MAAM,CAAC,KAAK;YACd,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QAElF,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,MAAqB,EAAE,SAAiB,EAAE,MAAc,EAAE,OAAwB;QACnG,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAClD,MAAM,SAAS,GAA2B;YACxC,EAAE;YACF,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;SACpC,CAAA;QAED,IAAI,MAAM,CAAC,KAAK;YACd,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAA;QAEpE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,OAAO,CAA8C;YAClF,QAAQ,EAAE,YAAY,CAAC,KAAK;YAC5B,SAAS;SACV,CAAC,CAAA;QAEF,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC1N,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACzD,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,MAAqB,EAAE,WAA2B;QACrE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;IAES,aAAa,CAAC,EAAU;QAChC,IAAI,GAAG,GAAW,CAAC,CAAC,CAAA;QACpB,IAAI,MAAM,GAAkB,IAAI,CAAA;QAChC,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACpC,IAAI,CAAC;oBACH,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBAC/B,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,CAAC,CAAC,CAAA;gBACX,CAAC;YACH,CAAC,CAAC,CAAA;YACF,IAAI,MAAM,GAAG,CAAC;gBACZ,MAAM,GAAG,IAAI,CAAA;QACjB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,GAAG,CAAC,CAAC,CAAA;YACV,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IACtB,CAAC;IAES,eAAe,CAAC,IAAwB;QAChD,OAAO;YACL,wBAAwB;YACxB,GAAG,IAAI;YAEP,sCAAsC;YACtC,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YACtB,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE;YACtC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;YAC7C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACxB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;SACtD,CAAA;IACH,CAAC;IAES,kBAAkB,CAAC,IAAwB;QACnD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QACnC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;YACtE,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IAES,oBAAoB,CAAI,KAA2B;QAC3D,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,SAAS,CAAA;IAC5C,CAAC;CACF;AAED,eAAe,qBAAqB,CAAA"}
|
|
@@ -1,18 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
_metadata: {
|
|
3
|
-
key: string;
|
|
4
|
-
version: string;
|
|
5
|
-
locale: string;
|
|
6
|
-
displayName: string;
|
|
7
|
-
types: Array<string>;
|
|
8
|
-
url: {
|
|
9
|
-
path: string;
|
|
10
|
-
domain: string;
|
|
11
|
-
};
|
|
12
|
-
slug?: string | null;
|
|
13
|
-
};
|
|
14
|
-
changed: string;
|
|
15
|
-
};
|
|
1
|
+
import type { Route, VariationInput } from "./types.js";
|
|
16
2
|
export type Result = {
|
|
17
3
|
Content: {
|
|
18
4
|
items: Route[];
|
|
@@ -26,5 +12,6 @@ export type Variables = {
|
|
|
26
12
|
domain?: string;
|
|
27
13
|
mustHaveDomain?: boolean | null;
|
|
28
14
|
changeset?: string | null;
|
|
15
|
+
variation?: VariationInput | null;
|
|
29
16
|
};
|
|
30
17
|
export declare const query: string;
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { gql } from "graphql-request";
|
|
2
|
-
export const query = gql `query GetAllRoutes($skip: Int = 0, $pageSize: Int = 100, $typeFilter: [String] = "_Page", $domain: String, $mustHaveDomain: Boolean, $changeset: String) {
|
|
2
|
+
export const query = gql `query GetAllRoutes($skip: Int = 0, $pageSize: Int = 100, $typeFilter: [String] = "_Page", $domain: String, $mustHaveDomain: Boolean, $changeset: String, $variation:VariationInput) {
|
|
3
3
|
Content: _Page(
|
|
4
4
|
where: {
|
|
5
5
|
_metadata: {
|
|
6
6
|
url: { default: { exist: true }, base: { eq: $domain, exist: $mustHaveDomain } }
|
|
7
7
|
types: { in: $typeFilter }
|
|
8
8
|
changeset: { eq: $changeset }
|
|
9
|
+
status: { eq: "Published" }
|
|
9
10
|
}
|
|
10
11
|
}
|
|
12
|
+
variation: $variation
|
|
11
13
|
limit: $pageSize
|
|
12
14
|
skip: $skip
|
|
13
15
|
) {
|
|
@@ -19,6 +21,7 @@ export const query = gql `query GetAllRoutes($skip: Int = 0, $pageSize: Int = 10
|
|
|
19
21
|
locale
|
|
20
22
|
displayName
|
|
21
23
|
types
|
|
24
|
+
variation
|
|
22
25
|
url {
|
|
23
26
|
path: default
|
|
24
27
|
domain: base
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAllRoutes.js","sourceRoot":"","sources":["../../../../../src/services/routing/queries/cms13/getAllRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"getAllRoutes.js","sourceRoot":"","sources":["../../../../../src/services/routing/queries/cms13/getAllRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAoBrC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCtB,CAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { type Route } from "./
|
|
1
|
+
import { VariationInput, type Route } from "./types.js";
|
|
2
2
|
export type Variables = {
|
|
3
3
|
key: string;
|
|
4
4
|
version?: string | null;
|
|
5
5
|
locale?: Array<string | null> | string | null;
|
|
6
6
|
changeset?: string | null;
|
|
7
|
+
variation?: VariationInput | null;
|
|
7
8
|
};
|
|
8
9
|
export type Result = {
|
|
9
10
|
Content: {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { gql } from "graphql-request";
|
|
2
|
-
export const query = gql `query GetRouteById($key: String!, $version: String, $locale: [Locales], $changeset: String) {
|
|
2
|
+
export const query = gql `query GetRouteById($key: [String!]!, $version: String, $locale: [Locales], $changeset: String, $variation:VariationInput) {
|
|
3
3
|
Content: _Content(
|
|
4
|
+
ids: $key
|
|
5
|
+
locale: $locale
|
|
6
|
+
variation: $variation
|
|
4
7
|
where: {
|
|
5
|
-
_metadata: {
|
|
8
|
+
_metadata: { changeset: { eq: $changeset }, version: { eq: $version } }
|
|
6
9
|
}
|
|
7
|
-
locale: $locale
|
|
8
10
|
) {
|
|
9
11
|
total
|
|
10
12
|
items {
|
|
@@ -13,9 +15,11 @@ export const query = gql `query GetRouteById($key: String!, $version: String, $l
|
|
|
13
15
|
version
|
|
14
16
|
locale
|
|
15
17
|
displayName
|
|
18
|
+
variation
|
|
19
|
+
changeset
|
|
16
20
|
types
|
|
17
21
|
url {
|
|
18
|
-
path:
|
|
22
|
+
path: default
|
|
19
23
|
domain: base
|
|
20
24
|
}
|
|
21
25
|
... on IInstanceMetadata {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRouteById.js","sourceRoot":"","sources":["../../../../../src/services/routing/queries/cms13/getRouteById.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"getRouteById.js","sourceRoot":"","sources":["../../../../../src/services/routing/queries/cms13/getRouteById.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAkBrC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCtB,CAAA"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Route, VariationInput } from './types.js';
|
|
2
2
|
export type Variables = {
|
|
3
|
-
path: string
|
|
3
|
+
path: Array<string>;
|
|
4
4
|
domain?: string | null;
|
|
5
5
|
changeset?: string | null;
|
|
6
|
+
status?: string | null;
|
|
7
|
+
variation?: VariationInput | null;
|
|
6
8
|
};
|
|
7
9
|
export type Result = {
|
|
8
10
|
getRouteByPath: {
|
|
9
11
|
total: number;
|
|
10
|
-
|
|
12
|
+
item: Route;
|
|
11
13
|
};
|
|
12
14
|
};
|
|
13
15
|
export declare const query: string;
|
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
import { gql } from
|
|
2
|
-
export const query = gql `query getRouteByPath($path: [String!]!, $domain: String, $changeset: String) {
|
|
1
|
+
import { gql } from 'graphql-request';
|
|
2
|
+
export const query = gql `query getRouteByPath($path: [String!]!, $domain: String, $changeset: String, $status: String, $variation: VariationInput) {
|
|
3
3
|
getRouteByPath: _Page(
|
|
4
4
|
where: {
|
|
5
5
|
_metadata: {
|
|
6
6
|
url: { default: { in: $path }, base: { endsWith: $domain } }
|
|
7
7
|
changeset: { eq: $changeset }
|
|
8
|
+
status: { eq: $status }
|
|
8
9
|
}
|
|
9
10
|
}
|
|
11
|
+
variation: $variation
|
|
10
12
|
orderBy: { _metadata: { url: { default: ASC } } }
|
|
11
13
|
) {
|
|
12
14
|
total
|
|
13
|
-
|
|
15
|
+
item {
|
|
14
16
|
_metadata {
|
|
15
17
|
key
|
|
16
18
|
version
|
|
17
19
|
locale
|
|
18
20
|
displayName
|
|
21
|
+
variation
|
|
19
22
|
types
|
|
20
23
|
url {
|
|
21
24
|
path: default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getRouteByPath.js","sourceRoot":"","sources":["../../../../../src/services/routing/queries/cms13/getRouteByPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"getRouteByPath.js","sourceRoot":"","sources":["../../../../../src/services/routing/queries/cms13/getRouteByPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAkBrC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCtB,CAAA"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import type { Route } from '../../types.js';
|
|
2
2
|
import { type IOptiGraphClient as GraphQLClient } from '../../../../client/types.js';
|
|
3
3
|
import { type OptimizelyCmsRoutingApi } from '../types.js';
|
|
4
|
+
import { AnyContentLink } from '../../../types.js';
|
|
4
5
|
export declare class OptimizelyCms13Client implements OptimizelyCmsRoutingApi {
|
|
5
6
|
private _changeset;
|
|
6
7
|
enablePreview(changeset?: string): void;
|
|
7
8
|
disablePreview(): void;
|
|
8
|
-
getRoutes(client: GraphQLClient, siteId?: string, onlyWithDomain?: boolean): Promise<Route[]>;
|
|
9
|
-
getRouteByPath(client: GraphQLClient, path: string, siteId?: string): Promise<undefined | Route>;
|
|
9
|
+
getRoutes(client: GraphQLClient, siteId?: string, onlyWithDomain?: boolean, includeVariants?: boolean): Promise<Route[]>;
|
|
10
|
+
getRouteByPath(client: GraphQLClient, path: string, siteId?: string, variant?: string): Promise<undefined | Route>;
|
|
10
11
|
getRouteById(client: GraphQLClient, contentId: string, locale: string, version: string | number): Promise<undefined | Route>;
|
|
12
|
+
getRouteByLink(client: GraphQLClient, contentLink: AnyContentLink): Promise<undefined | Route>;
|
|
11
13
|
private convertResponse;
|
|
12
14
|
private tryConvertResponse;
|
|
13
15
|
private isNotNullOrUndefined;
|
|
@@ -1,36 +1,40 @@
|
|
|
1
1
|
import * as GetAllRoutes from './getAllRoutes.js';
|
|
2
2
|
import * as GetRouteById from './getRouteById.js';
|
|
3
3
|
import * as GetRouteByPath from './getRouteByPath.js';
|
|
4
|
+
import { isContentLinkWithLocale, localeToGraphLocale, } from '../../../utils.js';
|
|
4
5
|
export class OptimizelyCms13Client {
|
|
5
6
|
constructor() {
|
|
6
7
|
this._changeset = null;
|
|
7
8
|
}
|
|
8
|
-
enablePreview(changeset =
|
|
9
|
+
enablePreview(changeset = 'default') {
|
|
9
10
|
this._changeset = changeset;
|
|
10
11
|
}
|
|
11
12
|
disablePreview() {
|
|
12
13
|
this._changeset = null;
|
|
13
14
|
}
|
|
14
|
-
async getRoutes(client, siteId, onlyWithDomain) {
|
|
15
|
+
async getRoutes(client, siteId, onlyWithDomain, includeVariants) {
|
|
15
16
|
if (client.debug)
|
|
16
17
|
console.log(`⚪ [RouteResolver] Loading routes for ${siteId ?? 'all applications'}${!siteId && onlyWithDomain ? ' that have a domain defined.' : ''}`);
|
|
17
18
|
let totalRoutes = 0;
|
|
18
19
|
let retrievedRoutes = 0;
|
|
19
20
|
let currentPage = 0;
|
|
20
|
-
let pageSize =
|
|
21
|
+
let pageSize = 100;
|
|
21
22
|
const graphRoutes = [];
|
|
22
23
|
do {
|
|
23
24
|
if (client.debug)
|
|
24
25
|
console.log(`⚪ [RouteResolver] Fetching page ${currentPage + 1} with ${pageSize} routes, of ${totalRoutes > 0 ? Math.ceil(totalRoutes / pageSize) : 'unknown'}`);
|
|
25
|
-
const page = await client
|
|
26
|
+
const page = await client
|
|
27
|
+
.request(GetAllRoutes.query, {
|
|
26
28
|
domain: siteId,
|
|
27
29
|
mustHaveDomain: onlyWithDomain ? true : null,
|
|
28
30
|
pageSize: pageSize,
|
|
29
31
|
skip: currentPage * pageSize,
|
|
30
|
-
changeset: this._changeset || client.getChangeset()
|
|
31
|
-
|
|
32
|
+
changeset: this._changeset || client.getChangeset(),
|
|
33
|
+
variation: includeVariants ? { include: 'ALL' } : undefined,
|
|
34
|
+
})
|
|
35
|
+
.catch((e) => {
|
|
32
36
|
if (client.debug)
|
|
33
|
-
console.error(
|
|
37
|
+
console.error('🔴 [RouteResolver] Error while fetching routes', e);
|
|
34
38
|
return undefined;
|
|
35
39
|
});
|
|
36
40
|
if (page) {
|
|
@@ -43,58 +47,150 @@ export class OptimizelyCms13Client {
|
|
|
43
47
|
totalRoutes = 0;
|
|
44
48
|
retrievedRoutes = 0;
|
|
45
49
|
}
|
|
46
|
-
} while (totalRoutes > 0 &&
|
|
47
|
-
|
|
50
|
+
} while (totalRoutes > 0 &&
|
|
51
|
+
retrievedRoutes > 0 &&
|
|
52
|
+
graphRoutes.length < totalRoutes &&
|
|
53
|
+
retrievedRoutes == pageSize);
|
|
54
|
+
return graphRoutes
|
|
55
|
+
.map(this.tryConvertResponse.bind(this))
|
|
56
|
+
.filter(this.isNotNullOrUndefined);
|
|
48
57
|
}
|
|
49
|
-
async getRouteByPath(client, path, siteId) {
|
|
58
|
+
async getRouteByPath(client, path, siteId, variant) {
|
|
50
59
|
if (client.debug)
|
|
51
|
-
console.log(`⚪ [RouteResolver] Resolving content info for ${path} on ${siteId ? siteId :
|
|
52
|
-
|
|
60
|
+
console.log(`⚪ [RouteResolver] Resolving content info for ${path} on ${siteId ? siteId : 'all domains'}`);
|
|
61
|
+
// Calculate the paths
|
|
62
|
+
const paths = [
|
|
63
|
+
path,
|
|
64
|
+
path.endsWith('/') ? path.substring(0, path.length - 1) : path + '/',
|
|
65
|
+
].filter((p) => p);
|
|
66
|
+
// Determine the changeset & status filters
|
|
67
|
+
const changeset = this._changeset || client.getChangeset();
|
|
68
|
+
const status = changeset ? null : "Published";
|
|
69
|
+
// Create the request variables
|
|
70
|
+
const variables = {
|
|
71
|
+
path: paths,
|
|
72
|
+
domain: siteId,
|
|
73
|
+
changeset,
|
|
74
|
+
status,
|
|
75
|
+
variation: variant && variant.length > 0
|
|
76
|
+
? { include: 'SOME', value: [variant] }
|
|
77
|
+
: undefined,
|
|
78
|
+
};
|
|
53
79
|
const resultSet = await client.request({
|
|
54
80
|
document: GetRouteByPath.query,
|
|
55
|
-
variables
|
|
81
|
+
variables,
|
|
82
|
+
}).catch(e => {
|
|
83
|
+
console.error(e);
|
|
84
|
+
return {
|
|
85
|
+
getRouteByPath: {
|
|
86
|
+
total: 0,
|
|
87
|
+
item: {}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
56
90
|
});
|
|
57
91
|
if ((resultSet.getRouteByPath?.total ?? 0) === 0) {
|
|
58
92
|
if (client.debug)
|
|
59
|
-
console.warn(
|
|
93
|
+
console.warn('🟠 [RouteResolver] No items in the resultset, request parameters', JSON.stringify(variables));
|
|
60
94
|
return undefined;
|
|
61
95
|
}
|
|
62
96
|
if ((resultSet.getRouteByPath?.total ?? 0) > 1) {
|
|
63
97
|
if (client.debug)
|
|
64
|
-
console.warn(
|
|
98
|
+
console.warn('🟠 [RouteResolver] Ambiguous URL provided - picking first match, did you omit the domain in a multi-site setup?');
|
|
65
99
|
}
|
|
66
100
|
if (client.debug)
|
|
67
|
-
console.log(`⚪ [RouteResolver] Resolved content info for ${path} to: ${JSON.stringify(resultSet.getRouteByPath.
|
|
68
|
-
return this.convertResponse(resultSet.getRouteByPath.
|
|
101
|
+
console.log(`⚪ [RouteResolver] Resolved content info for ${path} to: ${JSON.stringify(resultSet.getRouteByPath.item)}`);
|
|
102
|
+
return this.convertResponse(resultSet.getRouteByPath.item);
|
|
69
103
|
}
|
|
70
104
|
async getRouteById(client, contentId, locale, version) {
|
|
71
|
-
const variables = {
|
|
105
|
+
const variables = {
|
|
106
|
+
key: contentId,
|
|
107
|
+
version: version?.toString(),
|
|
108
|
+
locale: locale ? localeToGraphLocale(locale) : undefined,
|
|
109
|
+
changeset: this._changeset || client.getChangeset(),
|
|
110
|
+
variation: version ? { include: 'ALL' } : undefined,
|
|
111
|
+
};
|
|
72
112
|
if (client.debug)
|
|
73
|
-
console.log(
|
|
113
|
+
console.log('⚪ [RouteResolver] Resolving content by id:', JSON.stringify(variables));
|
|
74
114
|
const resultSet = await client.request({
|
|
75
115
|
document: GetRouteById.query,
|
|
76
|
-
variables
|
|
116
|
+
variables,
|
|
77
117
|
});
|
|
78
118
|
if (resultSet.Content?.total >= 1) {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
119
|
+
let selectedItem = resultSet.Content.items[0];
|
|
120
|
+
if (client.debug && resultSet.Content?.total > 1) {
|
|
121
|
+
let firstEmptyVariantItem = resultSet.Content?.items
|
|
122
|
+
?.filter((x) => x._metadata?.variation === null ||
|
|
123
|
+
x._metadata?.variation === undefined)
|
|
124
|
+
?.at(0);
|
|
125
|
+
selectedItem = firstEmptyVariantItem ?? selectedItem;
|
|
126
|
+
console.warn(`🟠 [RouteResolver] Received multiple entries with this ID, returning the first default variant from: ${(resultSet.Content?.items || [])
|
|
127
|
+
.map((x) => {
|
|
128
|
+
return `${x._metadata.key} (version: ${x._metadata.version}, locale: ${x._metadata.locale}, changeset: ${x._metadata.changeset}, variant: ${x._metadata.variation})`;
|
|
129
|
+
})
|
|
130
|
+
.join('; ')}`);
|
|
131
|
+
}
|
|
132
|
+
return this.convertResponse(selectedItem);
|
|
133
|
+
}
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
async getRouteByLink(client, contentLink) {
|
|
137
|
+
if (!isContentLinkWithLocale(contentLink))
|
|
138
|
+
return undefined;
|
|
139
|
+
const variables = {
|
|
140
|
+
key: contentLink.key,
|
|
141
|
+
version: contentLink.version?.toString(),
|
|
142
|
+
locale: contentLink.locale
|
|
143
|
+
? localeToGraphLocale(contentLink.locale)
|
|
144
|
+
: undefined,
|
|
145
|
+
changeset: contentLink.changeset || this._changeset || client.getChangeset(),
|
|
146
|
+
variation: contentLink.variation
|
|
147
|
+
? { include: 'SOME', value: [contentLink.variation] }
|
|
148
|
+
: contentLink.version
|
|
149
|
+
? { include: 'ALL' }
|
|
150
|
+
: undefined,
|
|
151
|
+
};
|
|
152
|
+
if (client.debug)
|
|
153
|
+
console.log('⚪ [RouteResolver] Resolving content by link:', JSON.stringify(variables));
|
|
154
|
+
const resultSet = await client.request({
|
|
155
|
+
document: GetRouteById.query,
|
|
156
|
+
variables,
|
|
157
|
+
});
|
|
158
|
+
if (resultSet.Content?.total >= 1) {
|
|
159
|
+
let selectedItem = resultSet.Content.items[0];
|
|
160
|
+
if (client.debug && resultSet.Content?.total > 1) {
|
|
161
|
+
let firstEmptyVariantItem = resultSet.Content?.items
|
|
162
|
+
?.filter((x) => x._metadata?.variation === null ||
|
|
163
|
+
x._metadata?.variation === undefined)
|
|
164
|
+
?.at(0);
|
|
165
|
+
selectedItem = firstEmptyVariantItem ?? selectedItem;
|
|
166
|
+
console.warn(`🟠 [RouteResolver] Received multiple entries with this ID, returning the first default variant from: ${(resultSet.Content?.items || [])
|
|
167
|
+
.map((x) => {
|
|
168
|
+
return `${x._metadata.key} (version: ${x._metadata.version}, locale: ${x._metadata.locale}, changeset: ${x._metadata.changeset}, variant: ${x._metadata.variation})`;
|
|
169
|
+
})
|
|
170
|
+
.join('; ')}`);
|
|
171
|
+
}
|
|
172
|
+
return this.convertResponse(selectedItem);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
console.warn(`🟠 [RouteResolver] Unable to locate the requested item (${JSON.stringify(variables)}) in Optimizely Graph`);
|
|
82
176
|
}
|
|
83
177
|
return undefined;
|
|
84
178
|
}
|
|
85
179
|
convertResponse(item) {
|
|
86
180
|
if (!item)
|
|
87
|
-
throw new Error(
|
|
181
|
+
throw new Error('RouteResolver.convertResponse(): mandatory parameter "item" not provided!');
|
|
88
182
|
const itemUrl = new URL(item._metadata?.url?.path ?? '/', item._metadata?.url?.domain ?? 'https://example.com');
|
|
89
183
|
return {
|
|
90
184
|
locale: item._metadata.locale,
|
|
91
185
|
path: item._metadata.url.path,
|
|
92
186
|
url: itemUrl,
|
|
93
|
-
slug: item._metadata?.slug ??
|
|
187
|
+
slug: item._metadata?.slug ?? '',
|
|
94
188
|
changed: item.changed ? new Date(item.changed) : null,
|
|
95
189
|
contentType: item._metadata.types,
|
|
96
190
|
version: item._metadata.version,
|
|
97
|
-
key: item._metadata.key
|
|
191
|
+
key: item._metadata.key,
|
|
192
|
+
changeset: item._metadata.changeset,
|
|
193
|
+
variation: item._metadata.variation,
|
|
98
194
|
};
|
|
99
195
|
}
|
|
100
196
|
tryConvertResponse(item) {
|