UNPKG

payload

Version:

Node, React, Headless CMS and Application Framework built on Next.js

86 lines (85 loc) 2.96 kB
// @ts-strict-ignore import { initI18n } from '@payloadcms/translations'; import * as qs from 'qs-esm'; import { executeAuthStrategies } from '../auth/executeAuthStrategies.js'; import { getDataLoader } from '../collections/dataloader.js'; import { getPayload } from '../index.js'; import { sanitizeLocales } from './addLocalesToRequest.js'; import { getRequestLanguage } from './getRequestLanguage.js'; import { parseCookies } from './parseCookies.js'; export const createPayloadRequest = async ({ config: configPromise, params, request })=>{ const cookies = parseCookies(request.headers); const payload = await getPayload({ config: configPromise }); const { config } = payload; const localization = config.localization; const urlProperties = new URL(request.url); const { pathname, searchParams } = urlProperties; const isGraphQL = !config.graphQL.disable && pathname === `${config.routes.api}${config.routes.graphQL}`; const language = getRequestLanguage({ config, cookies, headers: request.headers }); const i18n = await initI18n({ config: config.i18n, context: 'api', language }); const fallbackFromRequest = searchParams.get('fallback-locale') || searchParams.get('fallbackLocale'); let locale = searchParams.get('locale'); let fallbackLocale = fallbackFromRequest; const { search: queryToParse } = urlProperties; const query = queryToParse ? qs.parse(queryToParse, { arrayLimit: 1000, depth: 10, ignoreQueryPrefix: true }) : {}; if (localization) { const locales = sanitizeLocales({ fallbackLocale, locale, localization }); fallbackLocale = locales.fallbackLocale; locale = locales.locale; } const customRequest = { context: {}, fallbackLocale, hash: urlProperties.hash, host: urlProperties.host, href: urlProperties.href, i18n, locale, origin: urlProperties.origin, pathname: urlProperties.pathname, payload, payloadAPI: isGraphQL ? 'GraphQL' : 'REST', payloadDataLoader: undefined, payloadUploadSizes: {}, port: urlProperties.port, protocol: urlProperties.protocol, query, routeParams: params || {}, search: urlProperties.search, searchParams: urlProperties.searchParams, t: i18n.t, transactionID: undefined, user: null }; const req = Object.assign(request, customRequest); req.payloadDataLoader = getDataLoader(req); const { responseHeaders, user } = await executeAuthStrategies({ headers: req.headers, isGraphQL, payload }); req.user = user; if (responseHeaders) { req.responseHeaders = responseHeaders; } return req; }; //# sourceMappingURL=createPayloadRequest.js.map