From a06f15048978d1925250cb258fa7d3a3c94d212c Mon Sep 17 00:00:00 2001 From: Angelo Ashmore Date: Mon, 4 Oct 2021 12:49:54 -1000 Subject: [PATCH 1/2] feat: add `pageSize` option --- .../src/plugin-options-schema.ts | 3 +++ packages/gatsby-plugin-prismic-previews/src/types.ts | 1 + .../src/usePrismicPreviewBootstrap.ts | 5 ++++- .../src/usePrismicPreviewResolver.ts | 1 + .../test/__testutils__/createPluginOptions.ts | 1 + .../test/usePrismicPreviewBootstrap-field-proxies.test.ts | 2 +- packages/gatsby-source-prismic/src/buildDependencies.ts | 1 + .../gatsby-source-prismic/src/lib/queryAllDocuments.ts | 8 +++++++- .../gatsby-source-prismic/src/lib/queryDocumentsByIds.ts | 8 +++++++- .../gatsby-source-prismic/src/plugin-options-schema.ts | 7 +++++-- packages/gatsby-source-prismic/src/types.ts | 5 +++-- .../test/__testutils__/createPluginOptions.ts | 1 + 12 files changed, 35 insertions(+), 8 deletions(-) diff --git a/packages/gatsby-plugin-prismic-previews/src/plugin-options-schema.ts b/packages/gatsby-plugin-prismic-previews/src/plugin-options-schema.ts index 33dcd3ac..396fbccf 100644 --- a/packages/gatsby-plugin-prismic-previews/src/plugin-options-schema.ts +++ b/packages/gatsby-plugin-prismic-previews/src/plugin-options-schema.ts @@ -33,6 +33,9 @@ export const pluginOptionsSchema: NonNullable< graphQuery: Joi.string(), fetchLinks: Joi.array().items(Joi.string().required()), lang: Joi.string().default(DEFAULT_LANG), + // TODO: Remove the hardcoded default once this PR to @prismicio/client is merged: + // https://github.com/prismicio/prismic-client/pull/195 + pageSize: Joi.number().default(100), imageImgixParams: Joi.object().default(DEFAULT_IMGIX_PARAMS), imagePlaceholderImgixParams: Joi.object().default( DEFAULT_PLACEHOLDER_IMGIX_PARAMS, diff --git a/packages/gatsby-plugin-prismic-previews/src/types.ts b/packages/gatsby-plugin-prismic-previews/src/types.ts index baa18f9f..21712500 100644 --- a/packages/gatsby-plugin-prismic-previews/src/types.ts +++ b/packages/gatsby-plugin-prismic-previews/src/types.ts @@ -23,6 +23,7 @@ export interface PluginOptions extends gatsby.PluginOptions { graphQuery?: string fetchLinks?: string[] lang: string + pageSize: number imageImgixParams: imgixGatsby.ImgixUrlParams imagePlaceholderImgixParams: imgixGatsby.ImgixUrlParams typePrefix?: string diff --git a/packages/gatsby-plugin-prismic-previews/src/usePrismicPreviewBootstrap.ts b/packages/gatsby-plugin-prismic-previews/src/usePrismicPreviewBootstrap.ts index d83771c3..9ee02757 100644 --- a/packages/gatsby-plugin-prismic-previews/src/usePrismicPreviewBootstrap.ts +++ b/packages/gatsby-plugin-prismic-previews/src/usePrismicPreviewBootstrap.ts @@ -186,13 +186,16 @@ export const usePrismicPreviewBootstrap = ( lang: repositoryPluginOptions.lang, fetchLinks: repositoryPluginOptions.fetchLinks, graphQuery: repositoryPluginOptions.graphQuery, + pageSize: repositoryPluginOptions.pageSize, }, }) client.enableAutoPreviews() let allDocuments: prismicT.PrismicDocument[] try { - allDocuments = await client.getAll() + allDocuments = await client.getAll({ + pageSize: repositoryPluginOptions.pageSize, + }) } catch (error) { if ( error instanceof prismic.ForbiddenError && diff --git a/packages/gatsby-plugin-prismic-previews/src/usePrismicPreviewResolver.ts b/packages/gatsby-plugin-prismic-previews/src/usePrismicPreviewResolver.ts index f15ed1f2..e43a7fbf 100644 --- a/packages/gatsby-plugin-prismic-previews/src/usePrismicPreviewResolver.ts +++ b/packages/gatsby-plugin-prismic-previews/src/usePrismicPreviewResolver.ts @@ -118,6 +118,7 @@ export const usePrismicPreviewResolver = ( lang: repositoryPluginOptions.lang, fetchLinks: repositoryPluginOptions.fetchLinks, graphQuery: repositoryPluginOptions.graphQuery, + pageSize: repositoryPluginOptions.pageSize, }, }) client.enableAutoPreviews() diff --git a/packages/gatsby-plugin-prismic-previews/test/__testutils__/createPluginOptions.ts b/packages/gatsby-plugin-prismic-previews/test/__testutils__/createPluginOptions.ts index e379610e..4f3ebeb2 100644 --- a/packages/gatsby-plugin-prismic-previews/test/__testutils__/createPluginOptions.ts +++ b/packages/gatsby-plugin-prismic-previews/test/__testutils__/createPluginOptions.ts @@ -14,6 +14,7 @@ export const createPluginOptions = (t: ava.ExecutionContext): PluginOptions => { apiEndpoint: prismic.getEndpoint(repositoryName), typePrefix: 'prefix', lang: '*', + pageSize: 100, toolbar: 'new', imageImgixParams: { q: 100 }, imagePlaceholderImgixParams: { w: 10 }, diff --git a/packages/gatsby-plugin-prismic-previews/test/usePrismicPreviewBootstrap-field-proxies.test.ts b/packages/gatsby-plugin-prismic-previews/test/usePrismicPreviewBootstrap-field-proxies.test.ts index 427ec76c..e0e81ec4 100644 --- a/packages/gatsby-plugin-prismic-previews/test/usePrismicPreviewBootstrap-field-proxies.test.ts +++ b/packages/gatsby-plugin-prismic-previews/test/usePrismicPreviewBootstrap-field-proxies.test.ts @@ -799,7 +799,7 @@ test.serial('group', async (t) => { ) }) -test.serial('slices', async (t) => { +test.serial.only('slices', async (t) => { const gatsbyContext = createGatsbyContext() const pluginOptions = createPluginOptions(t) const config = createRepositoryConfigs(pluginOptions) diff --git a/packages/gatsby-source-prismic/src/buildDependencies.ts b/packages/gatsby-source-prismic/src/buildDependencies.ts index 0df5a105..0d30cd53 100644 --- a/packages/gatsby-source-prismic/src/buildDependencies.ts +++ b/packages/gatsby-source-prismic/src/buildDependencies.ts @@ -32,6 +32,7 @@ export const buildDependencies = ( lang: pluginOptions.lang, fetchLinks: pluginOptions.fetchLinks, graphQuery: pluginOptions.graphQuery, + pageSize: pluginOptions.pageSize, }, }) diff --git a/packages/gatsby-source-prismic/src/lib/queryAllDocuments.ts b/packages/gatsby-source-prismic/src/lib/queryAllDocuments.ts index b95e933e..415003a5 100644 --- a/packages/gatsby-source-prismic/src/lib/queryAllDocuments.ts +++ b/packages/gatsby-source-prismic/src/lib/queryAllDocuments.ts @@ -27,5 +27,11 @@ export const queryAllDocuments: RTE.ReaderTaskEither< prismicT.PrismicDocument[] > = pipe( RTE.ask(), - RTE.chain((env) => RTE.fromTask(() => env.prismicClient.getAll())), + RTE.chain((env) => + RTE.fromTask(() => + env.prismicClient.getAll({ + pageSize: env.pluginOptions.pageSize, + }), + ), + ), ) diff --git a/packages/gatsby-source-prismic/src/lib/queryDocumentsByIds.ts b/packages/gatsby-source-prismic/src/lib/queryDocumentsByIds.ts index 9270dc06..3dcfc669 100644 --- a/packages/gatsby-source-prismic/src/lib/queryDocumentsByIds.ts +++ b/packages/gatsby-source-prismic/src/lib/queryDocumentsByIds.ts @@ -24,5 +24,11 @@ export const queryDocumentsByIds = ( ): RTE.ReaderTaskEither => pipe( RTE.ask(), - RTE.chain((env) => RTE.fromTask(() => env.prismicClient.getAllByIDs(ids))), + RTE.chain((env) => + RTE.fromTask(() => + env.prismicClient.getAllByIDs(ids, { + pageSize: env.pluginOptions.pageSize, + }), + ), + ), ) diff --git a/packages/gatsby-source-prismic/src/plugin-options-schema.ts b/packages/gatsby-source-prismic/src/plugin-options-schema.ts index f6c25395..c1ad2a8d 100644 --- a/packages/gatsby-source-prismic/src/plugin-options-schema.ts +++ b/packages/gatsby-source-prismic/src/plugin-options-schema.ts @@ -197,6 +197,9 @@ export const pluginOptionsSchema: NonNullable< fetchLinks: Joi.array().items(Joi.string().required()), graphQuery: Joi.string(), lang: Joi.string().default(DEFAULT_LANG), + // TODO: Remove the hardcoded default once this PR to @prismicio/client is merged: + // https://github.com/prismicio/prismic-client/pull/195 + pageSize: Joi.number().default(100), linkResolver: Joi.function(), htmlSerializer: Joi.function(), schemas: Joi.object(), @@ -209,8 +212,8 @@ export const pluginOptionsSchema: NonNullable< createRemoteFileNode: Joi.function().default( () => gatsbyFs.createRemoteFileNode, ), - transformFieldName: Joi.function().default(() => (fieldName: string) => - fieldName.replace(/-/g, '_'), + transformFieldName: Joi.function().default( + () => (fieldName: string) => fieldName.replace(/-/g, '_'), ), fetch: Joi.function().default(() => fetch), }) diff --git a/packages/gatsby-source-prismic/src/types.ts b/packages/gatsby-source-prismic/src/types.ts index 792415d8..a94d8c88 100644 --- a/packages/gatsby-source-prismic/src/types.ts +++ b/packages/gatsby-source-prismic/src/types.ts @@ -72,6 +72,7 @@ export interface PluginOptions extends gatsby.PluginOptions { graphQuery?: string fetchLinks?: string[] lang: string + pageSize?: number linkResolver?: prismicH.LinkResolverFunction htmlSerializer?: prismicH.HTMLFunctionSerializer | prismicH.HTMLMapSerializer schemas: Record @@ -86,7 +87,7 @@ export interface PluginOptions extends gatsby.PluginOptions { } export type FieldConfigCreator< - TSchema extends prismicT.CustomTypeModelField = prismicT.CustomTypeModelField + TSchema extends prismicT.CustomTypeModelField = prismicT.CustomTypeModelField, > = ( path: string[], schema: TSchema, @@ -188,7 +189,7 @@ interface PrismicWebhookExperimentVariation { export type PrismicCustomTypeApiResponse = PrismicCustomTypeApiCustomType[] export interface PrismicCustomTypeApiCustomType< - Model extends prismicT.CustomTypeModel = prismicT.CustomTypeModel + Model extends prismicT.CustomTypeModel = prismicT.CustomTypeModel, > { id: string label: string diff --git a/packages/gatsby-source-prismic/test/__testutils__/createPluginOptions.ts b/packages/gatsby-source-prismic/test/__testutils__/createPluginOptions.ts index 21e8943b..397d8414 100644 --- a/packages/gatsby-source-prismic/test/__testutils__/createPluginOptions.ts +++ b/packages/gatsby-source-prismic/test/__testutils__/createPluginOptions.ts @@ -24,6 +24,7 @@ export const createPluginOptions = (t: ava.ExecutionContext): PluginOptions => { typePrefix: 'prefix', schemas: {}, lang: DEFAULT_LANG, + pageSize: 100, webhookSecret: 'secret', imageImgixParams: DEFAULT_IMGIX_PARAMS, imagePlaceholderImgixParams: DEFAULT_PLACEHOLDER_IMGIX_PARAMS, From 628bb7d203e94b2722efd067d7871deacba7c19f Mon Sep 17 00:00:00 2001 From: Angelo Ashmore Date: Mon, 4 Oct 2021 13:17:24 -1000 Subject: [PATCH 2/2] fix: downgrade @prismicio/client to fix tests --- .../gatsby-plugin-prismic-previews/package.json | 2 +- packages/gatsby-source-prismic/package.json | 2 +- yarn.lock | 13 ++++++------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/gatsby-plugin-prismic-previews/package.json b/packages/gatsby-plugin-prismic-previews/package.json index ad4491ac..8e155809 100644 --- a/packages/gatsby-plugin-prismic-previews/package.json +++ b/packages/gatsby-plugin-prismic-previews/package.json @@ -37,7 +37,7 @@ ], "dependencies": { "@imgix/gatsby": "^1.6.13", - "@prismicio/client": "6.0.0-beta.0", + "@prismicio/client": "6.0.0-alpha.8", "@prismicio/helpers": "^2.0.0-beta.0", "@prismicio/types": "^0.1.13", "@reach/dialog": "^0.16.0", diff --git a/packages/gatsby-source-prismic/package.json b/packages/gatsby-source-prismic/package.json index 20d09206..272f8220 100644 --- a/packages/gatsby-source-prismic/package.json +++ b/packages/gatsby-source-prismic/package.json @@ -34,7 +34,7 @@ ], "dependencies": { "@imgix/gatsby": "^1.6.13", - "@prismicio/client": "6.0.0-beta.0", + "@prismicio/client": "6.0.0-alpha.8", "@prismicio/custom-types-client": "^0.0.6", "@prismicio/helpers": "^2.0.0-beta.0", "@prismicio/types": "^0.1.13", diff --git a/yarn.lock b/yarn.lock index c0d391ab..65ec08cf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2919,20 +2919,19 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.9.2.tgz#adea7b6953cbb34651766b0548468e743c6a2353" integrity sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q== -"@prismicio/client@6.0.0-beta.0": - version "6.0.0-beta.0" - resolved "https://registry.yarnpkg.com/@prismicio/client/-/client-6.0.0-beta.0.tgz#b43a207775bfc2f70a3d30138ad239a689bf5acf" - integrity sha512-MGKxEao/CeqjuBaKrNovtoFl6D/EClfHnCBaL8c50nD2kQJz8BziC8cHUAw/8eWqEFnJXLvLCP5NKiks+s3log== +"@prismicio/client@6.0.0-alpha.8": + version "6.0.0-alpha.8" + resolved "https://registry.yarnpkg.com/@prismicio/client/-/client-6.0.0-alpha.8.tgz#fdd086032e823b964ef63651b4a2aa9bedf29109" + integrity sha512-zp3c8mZ/Sm2tQdZCASGEEx2UGJnYS1elFwTEca7M2y/Qi3hPM+Agp4xNMM5UoAg+2m1VFAt151vfaEscc5q4Gw== dependencies: - "@prismicio/helpers" "^2.0.0-alpha.9" - "@prismicio/types" "^0.1.13" + "@prismicio/helpers" "^2.0.0-alpha.3" "@prismicio/custom-types-client@^0.0.6": version "0.0.6" resolved "https://registry.yarnpkg.com/@prismicio/custom-types-client/-/custom-types-client-0.0.6.tgz#774e1498b88a07b817292a5894208851c5dd4635" integrity sha512-/QeHmNzEtOMtEAZF7ZfRSSosSXGhA4dzQm7vczhxdBGIT23Bbj+h0I4hNlpJZ4n0UzmIYWtd45jYCguVo3hfqQ== -"@prismicio/helpers@^2.0.0-alpha.9", "@prismicio/helpers@^2.0.0-beta.0": +"@prismicio/helpers@^2.0.0-alpha.3", "@prismicio/helpers@^2.0.0-beta.0": version "2.0.0-beta.0" resolved "https://registry.yarnpkg.com/@prismicio/helpers/-/helpers-2.0.0-beta.0.tgz#493d07f81bde06d76928af94e99672ac9f429962" integrity sha512-2WLXcS9Q/8JU7maNo/3cUSsUKnjUMpuZTxVxCSaDxDcBACrXR3T2nSJKvzcO5jS5zzpAkJG6zCdjP3dQVRwPmw==