Files
klz-cables.com/.pnpm-store/v10/files/a7/0c372e538f8be44df42a8cc98ed00ad6c5bf39e1e53a5b15d13fabd29db3fe38af3059b854d7e040c24bca347e8e8ac7b0d1b03c6beee303f665f19f2d9ef1
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

209 lines
8.5 KiB
Plaintext

import { GraphQLBoolean, GraphQLInt, GraphQLNonNull, GraphQLString } from 'graphql';
import pluralize from 'pluralize';
const { singular } = pluralize;
import { buildVersionGlobalFields, toWords } from 'payload';
import { hasDraftsEnabled } from 'payload/shared';
import { docAccessResolver } from '../resolvers/globals/docAccess.js';
import { findOne } from '../resolvers/globals/findOne.js';
import { findVersionByID } from '../resolvers/globals/findVersionByID.js';
import { findVersions } from '../resolvers/globals/findVersions.js';
import { restoreVersion } from '../resolvers/globals/restoreVersion.js';
import { update } from '../resolvers/globals/update.js';
import { formatName } from '../utilities/formatName.js';
import { buildMutationInputType } from './buildMutationInputType.js';
import { buildObjectType } from './buildObjectType.js';
import { buildPaginatedListType } from './buildPaginatedListType.js';
import { buildPolicyType } from './buildPoliciesType.js';
import { buildWhereInputType } from './buildWhereInputType.js';
export function initGlobals({ config, graphqlResult }) {
Object.keys(graphqlResult.globals.config).forEach((slug)=>{
const global = graphqlResult.globals.config[slug];
const { fields, graphQL } = global;
if (graphQL === false) {
return;
}
const formattedName = graphQL?.name ? graphQL.name : singular(toWords(global.slug, true));
const forceNullableObjectType = hasDraftsEnabled(global);
if (!graphqlResult.globals.graphQL) {
graphqlResult.globals.graphQL = {};
}
const updateMutationInputType = buildMutationInputType({
name: formattedName,
config,
fields,
graphqlResult,
parentIsLocalized: false,
parentName: formattedName
});
graphqlResult.globals.graphQL[slug] = {
type: buildObjectType({
name: formattedName,
config,
fields,
forceNullable: forceNullableObjectType,
graphqlResult,
parentName: formattedName
}),
mutationInputType: updateMutationInputType ? new GraphQLNonNull(updateMutationInputType) : null
};
const queriesEnabled = typeof global.graphQL !== 'object' || !global.graphQL.disableQueries;
const mutationsEnabled = typeof global.graphQL !== 'object' || !global.graphQL.disableMutations;
if (queriesEnabled) {
graphqlResult.Query.fields[formattedName] = {
type: graphqlResult.globals.graphQL[slug].type,
args: {
draft: {
type: GraphQLBoolean
},
...config.localization ? {
fallbackLocale: {
type: graphqlResult.types.fallbackLocaleInputType
},
locale: {
type: graphqlResult.types.localeInputType
}
} : {},
select: {
type: GraphQLBoolean
}
},
resolve: findOne(global)
};
graphqlResult.Query.fields[`docAccess${formattedName}`] = {
type: buildPolicyType({
type: 'global',
entity: global,
scope: 'docAccess',
typeSuffix: 'DocAccess'
}),
resolve: docAccessResolver(global)
};
}
if (mutationsEnabled) {
graphqlResult.Mutation.fields[`update${formattedName}`] = {
type: graphqlResult.globals.graphQL[slug].type,
args: {
...updateMutationInputType ? {
data: {
type: graphqlResult.globals.graphQL[slug].mutationInputType
}
} : {},
draft: {
type: GraphQLBoolean
},
...config.localization ? {
locale: {
type: graphqlResult.types.localeInputType
}
} : {}
},
resolve: update(global)
};
}
if (global.versions) {
const idType = config.db.defaultIDType === 'number' ? GraphQLInt : GraphQLString;
const versionGlobalFields = [
...buildVersionGlobalFields(config, global),
{
name: 'id',
type: config.db.defaultIDType
},
{
name: 'createdAt',
type: 'date',
label: 'Created At'
},
{
name: 'updatedAt',
type: 'date',
label: 'Updated At'
}
];
graphqlResult.globals.graphQL[slug].versionType = buildObjectType({
name: `${formattedName}Version`,
config,
fields: versionGlobalFields,
forceNullable: forceNullableObjectType,
graphqlResult,
parentName: `${formattedName}Version`
});
if (queriesEnabled) {
graphqlResult.Query.fields[`version${formatName(formattedName)}`] = {
type: graphqlResult.globals.graphQL[slug].versionType,
args: {
id: {
type: idType
},
draft: {
type: GraphQLBoolean
},
...config.localization ? {
fallbackLocale: {
type: graphqlResult.types.fallbackLocaleInputType
},
locale: {
type: graphqlResult.types.localeInputType
}
} : {},
select: {
type: GraphQLBoolean
}
},
resolve: findVersionByID(global)
};
graphqlResult.Query.fields[`versions${formattedName}`] = {
type: buildPaginatedListType(`versions${formatName(formattedName)}`, graphqlResult.globals.graphQL[slug].versionType),
args: {
where: {
type: buildWhereInputType({
name: `versions${formattedName}`,
fields: versionGlobalFields,
parentName: `versions${formattedName}`
})
},
...config.localization ? {
fallbackLocale: {
type: graphqlResult.types.fallbackLocaleInputType
},
locale: {
type: graphqlResult.types.localeInputType
}
} : {},
limit: {
type: GraphQLInt
},
page: {
type: GraphQLInt
},
pagination: {
type: GraphQLBoolean
},
select: {
type: GraphQLBoolean
},
sort: {
type: GraphQLString
}
},
resolve: findVersions(global)
};
}
if (mutationsEnabled) {
graphqlResult.Mutation.fields[`restoreVersion${formatName(formattedName)}`] = {
type: graphqlResult.globals.graphQL[slug].type,
args: {
id: {
type: idType
},
draft: {
type: GraphQLBoolean
}
},
resolve: restoreVersion(global)
};
}
}
});
}
//# sourceMappingURL=initGlobals.js.map