Skip to content

Commit

Permalink
[templates/nextjs][templates/nextjs-sxa] Extend retrier to ErrorPages…
Browse files Browse the repository at this point in the history
…Service and make it configurable through env (#1619)
  • Loading branch information
art-alexeyenko committed Sep 28, 2023
1 parent c020dae commit 1c81fd6
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 4 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Our versioning strategy is as follows:
* `[sitecore-jss-dev-tools]` `[templates/nextjs]` `[templates/react]` Introduce "components" configuration for ComponentBuilder ([#1598](https://github.com/Sitecore/jss/pull/1598))
* `[sitecore-jss-react]` `[sitecore-jss-nextjs]` Component level data fetching(SSR/SSG) for BYOC ([#1610](https://github.com/Sitecore/jss/pull/1610))
* `[sitecore-jss-nextjs]` Reduce the amount of Edge API calls during fetch getStaticPaths ([#1612](https://github.com/Sitecore/jss/pull/1612))
* `[sitecore-jss]` `[templates/nextjs]` GraphQL Layout and Dictionary services can handle endpoint rate limits through retryer functionality in GraphQLClient. To prevent SSG builds from failing and enable multiple retries, set retry amount in lib/dictionary-service-factory and lib/layout-service-factory ([#1618](https://github.com/Sitecore/jss/pull/1618))
* `[sitecore-jss]` `[templates/nextjs] [templates/nextjs-sxa]` GraphQL Layout and Dictionary services in base remplate, and ErrorPages service in nextjs-sxa can handle endpoint rate limits through retryer functionality in GraphQLClient. To prevent SSG builds from failing and enable multiple retries, set retry amount in lib/dictionary-service-factory and lib/layout-service-factory ([#1618](https://github.com/Sitecore/jss/pull/1618) [#1619](https://github.com/Sitecore/jss/pull/1619))
* `[templates/nextjs]` `[sitecore-jss-nextjs]` Upgrade Nextjs to 13.4.16([#1616](https://github.com/Sitecore/jss/pull/1616))

### 🧹 Chores
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,10 @@ export const getStaticProps: GetStaticProps = async (context) => {
apiKey: config.sitecoreApiKey,
siteName: site.name,
language: context.locale || config.defaultLanguage,
retries:
(process.env.GRAPH_QL_SERVICE_RETRIES &&
parseInt(process.env.GRAPH_QL_SERVICE_RETRIES, 10)) ||
0,
});
let resultErrorPages: ErrorPages | null = null;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ export const getStaticProps: GetStaticProps = async (context) => {
apiKey: config.sitecoreApiKey,
siteName: site.name,
language: context.locale || context.defaultLocale || config.defaultLanguage,
retries:
(process.env.GRAPH_QL_SERVICE_RETRIES &&
parseInt(process.env.GRAPH_QL_SERVICE_RETRIES, 10)) ||
0,
});
let resultErrorPages: ErrorPages | null = null;

Expand Down
3 changes: 3 additions & 0 deletions packages/create-sitecore-jss/src/templates/nextjs/.env
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ JSS_APP_NAME=
# Your default app language.
DEFAULT_LANGUAGE=

# How many times should GraphQL Layout, Dictionary and ErrorPages services retry a fetch when endpoint rate limit is reached
GRAPH_QL_SERVICE_RETRIES=0

# The way in which layout and dictionary data is fetched from Sitecore
FETCH_WITH=<%- fetchWith %>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ export class DictionaryServiceFactory {
It will only try the request once by default.
retries: 'number'
*/
retries:
(process.env.GRAPH_QL_SERVICE_RETRIES &&
parseInt(process.env.GRAPH_QL_SERVICE_RETRIES, 10)) ||
0,
})
: new RestDictionaryService({
apiHost: config.sitecoreApiHost,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ export class LayoutServiceFactory {
It will only try the request once by default.
retries: 'number'
*/
retries:
(process.env.GRAPH_QL_SERVICE_RETRIES &&
parseInt(process.env.GRAPH_QL_SERVICE_RETRIES, 10)) ||
0,
})
: new RestLayoutService({
apiHost: config.sitecoreApiHost,
Expand Down
8 changes: 5 additions & 3 deletions packages/sitecore-jss/src/site/graphql-error-pages-service.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { GraphQLClient, GraphQLRequestClient } from '../graphql';
import { GraphQLClient, GraphQLRequestClient, GraphQLRequestClientConfig } from '../graphql';
import { siteNameError } from '../constants';
import debug from '../debug';
import { LayoutServiceData } from '../layout';
Expand All @@ -23,7 +23,8 @@ const defaultQuery = /* GraphQL */ `
}
`;

export type GraphQLErrorPagesServiceConfig = {
export interface GraphQLErrorPagesServiceConfig
extends Pick<GraphQLRequestClientConfig, 'retries'> {
/**
* Your Graphql endpoint
*/
Expand All @@ -40,7 +41,7 @@ export type GraphQLErrorPagesServiceConfig = {
* The language
*/
language: string;
};
}

/**
* Object model of Error Pages result
Expand Down Expand Up @@ -110,6 +111,7 @@ export class GraphQLErrorPagesService {
return new GraphQLRequestClient(this.options.endpoint, {
apiKey: this.options.apiKey,
debugger: debug.errorpages,
retries: this.options.retries,
});
}
}

0 comments on commit 1c81fd6

Please sign in to comment.