@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.
Files changed (84) hide show
  1. package/LICENSE +12 -12
  2. package/README.md +5 -1
  3. package/dist/admin-api/client/OptimizelyGraphAdminApi.d.ts +2 -0
  4. package/dist/admin-api/client/OptimizelyGraphAdminApi.js +3 -1
  5. package/dist/admin-api/client/OptimizelyGraphAdminApi.js.map +1 -1
  6. package/dist/admin-api/client/core/OpenAPI.js +1 -1
  7. package/dist/admin-api/client/index.d.ts +8 -0
  8. package/dist/admin-api/client/index.js +1 -0
  9. package/dist/admin-api/client/index.js.map +1 -1
  10. package/dist/admin-api/client/models/Partial_PinnedCollectionPayload_.d.ts +8 -0
  11. package/dist/admin-api/client/models/Partial_PinnedCollectionPayload_.js +2 -0
  12. package/dist/admin-api/client/models/Partial_PinnedCollectionPayload_.js.map +1 -0
  13. package/dist/admin-api/client/models/PinnedCollectionPayload.d.ts +5 -0
  14. package/dist/admin-api/client/models/PinnedCollectionPayload.js +2 -0
  15. package/dist/admin-api/client/models/PinnedCollectionPayload.js.map +1 -0
  16. package/dist/admin-api/client/models/PinnedCollectionResult.d.ts +8 -0
  17. package/dist/admin-api/client/models/PinnedCollectionResult.js +2 -0
  18. package/dist/admin-api/client/models/PinnedCollectionResult.js.map +1 -0
  19. package/dist/admin-api/client/models/PinnedItemPayload.d.ts +27 -0
  20. package/dist/admin-api/client/models/PinnedItemPayload.js +2 -0
  21. package/dist/admin-api/client/models/PinnedItemPayload.js.map +1 -0
  22. package/dist/admin-api/client/models/PinnedItemResult.d.ts +31 -0
  23. package/dist/admin-api/client/models/PinnedItemResult.js +2 -0
  24. package/dist/admin-api/client/models/PinnedItemResult.js.map +1 -0
  25. package/dist/admin-api/client/models/PinnedResultMatchParams.d.ts +8 -0
  26. package/dist/admin-api/client/models/PinnedResultMatchParams.js +2 -0
  27. package/dist/admin-api/client/models/PinnedResultMatchParams.js.map +1 -0
  28. package/dist/admin-api/client/models/Response.d.ts +6 -0
  29. package/dist/admin-api/client/models/Response.js +2 -0
  30. package/dist/admin-api/client/models/Response.js.map +1 -0
  31. package/dist/admin-api/client/services/BestBetsService.d.ts +4 -0
  32. package/dist/admin-api/client/services/BestBetsService.js +4 -0
  33. package/dist/admin-api/client/services/BestBetsService.js.map +1 -1
  34. package/dist/admin-api/client/services/PinnedResultsService.d.ts +118 -0
  35. package/dist/admin-api/client/services/PinnedResultsService.js +221 -0
  36. package/dist/admin-api/client/services/PinnedResultsService.js.map +1 -0
  37. package/dist/admin-api/client/services/ResourcesService.d.ts +11 -0
  38. package/dist/admin-api/client/services/ResourcesService.js +20 -0
  39. package/dist/admin-api/client/services/ResourcesService.js.map +1 -1
  40. package/dist/admin-api/index.d.ts +9 -0
  41. package/dist/admin-api/index.js +14 -0
  42. package/dist/admin-api/index.js.map +1 -1
  43. package/dist/client/client.d.ts +3 -0
  44. package/dist/client/client.js +21 -7
  45. package/dist/client/client.js.map +1 -1
  46. package/dist/client/types.d.ts +15 -0
  47. package/dist/config.d.ts +7 -0
  48. package/dist/config.js +1 -1
  49. package/dist/config.js.map +1 -1
  50. package/dist/services/channel-repository/definition.d.ts +8 -1
  51. package/dist/services/channel-repository/definition.js +12 -5
  52. package/dist/services/channel-repository/definition.js.map +1 -1
  53. package/dist/services/channel-repository/queries.js +88 -88
  54. package/dist/services/routing/queries/cms12/index.d.ts +2 -0
  55. package/dist/services/routing/queries/cms12/index.js +3 -0
  56. package/dist/services/routing/queries/cms12/index.js.map +1 -1
  57. package/dist/services/routing/queries/cms13/getAllRoutes.d.ts +2 -15
  58. package/dist/services/routing/queries/cms13/getAllRoutes.js +4 -1
  59. package/dist/services/routing/queries/cms13/getAllRoutes.js.map +1 -1
  60. package/dist/services/routing/queries/cms13/getRouteById.d.ts +2 -1
  61. package/dist/services/routing/queries/cms13/getRouteById.js +8 -4
  62. package/dist/services/routing/queries/cms13/getRouteById.js.map +1 -1
  63. package/dist/services/routing/queries/cms13/getRouteByPath.d.ts +5 -3
  64. package/dist/services/routing/queries/cms13/getRouteByPath.js +6 -3
  65. package/dist/services/routing/queries/cms13/getRouteByPath.js.map +1 -1
  66. package/dist/services/routing/queries/cms13/index.d.ts +4 -2
  67. package/dist/services/routing/queries/cms13/index.js +122 -26
  68. package/dist/services/routing/queries/cms13/index.js.map +1 -1
  69. package/dist/services/routing/queries/cms13/types.d.ts +18 -0
  70. package/dist/services/routing/queries/cms13/types.js +2 -0
  71. package/dist/services/routing/queries/cms13/types.js.map +1 -0
  72. package/dist/services/routing/queries/types.d.ts +4 -2
  73. package/dist/services/routing/resolver.d.ts +11 -7
  74. package/dist/services/routing/resolver.js +17 -9
  75. package/dist/services/routing/resolver.js.map +1 -1
  76. package/dist/services/routing/types.d.ts +23 -4
  77. package/dist/services/types.d.ts +7 -0
  78. package/dist/services/utils.d.ts +4 -3
  79. package/dist/services/utils.js +20 -11
  80. package/dist/services/utils.js.map +1 -1
  81. package/dist/version.d.ts +4 -0
  82. package/dist/version.js +2 -0
  83. package/dist/version.js.map +1 -0
  84. 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;
