From 617027468b0ba9fa1fef08b0ae908867afbf8e8c Mon Sep 17 00:00:00 2001 From: Kari Salminen Date: Wed, 7 Aug 2024 15:32:13 +0300 Subject: [PATCH] feat(sports): add dynamic CMS configured redirect using middleware MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The redirects are fetched periodically from CMS's GraphQL endpoint for siteSettings.redirects. The redirects' cache is in-memory and per pod, and the cache is refreshed from CMS by default between 6–9 minutes (i.e. 5–10min interval but a bit tighter and under 10min). Redirects' cache updating interval can be configured using environment variables: - MIN_REDIRECTS_UPDATE_INTERVAL_MS (defaults to 6min in milliseconds) - MAX_REDIRECTS_UPDATE_INTERVAL_MS (defaults to 9min in millseconds) Also update generated GraphQL schemas i.e. ran: ```bash cd apps/sports-helsinki/ yarn generate:graphql cp ./src/components/domain/graphql/generated/graphql.tsx \ ../../packages/components/src/types/generated/ cd ../../ npx prettier ./packages/components/src/types/generated/graphql.tsx -w rm -fr ./apps/sports-helsinki/src/components/ ``` and as a consequence disambiguate conflicting PageInfo types, PageInfo, PageUriInfo and VenueProxyPageInfo. refs LIIKUNTA-655 --- apps/events-helsinki/package.json | 1 + apps/hobbies-helsinki/package.json | 1 + apps/sports-helsinki/package.json | 1 + .../redirectCampaignRoutes.config.js | 1 + .../src/edge-runtime-compatible/README.md | 10 + .../__tests__/isObject.test.tsx | 39 + .../__tests__/isStringOrNull.test.tsx | 34 + .../__tests__/isValidRedirectAddress.tsx | 36 + .../__tests__/parseRedirects.test.tsx | 137 + .../src/edge-runtime-compatible/constants.ts | 3 + .../isValidRedirectAddress.ts | 35 + .../edge-runtime-compatible/parseRedirects.ts | 90 + .../edge-runtime-compatible/queryRedirects.ts | 40 + .../edge-runtime-compatible/redirectsCache.ts | 161 ++ .../edge-runtime-compatible/stripLocale.ts | 2 + .../src/edge-runtime-compatible/typeguards.ts | 23 + .../src/edge-runtime-compatible/types.ts | 7 + apps/sports-helsinki/src/middleware.ts | 60 +- packages/components/package.json | 1 + .../src/components/domain/event/queryUtils.ts | 8 +- .../src/types/generated/graphql.tsx | 2197 ++++++++++++++--- packages/components/src/types/types.ts | 2 +- .../src/utils/headless-cms/service.tsx | 10 +- packages/graphql-proxy-server/package.json | 2 +- .../src/schema/paginationSchema.ts | 2 +- .../venue-graphql-proxy/src/types/types.ts | 14 +- yarn.lock | 149 +- 27 files changed, 2728 insertions(+), 338 deletions(-) create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/README.md create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isObject.test.tsx create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isStringOrNull.test.tsx create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isValidRedirectAddress.tsx create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/__tests__/parseRedirects.test.tsx create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/constants.ts create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/isValidRedirectAddress.ts create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/parseRedirects.ts create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/queryRedirects.ts create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/redirectsCache.ts create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/stripLocale.ts create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/typeguards.ts create mode 100644 apps/sports-helsinki/src/edge-runtime-compatible/types.ts diff --git a/apps/events-helsinki/package.json b/apps/events-helsinki/package.json index 63539c32e..251448163 100644 --- a/apps/events-helsinki/package.json +++ b/apps/events-helsinki/package.json @@ -56,6 +56,7 @@ "dotenv": "^16.3.1", "file-saver": "^2.0.5", "graphql": "16.7.1", + "graphql-request": "7.1.0", "hds-react": "^3.9.0", "i18next": "23.2.3", "ics": "^3.2.0", diff --git a/apps/hobbies-helsinki/package.json b/apps/hobbies-helsinki/package.json index 0d973445c..c145548f5 100644 --- a/apps/hobbies-helsinki/package.json +++ b/apps/hobbies-helsinki/package.json @@ -56,6 +56,7 @@ "dotenv": "^16.3.1", "file-saver": "^2.0.5", "graphql": "16.7.1", + "graphql-request": "7.1.0", "hds-react": "^3.9.0", "i18next": "23.2.3", "ics": "^3.2.0", diff --git a/apps/sports-helsinki/package.json b/apps/sports-helsinki/package.json index f8b99c905..b93aaebc6 100644 --- a/apps/sports-helsinki/package.json +++ b/apps/sports-helsinki/package.json @@ -63,6 +63,7 @@ "dotenv": "^16.3.1", "file-saver": "^2.0.5", "graphql": "16.7.1", + "graphql-request": "7.1.0", "hds-react": "^3.9.0", "i18next": "23.2.3", "ics": "^3.2.0", diff --git a/apps/sports-helsinki/redirectCampaignRoutes.config.js b/apps/sports-helsinki/redirectCampaignRoutes.config.js index 809a2d63c..e58518ec6 100644 --- a/apps/sports-helsinki/redirectCampaignRoutes.config.js +++ b/apps/sports-helsinki/redirectCampaignRoutes.config.js @@ -1,5 +1,6 @@ // Ignore prettier in order to preserve readability of the routes: // prettier-ignore +// @deprecated since implementation of dynamic CMS configured redirects const redirectRoutes = { // Finnish locale versions '/ulkokuntosaliohjaukset': '/fi/pages/ohjattu-liikunta/ohjattu-toiminta-ulkokuntosaleilla', diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/README.md b/apps/sports-helsinki/src/edge-runtime-compatible/README.md new file mode 100644 index 000000000..f376ed911 --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/README.md @@ -0,0 +1,10 @@ +## Edge runtime compatible source code + +Basically for [Next.js's middleware compatibility](https://nextjs.org/docs/pages/building-your-application/routing/middleware#runtime): + +> Middleware currently only supports the Edge runtime. + +See + +- https://nextjs.org/docs/pages/api-reference/edge +- https://nextjs.org/docs/pages/building-your-application/routing/middleware diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isObject.test.tsx b/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isObject.test.tsx new file mode 100644 index 000000000..150268be3 --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isObject.test.tsx @@ -0,0 +1,39 @@ +import { isObject } from '../typeguards'; + +describe('isObject returns true', () => { + it.each([ + {}, + { 1: undefined }, + { key: 'value' }, + { key: 'value', anotherKey: 'another value' }, + { a: { b: 1, 2: { 3: [4, 5, 6] } } }, + ])('%s', (value) => { + expect(isObject(value)).toBe(true); + }); +}); + +describe('isObject returns false', () => { + it.each([ + null, + undefined, + NaN, + 0, + '', + ' ', + 'test', + 1, + 123, + 123.5, + [], + ['non-empty array'], + Array(1).fill(1), + new Set(), + new Set([1, 2, 3]), + new Map(), + new Map([['key', 'value']]), + Symbol('symbol'), + BigInt(123), + ])('%s', (value) => { + expect(isObject(value)).toBe(false); + }); +}); diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isStringOrNull.test.tsx b/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isStringOrNull.test.tsx new file mode 100644 index 000000000..5702f0cf7 --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isStringOrNull.test.tsx @@ -0,0 +1,34 @@ +import { isStringOrNull } from '../typeguards'; + +describe('isStringOrNull returns true', () => { + it.each(['', ' ', 'test', '匹', null])('%s', (value) => { + expect(isStringOrNull(value)).toBe(true); + }); +}); + +describe('isStringOrNull returns false', () => { + it.each([ + {}, + undefined, + NaN, + 0, + 1, + 123, + 123.5, + { 1: undefined }, + { key: 'value' }, + { key: 'value', anotherKey: 'another value' }, + { a: { b: 1, 2: { 3: [4, 5, 6] } } }, + [], + ['non-empty array'], + Array(1).fill(1), + new Set(), + new Set([1, 2, 3]), + new Map(), + new Map([['key', 'value']]), + Symbol('symbol'), + BigInt(123), + ])('%s', (value) => { + expect(isStringOrNull(value)).toBe(false); + }); +}); diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isValidRedirectAddress.tsx b/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isValidRedirectAddress.tsx new file mode 100644 index 000000000..715ad4299 --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/isValidRedirectAddress.tsx @@ -0,0 +1,36 @@ +import { isValidRedirectAddress } from '../isValidRedirectAddress'; + +describe('isValidRedirectAddress returns true', () => { + it.each([ + '/', + '/questions/198606/can-i-use-commas-in-a-url', + '/fi/search?searchType=Venue&text=test+a+text+search&venueOrderBy=wheelchair', + '/wiki/File:Artistic_swimming_women%27s_team_medal_ceremony_at_Tokyo_2020.jpg', + '/wiki/2020年夏季奧林匹克運動會團體韻律泳比賽', + '/wiki/Καλλιτεχνική_κολύμβηση_στους_Θερινούς_Ολυμπιακούς_Αγώνες_2020_–_Ομαδικό_γυναικών#Αποτελέσματα', + '/auth/realms/helsinki-tunnistus/protocol/openid-connect/auth?client_id=kukkuu-ui&redirect_uri=' + + 'https%3A%2F%2Fkummilapset.hel.fi%2Fcallback&response_type=code&scope=openid+profile+email&state=' + + '5df5f78691853f7ef4f5db2d02fb0e20&code_challenge=ZbOcQqOA-lLNB93o_OnaCJo7QcINCfx-cfVbMrZwDFD&' + + 'code_challenge_method=S256&response_mode=query', + '/fi/أطفال-الثقافة/', + ])('%s', (pathname) => { + expect(isValidRedirectAddress(pathname)).toBe(true); + }); +}); + +describe('isValidRedirectAddress returns false', () => { + it.each([ + '', + ' ', + ' /', + '/ ', + ' / ', + '\n/', + '//', + '/`', + 'https://example.org/', + 'https://liikunta.hel.fi/search', + ])('%s', (pathname) => { + expect(isValidRedirectAddress(pathname)).toBe(false); + }); +}); diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/parseRedirects.test.tsx b/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/parseRedirects.test.tsx new file mode 100644 index 000000000..66d51a63e --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/__tests__/parseRedirects.test.tsx @@ -0,0 +1,137 @@ +import { parseRedirects } from '../parseRedirects'; +import type { AppLanguage, Redirects } from '../types'; + +let consoleWarningSpy: jest.SpyInstance; + +beforeEach(() => { + consoleWarningSpy = jest.spyOn(console, 'warn').mockImplementation(); +}); + +afterEach(() => { + jest.clearAllMocks(); +}); + +describe('parseRedirects', () => { + type TestInput = { + encodedRedirects: string | null | undefined; + language: AppLanguage; + expectedOutput: Redirects; + expectedWarnings: string[]; + }; + + it.each([ + { + encodedRedirects: null, + language: 'fi', + expectedOutput: {}, + expectedWarnings: [], + }, + { + encodedRedirects: undefined, + language: 'fi', + expectedOutput: {}, + expectedWarnings: [], + }, + { + encodedRedirects: 'null', + language: 'fi', + expectedOutput: {}, + expectedWarnings: [], + }, + { + encodedRedirects: '[]', + language: 'fi', + expectedOutput: {}, + expectedWarnings: [], + }, + { + encodedRedirects: '[{"/a": "/b"}]', + language: 'fi', + expectedOutput: { '/a': '/b', '/fi/a': '/b' }, + expectedWarnings: [], + }, + { + encodedRedirects: + '[{"/a": "/b"},' + + '{"": ""},' + + '{"invalid-from-path": "/valid-to-path"},' + + '{"/test": "https://example.org/other-site/", "/c": "/d"},' + + '{"/valid-from-path": "invalid-to-path"},' + + '{"invalid-from-path": "invalid-to-path"}]', + language: 'fi', + expectedOutput: { '/a': '/b', '/fi/a': '/b', '/c': '/d', '/fi/c': '/d' }, + expectedWarnings: [ + 'Ignoring invalid fi redirect: invalid-from-path -> /valid-to-path', + 'Ignoring invalid fi redirect: /test -> https://example.org/other-site/', + 'Ignoring invalid fi redirect: /valid-from-path -> invalid-to-path', + 'Ignoring invalid fi redirect: invalid-from-path -> invalid-to-path', + ], + }, + { + encodedRedirects: '[{"/a": "/b"}]', + language: 'sv', + expectedOutput: { '/a': '/b', '/sv/a': '/b' }, + expectedWarnings: [], + }, + { + encodedRedirects: '[{"/a": "/b"}]', + language: 'en', + expectedOutput: { '/a': '/b', '/en/a': '/b' }, + expectedWarnings: [], + }, + { + encodedRedirects: + '[{"/wiki/ακ#Απ": "/中-cn/to_go/2020年?search=with+text&type=new#info"}]', + language: 'en', + expectedOutput: { + '/en/wiki/ακ#Απ': '/中-cn/to_go/2020年?search=with+text&type=new#info', + '/wiki/ακ#Απ': '/中-cn/to_go/2020年?search=with+text&type=new#info', + }, + expectedWarnings: [], + }, + { + encodedRedirects: '[{"/a": "/b"}, {"/c": "/d"}]', + language: 'fi', + expectedOutput: { + '/a': '/b', + '/c': '/d', + '/fi/a': '/b', + '/fi/c': '/d', + }, + expectedWarnings: [], + }, + { + encodedRedirects: '{"/a": "/b", "/c": "/d"}', + language: 'en', + expectedOutput: { + '/a': '/b', + '/c': '/d', + '/en/a': '/b', + '/en/c': '/d', + }, + expectedWarnings: [], + }, + { + encodedRedirects: '[{"/a/b/c": "/d"}, {"/e/f/": "/g/h/"}]', + language: 'sv', + expectedOutput: { + '/a/b/c': '/d', + '/e/f/': '/g/h/', + '/sv/a/b/c': '/d', + '/sv/e/f/': '/g/h/', + }, + expectedWarnings: [], + }, + ])( + 'parseRedirects($encodedRedirects, "$language") == $expectedOutput with expected warnings', + ({ encodedRedirects, language, expectedOutput, expectedWarnings }) => { + expect(parseRedirects(encodedRedirects, language)).toStrictEqual( + expectedOutput + ); + for (const warning of expectedWarnings) { + expect(consoleWarningSpy).toHaveBeenCalledWith(warning); + } + expect(consoleWarningSpy).toHaveBeenCalledTimes(expectedWarnings.length); + } + ); +}); diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/constants.ts b/apps/sports-helsinki/src/edge-runtime-compatible/constants.ts new file mode 100644 index 000000000..7d43eb786 --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/constants.ts @@ -0,0 +1,3 @@ +// TODO: For some reason middleware cannot read `'@events-helsinki/components` package without breaking the build +export const LOCALES = ['fi', 'en', 'sv'] as const; // i18n.locales.join('|'); +export const DEFAULT_LANGUAGE = 'fi'; diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/isValidRedirectAddress.ts b/apps/sports-helsinki/src/edge-runtime-compatible/isValidRedirectAddress.ts new file mode 100644 index 000000000..8f4212271 --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/isValidRedirectAddress.ts @@ -0,0 +1,35 @@ +/** + * Check if the given pathname is a valid redirect address + * @param pathname The pathname to check + * @returns True if the pathname is a valid redirect address, otherwise false + */ +export function isValidRedirectAddress(pathname: unknown): boolean { + /** + * Unicode character class escapes (e.g. \p{Letter}): + * + * L = Letter, includes categories: + * - Lu = Uppercase Letter = https://www.compart.com/en/unicode/category/Lu for e.g. "A" (Latin capital letter A) + * - Ll = Lowercase Letter = https://www.compart.com/en/unicode/category/Ll for e.g. "a" (Latin small letter A) + * - Lt = Titlecase Letter = https://www.compart.com/en/unicode/category/Lt for e.g. "Lj" (Latin capital letter lj) + * - Lm = Modifier Letter = https://www.compart.com/en/unicode/category/Lm for e.g. "ʼ" (Modifier Letter Apostrophe) + * - Lo = Other Letter = https://www.compart.com/en/unicode/category/Lo for e.g. "ƒ" (Latin small letter f with hook) + * + * N = Number, includes categories: + * - Nd = Decimal Number = https://www.compart.com/en/unicode/category/Nd for e.g. "5" (Digit Five) + * - Nl = Letter Number = https://www.compart.com/en/unicode/category/Nl for e.g. "Ⅷ" (Roman Numeral Eight) + * - No = Other Number = https://www.compart.com/en/unicode/category/No for e.g. "½" (Vulgar Fraction One Half) + * + * Pc = Connector Punctuation = https://www.compart.com/en/unicode/category/Pc for e.g. "_" (underscore) + * Pd = Dash Punctuation = https://www.compart.com/en/unicode/category/Pd for e.g. "-" (hyphen-minus) + * Sc = Currency Symbol = https://www.compart.com/en/unicode/category/Sc for e.g. "$" (Dollar sign) + * + * See documentation: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape + * https://unicode.org/reports/tr18/#General_Category_Property + */ + return ( + typeof pathname === 'string' && + (pathname == '/' || + /^(?:\/[\p{L}\p{N}\p{Pc}\p{Pd}\p{Sc}#%&+,.:;=?@]+)+\/?$/u.test(pathname)) + ); +} diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/parseRedirects.ts b/apps/sports-helsinki/src/edge-runtime-compatible/parseRedirects.ts new file mode 100644 index 000000000..ee511c77d --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/parseRedirects.ts @@ -0,0 +1,90 @@ +import { isValidRedirectAddress } from './isValidRedirectAddress'; +import { isObject } from './typeguards'; +import type { AppLanguage, Redirects } from './types'; + +/** + * Parses the redirect entries from the given object. + * @param redirectsObject The redirects object to parse + * @param language The language of the pages being redirected + */ +function redirectEntries( + redirectsObject: NonNullable, + language: AppLanguage +): Redirects { + const redirects: Redirects = {}; + for (const [key, value] of Object.entries(redirectsObject)) { + if (isValidRedirectAddress(key) && isValidRedirectAddress(value)) { + redirects[key] = value; + if (!(key.startsWith(`/${language}/`) || key == `/${language}`)) { + redirects[`/${language}${key}`] = value; + } + } else if ( + // Completely ignore {"": ""} mappings that can easily be created in CMS, + // but give a warning about other invalid entries + !(key == '' && value == '') + ) { + // eslint-disable-next-line no-console + console.warn(`Ignoring invalid ${language} redirect: ${key} -> ${value}`); + } + } + return redirects; +} + +/** + * Combines the redirect entries from the given array of objects into a single object. + * @param redirectsArray The array of redirect entries to combine + * @param language The language of the pages being redirected + */ +function combineArrayOfRedirectEntries( + redirectsArray: Array, + language: AppLanguage +): Redirects { + const redirects: Redirects = {}; + for (const elem of redirectsArray) { + if (isObject(elem)) { + Object.assign(redirects, redirectEntries(elem, language)); + } + } + return redirects; +} + +/** + * Parses the redirects JSON string into a redirects object. + * @param encodedRedirects The encoded redirects JSON string + * @param language The language of the redirects + * @returns The parsed redirects object, or an empty object if the JSON is invalid + */ +export function parseRedirects( + encodedRedirects: string | null | undefined, + language: AppLanguage +): Redirects { + if (!encodedRedirects) { + return {}; + } + + let redirectsJson = null; + + try { + redirectsJson = JSON.parse(encodedRedirects); + } catch (error) { + if (error instanceof SyntaxError) { + // eslint-disable-next-line no-console + console.error(`Failed to parse ${language} redirects JSON`, error); + return {}; + } else { + throw error; + } + } + + if ( + redirectsJson === null || + redirectsJson === undefined || + typeof redirectsJson !== 'object' + ) { + return {}; + } else if (Array.isArray(redirectsJson)) { + return combineArrayOfRedirectEntries(redirectsJson, language); + } else { + return redirectEntries(redirectsJson, language); + } +} diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/queryRedirects.ts b/apps/sports-helsinki/src/edge-runtime-compatible/queryRedirects.ts new file mode 100644 index 000000000..538389257 --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/queryRedirects.ts @@ -0,0 +1,40 @@ +/** + * FIXME: Fix module resolution for graphql-request, now ignoring graphql-request types. + * + * From graphql-request's README + * https://github.com/jasonkuhrt/graphql-request/blob/7.1.0/README.md#typescript-setup + * "This package uses package.exports. Therefore if you are a TypeScript user you must: + * 1. have your tsconfig.json moduleResolution set to "bundler" or "node16"/"nodenext". + * 2. Have your package.json type set to "module"." + * + * Changing "moduleResolution" to "nodenext" in tsconfig.json lead to TS5110 error: + * "Option 'module' must be set to 'NodeNext' when option 'moduleResolution' is set to 'NodeNext'." + * + * Changing "module" to "nodenext" as well lead to >300 type checking errors. + * + * Because graphql-request package use in this file is limited to one relatively + * straightforward use of `gql` and one simple use of `request`, and given the + * problems with changing the module resolution, it can be argued that circumventing + * the type checking for graphql-request is acceptable for this file, although not ideal. + */ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-ignore See above comment for the reason why typescript is disabled for graphql-request. +import { gql, request } from 'graphql-request'; + +const _REDIRECTS_QUERY = gql` + { + fi: siteSettings(language: "fi") { + redirects + } + en: siteSettings(language: "en") { + redirects + } + sv: siteSettings(language: "sv") { + redirects + } + } +`; + +// Query redirects from the CMS +export const queryRedirects = (): Promise => + request(process.env.FEDERATION_ROUTER_ENDPOINT, _REDIRECTS_QUERY); diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/redirectsCache.ts b/apps/sports-helsinki/src/edge-runtime-compatible/redirectsCache.ts new file mode 100644 index 000000000..fa59a0382 --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/redirectsCache.ts @@ -0,0 +1,161 @@ +import { parseRedirects } from './parseRedirects'; +import { queryRedirects } from './queryRedirects'; +import { stripLocale } from './stripLocale'; +import { isObject, isStringOrNull } from './typeguards'; +import type { Redirects } from './types'; + +/** Convert minutes to milliseconds. */ +const minToMs = (minutes: number) => Math.round(minutes * 60 * 1000); + +/** + * The minimum and maximum interval for updating the redirects cache in milliseconds. + * The interval is randomized to avoid all instances querying the CMS at the same time. + * The default interval is 6–9min (i.e. a bit tighter 5–10min interval and <10min at max). + */ +const [MIN_REDIRECTS_UPDATE_INTERVAL_MS, MAX_REDIRECTS_UPDATE_INTERVAL_MS] = [ + Number(process.env.MIN_REDIRECTS_UPDATE_INTERVAL_MS) || minToMs(6), + Number(process.env.MAX_REDIRECTS_UPDATE_INTERVAL_MS) || minToMs(9), +].sort( + // Custom sort function to overcome Javascript's default sorting by string value + (a, b) => a - b +); + +// The cache for redirects fetched from the CMS +let _redirectsCache: Redirects = {}; + +/** + * Get a random value using the Web Crypto API. + * Compatible with Edge Runtime, see + * https://vercel.com/docs/functions/runtimes/edge-runtime + * @returns A random value between 0 and 2^32-1 + */ +const getRandomValue = () => { + const randomValues = new Uint32Array(1); + crypto.getRandomValues(randomValues); + return randomValues[0]; +}; + +/** + * Calculate the interval for updating the redirects cache. + * The interval is randomized to avoid all instances querying the CMS at the same time. + * @returns The interval in milliseconds, random value between + * [MIN_REDIRECTS_UPDATE_INTERVAL_MS, MAX_REDIRECTS_UPDATE_INTERVAL_MS] + */ +const calculateRedirectsUpdateIntervalMs = () => { + const minMs = MIN_REDIRECTS_UPDATE_INTERVAL_MS; + const deltaMs = + MAX_REDIRECTS_UPDATE_INTERVAL_MS - MIN_REDIRECTS_UPDATE_INTERVAL_MS; + return minMs + (getRandomValue() % deltaMs); +}; + +/** + * Set the redirects cache based on the given data. + * @param data The data to set the redirects cache with + * + * Supports both successful and error responses from the CMS. + * + * Empty redirects for a language result in an error response, + * but the non-empty redirects for some other language are still returned + * nested under data['response']['data']. + */ +function setRedirectsCache(data: unknown): void { + // Use TypeScript's type narrowing to check for type + // (Complex type guards could easily break as TypeScript just believes them): + // + // type ErrorResponse = { + // response: { + // data: unknown; + // } + // }; + if ( + isObject(data) && + isObject(data['response']) && + 'data' in data['response'] + ) { + // Unpack nested response data in case of error response + setRedirectsCache(data.response.data); + return; + } + + // Use TypeScript's type narrowing to check for type + // (Complex type guards could easily break as TypeScript just believes them): + // + // type RedirectsQueryResponse = { + // fi: { redirects: string | null }; + // en: { redirects: string | null }; + // sv: { redirects: string | null }; + // }; + if ( + isObject(data) && + isObject(data['fi']) && + isObject(data['en']) && + isObject(data['sv']) && + isStringOrNull(data['fi']['redirects']) && + isStringOrNull(data['en']['redirects']) && + isStringOrNull(data['sv']['redirects']) + ) { + const fiRedirects = parseRedirects(data.fi.redirects, 'fi'); + const enRedirects = parseRedirects(data.en.redirects, 'en'); + const svRedirects = parseRedirects(data.sv.redirects, 'sv'); + + // Combine all redirects in order of priority: + // 1. Finnish (i.e. overrides all others) + // 2. English (i.e. overrides Swedish but not Finnish) + // 3. Swedish (i.e. only fallback if neither Finnish nor English has a redirect) + // i.e. first svRedirects are assigned to target, then enRedirects, last fiRedirects. + _redirectsCache = Object.assign({}, svRedirects, enRedirects, fiRedirects); + } else { + // eslint-disable-next-line no-console + console.error('Failed to parse CMS redirects, using old redirects', { + data, + }); + } +} + +/** + * Get a redirect from the cache. + * @param pathname The pathname to get a redirect for + * @param currentLocale The current locale + * @returns The redirect if found, otherwise undefined, in the following order: + * 1. Pathname with current locale + * 2. Pathname (may or may not have a locale, which may or may not be the current locale) + * 3. Pathname without locale + */ +export function getRedirectFromCache( + pathname: string, + currentLocale: string +): string | undefined { + const pathnameWithoutLocale = stripLocale(pathname); + const pathnameWithCurrentLocale = `/${currentLocale}${pathnameWithoutLocale}`; + return ( + _redirectsCache[pathnameWithCurrentLocale] || + _redirectsCache[pathname] || + _redirectsCache[pathnameWithoutLocale] + ); +} + +/** + * Update the redirects cache by fetching the redirects from the CMS + * and schedule the next cache update after a random interval. + */ +export function updateRedirectsCache() { + // eslint-disable-next-line no-console + console.log('Fetching redirects from CMS'); + + queryRedirects().then( + /** Handle successful response */ + setRedirectsCache, + /** + * Handle error response + * + * Empty redirects for a language raise an error, + * but the non-empty redirects for some other language are still returned. + * + * The response data is nested under data['response']['data'] + */ + setRedirectsCache + ); + + // Schedule the next update after a random interval + setTimeout(updateRedirectsCache, calculateRedirectsUpdateIntervalMs()); +} diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/stripLocale.ts b/apps/sports-helsinki/src/edge-runtime-compatible/stripLocale.ts new file mode 100644 index 000000000..fc8320510 --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/stripLocale.ts @@ -0,0 +1,2 @@ +export const stripLocale = (path: string) => + path.replace(/^\/(?:en|sv|fi)(?:\/|$)/i, `/`); diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/typeguards.ts b/apps/sports-helsinki/src/edge-runtime-compatible/typeguards.ts new file mode 100644 index 000000000..cc1b434d0 --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/typeguards.ts @@ -0,0 +1,23 @@ +/** + * Type guard for validating an object. + * @param value The value to validate + * @return True if the value is an object, otherwise false + */ +export function isObject(value: unknown): value is Record { + return ( + typeof value === 'object' && + value !== null && + !Array.isArray(value) && + !(value instanceof Set) && + !(value instanceof Map) + ); +} + +/** + * Type guard for validating a string or null. + * @param value The value to validate + * @return True if the value is a string or null, otherwise false + */ +export function isStringOrNull(value: unknown): value is string | null { + return typeof value === 'string' || value === null; +} diff --git a/apps/sports-helsinki/src/edge-runtime-compatible/types.ts b/apps/sports-helsinki/src/edge-runtime-compatible/types.ts new file mode 100644 index 000000000..51d654074 --- /dev/null +++ b/apps/sports-helsinki/src/edge-runtime-compatible/types.ts @@ -0,0 +1,7 @@ +import type { LOCALES } from './constants'; + +// TODO: For some reason middleware cannot read `'@events-helsinki/components` package without breaking the build +export type AppLanguage = (typeof LOCALES)[number]; + +export type RedirectAddress = string; +export type Redirects = Record; diff --git a/apps/sports-helsinki/src/middleware.ts b/apps/sports-helsinki/src/middleware.ts index 5bb8ac929..6f073f789 100644 --- a/apps/sports-helsinki/src/middleware.ts +++ b/apps/sports-helsinki/src/middleware.ts @@ -1,22 +1,26 @@ import type { NextRequest } from 'next/server'; import { NextResponse } from 'next/server'; import redirectCampaignRoutes from '../redirectCampaignRoutes.config'; - -// TODO: For some reason middleware cannot read `'@events-helsinki/components` package without breaking the build -const DEFAULT_LANGUAGE = 'fi'; -const locales = ['fi', 'en', 'sv']; // i18n.locales.join('|'); +import { DEFAULT_LANGUAGE, LOCALES } from './edge-runtime-compatible/constants'; +import { + getRedirectFromCache, + updateRedirectsCache, +} from './edge-runtime-compatible/redirectsCache'; const requestType = { isStaticFile: (req: NextRequest) => req.nextUrl.pathname.startsWith('/_next'), isPagesFolderApi: (req: NextRequest) => req.nextUrl.pathname.includes('/api/'), - // eslint-disable-next-line regexp/no-unused-capturing-group - isPublicFile: (req: NextRequest) => /\.(.*)$/.test(req.nextUrl.pathname), + // FIXME: This seems broken, as it will match any pathname with a dot in it + // Originally probably from https://github.com/vercel/next.js/discussions/18419 + // as `PUBLIC_FILE = /\.(.*)$/` and `PUBLIC_FILE.test(pathname)` and passed + // through hobbies-helsinki repo to events-helsinki-monorepo. + isPublicFile: (req: NextRequest) => req.nextUrl.pathname.includes('.'), }; /** Get the preferred locale, similar to above or using a library */ function getLocaleFromPathname(pathname: string) { - const pattern = `^/?(?${locales.join('|')})/?`; + const pattern = `^/?(?${LOCALES.join('|')})/?`; const match = pathname.match(new RegExp(pattern, 'i')); return match?.groups?.locale; } @@ -27,7 +31,7 @@ function getLocale(req: NextRequest) { } function isPathnameMissingLocale(pathname: string) { - return locales.every( + return LOCALES.every( (locale) => !pathname.startsWith(`/${locale}/`) && pathname !== `/${locale}` && @@ -52,6 +56,33 @@ function getLocaleMatchesFromPathname(pathname: string): DefaultMatchesType { ); } +/** + * Handle dynamic and static redirects + * @param req Incoming request + * @returns Redirect response or null if no redirect is needed + */ +const handleRedirects = (req: NextRequest): NextResponse | null => { + const { pathname, search } = req.nextUrl; + + // Handle dynamic CMS configured redirects + const dynamicRedirectTo = getRedirectFromCache(pathname, getLocale(req)); + if (dynamicRedirectTo) { + // eslint-disable-next-line no-console + console.log(`Redirecting from ${pathname} to ${dynamicRedirectTo}`); + return NextResponse.redirect( + new URL(`${dynamicRedirectTo}${search}`, req.url) + ); + } + + // @deprecated redirectCampaignRoutes + // Let redirect routes through without prefixing them with locale + if (Object.keys(redirectCampaignRoutes).includes(pathname)) { + return NextResponse.redirect(new URL(pathname, req.url)); + } + + return null; // No redirect needed +}; + /** * Enforce prefix for default locale 'fi' * https://github.com/vercel/next.js/discussions/18419 @@ -67,11 +98,6 @@ const prefixDefaultLocale = async (req: NextRequest) => { url.pathname ); - // Let redirect routes through without prefixing them with locale - if (Object.keys(redirectCampaignRoutes).includes(pathname)) { - return NextResponse.redirect(new URL(pathname, req.url)); - } - // The default locale needs to be redirected so that it uses the default language in URL. if (req.nextUrl.locale === 'default') { return NextResponse.redirect( @@ -119,5 +145,11 @@ export async function middleware(req: NextRequest) { ) { return; } - return prefixDefaultLocale(req); + + return handleRedirects(req) || prefixDefaultLocale(req); } + +/** + * Initialize redirects cache immediately and schedule its updating. + */ +setTimeout(updateRedirectsCache, 0); diff --git a/packages/components/package.json b/packages/components/package.json index e82ace758..80e9a10ed 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -56,6 +56,7 @@ "fast-deep-equal": "3.1.3", "file-saver": "^2.0.5", "graphql": "16.7.1", + "graphql-request": "7.1.0", "hds-core": "^3.9.0", "hds-design-tokens": "^3.9.0", "hds-react": "^3.9.0", diff --git a/packages/components/src/components/domain/event/queryUtils.ts b/packages/components/src/components/domain/event/queryUtils.ts index 042458c85..ea2c219ee 100644 --- a/packages/components/src/components/domain/event/queryUtils.ts +++ b/packages/components/src/components/domain/event/queryUtils.ts @@ -7,14 +7,16 @@ import { SIMILAR_EVENTS_AMOUNT, } from '../../../constants/event-constants'; import type { EventFields } from '../../../types/event-types'; -import { +import type { EventListQuery, EventListQueryVariables, - EventTypeId, Meta, QueryEventListArgs, } from '../../../types/generated/graphql'; -import { useEventListQuery } from '../../../types/generated/graphql'; +import { + EventTypeId, + useEventListQuery, +} from '../../../types/generated/graphql'; import { getEventIdFromUrl } from '../../../utils/eventUtils'; /** diff --git a/packages/components/src/types/generated/graphql.tsx b/packages/components/src/types/generated/graphql.tsx index 4a465c50d..0ca1b2a49 100644 --- a/packages/components/src/types/generated/graphql.tsx +++ b/packages/components/src/types/generated/graphql.tsx @@ -223,10 +223,16 @@ export type Category = DatabaseIdentifier & enqueuedScripts?: Maybe; /** Connection between the TermNode type and the EnqueuedStylesheet type */ enqueuedStylesheets?: Maybe; - /** The unique resource identifier path */ + /** The globally unique ID for the object */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is restricted from the current viewer */ isRestricted?: Maybe; /** Whether the node is a Term */ @@ -325,6 +331,8 @@ export type CategoryConnection = { edges: Array; /** A list of connected category Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: CategoryConnectionPageInfo; }; /** Edge between a Node and a connected category */ @@ -335,6 +343,18 @@ export type CategoryConnectionEdge = { node: Category; }; +/** Page Info on the connected CategoryConnectionEdge */ +export type CategoryConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is ID. */ export enum CategoryIdType { /** The Database ID for the node */ @@ -358,7 +378,7 @@ export type CategoryToAncestorsCategoryConnection = CategoryConnection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: CategoryToAncestorsCategoryConnectionPageInfo; }; /** An edge in a connection */ @@ -371,6 +391,22 @@ export type CategoryToAncestorsCategoryConnectionEdge = CategoryConnectionEdge & node: Category; }; +/** Page Info on the "CategoryToAncestorsCategoryConnection" */ +export type CategoryToAncestorsCategoryConnectionPageInfo = + CategoryConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'CategoryToAncestorsCategoryConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Connection between the Category type and the category type */ export type CategoryToCategoryConnection = CategoryConnection & Connection & { @@ -380,7 +416,7 @@ export type CategoryToCategoryConnection = CategoryConnection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: CategoryToCategoryConnectionPageInfo; }; /** An edge in a connection */ @@ -393,6 +429,21 @@ export type CategoryToCategoryConnectionEdge = CategoryConnectionEdge & node: Category; }; +/** Page Info on the "CategoryToCategoryConnection" */ +export type CategoryToCategoryConnectionPageInfo = CategoryConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'CategoryToCategoryConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the CategoryToCategoryConnection connection */ export type CategoryToCategoryConnectionWhereArgs = { /** Unique cache key to be produced when this query is stored in an object cache. Default is 'core'. */ @@ -448,7 +499,7 @@ export type CategoryToContentNodeConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: CategoryToContentNodeConnectionPageInfo; }; /** An edge in a connection */ @@ -461,6 +512,22 @@ export type CategoryToContentNodeConnectionEdge = ContentNodeConnectionEdge & node: ContentNode; }; +/** Page Info on the "CategoryToContentNodeConnection" */ +export type CategoryToContentNodeConnectionPageInfo = + ContentNodeConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'CategoryToContentNodeConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the CategoryToContentNodeConnection connection */ export type CategoryToContentNodeConnectionWhereArgs = { /** The Types of content to filter */ @@ -481,7 +548,7 @@ export type CategoryToContentNodeConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -521,7 +588,7 @@ export type CategoryToPostConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: CategoryToPostConnectionPageInfo; }; /** An edge in a connection */ @@ -534,6 +601,21 @@ export type CategoryToPostConnectionEdge = Edge & node: Post; }; +/** Page Info on the "CategoryToPostConnection" */ +export type CategoryToPostConnectionPageInfo = PageInfo & + PostConnectionPageInfo & + WpPageInfo & { + __typename?: 'CategoryToPostConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the CategoryToPostConnection connection */ export type CategoryToPostConnectionWhereArgs = { /** The user that's connected as the author of the object. Use the userId for the author object. */ @@ -568,7 +650,7 @@ export type CategoryToPostConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -628,7 +710,7 @@ export type Collection = ContentNode & Previewable & UniformResourceIdentifiable & { __typename?: 'Collection'; - /** Taustaväri */ + /** Background Color */ backgroundColor?: Maybe; /** * The id field matches the WP_Post->ID field. @@ -645,7 +727,7 @@ export type Collection = ContentNode & date?: Maybe; /** The publishing date set in GMT. */ dateGmt?: Maybe; - /** Kuvaus */ + /** Description */ description?: Maybe; /** The desired slug of the post */ desiredSlug?: Maybe; @@ -663,10 +745,16 @@ export type Collection = ContentNode & guid?: Maybe; /** The globally unique identifier of the collection-cpt object. */ id: Scalars['ID']['output']; - /** Kuva */ + /** Image */ image?: Maybe; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is a node in the preview state */ isPreview?: Maybe; /** Whether the object is restricted from the current viewer */ @@ -685,7 +773,7 @@ export type Collection = ContentNode & modified?: Maybe; /** The GMT modified time for a post. If a post was recently updated the modified field will change to match the corresponding time in GMT. */ modifiedGmt?: Maybe; - /** Moduulilistaus */ + /** List of modules */ modules?: Maybe>>; /** Connection between the Collection type and the collection type */ preview?: Maybe; @@ -699,7 +787,7 @@ export type Collection = ContentNode & revisions?: Maybe; /** The SEO Framework data of the collection */ seo?: Maybe; - /** Näytä etusivulla */ + /** Show on front page */ showOnFrontPage?: Maybe; /** The uri slug for the post. This is equivalent to the WP_Post->post_name field and the post_name column in the database for the "post_objects" table. */ slug?: Maybe; @@ -758,6 +846,8 @@ export type CollectionConnection = { edges: Array; /** A list of connected collection Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: CollectionConnectionPageInfo; }; /** Edge between a Node and a connected collection */ @@ -768,6 +858,18 @@ export type CollectionConnectionEdge = { node: Collection; }; +/** Page Info on the connected CollectionConnectionEdge */ +export type CollectionConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is ID. */ export enum CollectionIdType { /** Identify a resource by the Database ID. */ @@ -808,7 +910,7 @@ export type CollectionToRevisionConnection = CollectionConnection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: CollectionToRevisionConnectionPageInfo; }; /** An edge in a connection */ @@ -821,6 +923,22 @@ export type CollectionToRevisionConnectionEdge = CollectionConnectionEdge & node: Collection; }; +/** Page Info on the "CollectionToRevisionConnection" */ +export type CollectionToRevisionConnectionPageInfo = + CollectionConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'CollectionToRevisionConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the CollectionToRevisionConnection connection */ export type CollectionToRevisionConnectionWhereArgs = { /** Filter the connection based on dates */ @@ -839,7 +957,7 @@ export type CollectionToRevisionConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -861,7 +979,8 @@ export type CollectionToRevisionConnectionWhereArgs = { /** A Comment object */ export type Comment = DatabaseIdentifier & - Node & { + Node & + UniformResourceIdentifiable & { __typename?: 'Comment'; /** User agent used to post the comment. This field is equivalent to WP_Comment->comment_agent and the value matching the "comment_agent" column in SQL. */ agent?: Maybe; @@ -891,10 +1010,22 @@ export type Comment = DatabaseIdentifier & dateGmt?: Maybe; /** The globally unique identifier for the comment object */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; + /** Whether the node is a Content Node */ + isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is restricted from the current viewer */ isRestricted?: Maybe; + /** Whether the node is a Term */ + isTermNode: Scalars['Boolean']['output']; /** Karma value for the comment. This field is equivalent to WP_Comment->comment_karma and the value matching the "comment_karma" column in SQL. */ karma?: Maybe; + /** The permalink of the comment */ + link?: Maybe; /** Connection between the Comment type and the Comment type */ parent?: Maybe; /** The database id of the parent comment node or null if it is the root comment */ @@ -907,6 +1038,8 @@ export type Comment = DatabaseIdentifier & status?: Maybe; /** Type of comment. This field is equivalent to WP_Comment->comment_type and the value matching the "comment_type" column in SQL. */ type?: Maybe; + /** The unique resource identifier path */ + uri?: Maybe; }; /** A Comment object */ @@ -962,6 +1095,8 @@ export type CommentConnection = { edges: Array; /** A list of connected Comment Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: CommentConnectionPageInfo; }; /** Edge between a Node and a connected Comment */ @@ -972,6 +1107,18 @@ export type CommentConnectionEdge = { node: Comment; }; +/** Page Info on the connected CommentConnectionEdge */ +export type CommentConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single comment node. Default is "ID". To be used along with the "id" field. */ export enum CommentNodeIdTypeEnum { /** Identify a resource by the Database ID. */ @@ -1001,7 +1148,7 @@ export type CommentToCommentConnection = CommentConnection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: CommentToCommentConnectionPageInfo; }; /** An edge in a connection */ @@ -1014,6 +1161,21 @@ export type CommentToCommentConnectionEdge = CommentConnectionEdge & node: Comment; }; +/** Page Info on the "CommentToCommentConnection" */ +export type CommentToCommentConnectionPageInfo = CommentConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'CommentToCommentConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the CommentToCommentConnection connection */ export type CommentToCommentConnectionWhereArgs = { /** Comment author email address. */ @@ -1239,6 +1401,8 @@ export type Connection = { edges: Array; /** A list of connected nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: PageInfo; }; /** The contact type */ @@ -1267,7 +1431,7 @@ export type Contact = ContentNode & date?: Maybe; /** The publishing date set in GMT. */ dateGmt?: Maybe; - /** Kuvaus */ + /** Description */ description?: Maybe; /** The desired slug of the post */ desiredSlug?: Maybe; @@ -1285,14 +1449,20 @@ export type Contact = ContentNode & featuredImageDatabaseId?: Maybe; /** Globally unique ID of the featured image assigned to the node */ featuredImageId?: Maybe; - /** Etunimi */ + /** First name */ firstName?: Maybe; /** The global unique identifier for this post. This currently matches the value stored in WP_Post->guid and the guid column in the "post_objects" database table. */ guid?: Maybe; /** The globally unique identifier of the contact-cpt object. */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is a node in the preview state */ isPreview?: Maybe; /** Whether the object is restricted from the current viewer */ @@ -1307,7 +1477,7 @@ export type Contact = ContentNode & language?: Maybe; /** The user that most recently edited the node */ lastEditedBy?: Maybe; - /** Sukunimi */ + /** Last name */ lastName?: Maybe; /** The permalink of the post */ link?: Maybe; @@ -1384,6 +1554,8 @@ export type ContactConnection = { edges: Array; /** A list of connected contact Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: ContactConnectionPageInfo; }; /** Edge between a Node and a connected contact */ @@ -1394,6 +1566,18 @@ export type ContactConnectionEdge = { node: Contact; }; +/** Page Info on the connected ContactConnectionEdge */ +export type ContactConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is ID. */ export enum ContactIdType { /** Identify a resource by the Database ID. */ @@ -1443,7 +1627,7 @@ export type ContactToRevisionConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: ContactToRevisionConnectionPageInfo; }; /** An edge in a connection */ @@ -1456,6 +1640,21 @@ export type ContactToRevisionConnectionEdge = ContactConnectionEdge & node: Contact; }; +/** Page Info on the "ContactToRevisionConnection" */ +export type ContactToRevisionConnectionPageInfo = ContactConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'ContactToRevisionConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the ContactToRevisionConnection connection */ export type ContactToRevisionConnectionWhereArgs = { /** Filter the connection based on dates */ @@ -1474,7 +1673,7 @@ export type ContactToRevisionConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -1518,10 +1717,16 @@ export type ContentNode = { enqueuedStylesheets?: Maybe; /** The global unique identifier for this post. This currently matches the value stored in WP_Post->guid and the guid column in the "post_objects" database table. */ guid?: Maybe; - /** The unique resource identifier path */ + /** The globally unique ID for the object */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is a node in the preview state */ isPreview?: Maybe; /** Whether the object is restricted from the current viewer */ @@ -1572,6 +1777,8 @@ export type ContentNodeConnection = { edges: Array; /** A list of connected ContentNode Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: ContentNodeConnectionPageInfo; }; /** Edge between a Node and a connected ContentNode */ @@ -1582,6 +1789,18 @@ export type ContentNodeConnectionEdge = { node: ContentNode; }; +/** Page Info on the connected ContentNodeConnectionEdge */ +export type ContentNodeConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is ID. */ export enum ContentNodeIdTypeEnum { /** Identify a resource by the Database ID. */ @@ -1636,7 +1855,7 @@ export type ContentNodeToEnqueuedScriptConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: ContentNodeToEnqueuedScriptConnectionPageInfo; }; /** An edge in a connection */ @@ -1649,6 +1868,22 @@ export type ContentNodeToEnqueuedScriptConnectionEdge = Edge & node: EnqueuedScript; }; +/** Page Info on the "ContentNodeToEnqueuedScriptConnection" */ +export type ContentNodeToEnqueuedScriptConnectionPageInfo = + EnqueuedScriptConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'ContentNodeToEnqueuedScriptConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Connection between the ContentNode type and the EnqueuedStylesheet type */ export type ContentNodeToEnqueuedStylesheetConnection = Connection & EnqueuedStylesheetConnection & { @@ -1658,7 +1893,7 @@ export type ContentNodeToEnqueuedStylesheetConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: ContentNodeToEnqueuedStylesheetConnectionPageInfo; }; /** An edge in a connection */ @@ -1671,6 +1906,22 @@ export type ContentNodeToEnqueuedStylesheetConnectionEdge = Edge & node: EnqueuedStylesheet; }; +/** Page Info on the "ContentNodeToEnqueuedStylesheetConnection" */ +export type ContentNodeToEnqueuedStylesheetConnectionPageInfo = + EnqueuedStylesheetConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'ContentNodeToEnqueuedStylesheetConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** The template assigned to a node of content */ export type ContentTemplate = { /** The name of the template */ @@ -1703,6 +1954,8 @@ export type ContentType = Node & hierarchical?: Maybe; /** The globally unique identifier of the post-type object. */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; /** Whether this page is set to the static front page. */ @@ -1770,6 +2023,8 @@ export type ContentTypeConnection = { edges: Array; /** A list of connected ContentType Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: ContentTypeConnectionPageInfo; }; /** Edge between a Node and a connected ContentType */ @@ -1780,6 +2035,18 @@ export type ContentTypeConnectionEdge = { node: ContentType; }; +/** Page Info on the connected ContentTypeConnectionEdge */ +export type ContentTypeConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** Allowed Content Types */ export enum ContentTypeEnum { /** The Type of Content object */ @@ -1817,7 +2084,7 @@ export type ContentTypeToContentNodeConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: ContentTypeToContentNodeConnectionPageInfo; }; /** An edge in a connection */ @@ -1830,6 +2097,22 @@ export type ContentTypeToContentNodeConnectionEdge = ContentNodeConnectionEdge & node: ContentNode; }; +/** Page Info on the "ContentTypeToContentNodeConnection" */ +export type ContentTypeToContentNodeConnectionPageInfo = + ContentNodeConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'ContentTypeToContentNodeConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the ContentTypeToContentNodeConnection connection */ export type ContentTypeToContentNodeConnectionWhereArgs = { /** The Types of content to filter */ @@ -1850,7 +2133,7 @@ export type ContentTypeToContentNodeConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -1879,7 +2162,7 @@ export type ContentTypeToTaxonomyConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: ContentTypeToTaxonomyConnectionPageInfo; }; /** An edge in a connection */ @@ -1892,6 +2175,21 @@ export type ContentTypeToTaxonomyConnectionEdge = Edge & node: Taxonomy; }; +/** Page Info on the "ContentTypeToTaxonomyConnection" */ +export type ContentTypeToTaxonomyConnectionPageInfo = PageInfo & + TaxonomyConnectionPageInfo & + WpPageInfo & { + __typename?: 'ContentTypeToTaxonomyConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Allowed Content Types of the Category taxonomy. */ export enum ContentTypesOfCategoryEnum { /** The Type of Content object */ @@ -2289,7 +2587,7 @@ export type CreateUserInput = { displayName?: InputMaybe; /** A string containing the user's email address. */ email?: InputMaybe; - /** The user's first name. */ + /** The user's first name. */ firstName?: InputMaybe; /** User's Jabber account. */ jabber?: InputMaybe; @@ -2403,7 +2701,7 @@ export type DeleteCategoryInput = { /** The payload for the deleteCategory mutation. */ export type DeleteCategoryPayload = { __typename?: 'DeleteCategoryPayload'; - /** The deteted term object */ + /** The deleted term object */ category?: Maybe; /** If a 'clientMutationId' input is provided to the mutation, it will be returned as output on the mutation. This ID can be used by the client to track the progress of mutations and catch possible duplicate mutation submissions. */ clientMutationId?: Maybe; @@ -2419,6 +2717,8 @@ export type DeleteCollectionInput = { forceDelete?: InputMaybe; /** The ID of the collection to delete */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; }; /** The payload for the deleteCollection mutation. */ @@ -2461,6 +2761,8 @@ export type DeleteContactInput = { forceDelete?: InputMaybe; /** The ID of the contact to delete */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; }; /** The payload for the deleteContact mutation. */ @@ -2482,6 +2784,8 @@ export type DeleteLandingPageInput = { forceDelete?: InputMaybe; /** The ID of the landingPage to delete */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; }; /** The payload for the deleteLandingPage mutation. */ @@ -2524,6 +2828,8 @@ export type DeletePageInput = { forceDelete?: InputMaybe; /** The ID of the page to delete */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; }; /** The payload for the deletePage mutation. */ @@ -2552,7 +2858,7 @@ export type DeletePostFormatPayload = { clientMutationId?: Maybe; /** The ID of the deleted object */ deletedId?: Maybe; - /** The deteted term object */ + /** The deleted term object */ postFormat?: Maybe; }; @@ -2564,6 +2870,8 @@ export type DeletePostInput = { forceDelete?: InputMaybe; /** The ID of the post to delete */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; }; /** The payload for the deletePost mutation. */ @@ -2585,6 +2893,8 @@ export type DeleteReleaseInput = { forceDelete?: InputMaybe; /** The ID of the release to delete */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; }; /** The payload for the deleteRelease mutation. */ @@ -2613,7 +2923,7 @@ export type DeleteTagPayload = { clientMutationId?: Maybe; /** The ID of the deleted object */ deletedId?: Maybe; - /** The deteted term object */ + /** The deleted term object */ tag?: Maybe; }; @@ -2625,6 +2935,8 @@ export type DeleteTranslationInput = { forceDelete?: InputMaybe; /** The ID of the translation to delete */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; }; /** The payload for the deleteTranslation mutation. */ @@ -2706,11 +3018,23 @@ export type ElasticSearchResult = { /** Asset enqueued by the CMS */ export type EnqueuedAsset = { - /** @todo */ + /** The inline code to be run after the asset is loaded. */ + after?: Maybe>>; + /** + * Deprecated + * @deprecated Use `EnqueuedAsset.media` instead. + */ args?: Maybe; + /** The inline code to be run before the asset is loaded. */ + before?: Maybe>>; + /** The HTML conditional comment for the enqueued asset. E.g. IE 6, lte IE 7, etc */ + conditional?: Maybe; /** Dependencies needed to use this asset */ - dependencies?: Maybe>>; - /** Extra information needed for the script */ + dependencies?: Maybe>>; + /** + * Extra information needed for the script + * @deprecated Use `EnqueuedScript.extraData` instead. + */ extra?: Maybe; /** The handle of the enqueued asset */ handle?: Maybe; @@ -2726,19 +3050,35 @@ export type EnqueuedAsset = { export type EnqueuedScript = EnqueuedAsset & Node & { __typename?: 'EnqueuedScript'; - /** @todo */ + /** The inline code to be run after the asset is loaded. */ + after?: Maybe>>; + /** + * Deprecated + * @deprecated Use `EnqueuedAsset.media` instead. + */ args?: Maybe; + /** The inline code to be run before the asset is loaded. */ + before?: Maybe>>; + /** The HTML conditional comment for the enqueued asset. E.g. IE 6, lte IE 7, etc */ + conditional?: Maybe; /** Dependencies needed to use this asset */ dependencies?: Maybe>>; - /** Extra information needed for the script */ + /** + * Extra information needed for the script + * @deprecated Use `EnqueuedScript.extraData` instead. + */ extra?: Maybe; + /** Extra data supplied to the enqueued script */ + extraData?: Maybe; /** The handle of the enqueued asset */ handle?: Maybe; - /** The ID of the enqueued asset */ + /** The global ID of the enqueued script */ id: Scalars['ID']['output']; /** The source of the asset */ src?: Maybe; - /** The version of the enqueued asset */ + /** The loading strategy to use on the script tag */ + strategy?: Maybe; + /** The version of the enqueued script */ version?: Maybe; }; @@ -2748,6 +3088,8 @@ export type EnqueuedScriptConnection = { edges: Array; /** A list of connected EnqueuedScript Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: EnqueuedScriptConnectionPageInfo; }; /** Edge between a Node and a connected EnqueuedScript */ @@ -2758,23 +3100,59 @@ export type EnqueuedScriptConnectionEdge = { node: EnqueuedScript; }; +/** Page Info on the connected EnqueuedScriptConnectionEdge */ +export type EnqueuedScriptConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** Stylesheet enqueued by the CMS */ export type EnqueuedStylesheet = EnqueuedAsset & Node & { __typename?: 'EnqueuedStylesheet'; - /** @todo */ + /** The inline code to be run after the asset is loaded. */ + after?: Maybe>>; + /** + * Deprecated + * @deprecated Use `EnqueuedAsset.media` instead. + */ args?: Maybe; + /** The inline code to be run before the asset is loaded. */ + before?: Maybe>>; + /** The HTML conditional comment for the enqueued asset. E.g. IE 6, lte IE 7, etc */ + conditional?: Maybe; /** Dependencies needed to use this asset */ - dependencies?: Maybe>>; - /** Extra information needed for the script */ + dependencies?: Maybe>>; + /** + * Extra information needed for the script + * @deprecated Use `EnqueuedScript.extraData` instead. + */ extra?: Maybe; /** The handle of the enqueued asset */ handle?: Maybe; - /** The ID of the enqueued asset */ + /** The global ID of the enqueued stylesheet */ id: Scalars['ID']['output']; + /** Whether the enqueued style is RTL or not */ + isRtl?: Maybe; + /** The media attribute to use for the link */ + media?: Maybe; + /** The absolute path to the enqueued style. Set when the stylesheet is meant to load inline. */ + path?: Maybe; + /** The `rel` attribute to use for the link */ + rel?: Maybe; /** The source of the asset */ src?: Maybe; - /** The version of the enqueued asset */ + /** Optional suffix, used in combination with RTL */ + suffix?: Maybe; + /** The title of the enqueued style. Used for preferred/alternate stylesheets. */ + title?: Maybe; + /** The version of the enqueued style */ version?: Maybe; }; @@ -2784,6 +3162,8 @@ export type EnqueuedStylesheetConnection = { edges: Array; /** A list of connected EnqueuedStylesheet Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: EnqueuedStylesheetConnectionPageInfo; }; /** Edge between a Node and a connected EnqueuedStylesheet */ @@ -2794,6 +3174,18 @@ export type EnqueuedStylesheetConnectionEdge = { node: EnqueuedStylesheet; }; +/** Page Info on the connected EnqueuedStylesheetConnectionEdge */ +export type EnqueuedStylesheetConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** Information about enrolled participant(s) in an event occurrence */ export type Enrolment = { __typename?: 'Enrolment'; @@ -2987,14 +3379,14 @@ export type EventPricing = { todo?: Maybe; }; -/** Kokoelmamoduuli: EventSearch */ +/** Collection Module: EventSearch */ export type EventSearch = { __typename?: 'EventSearch'; - /** Listattujen tapahtumien määrä “Näytä lisää” -painiketta */ + /** Amount of events listed before "show more -button" */ initAmountOfEvents?: Maybe; - /** Moduulin tyyppi */ + /** Module type */ module?: Maybe; - /** Moduulilistaus */ + /** List of modules */ modules?: Maybe>>; /** * Show all -link, final link is combination of Tapahtuma- ja kurssikarusellin @@ -3002,26 +3394,26 @@ export type EventSearch = { * https://client-url.com/search/?sort=end_time&super_event_type=umbrella,none&language=fi&start=2022-10-29 */ showAllLink?: Maybe; - /** Näytä kaikki -linkki */ + /** Show all -link */ showAllLinkCustom?: Maybe; - /** Moduulin otsikko */ + /** Module title */ title?: Maybe; - /** Hakukysely */ + /** Search query */ url?: Maybe; }; -/** Kokoelmamoduuli: EventSearchCarousel */ +/** Collection Module: EventSearchCarousel */ export type EventSearchCarousel = { __typename?: 'EventSearchCarousel'; - /** Korttien määrä karusellissa */ + /** Amount of cards in carousel */ amountOfCards?: Maybe; - /** Tapahtumat lähellä */ + /** Events nearby */ eventsNearby?: Maybe; - /** Moduulin tyyppi */ + /** Module type */ module?: Maybe; - /** Moduulilistaus */ + /** List of modules */ modules?: Maybe>>; - /** Tapahtumien järjestys */ + /** Events order */ orderNewestFirst?: Maybe; /** * Show all -link, final link is combination of Tapahtuma- ja kurssikarusellin @@ -3029,49 +3421,49 @@ export type EventSearchCarousel = { * https://client-url.com/search/?sort=end_time&super_event_type=umbrella,none&language=fi&start=2022-10-29 */ showAllLink?: Maybe; - /** Näytä kaikki -linkki */ + /** Show all -link */ showAllLinkCustom?: Maybe; - /** Moduulin otsikko */ + /** Module title */ title?: Maybe; - /** Hakukysely */ + /** Search query */ url?: Maybe; }; -/** Kokoelmamoduuli: EventSelected */ +/** Collection Module: EventSelected */ export type EventSelected = { __typename?: 'EventSelected'; - /** Lista tapahtumien ID-tiedoista */ + /** List of event IDs */ events?: Maybe>>; - /** Listattujen tapahtumien määrä “Näytä lisää” -painiketta */ + /** Amount of events listed before "show more -button" */ initAmountOfEvents?: Maybe; - /** Moduulin tyyppi */ + /** Module type */ module?: Maybe; - /** Moduulilistaus */ + /** List of modules */ modules?: Maybe>>; - /** Näytä kaikki -linkki */ + /** Show all -link */ showAllLink?: Maybe; - /** Moduulin otsikko */ + /** Module title */ title?: Maybe; }; -/** Kokoelmamoduuli: EventSelectedCarousel */ +/** Collection Module: EventSelectedCarousel */ export type EventSelectedCarousel = { __typename?: 'EventSelectedCarousel'; - /** Korttien määrä karusellissa */ + /** Amount of cards in carousel */ amountOfCards?: Maybe; - /** Korttien määrä riviä kohden */ + /** Amount of cards per row */ amountOfCardsPerRow?: Maybe; - /** Lista tapahtumien ID-tiedoista */ + /** List of event IDs */ events?: Maybe>>; - /** Tapahtumat lähellä */ + /** Events nearby */ eventsNearby?: Maybe; - /** Moduulin tyyppi */ + /** Module type */ module?: Maybe; - /** Moduulilistaus */ + /** List of modules */ modules?: Maybe>>; - /** Näytä kaikki -linkki */ + /** Show all -link */ showAllLink?: Maybe; - /** Moduulin otsikko */ + /** Module title */ title?: Maybe; }; @@ -3087,8 +3479,6 @@ export type ExternalLink = { name?: Maybe; }; -export type FooterBlocksUnion = LayoutEditor | LayoutImage | LayoutMenu; - /** Galleriakuva */ export type GalleryImage = { __typename?: 'GalleryImage'; @@ -3275,11 +3665,6 @@ export enum GeoJsonType { Polygon = 'Polygon', } -export type GlobalSidebarBlocksUnion = - | LayoutArticleHighlights - | LayoutArticles - | LayoutEditor; - /** Hero kenttä */ export type Hero = { __typename?: 'Hero'; @@ -3327,8 +3712,14 @@ export type HierarchicalContentNode = { guid?: Maybe; /** The globally unique ID for the object */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is a node in the preview state */ isPreview?: Maybe; /** Whether the object is restricted from the current viewer */ @@ -3407,7 +3798,7 @@ export type HierarchicalContentNodeToContentNodeAncestorsConnection = /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: HierarchicalContentNodeToContentNodeAncestorsConnectionPageInfo; }; /** An edge in a connection */ @@ -3421,6 +3812,22 @@ export type HierarchicalContentNodeToContentNodeAncestorsConnectionEdge = node: ContentNode; }; +/** Page Info on the "HierarchicalContentNodeToContentNodeAncestorsConnection" */ +export type HierarchicalContentNodeToContentNodeAncestorsConnectionPageInfo = + ContentNodeConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'HierarchicalContentNodeToContentNodeAncestorsConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the HierarchicalContentNodeToContentNodeAncestorsConnection connection */ export type HierarchicalContentNodeToContentNodeAncestorsConnectionWhereArgs = { /** The Types of content to filter */ @@ -3441,7 +3848,7 @@ export type HierarchicalContentNodeToContentNodeAncestorsConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -3471,7 +3878,7 @@ export type HierarchicalContentNodeToContentNodeChildrenConnection = /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: HierarchicalContentNodeToContentNodeChildrenConnectionPageInfo; }; /** An edge in a connection */ @@ -3485,6 +3892,22 @@ export type HierarchicalContentNodeToContentNodeChildrenConnectionEdge = node: ContentNode; }; +/** Page Info on the "HierarchicalContentNodeToContentNodeChildrenConnection" */ +export type HierarchicalContentNodeToContentNodeChildrenConnectionPageInfo = + ContentNodeConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'HierarchicalContentNodeToContentNodeChildrenConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the HierarchicalContentNodeToContentNodeChildrenConnection connection */ export type HierarchicalContentNodeToContentNodeChildrenConnectionWhereArgs = { /** The Types of content to filter */ @@ -3505,7 +3928,7 @@ export type HierarchicalContentNodeToContentNodeChildrenConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -3563,8 +3986,14 @@ export type HierarchicalTermNode = { enqueuedStylesheets?: Maybe; /** The globally unique ID for the object */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is restricted from the current viewer */ isRestricted?: Maybe; /** Whether the node is a Term */ @@ -3709,7 +4138,7 @@ export type LandingPage = ContentNode & Previewable & UniformResourceIdentifiable & { __typename?: 'LandingPage'; - /** Taustaväri */ + /** Background Color */ backgroundColor?: Maybe; /** Box Color */ boxColor?: Maybe; @@ -3723,7 +4152,7 @@ export type LandingPage = ContentNode & date?: Maybe; /** The publishing date set in GMT. */ dateGmt?: Maybe; - /** Kuvaus */ + /** Description */ description?: Maybe; /** The desired slug of the post */ desiredSlug?: Maybe; @@ -3745,8 +4174,14 @@ export type LandingPage = ContentNode & heroLink?: Maybe>>; /** The globally unique identifier of the landing-page-cpt object. */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is a node in the preview state */ isPreview?: Maybe; /** Whether the object is restricted from the current viewer */ @@ -3772,7 +4207,7 @@ export type LandingPage = ContentNode & modified?: Maybe; /** The GMT modified time for a post. If a post was recently updated the modified field will change to match the corresponding time in GMT. */ modifiedGmt?: Maybe; - /** Moduulilistaus */ + /** List of modules */ modules?: Maybe>>; /** Connection between the LandingPage type and the landingPage type */ preview?: Maybe; @@ -3870,6 +4305,8 @@ export type LandingPageConnection = { edges: Array; /** A list of connected landingPage Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: LandingPageConnectionPageInfo; }; /** Edge between a Node and a connected landingPage */ @@ -3880,6 +4317,18 @@ export type LandingPageConnectionEdge = { node: LandingPage; }; +/** Page Info on the connected LandingPageConnectionEdge */ +export type LandingPageConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is ID. */ export enum LandingPageIdType { /** Identify a resource by the Database ID. */ @@ -3901,7 +4350,7 @@ export type LandingPageToFloatImageConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: LandingPageToFloatImageConnectionPageInfo; }; /** An edge in a connection */ @@ -3914,6 +4363,22 @@ export type LandingPageToFloatImageConnectionEdge = Edge & node: MediaItem; }; +/** Page Info on the "LandingPageToFloatImageConnection" */ +export type LandingPageToFloatImageConnectionPageInfo = + MediaItemConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'LandingPageToFloatImageConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the LandingPageToFloatImageConnection connection */ export type LandingPageToFloatImageConnectionWhereArgs = { /** The Types of content to filter */ @@ -3934,7 +4399,7 @@ export type LandingPageToFloatImageConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -3963,7 +4428,7 @@ export type LandingPageToMediaItemConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: LandingPageToMediaItemConnectionPageInfo; }; /** An edge in a connection */ @@ -3976,6 +4441,22 @@ export type LandingPageToMediaItemConnectionEdge = Edge & node: MediaItem; }; +/** Page Info on the "LandingPageToMediaItemConnection" */ +export type LandingPageToMediaItemConnectionPageInfo = + MediaItemConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'LandingPageToMediaItemConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the LandingPageToMediaItemConnection connection */ export type LandingPageToMediaItemConnectionWhereArgs = { /** The Types of content to filter */ @@ -3996,7 +4477,7 @@ export type LandingPageToMediaItemConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -4025,7 +4506,7 @@ export type LandingPageToMobileImageConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: LandingPageToMobileImageConnectionPageInfo; }; /** An edge in a connection */ @@ -4038,6 +4519,22 @@ export type LandingPageToMobileImageConnectionEdge = Edge & node: MediaItem; }; +/** Page Info on the "LandingPageToMobileImageConnection" */ +export type LandingPageToMobileImageConnectionPageInfo = + MediaItemConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'LandingPageToMobileImageConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the LandingPageToMobileImageConnection connection */ export type LandingPageToMobileImageConnectionWhereArgs = { /** The Types of content to filter */ @@ -4058,7 +4555,7 @@ export type LandingPageToMobileImageConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -4098,7 +4595,7 @@ export type LandingPageToRevisionConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: LandingPageToRevisionConnectionPageInfo; }; /** An edge in a connection */ @@ -4111,6 +4608,22 @@ export type LandingPageToRevisionConnectionEdge = Edge & node: LandingPage; }; +/** Page Info on the "LandingPageToRevisionConnection" */ +export type LandingPageToRevisionConnectionPageInfo = + LandingPageConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'LandingPageToRevisionConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the LandingPageToRevisionConnection connection */ export type LandingPageToRevisionConnectionWhereArgs = { /** Filter the connection based on dates */ @@ -4129,7 +4642,7 @@ export type LandingPageToRevisionConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -4193,65 +4706,65 @@ export type LanguageString = { /** Layout: LayoutArticleHighlights */ export type LayoutArticleHighlights = { __typename?: 'LayoutArticleHighlights'; - /** Ankkuri */ + /** Anchor */ anchor?: Maybe; - /** Artikkelit */ + /** Articles */ articles?: Maybe>>; - /** Taustaväri */ + /** Background Color */ backgroundColor?: Maybe; - /** Kategoria */ + /** Category */ category?: Maybe; - /** Valitse montako artikkelia näytetään */ + /** Amount of articles to list */ limit?: Maybe; - /** Näytä lisää linkki */ + /** Show more link */ showMore?: Maybe>>; - /** Tagi */ + /** Tag */ tag?: Maybe; - /** Sivuston otsikko */ + /** Title */ title?: Maybe; }; /** Layout: LayoutArticles */ export type LayoutArticles = { __typename?: 'LayoutArticles'; - /** Ankkuri */ + /** Anchor */ anchor?: Maybe; - /** Artikkelit */ + /** Articles */ articles?: Maybe>>; - /** Taustaväri */ + /** Background Color */ backgroundColor?: Maybe; - /** Kategoria */ + /** Category */ category?: Maybe; - /** Tagi */ + /** Tag */ limit?: Maybe; - /** Näytä lisää linkki */ + /** Show all -link */ showAllLink?: Maybe; - /** Tagi */ + /** Tag */ tag?: Maybe; - /** Sivuston otsikko */ + /** Title */ title?: Maybe; }; /** Layout: LayoutArticlesCarousel */ export type LayoutArticlesCarousel = { __typename?: 'LayoutArticlesCarousel'; - /** Ankkuri */ + /** Anchor */ anchor?: Maybe; - /** Artikkelit */ + /** Articles */ articles?: Maybe>>; - /** Taustaväri */ + /** Background Color */ backgroundColor?: Maybe; - /** Kategoria */ + /** Category */ category?: Maybe; - /** Valitse montako artikkelia näytetään */ + /** Amount of articles to list */ limit?: Maybe; - /** Näytä lisää linkki */ + /** Show all -link */ showAllLink?: Maybe; - /** Näytä lisää linkki */ + /** Show more link */ showMore?: Maybe>>; - /** Tagi */ + /** Tag */ tag?: Maybe; - /** Sivuston otsikko */ + /** Title */ title?: Maybe; }; @@ -4308,13 +4821,6 @@ export type LayoutContent = { title?: Maybe; }; -/** Layout: LayoutEditor */ -export type LayoutEditor = { - __typename?: 'LayoutEditor'; - /** Editor */ - editor?: Maybe; -}; - /** Layout: LayoutImage */ export type LayoutImage = { __typename?: 'LayoutImage'; @@ -4350,53 +4856,46 @@ export type LayoutLinkList = { title?: Maybe; }; -/** Layout: LayoutMenu */ -export type LayoutMenu = { - __typename?: 'LayoutMenu'; - /** Menu */ - menu?: Maybe; -}; - /** Layout: LayoutPages */ export type LayoutPages = { __typename?: 'LayoutPages'; - /** Ankkuri */ + /** Anchor */ anchor?: Maybe; - /** Taustaväri */ + /** Background Color */ backgroundColor?: Maybe; - /** Kuvaus */ + /** Description */ description?: Maybe; - /** Sivut */ + /** Pages */ pages?: Maybe>>; - /** Näytä lisää linkki */ + /** Show all -link */ showAllLink?: Maybe; - /** Sivuston otsikko */ + /** Title */ title?: Maybe; }; /** Layout: LayoutPagesCarousel */ export type LayoutPagesCarousel = { __typename?: 'LayoutPagesCarousel'; - /** Ankkuri */ + /** Anchor */ anchor?: Maybe; - /** Taustaväri */ + /** Background Color */ backgroundColor?: Maybe; - /** Kuvaus */ + /** Description */ description?: Maybe; - /** Sivut */ + /** Pages */ pages?: Maybe>>; - /** Sivuston otsikko */ + /** Title */ title?: Maybe; }; /** Layout: LayoutSocialMediaFeed */ export type LayoutSocialMediaFeed = { __typename?: 'LayoutSocialMediaFeed'; - /** Ankkuri */ + /** Anchor */ anchor?: Maybe; - /** Scripti */ + /** Script */ script?: Maybe; - /** Sivuston otsikko */ + /** Title */ title?: Maybe; }; @@ -4522,27 +5021,27 @@ export type LocationImage = { url?: Maybe; }; -/** Kokoelmamoduuli: LocationsSelected */ +/** Collection Module: LocationsSelected */ export type LocationsSelected = { __typename?: 'LocationsSelected'; /** List of location IDs */ locations?: Maybe>>; /** Module type */ module?: Maybe; - /** Moduulilistaus */ + /** List of modules */ modules?: Maybe>>; /** Module title */ title?: Maybe; }; -/** Kokoelmamoduuli: LocationsSelectedCarousel */ +/** Collection Module: LocationsSelectedCarousel */ export type LocationsSelectedCarousel = { __typename?: 'LocationsSelectedCarousel'; /** List of location IDs */ locations?: Maybe>>; /** Module type */ module?: Maybe; - /** Moduulilistaus */ + /** List of modules */ modules?: Maybe>>; /** Module title */ title?: Maybe; @@ -4622,8 +5121,14 @@ export type MediaItem = ContentNode & guid?: Maybe; /** The globally unique identifier of the attachment object. */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is a node in the preview state */ isPreview?: Maybe; /** Whether the object is restricted from the current viewer */ @@ -4769,6 +5274,8 @@ export type MediaItemConnection = { edges: Array; /** A list of connected mediaItem Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: MediaItemConnectionPageInfo; }; /** Edge between a Node and a connected mediaItem */ @@ -4779,6 +5286,18 @@ export type MediaItemConnectionEdge = { node: MediaItem; }; +/** Page Info on the connected MediaItemConnectionEdge */ +export type MediaItemConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is ID. */ export enum MediaItemIdType { /** Identify a resource by the Database ID. */ @@ -4918,6 +5437,8 @@ export type MenuConnection = { edges: Array; /** A list of connected Menu Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: MenuConnectionPageInfo; }; /** Edge between a Node and a connected Menu */ @@ -4928,6 +5449,18 @@ export type MenuConnectionEdge = { node: Menu; }; +/** Page Info on the connected MenuConnectionEdge */ +export type MenuConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** Navigation menu items are the individual items assigned to a menu. These are rendered as the links in a navigation menu. */ export type MenuItem = DatabaseIdentifier & Node & { @@ -4997,6 +5530,8 @@ export type MenuItemConnection = { edges: Array; /** A list of connected MenuItem Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: MenuItemConnectionPageInfo; }; /** Edge between a Node and a connected MenuItem */ @@ -5007,14 +5542,32 @@ export type MenuItemConnectionEdge = { node: MenuItem; }; +/** Page Info on the connected MenuItemConnectionEdge */ +export type MenuItemConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** Nodes that can be linked to as Menu Items */ export type MenuItemLinkable = { /** The unique identifier stored in the database */ databaseId: Scalars['Int']['output']; - /** The unique resource identifier path */ + /** The globally unique ID for the object */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the node is a Term */ isTermNode: Scalars['Boolean']['output']; /** The unique resource identifier path */ @@ -5060,7 +5613,7 @@ export type MenuItemToMenuItemConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: MenuItemToMenuItemConnectionPageInfo; }; /** An edge in a connection */ @@ -5073,6 +5626,21 @@ export type MenuItemToMenuItemConnectionEdge = Edge & node: MenuItem; }; +/** Page Info on the "MenuItemToMenuItemConnection" */ +export type MenuItemToMenuItemConnectionPageInfo = MenuItemConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'MenuItemToMenuItemConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the MenuItemToMenuItemConnection connection */ export type MenuItemToMenuItemConnectionWhereArgs = { /** The database ID of the object */ @@ -5141,7 +5709,7 @@ export type MenuToMenuItemConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: MenuToMenuItemConnectionPageInfo; }; /** An edge in a connection */ @@ -5154,6 +5722,21 @@ export type MenuToMenuItemConnectionEdge = Edge & node: MenuItem; }; +/** Page Info on the "MenuToMenuItemConnection" */ +export type MenuToMenuItemConnectionPageInfo = MenuItemConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'MenuToMenuItemConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the MenuToMenuItemConnection connection */ export type MenuToMenuItemConnectionWhereArgs = { /** The database ID of the object */ @@ -5175,69 +5758,71 @@ export type Meta = { /** The MimeType of the object */ export enum MimeTypeEnum { - /** MimeType application/msword */ + /** application/msword mime type. */ ApplicationMsword = 'APPLICATION_MSWORD', - /** MimeType application/pdf */ + /** application/pdf mime type. */ ApplicationPdf = 'APPLICATION_PDF', - /** MimeType application/vnd.apple.keynote */ + /** application/vnd.apple.keynote mime type. */ ApplicationVndAppleKeynote = 'APPLICATION_VND_APPLE_KEYNOTE', - /** MimeType application/vnd.ms-excel */ + /** application/vnd.ms-excel mime type. */ ApplicationVndMsExcel = 'APPLICATION_VND_MS_EXCEL', - /** MimeType application/vnd.ms-excel.sheet.binary.macroEnabled.12 */ + /** application/vnd.ms-excel.sheet.binary.macroEnabled.12 mime type. */ ApplicationVndMsExcelSheetBinaryMacroenabled_12 = 'APPLICATION_VND_MS_EXCEL_SHEET_BINARY_MACROENABLED_12', - /** MimeType application/vnd.ms-excel.sheet.macroEnabled.12 */ + /** application/vnd.ms-excel.sheet.macroEnabled.12 mime type. */ ApplicationVndMsExcelSheetMacroenabled_12 = 'APPLICATION_VND_MS_EXCEL_SHEET_MACROENABLED_12', - /** MimeType application/vnd.ms-powerpoint */ + /** application/vnd.ms-powerpoint mime type. */ ApplicationVndMsPowerpoint = 'APPLICATION_VND_MS_POWERPOINT', - /** MimeType application/vnd.ms-powerpoint.presentation.macroEnabled.12 */ + /** application/vnd.ms-powerpoint.presentation.macroEnabled.12 mime type. */ ApplicationVndMsPowerpointPresentationMacroenabled_12 = 'APPLICATION_VND_MS_POWERPOINT_PRESENTATION_MACROENABLED_12', - /** MimeType application/vnd.ms-powerpoint.slideshow.macroEnabled.12 */ + /** application/vnd.ms-powerpoint.slideshow.macroEnabled.12 mime type. */ ApplicationVndMsPowerpointSlideshowMacroenabled_12 = 'APPLICATION_VND_MS_POWERPOINT_SLIDESHOW_MACROENABLED_12', - /** MimeType application/vnd.ms-word.document.macroEnabled.12 */ + /** application/vnd.ms-word.document.macroEnabled.12 mime type. */ ApplicationVndMsWordDocumentMacroenabled_12 = 'APPLICATION_VND_MS_WORD_DOCUMENT_MACROENABLED_12', - /** MimeType application/vnd.oasis.opendocument.text */ + /** application/vnd.oasis.opendocument.text mime type. */ ApplicationVndOasisOpendocumentText = 'APPLICATION_VND_OASIS_OPENDOCUMENT_TEXT', - /** MimeType application/vnd.openxmlformats-officedocument.presentationml.presentation */ + /** application/vnd.openxmlformats-officedocument.presentationml.presentation mime type. */ ApplicationVndOpenxmlformatsOfficedocumentPresentationmlPresentation = 'APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_PRESENTATIONML_PRESENTATION', - /** MimeType application/vnd.openxmlformats-officedocument.presentationml.slideshow */ + /** application/vnd.openxmlformats-officedocument.presentationml.slideshow mime type. */ ApplicationVndOpenxmlformatsOfficedocumentPresentationmlSlideshow = 'APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_PRESENTATIONML_SLIDESHOW', - /** MimeType application/vnd.openxmlformats-officedocument.spreadsheetml.sheet */ + /** application/vnd.openxmlformats-officedocument.spreadsheetml.sheet mime type. */ ApplicationVndOpenxmlformatsOfficedocumentSpreadsheetmlSheet = 'APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_SPREADSHEETML_SHEET', - /** MimeType application/vnd.openxmlformats-officedocument.wordprocessingml.document */ + /** application/vnd.openxmlformats-officedocument.wordprocessingml.document mime type. */ ApplicationVndOpenxmlformatsOfficedocumentWordprocessingmlDocument = 'APPLICATION_VND_OPENXMLFORMATS_OFFICEDOCUMENT_WORDPROCESSINGML_DOCUMENT', - /** MimeType audio/flac */ + /** audio/flac mime type. */ AudioFlac = 'AUDIO_FLAC', - /** MimeType audio/midi */ + /** audio/midi mime type. */ AudioMidi = 'AUDIO_MIDI', - /** MimeType audio/mpeg */ + /** audio/mpeg mime type. */ AudioMpeg = 'AUDIO_MPEG', - /** MimeType audio/ogg */ + /** audio/ogg mime type. */ AudioOgg = 'AUDIO_OGG', - /** MimeType audio/wav */ + /** audio/wav mime type. */ AudioWav = 'AUDIO_WAV', - /** MimeType image/gif */ + /** image/avif mime type. */ + ImageAvif = 'IMAGE_AVIF', + /** image/gif mime type. */ ImageGif = 'IMAGE_GIF', - /** MimeType image/jpeg */ + /** image/jpeg mime type. */ ImageJpeg = 'IMAGE_JPEG', - /** MimeType image/png */ + /** image/png mime type. */ ImagePng = 'IMAGE_PNG', - /** MimeType video/3gpp */ + /** video/3gpp mime type. */ Video_3Gpp = 'VIDEO_3GPP', - /** MimeType video/3gpp2 */ + /** video/3gpp2 mime type. */ Video_3Gpp2 = 'VIDEO_3GPP2', - /** MimeType video/avi */ + /** video/avi mime type. */ VideoAvi = 'VIDEO_AVI', - /** MimeType video/mp4 */ + /** video/mp4 mime type. */ VideoMp4 = 'VIDEO_MP4', - /** MimeType video/mpeg */ + /** video/mpeg mime type. */ VideoMpeg = 'VIDEO_MPEG', - /** MimeType video/ogg */ + /** video/ogg mime type. */ VideoOgg = 'VIDEO_OGG', - /** MimeType video/quicktime */ + /** video/quicktime mime type. */ VideoQuicktime = 'VIDEO_QUICKTIME', - /** MimeType video/webm */ + /** video/webm mime type. */ VideoWebm = 'VIDEO_WEBM', - /** MimeType video/x-flv */ + /** video/x-flv mime type. */ VideoXFlv = 'VIDEO_X_FLV', } @@ -5905,6 +6490,8 @@ export type Page = ContentNode & hero?: Maybe; /** The globally unique identifier of the page object. */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; /** Whether this page is set to the static front page. */ @@ -6044,6 +6631,8 @@ export type PageConnection = { edges: Array; /** A list of connected page Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: PageConnectionPageInfo; }; /** Edge between a Node and a connected page */ @@ -6054,6 +6643,18 @@ export type PageConnectionEdge = { node: Page; }; +/** Page Info on the connected PageConnectionEdge */ +export type PageConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is ID. */ export enum PageIdType { /** Identify a resource by the Database ID. */ @@ -6064,6 +6665,18 @@ export enum PageIdType { Uri = 'URI', } +/** Information about pagination in a connection. */ +export type PageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + export type PageModulesUnionType = | EventSearch | EventSearchCarousel @@ -6112,7 +6725,7 @@ export type PageToRevisionConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: PageToRevisionConnectionPageInfo; }; /** An edge in a connection */ @@ -6125,6 +6738,21 @@ export type PageToRevisionConnectionEdge = Edge & node: Page; }; +/** Page Info on the "PageToRevisionConnection" */ +export type PageToRevisionConnectionPageInfo = PageConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'PageToRevisionConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the PageToRevisionConnection connection */ export type PageToRevisionConnectionWhereArgs = { /** The user that's connected as the author of the object. Use the userId for the author object. */ @@ -6151,7 +6779,7 @@ export type PageToRevisionConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -6313,6 +6941,8 @@ export type PluginConnection = { edges: Array; /** A list of connected Plugin Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: PluginConnectionPageInfo; }; /** Edge between a Node and a connected Plugin */ @@ -6323,6 +6953,18 @@ export type PluginConnectionEdge = { node: Plugin; }; +/** Page Info on the connected PluginConnectionEdge */ +export type PluginConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The status of the WordPress plugin. */ export enum PluginStatusEnum { /** The plugin is currently active. */ @@ -6411,8 +7053,14 @@ export type Post = ContentNode & hidePublishedDate?: Maybe; /** The globally unique identifier of the post object. */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is a node in the preview state */ isPreview?: Maybe; /** Whether the object is restricted from the current viewer */ @@ -6580,6 +7228,8 @@ export type PostConnection = { edges: Array; /** A list of connected post Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: PostConnectionPageInfo; }; /** Edge between a Node and a connected post */ @@ -6590,6 +7240,18 @@ export type PostConnectionEdge = { node: Post; }; +/** Page Info on the connected PostConnectionEdge */ +export type PostConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The postFormat type */ export type PostFormat = DatabaseIdentifier & Node & @@ -6608,10 +7270,16 @@ export type PostFormat = DatabaseIdentifier & enqueuedScripts?: Maybe; /** Connection between the TermNode type and the EnqueuedStylesheet type */ enqueuedStylesheets?: Maybe; - /** The unique resource identifier path */ + /** The globally unique ID for the object */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is restricted from the current viewer */ isRestricted?: Maybe; /** Whether the node is a Term */ @@ -6681,6 +7349,8 @@ export type PostFormatConnection = { edges: Array; /** A list of connected postFormat Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: PostFormatConnectionPageInfo; }; /** Edge between a Node and a connected postFormat */ @@ -6691,6 +7361,18 @@ export type PostFormatConnectionEdge = { node: PostFormat; }; +/** Page Info on the connected PostFormatConnectionEdge */ +export type PostFormatConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is ID. */ export enum PostFormatIdType { /** The Database ID for the node */ @@ -6714,7 +7396,7 @@ export type PostFormatToContentNodeConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: PostFormatToContentNodeConnectionPageInfo; }; /** An edge in a connection */ @@ -6727,6 +7409,22 @@ export type PostFormatToContentNodeConnectionEdge = ContentNodeConnectionEdge & node: ContentNode; }; +/** Page Info on the "PostFormatToContentNodeConnection" */ +export type PostFormatToContentNodeConnectionPageInfo = + ContentNodeConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'PostFormatToContentNodeConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the PostFormatToContentNodeConnection connection */ export type PostFormatToContentNodeConnectionWhereArgs = { /** The Types of content to filter */ @@ -6747,7 +7445,7 @@ export type PostFormatToContentNodeConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -6776,7 +7474,7 @@ export type PostFormatToPostConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: PostFormatToPostConnectionPageInfo; }; /** An edge in a connection */ @@ -6789,6 +7487,21 @@ export type PostFormatToPostConnectionEdge = Edge & node: Post; }; +/** Page Info on the "PostFormatToPostConnection" */ +export type PostFormatToPostConnectionPageInfo = PageInfo & + PostConnectionPageInfo & + WpPageInfo & { + __typename?: 'PostFormatToPostConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the PostFormatToPostConnection connection */ export type PostFormatToPostConnectionWhereArgs = { /** The user that's connected as the author of the object. Use the userId for the author object. */ @@ -6823,7 +7536,7 @@ export type PostFormatToPostConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -7039,7 +7752,7 @@ export type PostToCategoryConnection = CategoryConnection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: PostToCategoryConnectionPageInfo; }; /** An edge in a connection */ @@ -7052,6 +7765,21 @@ export type PostToCategoryConnectionEdge = CategoryConnectionEdge & node: Category; }; +/** Page Info on the "PostToCategoryConnection" */ +export type PostToCategoryConnectionPageInfo = CategoryConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'PostToCategoryConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the PostToCategoryConnection connection */ export type PostToCategoryConnectionWhereArgs = { /** Unique cache key to be produced when this query is stored in an object cache. Default is 'core'. */ @@ -7107,7 +7835,7 @@ export type PostToPostFormatConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: PostToPostFormatConnectionPageInfo; }; /** An edge in a connection */ @@ -7120,6 +7848,21 @@ export type PostToPostFormatConnectionEdge = Edge & node: PostFormat; }; +/** Page Info on the "PostToPostFormatConnection" */ +export type PostToPostFormatConnectionPageInfo = PageInfo & + PostFormatConnectionPageInfo & + WpPageInfo & { + __typename?: 'PostToPostFormatConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the PostToPostFormatConnection connection */ export type PostToPostFormatConnectionWhereArgs = { /** Unique cache key to be produced when this query is stored in an object cache. Default is 'core'. */ @@ -7186,7 +7929,7 @@ export type PostToRevisionConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: PostToRevisionConnectionPageInfo; }; /** An edge in a connection */ @@ -7199,6 +7942,21 @@ export type PostToRevisionConnectionEdge = Edge & node: Post; }; +/** Page Info on the "PostToRevisionConnection" */ +export type PostToRevisionConnectionPageInfo = PageInfo & + PostConnectionPageInfo & + WpPageInfo & { + __typename?: 'PostToRevisionConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the PostToRevisionConnection connection */ export type PostToRevisionConnectionWhereArgs = { /** The user that's connected as the author of the object. Use the userId for the author object. */ @@ -7233,7 +7991,7 @@ export type PostToRevisionConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -7274,7 +8032,7 @@ export type PostToTagConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: PostToTagConnectionPageInfo; }; /** An edge in a connection */ @@ -7287,6 +8045,21 @@ export type PostToTagConnectionEdge = Edge & node: Tag; }; +/** Page Info on the "PostToTagConnection" */ +export type PostToTagConnectionPageInfo = PageInfo & + TagConnectionPageInfo & + WpPageInfo & { + __typename?: 'PostToTagConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the PostToTagConnection connection */ export type PostToTagConnectionWhereArgs = { /** Unique cache key to be produced when this query is stored in an object cache. Default is 'core'. */ @@ -7342,7 +8115,7 @@ export type PostToTermNodeConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: PostToTermNodeConnectionPageInfo; }; /** An edge in a connection */ @@ -7355,6 +8128,21 @@ export type PostToTermNodeConnectionEdge = Edge & node: TermNode; }; +/** Page Info on the "PostToTermNodeConnection" */ +export type PostToTermNodeConnectionPageInfo = PageInfo & + TermNodeConnectionPageInfo & + WpPageInfo & { + __typename?: 'PostToTermNodeConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the PostToTermNodeConnection connection */ export type PostToTermNodeConnectionWhereArgs = { /** Unique cache key to be produced when this query is stored in an object cache. Default is 'core'. */ @@ -7493,7 +8281,7 @@ export type Query = { categories?: Maybe; /** A 0bject */ category?: Maybe; - /** An object of the collection Type. Kokoelmat */ + /** An object of the collection Type. Collections */ collection?: Maybe; /** * A collection object @@ -7506,7 +8294,7 @@ export type Query = { comment?: Maybe; /** Connection between the RootQuery type and the Comment type */ comments?: Maybe; - /** An object of the contact Type. Yhteystiedot */ + /** An object of the contact Type. Contacts */ contact?: Maybe; /** * A contact object @@ -7532,15 +8320,11 @@ export type Query = { eventDetails: EventDetails; eventList: EventListResponse; eventsByIds: EventListResponse; - /** Footer blocks */ - footerBlocks?: Maybe>>; /** Fields of the 'GeneralSettings' settings group */ generalSettings?: Maybe; - /** Global Sidebar blocks */ - globalSidebarBlocks?: Maybe>>; keywordDetails: Keyword; keywordList: KeywordListResponse; - /** An object of the landingPage Type. Laskeutumissivut */ + /** An object of the landingPage Type. Landing Pages */ landingPage?: Maybe; /** * A landingPage object @@ -7613,7 +8397,7 @@ export type Query = { registeredScripts?: Maybe; /** Connection between the RootQuery type and the EnqueuedStylesheet type */ registeredStylesheets?: Maybe; - /** An object of the release Type. Tiedotteet */ + /** An object of the release Type. Releases */ release?: Maybe; /** * A release object @@ -7646,7 +8430,7 @@ export type Query = { themes?: Maybe; /** Translate string using pll_translate_string() (Polylang) */ translateString?: Maybe; - /** An object of the translation Type. Käännökset */ + /** An object of the translation Type. Translations */ translation?: Maybe; /** * A translation object @@ -7868,16 +8652,6 @@ export type QueryEventsByIdsArgs = { start?: InputMaybe; }; -/** The root entry point into the Graph */ -export type QueryFooterBlocksArgs = { - language: Scalars['String']['input']; -}; - -/** The root entry point into the Graph */ -export type QueryGlobalSidebarBlocksArgs = { - language: Scalars['String']['input']; -}; - /** The root entry point into the Graph */ export type QueryKeywordDetailsArgs = { id: Scalars['ID']['input']; @@ -8425,8 +9199,14 @@ export type Release = ContentNode & guid?: Maybe; /** The globally unique identifier of the release-cpt object. */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is a node in the preview state */ isPreview?: Maybe; /** Whether the object is restricted from the current viewer */ @@ -8524,6 +9304,8 @@ export type ReleaseConnection = { edges: Array; /** A list of connected release Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: ReleaseConnectionPageInfo; }; /** Edge between a Node and a connected release */ @@ -8534,6 +9316,18 @@ export type ReleaseConnectionEdge = { node: Release; }; +/** Page Info on the connected ReleaseConnectionEdge */ +export type ReleaseConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is ID. */ export enum ReleaseIdType { /** Identify a resource by the Database ID. */ @@ -8566,7 +9360,7 @@ export type ReleaseToRevisionConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: ReleaseToRevisionConnectionPageInfo; }; /** An edge in a connection */ @@ -8579,6 +9373,21 @@ export type ReleaseToRevisionConnectionEdge = Edge & node: Release; }; +/** Page Info on the "ReleaseToRevisionConnection" */ +export type ReleaseToRevisionConnectionPageInfo = PageInfo & + ReleaseConnectionPageInfo & + WpPageInfo & { + __typename?: 'ReleaseToRevisionConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the ReleaseToRevisionConnection connection */ export type ReleaseToRevisionConnectionWhereArgs = { /** Filter the connection based on dates */ @@ -8597,7 +9406,7 @@ export type ReleaseToRevisionConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -8686,7 +9495,7 @@ export type RootQueryToCategoryConnection = CategoryConnection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToCategoryConnectionPageInfo; }; /** An edge in a connection */ @@ -8699,6 +9508,21 @@ export type RootQueryToCategoryConnectionEdge = CategoryConnectionEdge & node: Category; }; +/** Page Info on the "RootQueryToCategoryConnection" */ +export type RootQueryToCategoryConnectionPageInfo = CategoryConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToCategoryConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToCategoryConnection connection */ export type RootQueryToCategoryConnectionWhereArgs = { /** Unique cache key to be produced when this query is stored in an object cache. Default is 'core'. */ @@ -8758,7 +9582,7 @@ export type RootQueryToCollectionConnection = CollectionConnection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToCollectionConnectionPageInfo; }; /** An edge in a connection */ @@ -8771,6 +9595,22 @@ export type RootQueryToCollectionConnectionEdge = CollectionConnectionEdge & node: Collection; }; +/** Page Info on the "RootQueryToCollectionConnection" */ +export type RootQueryToCollectionConnectionPageInfo = + CollectionConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToCollectionConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToCollectionConnection connection */ export type RootQueryToCollectionConnectionWhereArgs = { /** Filter the connection based on dates */ @@ -8793,7 +9633,7 @@ export type RootQueryToCollectionConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -8822,7 +9662,7 @@ export type RootQueryToCommentConnection = CommentConnection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToCommentConnectionPageInfo; }; /** An edge in a connection */ @@ -8835,6 +9675,21 @@ export type RootQueryToCommentConnectionEdge = CommentConnectionEdge & node: Comment; }; +/** Page Info on the "RootQueryToCommentConnection" */ +export type RootQueryToCommentConnectionPageInfo = CommentConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToCommentConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToCommentConnection connection */ export type RootQueryToCommentConnectionWhereArgs = { /** Comment author email address. */ @@ -8906,7 +9761,7 @@ export type RootQueryToContactConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToContactConnectionPageInfo; }; /** An edge in a connection */ @@ -8919,6 +9774,21 @@ export type RootQueryToContactConnectionEdge = ContactConnectionEdge & node: Contact; }; +/** Page Info on the "RootQueryToContactConnection" */ +export type RootQueryToContactConnectionPageInfo = ContactConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToContactConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToContactConnection connection */ export type RootQueryToContactConnectionWhereArgs = { /** Filter the connection based on dates */ @@ -8941,7 +9811,7 @@ export type RootQueryToContactConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -8970,7 +9840,7 @@ export type RootQueryToContentNodeConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToContentNodeConnectionPageInfo; }; /** An edge in a connection */ @@ -8983,6 +9853,22 @@ export type RootQueryToContentNodeConnectionEdge = ContentNodeConnectionEdge & node: ContentNode; }; +/** Page Info on the "RootQueryToContentNodeConnection" */ +export type RootQueryToContentNodeConnectionPageInfo = + ContentNodeConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToContentNodeConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToContentNodeConnection connection */ export type RootQueryToContentNodeConnectionWhereArgs = { /** The Types of content to filter */ @@ -9007,7 +9893,7 @@ export type RootQueryToContentNodeConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -9036,7 +9922,7 @@ export type RootQueryToContentTypeConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToContentTypeConnectionPageInfo; }; /** An edge in a connection */ @@ -9049,6 +9935,22 @@ export type RootQueryToContentTypeConnectionEdge = ContentTypeConnectionEdge & node: ContentType; }; +/** Page Info on the "RootQueryToContentTypeConnection" */ +export type RootQueryToContentTypeConnectionPageInfo = + ContentTypeConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToContentTypeConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Connection between the RootQuery type and the EnqueuedScript type */ export type RootQueryToEnqueuedScriptConnection = Connection & EnqueuedScriptConnection & { @@ -9058,7 +9960,7 @@ export type RootQueryToEnqueuedScriptConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToEnqueuedScriptConnectionPageInfo; }; /** An edge in a connection */ @@ -9071,6 +9973,22 @@ export type RootQueryToEnqueuedScriptConnectionEdge = Edge & node: EnqueuedScript; }; +/** Page Info on the "RootQueryToEnqueuedScriptConnection" */ +export type RootQueryToEnqueuedScriptConnectionPageInfo = + EnqueuedScriptConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToEnqueuedScriptConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Connection between the RootQuery type and the EnqueuedStylesheet type */ export type RootQueryToEnqueuedStylesheetConnection = Connection & EnqueuedStylesheetConnection & { @@ -9080,7 +9998,7 @@ export type RootQueryToEnqueuedStylesheetConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToEnqueuedStylesheetConnectionPageInfo; }; /** An edge in a connection */ @@ -9093,6 +10011,22 @@ export type RootQueryToEnqueuedStylesheetConnectionEdge = Edge & node: EnqueuedStylesheet; }; +/** Page Info on the "RootQueryToEnqueuedStylesheetConnection" */ +export type RootQueryToEnqueuedStylesheetConnectionPageInfo = + EnqueuedStylesheetConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToEnqueuedStylesheetConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Connection between the RootQuery type and the landingPage type */ export type RootQueryToLandingPageConnection = Connection & LandingPageConnection & { @@ -9102,7 +10036,7 @@ export type RootQueryToLandingPageConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToLandingPageConnectionPageInfo; }; /** An edge in a connection */ @@ -9115,6 +10049,22 @@ export type RootQueryToLandingPageConnectionEdge = Edge & node: LandingPage; }; +/** Page Info on the "RootQueryToLandingPageConnection" */ +export type RootQueryToLandingPageConnectionPageInfo = + LandingPageConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToLandingPageConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToLandingPageConnection connection */ export type RootQueryToLandingPageConnectionWhereArgs = { /** Filter the connection based on dates */ @@ -9137,7 +10087,7 @@ export type RootQueryToLandingPageConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -9166,7 +10116,7 @@ export type RootQueryToMediaItemConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToMediaItemConnectionPageInfo; }; /** An edge in a connection */ @@ -9179,6 +10129,22 @@ export type RootQueryToMediaItemConnectionEdge = Edge & node: MediaItem; }; +/** Page Info on the "RootQueryToMediaItemConnection" */ +export type RootQueryToMediaItemConnectionPageInfo = + MediaItemConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToMediaItemConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToMediaItemConnection connection */ export type RootQueryToMediaItemConnectionWhereArgs = { /** The user that's connected as the author of the object. Use the userId for the author object. */ @@ -9209,7 +10175,7 @@ export type RootQueryToMediaItemConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -9238,7 +10204,7 @@ export type RootQueryToMenuConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToMenuConnectionPageInfo; }; /** An edge in a connection */ @@ -9251,6 +10217,21 @@ export type RootQueryToMenuConnectionEdge = Edge & node: Menu; }; +/** Page Info on the "RootQueryToMenuConnection" */ +export type RootQueryToMenuConnectionPageInfo = MenuConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToMenuConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToMenuConnection connection */ export type RootQueryToMenuConnectionWhereArgs = { /** The database ID of the object */ @@ -9270,7 +10251,7 @@ export type RootQueryToMenuItemConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToMenuItemConnectionPageInfo; }; /** An edge in a connection */ @@ -9283,6 +10264,21 @@ export type RootQueryToMenuItemConnectionEdge = Edge & node: MenuItem; }; +/** Page Info on the "RootQueryToMenuItemConnection" */ +export type RootQueryToMenuItemConnectionPageInfo = MenuItemConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToMenuItemConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToMenuItemConnection connection */ export type RootQueryToMenuItemConnectionWhereArgs = { /** The database ID of the object */ @@ -9305,7 +10301,7 @@ export type RootQueryToPageConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToPageConnectionPageInfo; }; /** An edge in a connection */ @@ -9318,6 +10314,21 @@ export type RootQueryToPageConnectionEdge = Edge & node: Page; }; +/** Page Info on the "RootQueryToPageConnection" */ +export type RootQueryToPageConnectionPageInfo = PageConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToPageConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToPageConnection connection */ export type RootQueryToPageConnectionWhereArgs = { /** The user that's connected as the author of the object. Use the userId for the author object. */ @@ -9348,7 +10359,7 @@ export type RootQueryToPageConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -9377,7 +10388,7 @@ export type RootQueryToPluginConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToPluginConnectionPageInfo; }; /** An edge in a connection */ @@ -9390,6 +10401,21 @@ export type RootQueryToPluginConnectionEdge = Edge & node: Plugin; }; +/** Page Info on the "RootQueryToPluginConnection" */ +export type RootQueryToPluginConnectionPageInfo = PageInfo & + PluginConnectionPageInfo & + WpPageInfo & { + __typename?: 'RootQueryToPluginConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToPluginConnection connection */ export type RootQueryToPluginConnectionWhereArgs = { /** Show plugin based on a keyword search. */ @@ -9409,7 +10435,7 @@ export type RootQueryToPostConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToPostConnectionPageInfo; }; /** An edge in a connection */ @@ -9422,6 +10448,21 @@ export type RootQueryToPostConnectionEdge = Edge & node: Post; }; +/** Page Info on the "RootQueryToPostConnection" */ +export type RootQueryToPostConnectionPageInfo = PageInfo & + PostConnectionPageInfo & + WpPageInfo & { + __typename?: 'RootQueryToPostConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToPostConnection connection */ export type RootQueryToPostConnectionWhereArgs = { /** The user that's connected as the author of the object. Use the userId for the author object. */ @@ -9460,7 +10501,7 @@ export type RootQueryToPostConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -9501,7 +10542,7 @@ export type RootQueryToPostFormatConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToPostFormatConnectionPageInfo; }; /** An edge in a connection */ @@ -9514,6 +10555,21 @@ export type RootQueryToPostFormatConnectionEdge = Edge & node: PostFormat; }; +/** Page Info on the "RootQueryToPostFormatConnection" */ +export type RootQueryToPostFormatConnectionPageInfo = PageInfo & + PostFormatConnectionPageInfo & + WpPageInfo & { + __typename?: 'RootQueryToPostFormatConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToPostFormatConnection connection */ export type RootQueryToPostFormatConnectionWhereArgs = { /** Unique cache key to be produced when this query is stored in an object cache. Default is 'core'. */ @@ -9569,7 +10625,7 @@ export type RootQueryToReleaseConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToReleaseConnectionPageInfo; }; /** An edge in a connection */ @@ -9582,6 +10638,21 @@ export type RootQueryToReleaseConnectionEdge = Edge & node: Release; }; +/** Page Info on the "RootQueryToReleaseConnection" */ +export type RootQueryToReleaseConnectionPageInfo = PageInfo & + ReleaseConnectionPageInfo & + WpPageInfo & { + __typename?: 'RootQueryToReleaseConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToReleaseConnection connection */ export type RootQueryToReleaseConnectionWhereArgs = { /** Filter the connection based on dates */ @@ -9604,7 +10675,7 @@ export type RootQueryToReleaseConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -9633,7 +10704,7 @@ export type RootQueryToRevisionsConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToRevisionsConnectionPageInfo; }; /** An edge in a connection */ @@ -9646,6 +10717,22 @@ export type RootQueryToRevisionsConnectionEdge = ContentNodeConnectionEdge & node: ContentNode; }; +/** Page Info on the "RootQueryToRevisionsConnection" */ +export type RootQueryToRevisionsConnectionPageInfo = + ContentNodeConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'RootQueryToRevisionsConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToRevisionsConnection connection */ export type RootQueryToRevisionsConnectionWhereArgs = { /** The Types of content to filter */ @@ -9666,7 +10753,7 @@ export type RootQueryToRevisionsConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -9695,7 +10782,7 @@ export type RootQueryToTagConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToTagConnectionPageInfo; }; /** An edge in a connection */ @@ -9708,6 +10795,21 @@ export type RootQueryToTagConnectionEdge = Edge & node: Tag; }; +/** Page Info on the "RootQueryToTagConnection" */ +export type RootQueryToTagConnectionPageInfo = PageInfo & + TagConnectionPageInfo & + WpPageInfo & { + __typename?: 'RootQueryToTagConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToTagConnection connection */ export type RootQueryToTagConnectionWhereArgs = { /** Unique cache key to be produced when this query is stored in an object cache. Default is 'core'. */ @@ -9767,7 +10869,7 @@ export type RootQueryToTaxonomyConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToTaxonomyConnectionPageInfo; }; /** An edge in a connection */ @@ -9780,6 +10882,21 @@ export type RootQueryToTaxonomyConnectionEdge = Edge & node: Taxonomy; }; +/** Page Info on the "RootQueryToTaxonomyConnection" */ +export type RootQueryToTaxonomyConnectionPageInfo = PageInfo & + TaxonomyConnectionPageInfo & + WpPageInfo & { + __typename?: 'RootQueryToTaxonomyConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Connection between the RootQuery type and the TermNode type */ export type RootQueryToTermNodeConnection = Connection & TermNodeConnection & { @@ -9789,7 +10906,7 @@ export type RootQueryToTermNodeConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToTermNodeConnectionPageInfo; }; /** An edge in a connection */ @@ -9802,6 +10919,21 @@ export type RootQueryToTermNodeConnectionEdge = Edge & node: TermNode; }; +/** Page Info on the "RootQueryToTermNodeConnection" */ +export type RootQueryToTermNodeConnectionPageInfo = PageInfo & + TermNodeConnectionPageInfo & + WpPageInfo & { + __typename?: 'RootQueryToTermNodeConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToTermNodeConnection connection */ export type RootQueryToTermNodeConnectionWhereArgs = { /** Unique cache key to be produced when this query is stored in an object cache. Default is 'core'. */ @@ -9859,7 +10991,7 @@ export type RootQueryToThemeConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToThemeConnectionPageInfo; }; /** An edge in a connection */ @@ -9872,6 +11004,21 @@ export type RootQueryToThemeConnectionEdge = Edge & node: Theme; }; +/** Page Info on the "RootQueryToThemeConnection" */ +export type RootQueryToThemeConnectionPageInfo = PageInfo & + ThemeConnectionPageInfo & + WpPageInfo & { + __typename?: 'RootQueryToThemeConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Connection between the RootQuery type and the translation type */ export type RootQueryToTranslationConnection = Connection & TranslationConnection & { @@ -9881,7 +11028,7 @@ export type RootQueryToTranslationConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToTranslationConnectionPageInfo; }; /** An edge in a connection */ @@ -9894,6 +11041,21 @@ export type RootQueryToTranslationConnectionEdge = Edge & node: Translation; }; +/** Page Info on the "RootQueryToTranslationConnection" */ +export type RootQueryToTranslationConnectionPageInfo = PageInfo & + TranslationConnectionPageInfo & + WpPageInfo & { + __typename?: 'RootQueryToTranslationConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToTranslationConnection connection */ export type RootQueryToTranslationConnectionWhereArgs = { /** Filter the connection based on dates */ @@ -9912,7 +11074,7 @@ export type RootQueryToTranslationConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -9941,7 +11103,7 @@ export type RootQueryToUserConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToUserConnectionPageInfo; }; /** An edge in a connection */ @@ -9954,6 +11116,21 @@ export type RootQueryToUserConnectionEdge = Edge & node: User; }; +/** Page Info on the "RootQueryToUserConnection" */ +export type RootQueryToUserConnectionPageInfo = PageInfo & + UserConnectionPageInfo & + WpPageInfo & { + __typename?: 'RootQueryToUserConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the RootQueryToUserConnection connection */ export type RootQueryToUserConnectionWhereArgs = { /** Array of userIds to exclude. */ @@ -9974,7 +11151,7 @@ export type RootQueryToUserConnectionWhereArgs = { nicenameIn?: InputMaybe>>; /** An array of nicenames to exclude. Users matching one of these nicenames will not be included in results. */ nicenameNotIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** An array of role names that users must match to be included in results. Note that this is an inclusive list: users must match *each* role. */ role?: InputMaybe; @@ -9999,7 +11176,7 @@ export type RootQueryToUserRoleConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: RootQueryToUserRoleConnectionPageInfo; }; /** An edge in a connection */ @@ -10012,6 +11189,21 @@ export type RootQueryToUserRoleConnectionEdge = Edge & node: UserRole; }; +/** Page Info on the "RootQueryToUserRoleConnection" */ +export type RootQueryToUserRoleConnectionPageInfo = PageInfo & + UserRoleConnectionPageInfo & + WpPageInfo & { + __typename?: 'RootQueryToUserRoleConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + export type Seo = { __typename?: 'SEO'; /** Canonical URL */ @@ -10047,6 +11239,14 @@ export type Seo = { twitterTitle?: Maybe; }; +/** The strategy to use when loading the script */ +export enum ScriptLoadingStrategyEnum { + /** Use the script `async` attribute */ + Async = 'ASYNC', + /** Use the script `defer` attribute */ + Defer = 'DEFER', +} + export type SearchResultConnection = { __typename?: 'SearchResultConnection'; count?: Maybe; @@ -10196,6 +11396,8 @@ export type SiteSettings = { __typename?: 'SiteSettings'; /** Attachment ID for logo */ logo?: Maybe; + /** Redirects */ + redirects?: Maybe; /** Identifying name */ siteName?: Maybe; }; @@ -10275,10 +11477,16 @@ export type Tag = DatabaseIdentifier & enqueuedScripts?: Maybe; /** Connection between the TermNode type and the EnqueuedStylesheet type */ enqueuedStylesheets?: Maybe; - /** The unique resource identifier path */ + /** The globally unique ID for the object */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is restricted from the current viewer */ isRestricted?: Maybe; /** Whether the node is a Term */ @@ -10359,6 +11567,8 @@ export type TagConnection = { edges: Array; /** A list of connected tag Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: TagConnectionPageInfo; }; /** Edge between a Node and a connected tag */ @@ -10369,6 +11579,18 @@ export type TagConnectionEdge = { node: Tag; }; +/** Page Info on the connected TagConnectionEdge */ +export type TagConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is ID. */ export enum TagIdType { /** The Database ID for the node */ @@ -10392,7 +11614,7 @@ export type TagToContentNodeConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: TagToContentNodeConnectionPageInfo; }; /** An edge in a connection */ @@ -10405,6 +11627,21 @@ export type TagToContentNodeConnectionEdge = ContentNodeConnectionEdge & node: ContentNode; }; +/** Page Info on the "TagToContentNodeConnection" */ +export type TagToContentNodeConnectionPageInfo = ContentNodeConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'TagToContentNodeConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the TagToContentNodeConnection connection */ export type TagToContentNodeConnectionWhereArgs = { /** The Types of content to filter */ @@ -10425,7 +11662,7 @@ export type TagToContentNodeConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -10454,7 +11691,7 @@ export type TagToPostConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: TagToPostConnectionPageInfo; }; /** An edge in a connection */ @@ -10467,6 +11704,21 @@ export type TagToPostConnectionEdge = Edge & node: Post; }; +/** Page Info on the "TagToPostConnection" */ +export type TagToPostConnectionPageInfo = PageInfo & + PostConnectionPageInfo & + WpPageInfo & { + __typename?: 'TagToPostConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the TagToPostConnection connection */ export type TagToPostConnectionWhereArgs = { /** The user that's connected as the author of the object. Use the userId for the author object. */ @@ -10501,7 +11753,7 @@ export type TagToPostConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -10560,6 +11812,8 @@ export type Taxonomy = Node & { __typename?: 'Taxonomy'; /** List of Content Types associated with the Taxonomy */ connectedContentTypes?: Maybe; + /** List of Term Nodes associated with the Taxonomy */ + connectedTerms?: Maybe; /** Description of the taxonomy. This field is equivalent to WP_Taxonomy->description */ description?: Maybe; /** The plural name of the post type within the GraphQL Schema. */ @@ -10578,7 +11832,7 @@ export type Taxonomy = Node & { name?: Maybe; /** Whether the taxonomy is publicly queryable */ public?: Maybe; - /** Name of content type to diplay in REST API "wp/v2" namespace. */ + /** Name of content type to display in REST API "wp/v2" namespace. */ restBase?: Maybe; /** The REST Controller class assigned to handling this content type. */ restControllerClass?: Maybe; @@ -10608,12 +11862,22 @@ export type TaxonomyConnectedContentTypesArgs = { last?: InputMaybe; }; +/** A taxonomy object */ +export type TaxonomyConnectedTermsArgs = { + after?: InputMaybe; + before?: InputMaybe; + first?: InputMaybe; + last?: InputMaybe; +}; + /** Connection to Taxonomy Nodes */ export type TaxonomyConnection = { /** A list of edges (relational context) between RootQuery and connected Taxonomy Nodes */ edges: Array; /** A list of connected Taxonomy Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: TaxonomyConnectionPageInfo; }; /** Edge between a Node and a connected Taxonomy */ @@ -10624,6 +11888,18 @@ export type TaxonomyConnectionEdge = { node: Taxonomy; }; +/** Page Info on the connected TaxonomyConnectionEdge */ +export type TaxonomyConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** Allowed taxonomies */ export enum TaxonomyEnum { /** Taxonomy enum category */ @@ -10651,7 +11927,7 @@ export type TaxonomyToContentTypeConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: TaxonomyToContentTypeConnectionPageInfo; }; /** An edge in a connection */ @@ -10664,6 +11940,59 @@ export type TaxonomyToContentTypeConnectionEdge = ContentTypeConnectionEdge & node: ContentType; }; +/** Page Info on the "TaxonomyToContentTypeConnection" */ +export type TaxonomyToContentTypeConnectionPageInfo = + ContentTypeConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'TaxonomyToContentTypeConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + +/** Connection between the Taxonomy type and the TermNode type */ +export type TaxonomyToTermNodeConnection = Connection & + TermNodeConnection & { + __typename?: 'TaxonomyToTermNodeConnection'; + /** Edges for the TaxonomyToTermNodeConnection connection */ + edges: Array; + /** The nodes of the connection, without the edges */ + nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: TaxonomyToTermNodeConnectionPageInfo; + }; + +/** An edge in a connection */ +export type TaxonomyToTermNodeConnectionEdge = Edge & + TermNodeConnectionEdge & { + __typename?: 'TaxonomyToTermNodeConnectionEdge'; + /** A cursor for use in pagination */ + cursor?: Maybe; + /** The item at the end of the edge */ + node: TermNode; + }; + +/** Page Info on the "TaxonomyToTermNodeConnection" */ +export type TaxonomyToTermNodeConnectionPageInfo = PageInfo & + TermNodeConnectionPageInfo & + WpPageInfo & { + __typename?: 'TaxonomyToTermNodeConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Hae sivuobjekti sivupohjan mukaan */ export enum TemplateEnum { FrontPage = 'frontPage', @@ -10682,10 +12011,16 @@ export type TermNode = { enqueuedScripts?: Maybe; /** Connection between the TermNode type and the EnqueuedStylesheet type */ enqueuedStylesheets?: Maybe; - /** The unique resource identifier path */ + /** The globally unique ID for the object */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is restricted from the current viewer */ isRestricted?: Maybe; /** Whether the node is a Term */ @@ -10728,6 +12063,8 @@ export type TermNodeConnection = { edges: Array; /** A list of connected TermNode Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: TermNodeConnectionPageInfo; }; /** Edge between a Node and a connected TermNode */ @@ -10738,6 +12075,18 @@ export type TermNodeConnectionEdge = { node: TermNode; }; +/** Page Info on the connected TermNodeConnectionEdge */ +export type TermNodeConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is "ID". To be used along with the "id" field. */ export enum TermNodeIdTypeEnum { /** The Database ID for the node */ @@ -10761,7 +12110,7 @@ export type TermNodeToEnqueuedScriptConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: TermNodeToEnqueuedScriptConnectionPageInfo; }; /** An edge in a connection */ @@ -10774,6 +12123,22 @@ export type TermNodeToEnqueuedScriptConnectionEdge = Edge & node: EnqueuedScript; }; +/** Page Info on the "TermNodeToEnqueuedScriptConnection" */ +export type TermNodeToEnqueuedScriptConnectionPageInfo = + EnqueuedScriptConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'TermNodeToEnqueuedScriptConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Connection between the TermNode type and the EnqueuedStylesheet type */ export type TermNodeToEnqueuedStylesheetConnection = Connection & EnqueuedStylesheetConnection & { @@ -10783,7 +12148,7 @@ export type TermNodeToEnqueuedStylesheetConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: TermNodeToEnqueuedStylesheetConnectionPageInfo; }; /** An edge in a connection */ @@ -10796,6 +12161,22 @@ export type TermNodeToEnqueuedStylesheetConnectionEdge = Edge & node: EnqueuedStylesheet; }; +/** Page Info on the "TermNodeToEnqueuedStylesheetConnection" */ +export type TermNodeToEnqueuedStylesheetConnectionPageInfo = + EnqueuedStylesheetConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'TermNodeToEnqueuedStylesheetConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Options for ordering the connection by */ export enum TermObjectsConnectionOrderbyEnum { /** Order the connection by item count. */ @@ -10847,6 +12228,8 @@ export type ThemeConnection = { edges: Array; /** A list of connected Theme Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: ThemeConnectionPageInfo; }; /** Edge between a Node and a connected Theme */ @@ -10857,6 +12240,18 @@ export type ThemeConnectionEdge = { node: Theme; }; +/** Page Info on the connected ThemeConnectionEdge */ +export type ThemeConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + export type Time = { __typename?: 'Time'; description: Scalars['String']['output']; @@ -10911,8 +12306,14 @@ export type Translation = ContentNode & guid?: Maybe; /** The globally unique identifier of the translation-cpt object. */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is a node in the preview state */ isPreview?: Maybe; /** Whether the object is restricted from the current viewer */ @@ -10954,7 +12355,7 @@ export type Translation = ContentNode & * @deprecated Deprecated in favor of the databaseId field */ translationId: Scalars['Int']['output']; - /** Käännökset */ + /** Translations */ translations?: Maybe>>; /** The unique resource identifier path */ uri?: Maybe; @@ -10996,6 +12397,8 @@ export type TranslationConnection = { edges: Array; /** A list of connected translation Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: TranslationConnectionPageInfo; }; /** Edge between a Node and a connected translation */ @@ -11006,6 +12409,18 @@ export type TranslationConnectionEdge = { node: Translation; }; +/** Page Info on the connected TranslationConnectionEdge */ +export type TranslationConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single resource. Default is ID. */ export enum TranslationIdType { /** Identify a resource by the Database ID. */ @@ -11018,23 +12433,23 @@ export enum TranslationIdType { Uri = 'URI', } -/** Käännöksen kieli/arvo-parit */ +/** Translation with language/value pairs */ export type TranslationItems = { __typename?: 'TranslationItems'; - /** Käännöksen merkkijono */ + /** Translation string */ en?: Maybe; - /** Käännöksen merkkijono */ + /** Translation string */ fi?: Maybe; - /** Käännöksen merkkijono */ + /** Translation string */ sv?: Maybe; }; -/** Käännösvastaus sisältää käännösavaimen ja käännökset */ +/** Translation response contains translation key and translations */ export type TranslationResponse = { __typename?: 'TranslationResponse'; - /** Käyttöliittymän käännösavain */ + /** Translation key for frontend */ key?: Maybe; - /** Käännökset käyttöliittymälle */ + /** Translations for frontend */ translations?: Maybe; }; @@ -11058,7 +12473,7 @@ export type TranslationToRevisionConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: TranslationToRevisionConnectionPageInfo; }; /** An edge in a connection */ @@ -11071,6 +12486,21 @@ export type TranslationToRevisionConnectionEdge = Edge & node: Translation; }; +/** Page Info on the "TranslationToRevisionConnection" */ +export type TranslationToRevisionConnectionPageInfo = PageInfo & + TranslationConnectionPageInfo & + WpPageInfo & { + __typename?: 'TranslationToRevisionConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the TranslationToRevisionConnection connection */ export type TranslationToRevisionConnectionWhereArgs = { /** Filter the connection based on dates */ @@ -11089,7 +12519,7 @@ export type TranslationToRevisionConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -11179,10 +12609,16 @@ export type UnifiedSearchVenueAccessibilityShortcomingForArgs = { /** Any node that has a URI */ export type UniformResourceIdentifiable = { - /** The unique resource identifier path */ + /** The globally unique ID for the object */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the node is a Term */ isTermNode: Scalars['Boolean']['output']; /** The unique resource identifier path */ @@ -11225,6 +12661,8 @@ export type UpdateCollectionInput = { date?: InputMaybe; /** The ID of the collection object */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; language?: InputMaybe; /** A field used for ordering posts. This is typically used with nav menu items or for special ordering of hierarchical content types. */ menuOrder?: InputMaybe; @@ -11294,6 +12732,8 @@ export type UpdateContactInput = { date?: InputMaybe; /** The ID of the contact object */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; language?: InputMaybe; /** A field used for ordering posts. This is typically used with nav menu items or for special ordering of hierarchical content types. */ menuOrder?: InputMaybe; @@ -11324,6 +12764,8 @@ export type UpdateLandingPageInput = { date?: InputMaybe; /** The ID of the landingPage object */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; language?: InputMaybe; /** A field used for ordering posts. This is typically used with nav menu items or for special ordering of hierarchical content types. */ menuOrder?: InputMaybe; @@ -11404,6 +12846,8 @@ export type UpdatePageInput = { date?: InputMaybe; /** The ID of the page object */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; language?: InputMaybe; /** A field used for ordering posts. This is typically used with nav menu items or for special ordering of hierarchical content types. */ menuOrder?: InputMaybe; @@ -11467,6 +12911,8 @@ export type UpdatePostInput = { date?: InputMaybe; /** The ID of the post object */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; language?: InputMaybe; /** A field used for ordering posts. This is typically used with nav menu items or for special ordering of hierarchical content types. */ menuOrder?: InputMaybe; @@ -11503,6 +12949,8 @@ export type UpdateReleaseInput = { date?: InputMaybe; /** The ID of the release object */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; language?: InputMaybe; /** A field used for ordering posts. This is typically used with nav menu items or for special ordering of hierarchical content types. */ menuOrder?: InputMaybe; @@ -11616,6 +13064,8 @@ export type UpdateTranslationInput = { date?: InputMaybe; /** The ID of the translation object */ id: Scalars['ID']['input']; + /** Override the edit lock when another user is editing the post */ + ignoreEditLock?: InputMaybe; /** A field used for ordering posts. This is typically used with nav menu items or for special ordering of hierarchical content types. */ menuOrder?: InputMaybe; /** The password used to protect the content of the object */ @@ -11716,8 +13166,14 @@ export type User = Commenter & firstName?: Maybe; /** The globally unique identifier for the user object. */ id: Scalars['ID']['output']; + /** Whether the node is a Comment */ + isComment: Scalars['Boolean']['output']; /** Whether the node is a Content Node */ isContentNode: Scalars['Boolean']['output']; + /** Whether the node represents the front page. */ + isFrontPage: Scalars['Boolean']['output']; + /** Whether the node represents the blog page. */ + isPostsPage: Scalars['Boolean']['output']; /** Whether the object is restricted from the current viewer */ isRestricted?: Maybe; /** Whether the node is a Term */ @@ -11728,7 +13184,7 @@ export type User = Commenter & locale?: Maybe; /** Connection between the User type and the mediaItem type */ mediaItems?: Maybe; - /** Display name of the user. This is equivalent to the WP_User->dispaly_name property. */ + /** Display name of the user. This is equivalent to the WP_User->display_name property. */ name?: Maybe; /** The nicename for the user. This field is equivalent to WP_User->user_nicename */ nicename?: Maybe; @@ -11744,6 +13200,8 @@ export type User = Commenter & revisions?: Maybe; /** Connection between the User type and the UserRole type */ roles?: Maybe; + /** Whether the Toolbar should be displayed when the user is viewing the site. */ + shouldShowAdminToolbar?: Maybe; /** The slug for the user. This field is equivalent to WP_User->user_nicename */ slug?: Maybe; /** The unique resource identifier path */ @@ -11841,6 +13299,8 @@ export type UserConnection = { edges: Array; /** A list of connected User Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: UserConnectionPageInfo; }; /** Edge between a Node and a connected User */ @@ -11851,6 +13311,18 @@ export type UserConnectionEdge = { node: User; }; +/** Page Info on the connected UserConnectionEdge */ +export type UserConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** The Type of Identifier used to fetch a single User node. To be used along with the "id" field. Default is "ID". */ export enum UserNodeIdTypeEnum { /** The Database ID for the node */ @@ -11888,6 +13360,8 @@ export type UserRoleConnection = { edges: Array; /** A list of connected UserRole Nodes */ nodes: Array; + /** Information about pagination in a connection. */ + pageInfo: UserRoleConnectionPageInfo; }; /** Edge between a Node and a connected UserRole */ @@ -11898,6 +13372,18 @@ export type UserRoleConnectionEdge = { node: UserRole; }; +/** Page Info on the connected UserRoleConnectionEdge */ +export type UserRoleConnectionPageInfo = { + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; +}; + /** Names of available user roles */ export enum UserRoleEnum { /** User role with specific capabilities */ @@ -11929,7 +13415,7 @@ export type UserToCommentConnection = CommentConnection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: UserToCommentConnectionPageInfo; }; /** An edge in a connection */ @@ -11942,6 +13428,21 @@ export type UserToCommentConnectionEdge = CommentConnectionEdge & node: Comment; }; +/** Page Info on the "UserToCommentConnection" */ +export type UserToCommentConnectionPageInfo = CommentConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'UserToCommentConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the UserToCommentConnection connection */ export type UserToCommentConnectionWhereArgs = { /** Comment author email address. */ @@ -12013,7 +13514,7 @@ export type UserToEnqueuedScriptConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: UserToEnqueuedScriptConnectionPageInfo; }; /** An edge in a connection */ @@ -12026,6 +13527,22 @@ export type UserToEnqueuedScriptConnectionEdge = Edge & node: EnqueuedScript; }; +/** Page Info on the "UserToEnqueuedScriptConnection" */ +export type UserToEnqueuedScriptConnectionPageInfo = + EnqueuedScriptConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'UserToEnqueuedScriptConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Connection between the User type and the EnqueuedStylesheet type */ export type UserToEnqueuedStylesheetConnection = Connection & EnqueuedStylesheetConnection & { @@ -12035,7 +13552,7 @@ export type UserToEnqueuedStylesheetConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: UserToEnqueuedStylesheetConnectionPageInfo; }; /** An edge in a connection */ @@ -12048,6 +13565,22 @@ export type UserToEnqueuedStylesheetConnectionEdge = Edge & node: EnqueuedStylesheet; }; +/** Page Info on the "UserToEnqueuedStylesheetConnection" */ +export type UserToEnqueuedStylesheetConnectionPageInfo = + EnqueuedStylesheetConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'UserToEnqueuedStylesheetConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Connection between the User type and the mediaItem type */ export type UserToMediaItemConnection = Connection & MediaItemConnection & { @@ -12057,7 +13590,7 @@ export type UserToMediaItemConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: UserToMediaItemConnectionPageInfo; }; /** An edge in a connection */ @@ -12070,6 +13603,21 @@ export type UserToMediaItemConnectionEdge = Edge & node: MediaItem; }; +/** Page Info on the "UserToMediaItemConnection" */ +export type UserToMediaItemConnectionPageInfo = MediaItemConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'UserToMediaItemConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the UserToMediaItemConnection connection */ export type UserToMediaItemConnectionWhereArgs = { /** The user that's connected as the author of the object. Use the userId for the author object. */ @@ -12096,7 +13644,7 @@ export type UserToMediaItemConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -12125,7 +13673,7 @@ export type UserToPageConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: UserToPageConnectionPageInfo; }; /** An edge in a connection */ @@ -12138,6 +13686,21 @@ export type UserToPageConnectionEdge = Edge & node: Page; }; +/** Page Info on the "UserToPageConnection" */ +export type UserToPageConnectionPageInfo = PageConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'UserToPageConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the UserToPageConnection connection */ export type UserToPageConnectionWhereArgs = { /** The user that's connected as the author of the object. Use the userId for the author object. */ @@ -12164,7 +13727,7 @@ export type UserToPageConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -12193,7 +13756,7 @@ export type UserToPostConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: UserToPostConnectionPageInfo; }; /** An edge in a connection */ @@ -12206,6 +13769,21 @@ export type UserToPostConnectionEdge = Edge & node: Post; }; +/** Page Info on the "UserToPostConnection" */ +export type UserToPostConnectionPageInfo = PageInfo & + PostConnectionPageInfo & + WpPageInfo & { + __typename?: 'UserToPostConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the UserToPostConnection connection */ export type UserToPostConnectionWhereArgs = { /** The user that's connected as the author of the object. Use the userId for the author object. */ @@ -12240,7 +13818,7 @@ export type UserToPostConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -12281,7 +13859,7 @@ export type UserToRevisionsConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: UserToRevisionsConnectionPageInfo; }; /** An edge in a connection */ @@ -12294,6 +13872,21 @@ export type UserToRevisionsConnectionEdge = ContentNodeConnectionEdge & node: ContentNode; }; +/** Page Info on the "UserToRevisionsConnection" */ +export type UserToRevisionsConnectionPageInfo = ContentNodeConnectionPageInfo & + PageInfo & + WpPageInfo & { + __typename?: 'UserToRevisionsConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Arguments for filtering the UserToRevisionsConnection connection */ export type UserToRevisionsConnectionWhereArgs = { /** The Types of content to filter */ @@ -12314,7 +13907,7 @@ export type UserToRevisionsConnectionWhereArgs = { nameIn?: InputMaybe>>; /** Specify IDs NOT to retrieve. If this is used in the same query as "in", it will be ignored */ notIn?: InputMaybe>>; - /** What paramater to use to order the objects by. */ + /** What parameter to use to order the objects by. */ orderby?: InputMaybe>>; /** Use ID to return only children. Use 0 to return only top-level items */ parent?: InputMaybe; @@ -12343,7 +13936,7 @@ export type UserToUserRoleConnection = Connection & /** The nodes of the connection, without the edges */ nodes: Array; /** Information about pagination in a connection. */ - pageInfo?: Maybe; + pageInfo: UserToUserRoleConnectionPageInfo; }; /** An edge in a connection */ @@ -12356,6 +13949,21 @@ export type UserToUserRoleConnectionEdge = Edge & node: UserRole; }; +/** Page Info on the "UserToUserRoleConnection" */ +export type UserToUserRoleConnectionPageInfo = PageInfo & + UserRoleConnectionPageInfo & + WpPageInfo & { + __typename?: 'UserToUserRoleConnectionPageInfo'; + /** When paginating forwards, the cursor to continue. */ + endCursor?: Maybe; + /** When paginating forwards, are there more items? */ + hasNextPage: Scalars['Boolean']['output']; + /** When paginating backwards, are there more items? */ + hasPreviousPage: Scalars['Boolean']['output']; + /** When paginating backwards, the cursor to continue. */ + startCursor?: Maybe; + }; + /** Field to order the connection by */ export enum UsersConnectionOrderbyEnum { /** Order by display name */ @@ -12394,7 +14002,7 @@ export enum UsersConnectionSearchColumnEnum { Login = 'LOGIN', /** A URL-friendly name for the user. The default is the user's username. */ Nicename = 'NICENAME', - /** The URL of the user\s website. */ + /** The URL of the user's website. */ Url = 'URL', } @@ -12468,7 +14076,6 @@ export type VenueFacility = { /** Information about pagination in a connection. */ export type WpPageInfo = { - __typename?: 'WPPageInfo'; /** When paginating forwards, the cursor to continue. */ endCursor?: Maybe; /** When paginating forwards, are there more items? */ diff --git a/packages/components/src/types/types.ts b/packages/components/src/types/types.ts index e01b13922..f7029e9cc 100644 --- a/packages/components/src/types/types.ts +++ b/packages/components/src/types/types.ts @@ -60,7 +60,7 @@ export type AppCategory = { value: string; }; -export type PageInfo = { uri: string; slug: string; locale: string }; +export type PageUriInfo = { uri: string; slug: string; locale: string }; export type TimeResourceState = | 'open' diff --git a/packages/components/src/utils/headless-cms/service.tsx b/packages/components/src/utils/headless-cms/service.tsx index 3df470ce4..57e3a4384 100644 --- a/packages/components/src/utils/headless-cms/service.tsx +++ b/packages/components/src/utils/headless-cms/service.tsx @@ -10,15 +10,15 @@ import type { PagesQuery, PagesQueryVariables, } from 'react-helsinki-headless-cms/apollo'; -import type { PageInfo } from '../../types'; +import type { PageUriInfo } from '../../types'; export const ARTICLES_AMOUNT_LIMIT = 100; export const PAGES_AMOUNT_LIMIT = 100; export const getAllArticles = async ( apolloClient: ApolloClient -): Promise => { - const pageInfos: PageInfo[] = []; +): Promise => { + const pageInfos: PageUriInfo[] = []; const { data: articlesData } = await apolloClient.query< PostsQuery, PostsQueryVariables @@ -66,8 +66,8 @@ export const getAllArticles = async ( export const getAllPages = async ( apolloClient: ApolloClient -): Promise => { - const pageInfos: PageInfo[] = []; +): Promise => { + const pageInfos: PageUriInfo[] = []; const { data: pagesData } = await apolloClient.query< PagesQuery, PagesQueryVariables diff --git a/packages/graphql-proxy-server/package.json b/packages/graphql-proxy-server/package.json index a13b0a97c..e9820fff2 100644 --- a/packages/graphql-proxy-server/package.json +++ b/packages/graphql-proxy-server/package.json @@ -35,7 +35,7 @@ "winston": "3.9.0" }, "peerDependencies": { - "graphql": "16.6.0" + "graphql": "16.7.1" }, "devDependencies": { "@babel/core": "7.22.5", diff --git a/proxies/venue-graphql-proxy/src/schema/paginationSchema.ts b/proxies/venue-graphql-proxy/src/schema/paginationSchema.ts index b2a94aa73..1d44183a1 100644 --- a/proxies/venue-graphql-proxy/src/schema/paginationSchema.ts +++ b/proxies/venue-graphql-proxy/src/schema/paginationSchema.ts @@ -1,7 +1,7 @@ import gql from 'graphql-tag'; const typeDefs = gql` - type PageInfo { + type VenueProxyPageInfo { hasPreviousPage: Boolean! hasNextPage: Boolean! startCursor: String diff --git a/proxies/venue-graphql-proxy/src/types/types.ts b/proxies/venue-graphql-proxy/src/types/types.ts index ed98877e9..2332d85cd 100644 --- a/proxies/venue-graphql-proxy/src/types/types.ts +++ b/proxies/venue-graphql-proxy/src/types/types.ts @@ -71,7 +71,7 @@ export type EventQuery = { export type EventsConnection = { __typename?: 'EventsConnection'; edges: Array; - pageInfo?: Maybe; + pageInfo?: Maybe; totalCount?: Maybe; }; @@ -102,8 +102,8 @@ export type OpeningHour = { times: Array