@@ -70,6 +70,9 @@ export class OptimizelyCms12Client {
70
70
  }
71
71
  return undefined;
72
72
  }
73
+ async getRouteByLink(client, contentLink) {
74
+ throw new Error("Not supported on CMS 12");
75
+ }
73
76
  parseIdString(id) {
74
77
  let cId = -1;
75
78
  let workId = null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/routing/queries/cms12/index.ts"],"names":[],"mappings":"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"}
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
- export type Route = {
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;AAkCrC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCtB,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 "./getAllRoutes.js";
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: { key: { eq: $key }, version: { eq: $version }, changeset: { eq: $changeset } }
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: hierarchical
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;AAiBrC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BtB,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 { type Route } from "./getAllRoutes.js";
1
+ import type { Route, VariationInput } from './types.js';
2
2
  export type Variables = {
3
- path: string | 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
- items: Route;
12
+ item: Route;
11
13
  };
12
14
  };
13
15
  export declare const query: string;
@@ -1,21 +1,24 @@
1
- import { gql } from "graphql-request";
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
- items: item {
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;AAgBrC,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCtB,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 = "default") {
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 = 50;
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.request(GetAllRoutes.query, {
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
- }).catch(e => {
32
+ changeset: this._changeset || client.getChangeset(),
33
+ variation: includeVariants ? { include: 'ALL' } : undefined,
34
+ })
35
+ .catch((e) => {
32
36
  if (client.debug)
33
- console.error("🔴 [RouteResolver] Error while fetching routes", e);
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 && retrievedRoutes > 0 && graphRoutes.length < totalRoutes && retrievedRoutes == pageSize);
47
- return graphRoutes.map(this.tryConvertResponse.bind(this)).filter(this.isNotNullOrUndefined);
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 : "all domains"}`);
52
- const paths = [path, path.endsWith('/') ? path.substring(0, path.length - 1) : path + '/'].filter(p => p);
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: { path: paths, domain: siteId, changeset: this._changeset || client.getChangeset() }
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("🟠 [RouteResolver] No items in the resultset");
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("🟠 [RouteResolver] Ambiguous URL provided - picking first match, did you omit the domain in a multi-site setup?");
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.items)}`);
68
- return this.convertResponse(resultSet.getRouteByPath.items);
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 = { key: contentId, version: version?.toString(), locale: locale?.replaceAll('-', '_'), changeset: this._changeset || client.getChangeset() };
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("⚪ [RouteResolver] Resolving content by id:", JSON.stringify(variables));
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
- if (client.debug && resultSet.Content?.total > 1)
80
- console.warn(`🟠 [RouteResolver] Received multiple entries with this ID, returning the first one from: ${(resultSet.Content?.items || []).map(x => { return `${x._metadata.key} (version: ${x._metadata.version}, locale: ${x._metadata.locale})`; }).join('; ')}`);
81
- return this.convertResponse(resultSet.Content.items[0]);
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("RouteResolver.convertResponse(): mandatory parameter \"item\" not provided!");
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) {